Prev | Next | base_std_math |
AD<Base>
:
Base
must support the following functions
unary standard math functions (in the CppAD namespace):
Syntax | Result |
y = abs(x)
| absolute value |
y = acos(x)
| inverse cosine |
y = acosh(x)
| inverse hyperbolic cosine |
y = asin(x)
| inverse sine |
y = asinh(x)
| inverse hyperbolic sin |
y = atan(x)
| inverse tangent |
y = atanh(x)
| inverse hyperbolic tangent |
y = cos(x)
| cosine |
y = cosh(x)
| hyperbolic cosine |
y = erf(x)
| error function |
y = erfc(x)
| complementary error function |
y = exp(x)
| exponential |
y = expm1(x)
| exponential of x minus one |
y = fabs(x)
| absolute value |
y = log(x)
| natural logarithm |
y = log1p(x)
| logarithm of one plus x |
y = sin(x)
| sine |
y = sinh(x)
| hyperbolic sine |
y = sqrt(x)
| square root |
y = tan(x)
| tangent |
const Base& x
Base y
For example,
base_alloc
,
CPPAD_STANDARD_MATH_UNARY(Base, Fun)
defines the syntax
y = CppAD::Fun(x)
This macro uses the functions
std::Fun
which
must be defined and have the same prototype as
CppAD::Fun
.
For example,
float
.
Base
must support the syntax
y = CppAD::sign(x)
which computes
@[@
y = \left\{ \begin{array}{ll}
+1 & {\rm if} \; x > 0 \\
0 & {\rm if} \; x = 0 \\
-1 & {\rm if} \; x < 0
\end{array} \right.
@]@
where
x
and
y
have the same prototype as above.
For example, see
base_alloc
.
Note that, if ordered comparisons are not defined for the type
Base
,
the code sign
function should generate an assert if it is used; see
complex invalid unary math
.
Base
must support the syntax
z = CppAD::pow(x, y)
which computes @(@
z = x^y
@)@.
The arguments
x
and
y
have prototypes
const Base& x
const Base& y
and the return value
z
has prototype
Base z
For example, see
base_alloc
.
Base
defines the isnan
function,
you may also have to provide a definition in the CppAD namespace
(to avoid a function ambiguity).
For example, see
base_complex
.