Changeset 3008 for trunk/test_more


Ignore:
Timestamp:
Nov 13, 2013 9:59:21 AM (6 years ago)
Author:
bradbell
Message:

Use atomic option setting to select bool or set sparsity during optimize.

atomic_base.hpp: fix sparsity option documentation.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/test_more/optimize.cpp

    r3002 r3008  
    1717
    1818namespace {
     19        // note this enum type is not part of the API (but its values are)
     20        CppAD::atomic_base<double>::option_enum atomic_sparsity_option;
     21        //
    1922        // ----------------------------------------------------------------
    2023        // Test nested conditional expressions.
     
    8487        {       ay[0] = CondExpGt(ax[0], ax[1], ax[2], ax[3]); }
    8588       
    86         bool cond_exp_sparsity(void)
     89        bool atomic_cond_exp_sparsity(void)
    8790        {       bool ok = true;
    8891                using CppAD::AD;
     
    108111                // create function object f : ax -> ay
    109112                CppAD::ADFun<double> f(ax, ay);
     113
    110114       
    111115                // now optimize the operation sequence
     116                j_check.option( atomic_sparsity_option );
    112117                f.optimize();
    113118       
     
    174179
    175180                // before optimize
     181                k_check.option( atomic_sparsity_option );
     182                h_check.option( atomic_sparsity_option );
    176183                ok  &= f.number_skip() == 0;
    177184
     
    237244               
    238245                // now optimize the operation sequence
     246                g_check.option( atomic_sparsity_option );
    239247                f.optimize();
    240248
     
    280288 
    281289                // now optimize f so that the calculation of au[1] is removed
     290                g_check.option( atomic_sparsity_option );
    282291                f.optimize();
    283292
     
    14261435bool optimize(void)
    14271436{       bool ok = true;
     1437        atomic_sparsity_option = CppAD::atomic_base<double>::bool_sparsity_enum;
     1438        for(size_t i = 0; i < 2; i++)
     1439        {       // check conditional expression sparsity pattern
     1440                // (used to optimize calls to atomic functions).
     1441                ok     &= atomic_cond_exp_sparsity();
     1442                // check optimizing out entire atomic function
     1443                ok     &= atomic_cond_exp();
     1444                // check optimizing out atomic arguments
     1445                ok     &= atomic_no_used();
     1446                ok     &= atomic_arguments();
     1447                atomic_sparsity_option =
     1448                        CppAD::atomic_base<double>::set_sparsity_enum;
     1449        }
    14281450        // check nested conditional expressions
    14291451        ok     &= nested_cond_exp();
    1430         // check conditional expression sparsity pattern
    1431         // (used to optimize calls to atomic functions).
    1432         ok     &= cond_exp_sparsity();
    1433         // check optimizing out entire atomic function
    1434         ok     &= atomic_cond_exp();
    1435         // check optimizing out atomic arguments
    1436         ok     &= atomic_no_used();
    1437         ok     &= atomic_arguments();
    14381452        // check reverse dependency analysis optimization
    14391453        ok     &= depend_one();
Note: See TracChangeset for help on using the changeset viewer.