atomic_two_for_sparse_jac

View page source

Atomic Forward Jacobian Sparsity Patterns

Syntax

ok = afun . for_sparse_jac ( q , r , s , x )

Deprecated 2016-06-27

ok = afun . for_sparse_jac ( q , r , s )

Purpose

This function is used by ForSparseJac to compute Jacobian sparsity patterns. For a fixed matrix \(R \in \B{R}^{n \times q}\), the Jacobian of \(f( x + R * u)\) with respect to \(u \in \B{R}^q\) is

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

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

Implementation

If you are using ForSparseJac , ForSparseHes , or RevSparseHes , one of the versions of 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 columns in \(R \in \B{R}^{n \times q}\) and the Jacobian \(S(x) \in \B{R}^{m \times q}\).

r

This argument has prototype

const atomic_sparsity & r

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

s

This argument has prototype

atomic_sparsity & s

The input values of its elements are not specified (must not matter). Upon return, s is a atomic_sparsity pattern for \(S(x) \in \B{R}^{m \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.