Drake
Drake C++ Documentation
drake::ad Namespace Reference

Classes

class  AutoDiff
 A scalar type that performs automatic differentiation, similar to Eigen::AutoDiffScalar<Eigen::VectorXd>. More...
 

Functions

Increment and decrement
AutoDiffoperator++ (AutoDiff &x)
 Standard prefix increment operator (i.e., ++x). More...
 
AutoDiff operator++ (AutoDiff &x, int)
 Standard postfix increment operator (i.e., x++). More...
 
AutoDiffoperator-- (AutoDiff &x)
 Standard prefix decrement operator (i.e., --x). More...
 
AutoDiff operator-- (AutoDiff &x, int)
 Standard postfix decrement operator (i.e., x--). More...
 
Arithmetic operators
AutoDiffoperator+= (AutoDiff &a, const AutoDiff &b)
 Standard compound addition and assignment operator. More...
 
AutoDiffoperator+= (AutoDiff &a, double b)
 Standard compound addition and assignment operator. More...
 
AutoDiffoperator-= (AutoDiff &a, const AutoDiff &b)
 Standard compound subtraction and assignment operator. More...
 
AutoDiffoperator-= (AutoDiff &a, double b)
 Standard compound subtraction and assignment operator. More...
 
AutoDiffoperator *= (AutoDiff &a, const AutoDiff &b)
 Standard compound multiplication and assignment operator. More...
 
AutoDiffoperator *= (AutoDiff &a, double b)
 Standard compound multiplication and assignment operator. More...
 
AutoDiffoperator/= (AutoDiff &a, const AutoDiff &b)
 Standard compound division and assignment operator. More...
 
AutoDiffoperator/= (AutoDiff &a, double b)
 Standard compound division and assignment operator. More...
 
AutoDiff operator+ (AutoDiff a, const AutoDiff &b)
 Standard addition operator. More...
 
AutoDiff operator+ (AutoDiff a, double b)
 Standard addition operator. More...
 
AutoDiff operator+ (double a, AutoDiff b)
 Standard addition operator. More...
 
AutoDiff operator+ (AutoDiff x)
 Standard unary plus operator. More...
 
AutoDiff operator- (AutoDiff a, const AutoDiff &b)
 Standard subtraction operator. More...
 
AutoDiff operator- (AutoDiff a, double b)
 Standard subtraction operator. More...
 
AutoDiff operator- (double a, AutoDiff b)
 Standard subtraction operator. More...
 
AutoDiff operator- (AutoDiff x)
 Standard unary minus operator. More...
 
AutoDiff operator * (AutoDiff a, const AutoDiff &b)
 Standard multiplication operator. More...
 
AutoDiff operator * (AutoDiff a, double b)
 Standard multiplication operator. More...
 
AutoDiff operator * (double a, AutoDiff b)
 Standard multiplication operator. More...
 
AutoDiff operator/ (AutoDiff a, const AutoDiff &b)
 Standard division operator. More...
 
AutoDiff operator/ (AutoDiff a, double b)
 Standard division operator. More...
 
AutoDiff operator/ (double a, const AutoDiff &b)
 Standard division operator. More...
 
Comparison operators
bool operator< (const AutoDiff &a, const AutoDiff &b)
 Standard comparison operator. More...
 
bool operator<= (const AutoDiff &a, const AutoDiff &b)
 Standard comparison operator. More...
 
bool operator> (const AutoDiff &a, const AutoDiff &b)
 Standard comparison operator. More...
 
bool operator>= (const AutoDiff &a, const AutoDiff &b)
 Standard comparison operator. More...
 
bool operator== (const AutoDiff &a, const AutoDiff &b)
 Standard comparison operator. More...
 
bool operator!= (const AutoDiff &a, const AutoDiff &b)
 Standard comparison operator. More...
 
bool operator< (const AutoDiff &a, double b)
 Standard comparison operator. More...
 
bool operator<= (const AutoDiff &a, double b)
 Standard comparison operator. More...
 
bool operator> (const AutoDiff &a, double b)
 Standard comparison operator. More...
 
bool operator>= (const AutoDiff &a, double b)
 Standard comparison operator. More...
 
bool operator== (const AutoDiff &a, double b)
 Standard comparison operator. More...
 
bool operator!= (const AutoDiff &a, double b)
 Standard comparison operator. More...
 
bool operator< (double a, const AutoDiff &b)
 Standard comparison operator. More...
 
bool operator<= (double a, const AutoDiff &b)
 Standard comparison operator. More...
 
bool operator> (double a, const AutoDiff &b)
 Standard comparison operator. More...
 
