Changeset 1595 for trunk/test_more


Ignore:
Timestamp:
Nov 28, 2009 1:44:35 PM (11 years ago)
Author:
bradbell
Message:

trunk: Fix bug in optimize.hpp when operating on VecAD objects.

optimize.cpp: new test that demonstrates the bug.
whats_new_09.omh: user's view of the changes.
optimize.hpp: fix the bug.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/test_more/optimize.cpp

    r1591 r1595  
    147147                CPPAD_TEST_VECTOR< AD<double> > Y(m);
    148148
    149                 CppAD::VecAD<double> U(n);
    150                 CppAD::VecAD<double> V(m);
    151                 for(j = 0; j < n; j++)
    152                         U[j] = 0;
    153                 for(i = 0; i < m; i++)
    154                         V[i] = 0;
     149                CppAD::VecAD<double> U(m);
     150                CppAD::VecAD<double> V(n);
     151                for(i = 0; i < m; i++)
     152                        U[i] = 0;
     153                for(j = 0; j < n; j++)
     154                        V[j] = 0;
    155155       
    156156                // declare independent variables and start tape recording
    157157                CppAD::Independent(X);
    158158
    159                 // make U a variable
     159                // first vecad vector that is a variable
    160160                U[ X[0] ] = X[1];
    161161
    162                 // make V a variable
     162                // second vecad vector that is a variable
    163163                V[ X[0] ] = X[1];
    164164
    165                 // Y only depend on V (and not on U)
     165                // Make dependency for vecad vectors different that for
     166                // variables because original code used worng dependency info.
     167                // Y does not depend on the first variable in the tape; i.e.
     168                // the one corresponding to the BeginOp. So make it depend
     169                // on the first vecad vector in the tape.
    166170                for(i = 0; i < m; i++)
    167171                {       AD<double> I(i);
    168                         Y[i] = V[I];
     172                        Y[i] = U[I];
    169173                }
    170174       
Note: See TracChangeset for help on using the changeset viewer.