1 # ifndef CPPAD_EXAMPLE_BASE_ADOLC_HPP
2 # define CPPAD_EXAMPLE_BASE_ADOLC_HPP
89 # include <adolc/adolc.h>
111 const adouble &left ,
112 const adouble &right ,
113 const adouble &trueCase ,
114 const adouble &falseCase )
119 condassign(result, right - left, trueCase, falseCase);
123 condassign(result, left - right, falseCase, trueCase);
127 condassign(result, left - right, falseCase, trueCase);
128 condassign(result, right - left, falseCase, result);
132 condassign(result, right - left, falseCase, trueCase);
136 condassign(result, left - right, trueCase, falseCase);
140 true , __LINE__ , __FILE__ ,
142 "Error: for unknown reason."
167 true , __LINE__ , __FILE__ ,
168 "CppAD::EqualOpSeq(x, y)",
169 "Error: adouble does not support EqualOpSeq."
196 {
return static_cast<int>( x.getValue() ); }
217 inline bool abs_geq(
const adouble& x,
const adouble& y)
252 # define CPPAD_BASE_ADOLC_NO_SUPPORT(fun) \
253 inline adouble fun(const adouble& x) \
254 { CPPAD_ASSERT_KNOWN( \
256 #fun ": adolc does not support this function" \
260 # if CPPAD_USE_CPLUSPLUS_2011
268 # undef CPPAD_BASE_ADOLC_NO_SUPPORT
278 inline adouble
sign(
const adouble& x)
279 { adouble s_plus, s_minus, half(.5);
281 condassign(s_plus, +x, -half, +half);
283 condassign(s_minus, -x, -half, +half);
285 return s_plus - s_minus;
295 inline adouble
abs(
const adouble& x)
320 { std::stringstream os;
321 int n_digits = 1 + std::numeric_limits<double>::digits10;
322 os << std::setprecision(n_digits);
339 {
unsigned short code = 0;
340 double value = x.value();
345 code =
static_cast<unsigned short>(
std::complex< double > erf(const std::complex< double > &x)
#define CPPAD_BASE_ADOLC_NO_SUPPORT(fun)
AD< Base > log(const AD< Base > &x)
bool GreaterThanOrZero(const std::complex< double > &x)
#define CPPAD_AZMUL(Base)
AD< Base > abs(const AD< Base > &x)
bool IdenticalPar(const std::complex< double > &x)
bool EqualOpSeq(const std::complex< double > &x, const std::complex< double > &y)
bool IdenticalZero(const std::complex< double > &x)
std::complex< double > asinh(const std::complex< double > &x)
bool abs_geq(const std::complex< double > &x, const std::complex< double > &y)
static void Call(bool known, int line, const char *file, const char *exp, const char *msg)
std::complex< double > acosh(const std::complex< double > &x)
std::string operator()(const adouble &x)
bool LessThanOrZero(const std::complex< double > &x)
std::complex< double > expm1(const std::complex< double > &x)
#define CPPAD_NUMERIC_LIMITS(Other, Base)
std::complex< double > atanh(const std::complex< double > &x)
std::complex< double > sign(const std::complex< double > &x)
bool IdenticalEqualPar(const std::complex< double > &x, const std::complex< double > &y)
int Integer(const adouble &x)
bool IdenticalOne(const std::complex< double > &x)
bool LessThanZero(const std::complex< double > &x)
#define CPPAD_COND_EXP_REL(Type)
The macro defines the operations.
unsigned short hash_code(const Value &value)
General purpose hash code for an arbitrary value.
std::complex< double > CondExpOp(enum CppAD::CompareOp cop, const std::complex< double > &left, const std::complex< double > &right, const std::complex< double > &trueCase, const std::complex< double > &falseCase)
std::complex< double > fabs(const std::complex< double > &x)
#define CPPAD_HASH_TABLE_SIZE
the codes retruned by hash_code are between zero and CPPAD_HASH_TABLE_SIZE minus one.
bool GreaterThanZero(const std::complex< double > &x)
std::complex< double > log1p(const std::complex< double > &x)