CppAD: A C++ Algorithmic Differentiation Package  20171217
template<class BaseVector , class Fun >
 int CppAD::opt_val_hes ( const BaseVector & x, const BaseVector & y, Fun fun, BaseVector & jac, BaseVector & hes )

Computing Jabobians and Hessians of Optimal Values.

We are given a function and we define and by

We wish to compute the Jacobian and possibly also the Hessian, of .

Template Parameters
 BaseVector The type BaseVector must be a SimpleVector class. We use Base to refer to the type of the elements of BaseVector; i.e., BaseVector::value_type.
Parameters
 x is a vector with size n. It specifies the point at which we evaluating the Jacobian (and possibly the Hessian ). y is a vector with size m. It must be equal to ; i.e., it must solve the implicit equation fun The argument fun is an object of type Fun wich must support the member functions listed below. CppAD will may be recording operations of the type AD when these member functions are called. These member functions must not stop such a recording; e.g., they must not call AD::abort_recording.
The type Fun::ad_vector must be a SimpleVector class with elements of type AD<Base>; i.e. Fun::ad_vector::value_type is equal to AD<Base>.
fun.ell
the type Fun must support the syntax
     ell = fun.ell()

where ell is a size_t value that is set to ; i.e., the number of terms in the summation.
fun.s
The type Fun must support the syntax
     s_k = fun.s(k, x, y)

The argument k has prototype size_t k. The argument x has prototype const Fun::ad_vector& x and its size must be equal to n. The argument y has prototype const Fun::ad_vector& y and its size must be equal to m. The return value s_k has prototype AD<Base> s_k and its value must be given by .
fun.sy
The type Fun must support the syntax
     sy_k = fun.sy(k, x, y)

The argument k has prototype size_t k. The argument x has prototype const Fun::ad_vector& x and its size must be equal to n. The argument y has prototype const Fun::ad_vector& y and its size must be equal to m. The return value sy_k has prototype Fun::ad_vector& sy_k, its size is m and its value must be given by .
Parameters
 jac is a vector with size n or zero. The input values of its elements do not matter. If it has size zero, it is not affected. Otherwise, on output it contains the Jacobian of ; i.e., for ,  where x is the first argument to opt_val_hes. hes is a vector with size n * n or zero. The input values of its elements do not matter. If it has size zero, it is not affected. Otherwise, on output it contains the Hessian of ; i.e., for , and ,
Returns
If hes.size() == 0, the return value is not defined. Otherwise, the return value is the sign of the determinant for \$. If it is zero, then the matrix is singular and hes is not set to its specified value.

Definition at line 364 of file opt_val_hes.hpp.