bool operator>= (double a, const AutoDiff &b)
 Standard comparison operator. More...
 
bool operator== (double a, const AutoDiff &b)
 Standard comparison operator. More...
 
bool operator!= (double a, const AutoDiff &b)
 Standard comparison operator. More...
 
Minimum/maximum operations
const AutoDiffmax (const AutoDiff &a, const AutoDiff &b)
 ADL overload to mimic std::max from <algorithm>. More...
 
AutoDiff max (AutoDiff a, double b)
 ADL overload to mimic std::max from <algorithm>. More...
 
AutoDiff max (double a, AutoDiff b)
 ADL overload to mimic std::max from <algorithm>. More...
 
const AutoDiffmin (const AutoDiff &a, const AutoDiff &b)
 ADL overload to mimic std::min from <algorithm>. More...
 
AutoDiff min (AutoDiff a, double b)
 ADL overload to mimic std::min from <algorithm>. More...
 
AutoDiff min (double a, AutoDiff b)
 ADL overload to mimic std::min from <algorithm>. More...
 
Math functions: Basic operations
AutoDiff abs (AutoDiff x)
 ADL overload to mimic std::abs from <cmath>. More...
 
AutoDiff abs2 (AutoDiff x)
 ADL overload to mimic Eigen::numext::abs2. More...
 
Math functions: Exponential and Power functions
AutoDiff exp (AutoDiff x)
 ADL overload to mimic std::exp from <cmath>. More...
 
AutoDiff log (AutoDiff x)
 ADL overload to mimic std::log from <cmath>. More...
 
AutoDiff pow (AutoDiff base, const AutoDiff &exp)
 ADL overload to mimic std::pow from <cmath>. More...
 
AutoDiff pow (double base, const AutoDiff &exp)
 ADL overload to mimic std::pow from <cmath>. More...
 
AutoDiff pow (AutoDiff base, double exp)
 ADL overload to mimic std::pow from <cmath>. More...
 
AutoDiff sqrt (AutoDiff x)
 ADL overload to mimic std::sqrt from <cmath>. More...
 
Math functions: Trigonometric functions
AutoDiff sin (AutoDiff x)
 ADL overload to mimic std::sin from <cmath>. More...
 
AutoDiff cos (AutoDiff x)
 ADL overload to mimic std::cos from <cmath>. More...
 
AutoDiff tan (AutoDiff x)
 ADL overload to mimic std::tan from <cmath>. More...
 
AutoDiff asin (AutoDiff x)
 ADL overload to mimic std::asin from <cmath>. More...
 
AutoDiff acos (AutoDiff x)
 ADL overload to mimic std::acos from <cmath>. More...
 
AutoDiff atan (AutoDiff x)
 ADL overload to mimic std::atan from <cmath>. More...
 
AutoDiff atan2 (AutoDiff a, const AutoDiff &b)
 ADL overload to mimic std::atan2 from <cmath>. More...
 
AutoDiff atan2 (AutoDiff a, double b)
 ADL overload to mimic std::atan2 from <cmath>. More...
 
AutoDiff atan2 (double a, AutoDiff b)
 ADL overload to mimic std::atan2 from <cmath>. More...
 
Math functions: Hyperbolic functions
AutoDiff sinh (AutoDiff x)
 ADL overload to mimic std::sinh from <cmath>. More...
 
AutoDiff cosh (AutoDiff x)
 ADL overload to mimic std::cosh from <cmath>. More...
 
AutoDiff tanh (AutoDiff x)
 ADL overload to mimic std::tanh from <cmath>. More...
 
Math functions: Nearest integer floating point operations
AutoDiff ceil (AutoDiff x)
 ADL overload to mimic std::ceil from <cmath>. More...
 
AutoDiff floor (AutoDiff x)
 ADL overload to mimic std::floor from <cmath>. More...
 
AutoDiff round (AutoDiff x)
 ADL overload to mimic std::round from <cmath>. More...
 
AutoDiff nexttoward (AutoDiff from, long double to)
 ADL overload to mimic std::nexttoward from <cmath>. More...
 
bool isfinite (const AutoDiff &x)
 ADL overload to mimic std::isfinite from <cmath>. More...
 
bool isinf (const AutoDiff &x)
 ADL overload to mimic std::isinf from <cmath>. More...
 
bool isnan (const AutoDiff &x)
 ADL overload to mimic std::isnan from <cmath>. More...
 
Miscellaneous functions
std::ostream & operator<< (std::ostream &s, const AutoDiff &x)
 Outputs the value() part of x to the stream. More...
 

Function Documentation

◆ abs()

