1 # ifndef CPPAD_CORE_STD_MATH_98_HPP
2 # define CPPAD_CORE_STD_MATH_98_HPP
492 # define CPPAD_STANDARD_MATH_UNARY_AD(Name, Op) \
493 template <class Base> \
494 inline AD<Base> Name(const AD<Base> &x) \
495 { return x.Name##_me(); } \
496 template <class Base> \
497 inline AD<Base> AD<Base>::Name##_me (void) const \
500 result.value_ = CppAD::Name(value_); \
501 CPPAD_ASSERT_UNKNOWN( Parameter(result) ); \
503 if( Variable(*this) ) \
504 { CPPAD_ASSERT_UNKNOWN( NumArg(Op) == 1 ); \
505 local::ADTape<Base> *tape = tape_this(); \
506 tape->Rec_.PutArg(taddr_); \
507 result.taddr_ = tape->Rec_.PutOp(Op); \
508 result.tape_id_ = tape->id_; \
512 template <class Base> \
513 inline AD<Base> Name(const VecAD_reference<Base> &x) \
514 { return x.ADBase().Name##_me(); }
533 # if CPPAD_USE_CPLUSPLUS_2011
541 # if CPPAD_USE_CPLUSPLUS_2011
543 template <
class Base>
546 template <
class Base>
557 tape->
Rec_.PutArg(taddr_);
560 tape->
Rec_.PutArg(p);
562 p = tape->
Rec_.PutPar(Base(
565 tape->
Rec_.PutArg(p);
572 template <
class Base>
574 {
return x.
ADBase().erf_me(); }
590 template <
class Base>
593 template <
class Base>
598 # undef CPPAD_STANDARD_MATH_UNARY_AD
std::complex< double > erf(const std::complex< double > &x)
AD< Base > cosh(const AD< Base > &x)
CPPAD_TAPE_ADDR_TYPE addr_t
AD< Base > log(const AD< Base > &x)
std::complex< double > atan(const std::complex< double > &x)
AD< Base > sinh(const AD< Base > &x)
size_t NumArg(OpCode op)
Number of arguments for a specified operator.
std::complex< double > acos(const std::complex< double > &x)
AD< Base > tan(const AD< Base > &x)
AD< Base > exp(const AD< Base > &x)
AD< Base > log10(const AD< Base > &x)
Compute the log of base 10 of x where has type AD<Base>
std::complex< double > asinh(const std::complex< double > &x)
AD< Base > ADBase(void) const
Conversion from VecAD_reference to AD<Base>. puts the correspond vecad load instruction in the tape...
std::complex< double > acosh(const std::complex< double > &x)
std::complex< double > expm1(const std::complex< double > &x)
AD< Base > sqrt(const AD< Base > &x)
AD< Base > tanh(const AD< Base > &x)
std::complex< double > atanh(const std::complex< double > &x)
CPPAD_INLINE_FRIEND_TEMPLATE_FUNCTION bool Variable(const AD< Base > &x)
#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)
std::complex< double > asin(const std::complex< double > &x)
local::recorder< Base > Rec_
This is where the information is recorded.
Class used to hold a reference to an element of a VecAD object.
Class used to hold tape that records AD<Base> operations.
#define CPPAD_STANDARD_MATH_UNARY_AD(Name, Op)
Defines function Name with argument type AD<Base> and tape operation Op.
CPPAD_INLINE_FRIEND_TEMPLATE_FUNCTION bool Parameter(const AD< Base > &x)
tape_id_t id_
Unique identifier for this tape.
std::complex< double > fabs(const std::complex< double > &x)
std::complex< double > log1p(const std::complex< double > &x)