Changeset 3301 for trunk/test_more


Ignore:
Timestamp:
May 24, 2014 1:20:21 AM (6 years ago)
Author:
bradbell
Message:

merge in multiple forward direcitons from branches/forward_dir

Location:
trunk
Files:
5 edited
1 copied

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/test_more/CMakeLists.txt

    r3214 r3301  
    9595        for_sparse_jac.cpp
    9696        forward.cpp
     97        forward_dir.cpp
    9798        forward_order.cpp
    9899        from_base.cpp
  • trunk/test_more/makefile.am

    r3214 r3301  
    120120        for_sparse_jac.cpp \
    121121        forward.cpp \
     122        forward_dir.cpp \
    122123        forward_order.cpp \
    123124        from_base.cpp \
  • trunk/test_more/tan.cpp

    r2506 r3301  
    11/* $Id$ */
    22/* --------------------------------------------------------------------------
    3 CppAD: C++ Algorithmic Differentiation: Copyright (C) 2003-12 Bradley M. Bell
     3CppAD: C++ Algorithmic Differentiation: Copyright (C) 2003-14 Bradley M. Bell
    44
    55CppAD is distributed under multiple licenses. This distribution is under
     
    1919
    2020namespace {
     21        bool tan_two(void)
     22        {       bool ok = true;
     23                using CppAD::AD;
     24                using CppAD::NearEqual;
     25                double eps = 10. * std::numeric_limits<double>::epsilon();
     26       
     27                // domain space vector
     28                size_t n = 1;
     29                CPPAD_TESTVECTOR(AD<double>) ax(n);
     30                ax[0] = 0.5;
     31       
     32                // declare independent variables and starting recording
     33                CppAD::Independent(ax);
     34       
     35                // range space vector
     36                size_t m = 1;
     37                CPPAD_TESTVECTOR(AD<double>) ay(m);
     38                ay[0] = tan( ax[0] );
     39       
     40                // create f: x -> y and stop tape recording
     41                CppAD::ADFun<double> f(ax, ay);
     42       
     43                // first order Taylor coefficient
     44                CPPAD_TESTVECTOR(double) x1(n), y1;
     45                x1[0] = 2.0;
     46                y1    = f.Forward(1, x1);
     47                ok   &= y1.size() == m;
     48               
     49                // secondorder Taylor coefficients
     50                CPPAD_TESTVECTOR(double) x2(n), y2;
     51                x2[0] = 0.0;
     52                y2    = f.Forward(2, x2);
     53                ok   &= y2.size() == m;
     54                //
     55                // Y  (t)    = F[X_0(t)]
     56                //           =  tan(0.5 + 2t )
     57                // Y' (t)    =  2 * cos(0.5 + 2t )^(-2)
     58                double sec_sq  = 1.0 / ( cos(0.5) * cos(0.5) );
     59                double check   = 2.0 * sec_sq;
     60                ok  &= NearEqual(y1[0] , check, eps, eps);
     61                //
     62                // Y''(0)    = 8*cos(0.5)^(-3)*sin(0.5)
     63                check = 8.0 * tan(0.5) * sec_sq / 2.0;
     64                ok    &= NearEqual(y2[0] , check, eps, eps);
     65                //
     66                return ok;
     67        }
    2168        bool tan_case(bool tan_first)
    2269        {       bool ok = true;
     
    121168bool tan(void)
    122169{       bool ok = true;
     170        //
    123171        ok     &= tan_case(true);
    124172        ok     &= tan_case(false);
    125173        ok     &= tanh_case(true);
    126174        ok     &= tanh_case(false);
     175        //
     176        ok     &= tan_two();
    127177        return ok;
    128178}
  • trunk/test_more/test_more.cpp

    r3214 r3301  
    4949extern bool for_sparse_jac(void);
    5050extern bool Forward(void);
     51extern bool forward_dir(void);
    5152extern bool forward_order(void);
    5253extern bool FromBase(void);
     
    158159        ok &= Run( for_sparse_jac,  "for_sparse_jac" );
    159160        ok &= Run( Forward,         "Forward"        );
     161        ok &= Run( forward_dir,     "forward_dir"    );
    160162        ok &= Run( forward_order,   "forward_order"  );
    161163        ok &= Run( FromBase,        "FromBase"       );
Note: See TracChangeset for help on using the changeset viewer.