AutoDiff drake::ad::abs ( AutoDiff  x)

ADL overload to mimic std::abs from <cmath>.

◆ abs2()

AutoDiff drake::ad::abs2 ( AutoDiff  x)

ADL overload to mimic Eigen::numext::abs2.

◆ acos()

AutoDiff drake::ad::acos ( AutoDiff  x)

ADL overload to mimic std::acos from <cmath>.

◆ asin()

AutoDiff drake::ad::asin ( AutoDiff  x)

ADL overload to mimic std::asin from <cmath>.

◆ atan()

AutoDiff drake::ad::atan ( AutoDiff  x)

ADL overload to mimic std::atan from <cmath>.

◆ atan2() [1/3]

AutoDiff drake::ad::atan2 ( AutoDiff  a,
const AutoDiff b 
)

ADL overload to mimic std::atan2 from <cmath>.

◆ atan2() [2/3]

AutoDiff drake::ad::atan2 ( AutoDiff  a,
double  b 
)

ADL overload to mimic std::atan2 from <cmath>.

◆ atan2() [3/3]

AutoDiff drake::ad::atan2 ( double  a,
AutoDiff  b 
)

ADL overload to mimic std::atan2 from <cmath>.

◆ ceil()

AutoDiff drake::ad::ceil ( AutoDiff  x)

ADL overload to mimic std::ceil from <cmath>.

The result's derivatives are always zero.

◆ cos()

AutoDiff drake::ad::cos ( AutoDiff  x)

ADL overload to mimic std::cos from <cmath>.

◆ cosh()

AutoDiff drake::ad::cosh ( AutoDiff  x)

ADL overload to mimic std::cosh from <cmath>.

◆ exp()

AutoDiff drake::ad::exp ( AutoDiff  x)

ADL overload to mimic std::exp from <cmath>.

◆ floor()

AutoDiff drake::ad::floor ( AutoDiff  x)

ADL overload to mimic std::floor from <cmath>.

The result's derivatives are always zero.

◆ isfinite()

bool drake::ad::isfinite ( const AutoDiff x)

ADL overload to mimic std::isfinite from <cmath>.

Because the return type is bool, the derivatives are not preserved.

◆ isinf()

bool drake::ad::isinf ( const AutoDiff x)

ADL overload to mimic std::isinf from <cmath>.

Because the return type is bool, the derivatives are not preserved.

◆ isnan()

bool drake::ad::isnan ( const AutoDiff x)

ADL overload to mimic std::isnan from <cmath>.

Because the return type is bool, the derivatives are not preserved.

◆ log()

AutoDiff drake::ad::log ( AutoDiff  x)

ADL overload to mimic std::log from <cmath>.

◆ max() [1/3]

const AutoDiff& drake::ad::max ( const AutoDiff a,
const AutoDiff b 
)

ADL overload to mimic std::max from <algorithm>.

Note that like std::max, this function returns a reference to whichever argument was chosen; it does not make a copy. When a and b are equal, retains the derivatives of a (by returning a) unless a has empty derivatives, in which case b is returned.

◆ max() [2/3]

AutoDiff drake::ad::max ( AutoDiff  a,
double  b 
)

ADL overload to mimic std::max from <algorithm>.

When a and b are equal, retains the derivatives of a.

◆ max() [3/3]

AutoDiff drake::ad::max ( double  a,
AutoDiff  b 
)

ADL overload to mimic std::max from <algorithm>.

When a and b are equal, retains the derivatives of b.

◆ min() [1/3]

const AutoDiff& drake::ad::min ( const AutoDiff a,
const AutoDiff b 
)

ADL overload to mimic std::min from <algorithm>.

Note that like std::min, this function returns a reference to whichever argument was chosen; it does not make a copy. When a and b are equal, retains the derivatives of a (by returning a) unless a has empty derivatives, in which case b is returned.

◆ min() [2/3]

AutoDiff drake::ad::min ( AutoDiff  a,
double  b 
)

ADL overload to mimic std::min from <algorithm>.

When a and b are equal, retains the derivatives of a.

◆ min() [3/3]

AutoDiff drake::ad::min ( double  a,
AutoDiff  b 
)

ADL overload to mimic std::min from <algorithm>.

When a and b are equal, retains the derivatives of b.

◆ nexttoward()

AutoDiff drake::ad::nexttoward ( AutoDiff  from,
long double  to 
)

ADL overload to mimic std::nexttoward from <cmath>.

The result's derivatives are always zero.

◆ operator *() [1/3]

AutoDiff drake::ad::operator * ( AutoDiff  a,
const AutoDiff b 
)

