Double Speed: Sparse Jacobian
Keywords: double speed: sparse jacobian link_sparse_jacobian speed specifications implementation

| Prev | Next |  |  |  |  |  | double_sparse_jacobian.cpp |

Double Speed: Sparse Jacobian
Specifications
See link_sparse_jacobian .
Implementation `

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

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

    bool link_sparse_jacobian(
         size_t                           size     ,
         size_t                           repeat   ,
         size_t                           m        ,
         const CppAD::vector<size_t>&     row      ,
         const CppAD::vector<size_t>&     col      ,
               CppAD::vector<double>&     x        ,
               CppAD::vector<double>&     jacobian ,
               size_t&                    n_sweep  )
    {
         if(global_onetape||global_atomic||global_optimize||global_boolsparsity)
              return false;
         // -----------------------------------------------------
         // setup
         using CppAD::vector;
         size_t i;
         size_t order = 0;          // order for computing function value
         size_t n     = size;       // argument space dimension
         vector<double> yp(m);      // function value yp = f(x)

         // ------------------------------------------------------
         while(repeat--)
         {    // choose a value for x
              CppAD::uniform_01(n, x);

              // computation of the function
              CppAD::sparse_jac_fun<double>(m, n, x, row, col, order, yp);
         }
         for(i = 0; i < m; i++)
              jacobian[i] = yp[i];

         return true;
    }

`

Input File: speed/double/sparse_jacobian.cpp