Changeset 1579 for trunk/test_more


Ignore:
Timestamp:
Nov 3, 2009 10:46:31 AM (11 years ago)
Author:
bradbell
Message:

trunk: Changes transferred from 20090303.1.

rev_sparse_hes.cpp: test case that demonstrated a bug in 20090303.0.
new_release.sh: make sure version in source has been changed.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/test_more/rev_sparse_hes.cpp

    r1550 r1579  
    395395}
    396396
     397bool case_five(void)
     398{       bool ok = true;
     399        using CppAD::AD;
     400        size_t i, j, k;
     401
     402        size_t n = 2;
     403        CPPAD_TEST_VECTOR< AD<double> > X(n);
     404        X[0] = 1.;
     405        X[1] = 2.;
     406        CppAD::Independent(X);
     407
     408        size_t m = 2;
     409        CPPAD_TEST_VECTOR< AD<double> > Y(m);
     410        Y[0] = pow(X[0], 2.);
     411        Y[1] = pow(2., X[0]);
     412
     413        // create function object F : X -> Y
     414        CppAD::ADFun<double> F(X, Y);
     415
     416        // sparsity pattern for the identity function U(x) = x
     417        CPPAD_TEST_VECTOR<bool> Px(n * n);
     418        for(i = 0; i < n; i++)
     419                for(j = 0; j < n; j++)
     420                        Px[ i * n + j ] = (i == j);
     421
     422        // compute sparsity pattern for Jacobian of F(U(x))
     423        F.ForSparseJac(n, Px);
     424
     425        // compute sparsity pattern for Hessian of F_k ( U(x) )
     426        CPPAD_TEST_VECTOR<bool> Py(m);
     427        CPPAD_TEST_VECTOR<bool> Pxx(n * n);
     428        for(k = 0; k < m; k++)
     429        {       for(i = 0; i < m; i++)
     430                        Py[i] = (i == k);
     431                Pxx = F.RevSparseHes(n, Py);
     432                // check values
     433                for(i = 0; i < n; i++)
     434                {       for(j = 0; j < n; j++)
     435                        {       bool check = (i == 0) & (j == 0);
     436                                ok        &= Pxx[i * n + j] == check;
     437                        }
     438                }
     439        }
     440        return ok;
     441}
     442
    397443} // End of empty namespace
    398444
     
    404450        ok &= case_three();
    405451        ok &= case_four();
    406 
    407         return ok;
    408 }
     452        ok &= case_five();
     453
     454        return ok;
     455}
Note: See TracChangeset for help on using the changeset viewer.