2 # ifndef CPPAD_LOCAL_SUB_OP_HPP
3 # define CPPAD_LOCAL_SUB_OP_HPP
16 namespace CppAD {
namespace local {
43 const Base* parameter ,
54 Base* x = taylor + arg[0] * cap_order;
55 Base* y = taylor + arg[1] * cap_order;
56 Base* z = taylor + i_z * cap_order;
58 for(
size_t d = p; d <= q; d++)
81 const Base* parameter ,
92 size_t num_taylor_per_var = (cap_order-1) * r + 1;
93 size_t m = (q-1) * r + 1;
94 Base* x = taylor + arg[0] * num_taylor_per_var + m;
95 Base* y = taylor + arg[1] * num_taylor_per_var + m;
96 Base* z = taylor + i_z * num_taylor_per_var + m;
98 for(
size_t ell = 0; ell < r; ell++)
99 z[ell] = x[ell] - y[ell];
116 template <
class Base>
120 const Base* parameter ,
129 Base* x = taylor + arg[0] * cap_order;
130 Base* y = taylor + arg[1] * cap_order;
131 Base* z = taylor + i_z * cap_order;
150 template <
class Base>
155 const Base* parameter ,
168 Base* px = partial + arg[0] * nc_partial;
169 Base* py = partial + arg[1] * nc_partial;
170 Base* pz = partial + i_z * nc_partial;
195 template <
class Base>
201 const Base* parameter ,
212 Base* y = taylor + arg[1] * cap_order;
213 Base* z = taylor + i_z * cap_order;
216 Base x = parameter[ arg[0] ];
221 for(
size_t d = p; d <= q; d++)
237 template <
class Base>
243 const Base* parameter ,
254 size_t num_taylor_per_var = (cap_order-1) * r + 1;
255 size_t m = (q-1) * r + 1;
256 Base* y = taylor + arg[1] * num_taylor_per_var + m;
257 Base* z = taylor + i_z * num_taylor_per_var + m;
260 for(
size_t ell = 0; ell < r; ell++)
276 template <
class Base>
280 const Base* parameter ,
289 Base x = parameter[ arg[0] ];
292 Base* y = taylor + arg[1] * cap_order;
293 Base* z = taylor + i_z * cap_order;
311 template <
class Base>
316 const Base* parameter ,
329 Base* py = partial + arg[1] * nc_partial;
330 Base* pz = partial + i_z * nc_partial;
354 template <
class Base>
360 const Base* parameter ,
371 Base* x = taylor + arg[0] * cap_order;
372 Base* z = taylor + i_z * cap_order;
375 Base y = parameter[ arg[1] ];
380 for(
size_t d = p; d <= q; d++)
396 template <
class Base>
402 const Base* parameter ,
413 size_t num_taylor_per_var = (cap_order-1) * r + 1;
414 Base* x = taylor + arg[0] * num_taylor_per_var;
415 Base* z = taylor + i_z * num_taylor_per_var;
418 size_t m = (q-1) * r + 1;
419 for(
size_t ell = 0; ell < r; ell++)
436 template <
class Base>
440 const Base* parameter ,
449 Base y = parameter[ arg[1] ];
452 Base* x = taylor + arg[0] * cap_order;
453 Base* z = taylor + i_z * cap_order;
471 template <
class Base>
476 const Base* parameter ,
489 Base* px = partial + arg[0] * nc_partial;
490 Base* pz = partial + i_z * nc_partial;
void forward_subvp_op(size_t p, size_t q, size_t i_z, const addr_t *arg, const Base *parameter, size_t cap_order, Base *taylor)
Compute forward mode Taylor coefficients for result of op = SubvvOp.
void reverse_subvv_op(size_t d, size_t i_z, const addr_t *arg, const Base *parameter, size_t cap_order, const Base *taylor, size_t nc_partial, Base *partial)
Compute reverse mode partial derivatives for result of op = SubvvOp.
void forward_subvv_op(size_t p, size_t q, size_t i_z, const addr_t *arg, const Base *parameter, size_t cap_order, Base *taylor)
Compute forward mode Taylor coefficients for result of op = SubvvOp.
CPPAD_TAPE_ADDR_TYPE addr_t
void forward_subvp_op_0(size_t i_z, const addr_t *arg, const Base *parameter, size_t cap_order, Base *taylor)
Compute zero order forward mode Taylor coefficients for result of op = SubvvOp.
void forward_subpv_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)
Multiple directions forward mode Taylor coefficients for op = SubpvOp.
size_t NumArg(OpCode op)
Number of arguments for a specified operator.
void forward_subvv_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)
Multiple directions forward mode Taylor coefficients for op = SubvvOp.
size_t NumRes(OpCode op)
Number of variables resulting from the specified operation.
void forward_subvv_op_0(size_t i_z, const addr_t *arg, const Base *parameter, size_t cap_order, Base *taylor)
Compute zero order forward mode Taylor coefficients for result of op = SubvvOp.
void forward_subpv_op(size_t p, size_t q, size_t i_z, const addr_t *arg, const Base *parameter, size_t cap_order, Base *taylor)
Compute forward mode Taylor coefficients for result of op = SubpvOp.
void reverse_subpv_op(size_t d, size_t i_z, const addr_t *arg, const Base *parameter, size_t cap_order, const Base *taylor, size_t nc_partial, Base *partial)
Compute reverse mode partial derivative for result of op = SubpvOp.
#define CPPAD_ASSERT_UNKNOWN(exp)
Check that exp is true, if not terminate execution.
void forward_subvp_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)
Multiple directions forward mode Taylor coefficients for op = SubvvOp.
void reverse_subvp_op(size_t d, size_t i_z, const addr_t *arg, const Base *parameter, size_t cap_order, const Base *taylor, size_t nc_partial, Base *partial)
Compute reverse mode partial derivative for result of op = SubvpOp.
void forward_subpv_op_0(size_t i_z, const addr_t *arg, const Base *parameter, size_t cap_order, Base *taylor)
Compute zero order forward mode Taylor coefficient for result of op = SubpvOp.