1 # ifndef CPPAD_LOCAL_ABS_OP_HPP
2 # define CPPAD_LOCAL_ABS_OP_HPP
16 namespace CppAD {
namespace local {
48 Base* x = taylor + i_x * cap_order;
49 Base* z = taylor + i_z * cap_order;
51 for(
size_t j = p; j <= q; j++)
52 z[j] =
sign(x[0]) * x[j];
81 size_t num_taylor_per_var = (cap_order-1) * r + 1;
82 Base* x = taylor + i_x * num_taylor_per_var;
83 Base* z = taylor + i_z * num_taylor_per_var;
85 size_t m = (q-1) * r + 1;
86 for(
size_t ell = 0; ell < r; ell++)
87 z[m + ell] =
sign(x[0]) * x[m + ell];
100 template <
class Base>
114 Base x0 = *(taylor + i_x * cap_order);
115 Base* z = taylor + i_z * cap_order;
130 template <
class Base>
148 const Base* x = taylor + i_x * cap_order;
149 Base* px = partial + i_x * nc_partial;
152 Base* pz = partial + i_z * nc_partial;
155 for(j = 0; j <= d; j++)
156 px[j] +=
sign(x[0]) * pz[j];
void forward_abs_op(size_t p, size_t q, size_t i_z, size_t i_x, size_t cap_order, Base *taylor)
Compute forward mode Taylor coefficient for result of op = AbsOp.
void forward_abs_op_0(size_t i_z, size_t i_x, size_t cap_order, Base *taylor)
Compute zero order forward mode Taylor coefficient for result of op = AbsOp.
size_t NumArg(OpCode op)
Number of arguments for a specified operator.
size_t NumRes(OpCode op)
Number of variables resulting from the specified operation.
void forward_abs_op_dir(size_t q, size_t r, size_t i_z, size_t i_x, size_t cap_order, Base *taylor)
Multiple directions forward mode Taylor coefficient for op = AbsOp.
#define CPPAD_ASSERT_UNKNOWN(exp)
Check that exp is true, if not terminate execution.
std::complex< double > sign(const std::complex< double > &x)
void reverse_abs_op(size_t d, size_t i_z, size_t i_x, size_t cap_order, const Base *taylor, size_t nc_partial, Base *partial)
Compute reverse mode partial derivatives for result of op = AbsOp.
std::complex< double > fabs(const std::complex< double > &x)