CppAD: A C++ Algorithmic Differentiation Package  20171217
template<class Base >
 void CppAD::local::forward_powvp_op_dir ( size_t q, size_t r, size_t i_z, const addr_t * arg, const Base * parameter, size_t cap_order, Base * taylor )
inline

Multiple directions forward mode Taylor coefficients for op = PowvpOp.

The C++ source code corresponding to this operation is

```     z = pow(x, y)
```

In the documentation below, this operations is for the case where x is a variable and y is a parameter.

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
 q order of the Taylor coefficient that we are computing. r is the number of Taylor coefficient directions that we are computing i_z variable index corresponding to the last (primary) result for this operation; i.e. the row index in taylor corresponding to z. Note that there are three results for this operation, below they are referred to as z_0, z_1, z_2 and correspond to ``` z_0 = log(x) z_1 = z0 * y z_2 = exp(z1) ``` It follows that the final result is equal to z; i.e., z = z_2 = pow(x, y). arg arg[0] index corresponding to the left operand for this operator; i.e. the index corresponding to x. arg[1] index corresponding to the right operand for this operator; i.e. the index corresponding to y. parameter If x is a parameter, parameter [ arg[0] ] is the value corresponding to x. If y is a parameter, parameter [ arg[1] ] is the value corresponding to y. cap_order maximum number of orders that will fit in the `taylor` array.
tpv
We use the notation `tpv = (cap_order-1) * r + 1` which is the number of Taylor coefficients per variable
Parameters
 taylor Input: If x is a variable, `taylor [ arg[0] * tpv + 0 ]` is the zero order coefficient corresponding to x and `taylor [ arg[0] * tpv + (k-1)*r+1+ell ]` for k = 1 , ... , q, ell = 0 , ... , r-1, is the k-th order Taylor coefficient corresponding to x for the ell-th direction. Input: If y is a variable, `taylor [ arg[1] * tpv + 0 ]` is the zero order coefficient corresponding to y and `taylor [ arg[1] * tpv + (k-1)*r+1+ell ]` for k = 1 , ... , q, ell = 0 , ... , r-1, is the k-th order Taylor coefficient corresponding to y for the ell-th direction. Input: `taylor [ (i_z-2+j) * tpv + 0 ]`, is the zero order coefficient corresponding to z_j and `taylor [ (i_z-2+j) * tpv + (k-1)*r+1+ell ]`, for j = 0, 1, 2 , k = 0 , ... , q-1, ell = 0, ... , r-1, is the k-th order Taylor coefficient corresponding to z_j for the ell-th direction. Output: `taylor [ (i_z-2+j) * tpv + (q-1)*r+1+ell ]`, for j = 0, 1, 2 , ell = 0, ... , r-1, is the q-th order Taylor coefficient corresponding to z_j for the ell-th direction.
Checked Assertions
• NumArg(op) == 2
• NumRes(op) == 3
• If x is a variable, arg[0] < i_z - 2
• If y is a variable, arg[1] < i_z - 2
• 0 < q
• q < cap_order

Definition at line 525 of file pow_op.hpp.

Referenced by forward2sweep().