2 # ifndef CPPAD_LOCAL_ADD_OP_HPP
3 # define CPPAD_LOCAL_ADD_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 j = p; j <= q; j++)
81 const Base* parameter ,
92 size_t num_taylor_per_var = (cap_order-1) * r + 1;
93 Base* x = taylor + arg[0] * num_taylor_per_var;
94 Base* y = taylor + arg[1] * num_taylor_per_var;
95 Base* z = taylor + i_z * num_taylor_per_var;
97 size_t m = (q-1)*r + 1 ;
98 for(
size_t ell = 0; ell < r; ell++)
99 z[m+ell] = x[m+ell] + y[m+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;
194 template <
class Base>
200 const Base* parameter ,
211 Base* y = taylor + arg[1] * cap_order;
212 Base* z = taylor + i_z * cap_order;
216 Base x = parameter[ arg[0] ];
220 for(
size_t j = p; j <= q; j++)
235 template <
class Base>
241 const Base* parameter ,
252 size_t num_taylor_per_var = (cap_order-1) * r + 1;
253 size_t m = (q-1) * r + 1;
254 Base* y = taylor + arg[1] * num_taylor_per_var + m;
255 Base* z = taylor + i_z * num_taylor_per_var + m;
257 for(
size_t ell = 0; ell < r; ell++)
273 template <
class Base>
277 const Base* parameter ,
286 Base x = parameter[ arg[0] ];
289 Base* y = taylor + arg[1] * cap_order;
290 Base* z = taylor + i_z * cap_order;
308 template <
class Base>
313 const Base* parameter ,
326 Base* py = partial + arg[1] * nc_partial;
327 Base* pz = partial + i_z * nc_partial;
CPPAD_TAPE_ADDR_TYPE addr_t
size_t NumArg(OpCode op)
Number of arguments for a specified operator.
void forward_addpv_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 = AddpvOp.
size_t NumRes(OpCode op)
Number of variables resulting from the specified operation.
void reverse_addpv_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 = AddpvOp.
#define CPPAD_ASSERT_UNKNOWN(exp)
Check that exp is true, if not terminate execution.
void forward_addvv_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 = AddvvOp.
void forward_addvv_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 = AddvvOp.
void reverse_addvv_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 = AddvvOp.
void forward_addpv_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 = AddpvOp.
void forward_addpv_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 = AddpvOp.
void forward_addvv_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 = AddvvOp.