|
template<class Base >
void reverse_cos_op |
( |
size_t |
d, |
|
|
size_t |
i_z, |
|
|
size_t |
i_x, |
|
|
size_t |
nc_taylor, |
|
|
const Base * |
taylor, |
|
|
size_t |
nc_partial, |
|
|
Base * |
partial |
|
) |
| [inline] |
Compute reverse mode partial derivatives for result of op = CosOp.
The C++ source code corresponding to this operation is
The auxillary result is
The value of y is computed along with the value of z.
This routine is given the partial derivatives of a function G( z , y , x , w , ... ) and it uses them to compute the partial derivatives of
H( x , w , u , ... ) = G[ z(x) , y(x), x , w , u , ... ]
- Template Parameters:
-
Base | base type for the operator; i.e., this operation was recorded using AD< Base > and computations by this routine are done using type Base . |
- Parameters:
-
d | highest order Taylor coefficient that we are computing the partial derivatives with respect to. |
i_z | variable index corresponding to the last (primary) result for this operation; i.e. the row index in taylor to z. The auxillary result is called y and has index i_z - 1. |
i_x | variable index corresponding to the argument for this operation; i.e. the row index in taylor corresponding to x. |
nc_taylor | number of colums in the matrix containing all the Taylor coefficients. |
taylor | taylor [ i_x * nc_taylor + k ] for k = 0 , ... , d is the k-th order Taylor coefficient corresponding to x.
taylor [ i_z * nc_taylor + k ] for k = 0 , ... , d is the k-th order Taylor coefficient corresponding to z.
taylor [ ( i_z - 1) * nc_taylor + k ] for k = 0 , ... , d is the k-th order Taylor coefficient corresponding to the auxillary variable y. |
nc_partial | number of colums in the matrix containing all the partial derivatives. |
partial | Input: partial [ i_x * nc_partial + k ] for k = 0 , ... , d is the partial derivative of G( z , y , x , w , u , ... ) with respect to the k-th order Taylor coefficient for x.
Input: partial [ i_z * nc_partial + k ] for k = 0 , ... , d is the partial derivative of G( z , y , x , w , u , ... ) with respect to the k-th order Taylor coefficient for z.
Input: partial [ ( i_z - 1) * nc_partial + k ] for k = 0 , ... , d is the partial derivative of G( z , x , w , u , ... ) with respect to the k-th order Taylor coefficient for the auxillary variable y.
Output: partial [ i_x * nc_partial + k ] for k = 0 , ... , d is the partial derivative of H( x , w , u , ... ) with respect to the k-th order Taylor coefficient for x.
Output: partial [ ( i_z - j ) * nc_partial + k ] for j = 0 , 1 , and for k = 0 , ... , d may be used as work space; i.e., may change in an unspecified manner. |
- Checked Assumptions
- NumArg(op) == 1
- NumRes(op) == 2
- i_x + 1 < i_z
- d < nc_taylor
- d < nc_partial
Definition at line 133 of file cos_op.hpp.
Referenced by ReverseSweep().
|