CppAD: A C++ Algorithmic Differentiation Package  20171217
template<class Vector_set >
 void CppAD::local::reverse_sparse_jacobian_load_op ( bool dependency, OpCode op, size_t i_z, const addr_t * arg, size_t num_combined, const size_t * combined, Vector_set & var_sparsity, Vector_set & vecad_sparsity )
inline

Reverse mode Jacobian sparsity operations for LdpOp and LdvOp.

Parameters
 dependency is this a dependency (or sparsity) calculation.

The C++ source code corresponding to this operation is

```     v[x] = y
```

where v is a VecAD<Base> vector, x is an AD<Base> object, and y is AD<Base> or Base objects. We define the index corresponding to v[x] by

```     i_v_x = index_by_ind[ arg[0] + i_vec ]
```

where i_vec is defined under the heading arg[1] below:

Template Parameters
 Vector_set is the type used for vectors of sets. It can be either sparse_pack or sparse_list.
Parameters
 op is the code corresponding to this operator; i.e., LdpOp or LdvOp. i_z is the AD variable index corresponding to the variable z; i.e., the set with index i_z in var_sparsity is the sparsity pattern correpsonding to z. arg arg[0] is the offset corresponding to this VecAD vector in the VecAD combined array. num_combined is the total number of elements in the VecAD combinded array. combined is the VecAD combined array. combined[ arg[0] - 1 ] is the index of the set corresponding to the vector v in vecad_sparsity. We use the notation i_v for this value; i.e., ``` i_v = combined[ \a arg[0] - 1 ] ``` var_sparsity The set with index i_z in var_sparsity is the sparsity pattern for z. This is an output for forward mode operations, and an input for reverse mode operations. vecad_sparsity The set with index i_v is the sparsity pattern for the vector v. This is an input for forward mode operations. For reverse mode operations, the sparsity pattern for z is added to the sparsity pattern for v.
Checked Assertions
• NumArg(op) == 3
• NumRes(op) == 1
• 0 < arg[0]
• arg[0] < num_combined