Prev Next base_std_math

@(@\newcommand{\W}[1]{ \; #1 \; } \newcommand{\R}[1]{ {\rm #1} } \newcommand{\B}[1]{ {\bf #1} } \newcommand{\D}[2]{ \frac{\partial #1}{\partial #2} } \newcommand{\DD}[3]{ \frac{\partial^2 #1}{\partial #2 \partial #3} } \newcommand{\Dpow}[2]{ \frac{\partial^{#1}}{\partial {#2}^{#1}} } \newcommand{\dpow}[2]{ \frac{ {\rm d}^{#1}}{{\rm d}\, {#2}^{#1}} }@)@ This is cppad-20221105 documentation. Here is a link to its current documentation .
Base Type Requirements for Standard Math Functions

Purpose
These definitions are required for the user's code to use the type AD<Base> :

Unary Standard Math
The type 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
where the arguments and return value have the prototypes
    const 
Basex
    
Base        y
For example, base_alloc ,

CPPAD_STANDARD_MATH_UNARY
The macro invocation, within the CppAD namespace,
    CPPAD_STANDARD_MATH_UNARY(
BaseFun)
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 .

sign
The type 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 .

pow
The type Base must support the syntax
    
z = CppAD::pow(xy)
which computes @(@ z = x^y @)@. The arguments x and y have prototypes
    const 
Basex
    const 
Basey
and the return value z has prototype
    
Base z
For example, see base_alloc .

isnan
If 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 .
Input File: include/cppad/core/base_std_math.hpp