Standard multiplication operator.

◆ operator *() [2/3]

AutoDiff drake::ad::operator * ( AutoDiff  a,
double  b 
)

Standard multiplication operator.

◆ operator *() [3/3]

AutoDiff drake::ad::operator * ( double  a,
AutoDiff  b 
)

Standard multiplication operator.

◆ operator *=() [1/2]

AutoDiff& drake::ad::operator *= ( AutoDiff a,
const AutoDiff b 
)

Standard compound multiplication and assignment operator.

◆ operator *=() [2/2]

AutoDiff& drake::ad::operator *= ( AutoDiff a,
double  b 
)

Standard compound multiplication and assignment operator.

◆ operator!=() [1/3]

bool drake::ad::operator!= ( const AutoDiff a,
const AutoDiff b 
)

Standard comparison operator.

Discards the derivatives.

◆ operator!=() [2/3]

bool drake::ad::operator!= ( const AutoDiff a,
double  b 
)

Standard comparison operator.

Discards the derivatives.

◆ operator!=() [3/3]

bool drake::ad::operator!= ( double  a,
const AutoDiff b 
)

Standard comparison operator.

Discards the derivatives.

◆ operator+() [1/4]

AutoDiff drake::ad::operator+ ( AutoDiff  a,
const AutoDiff b 
)

Standard addition operator.

◆ operator+() [2/4]

AutoDiff drake::ad::operator+ ( AutoDiff  a,
double  b 
)

Standard addition operator.

◆ operator+() [3/4]

AutoDiff drake::ad::operator+ ( double  a,
AutoDiff  b 
)

Standard addition operator.

◆ operator+() [4/4]

AutoDiff drake::ad::operator+ ( AutoDiff  x)

Standard unary plus operator.

◆ operator++() [1/2]

AutoDiff& drake::ad::operator++ ( AutoDiff x)

Standard prefix increment operator (i.e., ++x).

◆ operator++() [2/2]

AutoDiff drake::ad::operator++ ( AutoDiff x,
int   
)

Standard postfix increment operator (i.e., x++).

◆ operator+=() [1/2]

AutoDiff& drake::ad::operator+= ( AutoDiff a,
const AutoDiff b 
)

Standard compound addition and assignment operator.

◆ operator+=() [2/2]

AutoDiff& drake::ad::operator+= ( AutoDiff a,
double  b 
)

Standard compound addition and assignment operator.

◆ operator-() [1/4]

AutoDiff drake::ad::operator- ( AutoDiff  a,
const AutoDiff b 
)

Standard subtraction operator.

◆ operator-() [2/4]

AutoDiff drake::ad::operator- ( AutoDiff  a,
double  b 
)

Standard subtraction operator.

◆ operator-() [3/4]

AutoDiff drake::ad::operator- ( double  a,
AutoDiff  b 
)

Standard subtraction operator.

◆ operator-() [4/4]

AutoDiff drake::ad::operator- ( AutoDiff  x)

Standard unary minus operator.

◆ operator--() [1/2]

AutoDiff& drake::ad::operator-- ( AutoDiff x)

Standard prefix decrement operator (i.e., --x).

◆ operator--() [2/2]

AutoDiff drake::ad::operator-- ( AutoDiff x,
int   
)

Standard postfix decrement operator (i.e., x--).

◆ operator-=() [1/2]

AutoDiff& drake::ad::operator-= ( AutoDiff a,
const AutoDiff b 
)

Standard compound subtraction and assignment operator.

◆ operator-=() [2/2]

AutoDiff& drake::ad::operator-= ( AutoDiff a,
double  b 
)

Standard compound subtraction and assignment operator.

◆ operator/() [1/3]

AutoDiff drake::ad::operator/ ( AutoDiff  a,
const AutoDiff b 
)

Standard division operator.

◆ operator/() [2/3]

AutoDiff drake::ad::operator/ ( AutoDiff  a,
double  b 
)

Standard division operator.

◆ operator/() [3/3]

AutoDiff drake::ad::operator/ ( double  a,
const AutoDiff b 
)

Standard division operator.

◆ operator/=() [1/2]

AutoDiff& drake::ad::operator/= ( AutoDiff a,
const AutoDiff b 
)

Standard compound division and assignment operator.

◆ operator/=() [2/2]

AutoDiff& drake::ad::operator/= ( AutoDiff a,
double  b 
)

Standard compound division and assignment operator.

◆ operator<() [1/3]

bool drake::ad::operator< ( const AutoDiff a,
const AutoDiff b 
)

Standard comparison operator.

Discards the derivatives.

