![]() |
Prev | Next | link_sparse_jacobian |
extern bool link_sparse_jacobian( const std::string& job , size_t size , size_t repeat , size_t m , const CppAD::vector<size_t>& row , const CppAD::vector<size_t>& col , CppAD::vector<double>& x , CppAD::vector<double>& jacobian , size_t& n_color );
m
the row index vector
row
, and column index vector
col
,
a corresponding function
f : \B{R}^n \rightarrow \B{R}^m
is defined by sparse_jac_fun
.
The non-zero entries in the Jacobian of this function have the form
\D{f[row[k]]}{x[col[k]]]}
for some
k
between zero and
K = row.size()-1
.
All the other terms of the Jacobian are zero.
row
and
col
determine
the sparsity pattern for the Jacobian that is differentiated.
The calculation of this sparsity pattern,
if necessary to compute the Jacobian,
is intended to be part of the timing for this test.
size
is referred to as
n
below,
is the dimension of the domain space for
f(x)
.
row
defines the value
K
.
The input value of its elements does not matter.
On output,
all the elements of
row
are between zero and
m-1
.
col
is a vector with size
K
.
The input value of its elements does not matter.
On output,
all the elements of
col
are between zero and
n-1
.
row
and
col
are in row major order; i.e.,
for each
k < row.size()-2
row[k] <= row[k+1]
and if
row[k] == row[k+1]
then
col[k] < col[k+1]
x
has prototype
CppAD::vector<double>& x
and its size is
n
; i.e.,
x.size() == size
.
The input value of the elements of
x
does not matter.
On output, it has been set to the
argument value for which the function,
or its derivative, is being evaluated and placed in
jacobian
.
The value of this vector need not change with each repetition.
jacobian
has prototype
CppAD::vector<double>& jacobian
and its size is
K
.
The input value of its elements does not matter.
The output value of its elements is the Jacobian of the function
f(x)
.
To be more specific, for
k = 0 , \ldots , K - 1
,
\D{f[ \R{row}[k] ]}{x[ \R{col}[k] ]} (x) = \R{jacobian} [k]
n_color
does not matter. On output,
it has value zero or n_sweep
corresponding
to the evaluation of
jacobian
.
This is also the number of colors corresponding to the
coloring method
,
which can be set to colpack
,
and is otherwise cppad
.
If this routine returns an non-zero
n_color
for
any
job
value, the non-zero value will be reported for this test.
package
is double
,
only the first
m
elements of
jacobian
are used and they are set to
the value of
f(x)
.