atomic_two_rev_sparse_jac

View page source

Atomic Reverse Jacobian Sparsity Patterns

Syntax

ok = afun . rev_sparse_jac ( q , rt , st , x )

Deprecated 2016-06-27

ok = afun . rev_sparse_jac ( q , rt , st )

Purpose

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

For a fixed matrix \(R \in \B{R}^{q \times m}\), the Jacobian of \(R * f( x )\) with respect to \(x \in \B{R}^n\) is

\[S(x) = R * f^{(1)} (x)\]

Given a Sparsity Pattern for \(R\), rev_sparse_jac computes a sparsity pattern for \(S(x)\).

Implementation

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

q

The argument q has prototype

size_t q

It specifies the number of rows in \(R \in \B{R}^{q \times m}\) and the Jacobian \(S(x) \in \B{R}^{q \times n}\).

rt

This argument has prototype

const atomic_sparsity & rt

and is a atomic_sparsity pattern for \(R^\R{T} \in \B{R}^{m \times q}\).

st

This argument has prototype

atomic_sparsity & st

The input value of its elements are not specified (must not matter). Upon return, s is a atomic_sparsity pattern for \(S(x)^\R{T} \in \B{R}^{n \times q}\).

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.

ok

The return value ok has prototype

bool ok

If it is true , the corresponding evaluation succeeded, otherwise it failed.