--------------------------------------------------- lines 6-64 of file: speed/double/sparse_hessian.cpp --------------------------------------------------- {xrst_begin double_sparse_hessian.cpp} Double Speed: Sparse Hessian ############################ Specifications ************** See :ref:`link_sparse_hessian-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_hessian( size_t size , size_t repeat , const CppAD::vector& row , const CppAD::vector& col , CppAD::vector& x , CppAD::vector& hessian , 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 order = 0; // derivative order corresponding to function size_t n = size; // argument space dimension size_t m = 1; // range space dimension vector y(m); // function value // choose a value for x CppAD::uniform_01(n, x); // ------------------------------------------------------ while(repeat--) { // computation of the function CppAD::sparse_hes_fun(n, x, row, col, order, y); } hessian[0] = y[0]; return true; } /* {xrst_code} {xrst_spell_on} {xrst_end double_sparse_hessian.cpp}