Changeset 2993 for trunk/test_more


Ignore:
Timestamp:
Oct 23, 2013 8:21:30 AM (6 years ago)
Author:
bradbell
Message:

opt_check.sh: Optimization bug plus comments as to how to fix.
optimize.hpp: fix bug in choosing where to insert CSkipOp.
optimize.cpp: fix some tests were not being run (by mistake).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/test_more/optimize.cpp

    r2991 r2993  
    7272                x[1] = 3.;
    7373                y    = f.Forward(0, x);
    74                 ok   = y[0] == x[0] - x[1];
     74                ok  &= y[0] == x[0] - x[1];
    7575
    7676                // after optimize can skip either call to g or call to h
     
    104104       
    105105                // Create a checkpoint version of the function g
    106                 vector< AD<double> > ax(2), ay(1), az(1);
     106                vector< AD<double> > ax(2), ay(2), az(1);
    107107                ax[0] = 0.;
    108108                ax[1] = 1.;
     
    119119               
    120120                // create function object f : ax -> az
    121                 CppAD::ADFun<double> f;
    122                 f.Dependent(ax, az);
     121                CppAD::ADFun<double> f(ax, az);
    123122
    124123                // number of variables before optimization
     124                // (include ay[0] and ay[1])
    125125                size_t n_before = f.size_var();
    126126               
     
    128128                f.optimize();
    129129
    130                 // number of variables before optimization
     130                // number of variables after optimization
     131                // (does not include ay[0] and ay[1])
    131132                size_t n_after = f.size_var();
    132                 ok            &= n_after + 1 == n_before;
     133                ok            &= n_after + 2 == n_before;
    133134       
    134135                // check optimization works ok
     
    137138                x[1] = 3.;
    138139                z    = f.Forward(0, x);
    139                 ok   = z[0] == x[0] - x[1];
     140                ok  &= z[0] == x[0] - x[1];
    140141               
    141142                return ok;
     
    13211322        ok     &= atomic_cond_exp();
    13221323        // check optimizing out atomic arguments
     1324        ok     &= atomic_no_used();
    13231325        ok     &= atomic_arguments();
    13241326        // check reverse dependency analysis optimization
     
    13451347        // case where results are not identically equal
    13461348        ok     &= not_identically_equal();
    1347 
     1349        //
    13481350        CppAD::user_atomic<double>::clear();
    13491351        return ok;
Note: See TracChangeset for help on using the changeset viewer.