The output of a batched function (decisions.md [batched-functions]): its values, a column per point, and the Jacobians the library uses, by block of the function's input, in storage the library provides and sizes once before the call.
More...
template<typename In, typename Out, typename Scalar_, typename Mark>
class Emrys::BatchedOutput< In, Out, Scalar_, Mark >
The output of a batched function (decisions.md [batched-functions]): its values, a column per point, and the Jacobians the library uses, by block of the function's input, in storage the library provides and sizes once before the call.
The function writes values() whole. Where its mark gives Jacobians, it writes jacobian<Name>(j) (jacobians::perColumn()) or jacobian<Name>() (jacobians::shared()) for each block Name of its input for which wantsJacobian<Name>() is true on this call: the columns of the Jacobian for the block that reads() names Name. The storage holds only those blocks, so a block not wanted is not written. A function of a model without tags writes jacobian(j) or jacobian(), the Jacobian over its whole input, when wantsJacobians() says every block is wanted (decisions.md [whole-state-models]).
- Template Parameters
-
| In | the function's input space, a Composite of the names reads() gives, or the state's space for a whole-state model, which is its own one block |
| Out | its output space: the values have a row per value coordinate of it, and the Jacobians a row per difference coordinate |
| Scalar_ | the scalar the function writes |
| Mark | the Jacobians the function writes |
template<typename In, typename Out, typename Scalar_, typename Mark>
The output over the values values and the Jacobians' storage jacobians, of the function's input in, with the Jacobian of block k wanted where wanted says.
The storage holds the wanted blocks' columns side by side, once per column of the values under jacobians::perColumn() and once under jacobians::shared(). in outlives this.