Changeset 3507 for trunk/test_more


Ignore:
Timestamp:
Dec 27, 2014 11:30:12 AM (5 years ago)
Author:
bradbell
Message:

Must use old variable index to mark variables used as replacements for
other variables (that have been removed).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/test_more/optimize.cpp

    r3504 r3507  
    15941594                // f(x) = x[0] + x[0] if x[0] >= 3
    15951595                //      = x[0] + x[1] otherwise
    1596                 vector< AD<double> > ax(2), ay(2);
     1596                vector< AD<double> > ax(2), ay(3);
    15971597                ax[0] = 1.0;
    15981598                ax[1] = 2.0;
     
    16001600                AD<double> three(3);
    16011601                AD<double> value = ax[0] + ax[1];
     1602                // a simple value
    16021603                ay[0]  = CppAD::CondExpGe(ax[0], three, value, value);
    1603                 ay[1]  = CppAD::CondExpGe(ax[0], three, ax[0]+ax[1], ax[0]+ax[1]);
     1604                // a  binary exprpression
     1605                ay[1]  = CppAD::CondExpGe(ax[0], three, ax[0]-ax[1], ax[0]-ax[1]);
     1606                // a unary expression
     1607                ay[2]  = CppAD::CondExpGe(ax[0], three, exp(ax[0]), exp(ax[0]) );
    16041608                CppAD::ADFun<double> f(ax, ay);
    16051609                f.optimize();
    16061610
    16071611                // check case where x[0] >= 3
    1608                 vector<double> x(2), y(2);
     1612                vector<double> x(2), y(3);
    16091613                x[0] = 4.0;
    16101614                x[1] = 2.0;
    16111615                y    = f.Forward(0, x);
    16121616                ok  &= y[0] == x[0] + x[1];
    1613                 ok  &= y[1] == x[0] + x[1];
     1617                ok  &= y[1] == x[0] - x[1];
     1618                ok  &= y[2] == exp(x[0]);
    16141619
    16151620                // check case where x[0] < 3
     
    16181623                y    = f.Forward(0, x);
    16191624                ok  &= y[0] == x[0] + x[1];
    1620                 ok  &= y[1] == x[0] + x[1];
     1625                ok  &= y[1] == x[0] - x[1];
     1626                ok  &= y[2] == exp(x[0]);
    16211627
    16221628                return ok;
Note: See TracChangeset for help on using the changeset viewer.