lines 6-65 of file: speed/double/sparse_jacobian.cpp {xrst_begin double_sparse_jacobian.cpp} Double Speed: Sparse Jacobian ############################# Specifications ************** See :ref:`link_sparse_jacobian-name` . Implementation ************** {xrst_spell_off} {xrst_code cpp} */ # include # include # include // Note that CppAD uses global_option["memory"] at the main program level # include extern std::map global_option; bool link_sparse_jacobian( const std::string& job , size_t size , size_t repeat , size_t m , const CppAD::vector& row , const CppAD::vector& col , CppAD::vector& x , CppAD::vector& jacobian , size_t& n_color ) { if(global_option["onetape"]||global_option["atomic"]||global_option["optimize"]||global_option["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 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(m, n, x, row, col, order, yp); } for(i = 0; i < m; i++) jacobian[i] = yp[i]; return true; } /* {xrst_code} {xrst_spell_on} {xrst_end double_sparse_jacobian.cpp}