Double Speed: Ode Solution
Keywords: double speed: ode solution link_ode speed specifications implementation

| Prev | Next |  |  |  |  |  | double_ode.cpp |

Double Speed: Ode Solution
Specifications
See link_ode .
Implementation `

    # include <cstring>
    # include <cppad/utility/vector.hpp>
    # include <cppad/speed/ode_evaluate.hpp>
    # include <cppad/speed/uniform_01.hpp>

    // Note that CppAD uses global_memory at the main program level
    extern bool
         global_onetape, global_atomic, global_optimize;

    bool link_ode(
         size_t                     size       ,
         size_t                     repeat     ,
         CppAD::vector<double>      &x         ,
         CppAD::vector<double>      &jacobian
    )
    {
         if(global_onetape||global_atomic||global_optimize)
              return false;
         // -------------------------------------------------------------
         // setup
         assert( x.size() == size );

         size_t n = size;

         size_t m = 0;
         CppAD::vector<double> f(n);

         while(repeat--)
         {    // choose next x value
              uniform_01(n, x);

              // evaluate function
              CppAD::ode_evaluate(x, m, f);

         }
         size_t i;
         for(i = 0; i < n; i++)
              jacobian[i] = f[i];
         return true;
    }

`

Input File: speed/double/ode.cpp