1 # ifndef CPPAD_LOCAL_COS_OP_HPP 
    2 # define CPPAD_LOCAL_COS_OP_HPP 
   16 namespace CppAD { 
namespace local { 
 
   54      Base* x = taylor + i_x * cap_order;
 
   55      Base* c = taylor + i_z * cap_order;
 
   56      Base* s = c      -       cap_order;
 
   68      for(
size_t j = p; j <= q; j++)
 
   72           for(k = 1; k <= j; k++)
 
   73           {    s[j] += Base(
double(k)) * x[k] * c[j-k];
 
   74                c[j] -= Base(
double(k)) * x[k] * s[j-k];
 
   76           s[j] /= Base(
double(j));
 
   77           c[j] /= Base(
double(j));
 
  112      size_t num_taylor_per_var = (cap_order-1) * r + 1;
 
  113      Base* x = taylor + i_x * num_taylor_per_var;
 
  114      Base* c = taylor + i_z * num_taylor_per_var;
 
  115      Base* s = c      -       num_taylor_per_var;
 
  121      size_t m = (q-1) * r + 1;
 
  122      for(
size_t ell = 0; ell < r; ell++)
 
  123      {    s[m+ell] =   Base(
double(q)) * x[m + ell] * c[0];
 
  124           c[m+ell] = - Base(
double(q)) * x[m + ell] * s[0];
 
  125           for(
size_t k = 1; k < q; k++)
 
  126           {    s[m+ell] += Base(
double(k)) * x[(k-1)*r+1+ell] * c[(q-k-1)*r+1+ell];
 
  127                c[m+ell] -= Base(
double(k)) * x[(k-1)*r+1+ell] * s[(q-k-1)*r+1+ell];
 
  129           s[m+ell] /= Base(
double(q));
 
  130           c[m+ell] /= Base(
double(q));
 
  149 template <
class Base>
 
  162      Base* x = taylor + i_x * cap_order;
 
  163      Base* c = taylor + i_z * cap_order;  
 
  164      Base* s = c      -       cap_order;  
 
  185 template <
class Base>
 
  202      const Base* x  = taylor  + i_x * cap_order;
 
  203      Base* px       = partial + i_x * nc_partial;
 
  206      const Base* c  = taylor  + i_z * cap_order; 
 
  207      Base* pc       = partial + i_z * nc_partial;
 
  210      const Base* s  = c  - cap_order; 
 
  211      Base* ps       = pc - nc_partial;
 
  220           ps[j]   /= Base(
double(j));
 
  221           pc[j]   /= Base(
double(j));
 
  222           for(k = 1; k <= j; k++)
 
  224                px[k]   += Base(
double(k)) * 
azmul(ps[j], c[j-k]);
 
  225                px[k]   -= Base(
double(k)) * 
azmul(pc[j], s[j-k]);
 
  227                ps[j-k] -= Base(
double(k)) * 
azmul(pc[j], x[k]);
 
  228                pc[j-k] += Base(
double(k)) * 
azmul(ps[j], x[k]);
 
  233      px[0] += 
azmul(ps[0], c[0]);
 
  234      px[0] -= 
azmul(pc[0], s[0]);
 
void forward_cos_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 = CosOp. 
AD< Base > azmul(const AD< Base > &x, const AD< Base > &y)
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_cos_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 = CosOp. 
#define CPPAD_ASSERT_UNKNOWN(exp)
Check that exp is true, if not terminate execution. 
AD< Base > sin(const AD< Base > &x)
AD< Base > cos(const AD< Base > &x)
void reverse_cos_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 = CosOp. 
void forward_cos_op_dir(size_t q, size_t r, size_t i_z, size_t i_x, size_t cap_order, Base *taylor)
Compute forward mode Taylor coefficient for result of op = CosOp.