◆ operator<() [2/3]

bool drake::ad::operator< ( const AutoDiff a,
double  b 
)

Standard comparison operator.

Discards the derivatives.

◆ operator<() [3/3]

bool drake::ad::operator< ( double  a,
const AutoDiff b 
)

Standard comparison operator.

Discards the derivatives.

◆ operator<<()

std::ostream& drake::ad::operator<< ( std::ostream &  s,
const AutoDiff x 
)

Outputs the value() part of x to the stream.

To output the derivatives use << x.derivatives().transpose().

◆ operator<=() [1/3]

bool drake::ad::operator<= ( const AutoDiff a,
const AutoDiff b 
)

Standard comparison operator.

Discards the derivatives.

◆ operator<=() [2/3]

bool drake::ad::operator<= ( const AutoDiff a,
double  b 
)

Standard comparison operator.

Discards the derivatives.

◆ operator<=() [3/3]

bool drake::ad::operator<= ( double  a,
const AutoDiff b 
)

Standard comparison operator.

Discards the derivatives.

◆ operator==() [1/3]

bool drake::ad::operator== ( const AutoDiff a,
const AutoDiff b 
)

Standard comparison operator.

Discards the derivatives.

◆ operator==() [2/3]

bool drake::ad::operator== ( const AutoDiff a,
double  b 
)

Standard comparison operator.

Discards the derivatives.

◆ operator==() [3/3]

bool drake::ad::operator== ( double  a,
const AutoDiff b 
)

Standard comparison operator.

Discards the derivatives.

◆ operator>() [1/3]

bool drake::ad::operator> ( const AutoDiff a,
const AutoDiff b 
)

Standard comparison operator.

Discards the derivatives.

◆ operator>() [2/3]

bool drake::ad::operator> ( const AutoDiff a,
double  b 
)

Standard comparison operator.

Discards the derivatives.

◆ operator>() [3/3]

bool drake::ad::operator> ( double  a,
const AutoDiff b 
)

Standard comparison operator.

Discards the derivatives.

◆ operator>=() [1/3]

bool drake::ad::operator>= ( const AutoDiff a,
const AutoDiff b 
)

Standard comparison operator.

Discards the derivatives.

◆ operator>=() [2/3]

bool drake::ad::operator>= ( const AutoDiff a,
double  b 
)

Standard comparison operator.

Discards the derivatives.

◆ operator>=() [3/3]

bool drake::ad::operator>= ( double  a,
const AutoDiff b 
)

Standard comparison operator.

Discards the derivatives.

◆ pow() [1/3]

AutoDiff drake::ad::pow ( AutoDiff  base,
const AutoDiff exp 
)

ADL overload to mimic std::pow from <cmath>.

The resulting partial derivative ∂/∂vᵢ is undefined (i.e., NaN) for all of the following cases:

  • base is NaN
  • exp is NaN
  • pow(base, exp) is NaN
  • ∂base/∂vᵢ is non-zero and either:
    • base is zero or not finite, or
    • exp is not finite
  • ∂exp/∂vᵢ is non-zero and either:
    • base is not positive-finite, or
    • exp is not finite

In all other cases, if the base and exp partial derivatives were well-defined then the resulting partial derivatives will also be well-defined.

◆ pow() [2/3]

AutoDiff drake::ad::pow ( double  base,
const AutoDiff exp 
)

ADL overload to mimic std::pow from <cmath>.

Refer to pow(AutoDiff,const AutoDiff&) for an explanation of special cases.

◆ pow() [3/3]

AutoDiff drake::ad::pow ( AutoDiff  base,
double  exp 
)

ADL overload to mimic std::pow from <cmath>.

Refer to pow(AutoDiff,const AutoDiff&) for an explanation of special cases.

◆ round()

AutoDiff drake::ad::round ( AutoDiff  x)

ADL overload to mimic std::round from <cmath>.

The result's derivatives are always zero.

◆ sin()

AutoDiff drake::ad::sin ( AutoDiff  x)

ADL overload to mimic std::sin from <cmath>.

◆ sinh()

AutoDiff drake::ad::sinh ( AutoDiff  x)

ADL overload to mimic std::sinh from <cmath>.

◆ sqrt()

AutoDiff drake::ad::sqrt ( AutoDiff  x)

ADL overload to mimic std::sqrt from <cmath>.

◆ tan()

AutoDiff drake::ad::tan ( AutoDiff  x)

ADL overload to mimic std::tan from <cmath>.

◆ tanh()

AutoDiff drake::ad::tanh ( AutoDiff  x)

ADL overload to mimic std::tanh from <cmath>.