atomic_two_for_sparse_hes

View page source

Atomic Forward Hessian Sparsity Patterns

Syntax

ok = afun . for_sparse_hes ( vx , r , s , h , x )

Deprecated 2016-06-27

ok = afun . for_sparse_hes ( vx , r , s , h )

Purpose

This function is used by ForSparseHes to compute Hessian sparsity patterns. If you are using ForSparseHes , one of the versions of this virtual function must be defined by the atomic_user class.

Given a Sparsity Pattern for a diagonal matrix \(R \in \B{R}^{n \times n}\), and a row vector \(S \in \B{R}^{1 \times m}\), this routine computes the sparsity pattern for

\[H(x) = R^\R{T} \cdot (S \cdot f)^{(2)}( x ) \cdot R\]

Implementation

If you are using and ForSparseHes , this virtual function must be defined by the atomic_user class.

vx

The argument vx has prototype

const CppAD:vector<bool>& vx

vx . size () == n , and for \(j = 0 , \ldots , n-1\), vx [ j ] is true if and only if ax [ j ] is a Variable or dynamic parameter in the corresponding call to

afun ( ax , ay )

r

This argument has prototype

const CppAD:vector<bool>& r

and is a atomic_sparsity pattern for the diagonal of \(R \in \B{R}^{n \times n}\).

s

The argument s has prototype

const CppAD:vector<bool>& s

and its size is m . It is a sparsity pattern for \(S \in \B{R}^{1 \times m}\).

h

This argument has prototype

atomic_sparsity & h

The input value of its elements are not specified (must not matter). Upon return, h is a atomic_sparsity pattern for \(H(x) \in \B{R}^{n \times n}\) which is defined above.

x

The argument has prototype

const CppAD::vector< Base >& x

and size is equal to the n . This is the Value corresponding to the parameters in the vector ax (when the atomic function was called). To be specific, if

      if ( Parameter ( ax [ i ]) == true )
            x [ i ] = Value ( ax [ i ] );
      else
            x [ i ] = CppAD::numeric_limits< Base >:: quiet_NaN ();

The version of this function with out the x argument is deprecated; i.e., you should include the argument even if you do not use it.