AutoDiffScalar< _DerType > Class Template Reference

A scalar type replacement with automatic differentation capability. More...

#include <AutoDiffScalar.h>

Public Types

typedef internal::auto_diff_special_op< _DerType, !internal::is_same< typename internal::traits< typename internal::remove_all< _DerType >::type >::Scalar, typename NumTraits< typename internal::traits< typename internal::remove_all< _DerType >::type >::Scalar >::Real >::value > Base
 
typedef internal::remove_all< _DerType >::type DerType
 
typedef NumTraits< Scalar >::Real Real
 
typedef internal::traits< DerType >::Scalar Scalar
 

Public Member Functions

 AutoDiffScalar ()
 
 AutoDiffScalar (const AutoDiffScalar &other)
 
template<typename OtherDerType>
 AutoDiffScalar (const AutoDiffScalar< OtherDerType > &other)
 
 AutoDiffScalar (const Real &value)
 
 AutoDiffScalar (const Scalar &value, const DerType &der)
 
 AutoDiffScalar (const Scalar &value, int nbDer, int derNumber)
 
DerType & derivatives ()
 
const DerType & derivatives () const
 
template<typename OtherDerType>
bool operator!= (const AutoDiffScalar< OtherDerType > &b) const
 
bool operator!= (const Scalar &other) const
 
template<typename OtherDerType>
const AutoDiffScalar< CwiseBinaryOp< internal::scalar_sum_op< Scalar >, const CwiseUnaryOp< internal::scalar_multiple_op< Scalar >, const DerType >, const CwiseUnaryOp< internal::scalar_multiple_op< Scalar >, const typename internal::remove_all< OtherDerType >::type > > > operator* (const AutoDiffScalar< OtherDerType > &other) const
 
const AutoDiffScalar< CwiseUnaryOp< internal::scalar_multiple_op< Scalar >, const DerType > > operator* (const Scalar &other) const
 
template<typename OtherDerType>
AutoDiffScalaroperator*= (const AutoDiffScalar< OtherDerType > &other)
 
AutoDiffScalaroperator*= (const Scalar &other)
 
template<typename OtherDerType>
const AutoDiffScalar< CwiseBinaryOp< internal::scalar_sum_op< Scalar >, const DerType, const typename internal::remove_all< OtherDerType >::type > > operator+ (const AutoDiffScalar< OtherDerType > &other) const
 
const AutoDiffScalar< DerType & > operator+ (const Scalar &other) const
 
template<typename OtherDerType>
AutoDiffScalaroperator+= (const AutoDiffScalar< OtherDerType > &other)
 
AutoDiffScalaroperator+= (const Scalar &other)
 
const AutoDiffScalar< CwiseUnaryOp< internal::scalar_opposite_op< Scalar >, const DerType > > operator- () const
 
template<typename OtherDerType>
const AutoDiffScalar< CwiseBinaryOp< internal::scalar_difference_op< Scalar >, const DerType, const typename internal::remove_all< OtherDerType >::type > > operator- (const AutoDiffScalar< OtherDerType > &other) const
 
const AutoDiffScalar< DerType & > operator- (const Scalar &b) const
 
template<typename OtherDerType>
AutoDiffScalaroperator-= (const AutoDiffScalar< OtherDerType > &other)
 
AutoDiffScalaroperator-= (const Scalar &other)
 
template<typename OtherDerType>
const AutoDiffScalar< CwiseUnaryOp< internal::scalar_multiple_op< Scalar >, const CwiseBinaryOp< internal::scalar_difference_op< Scalar >, const CwiseUnaryOp< internal::scalar_multiple_op< Scalar >, const DerType >, const CwiseUnaryOp< internal::scalar_multiple_op< Scalar >, const typename internal::remove_all< OtherDerType >::type > > > > operator/ (const AutoDiffScalar< OtherDerType > &other) const
 
const AutoDiffScalar< CwiseUnaryOp< internal::scalar_multiple_op< Scalar >, const DerType > > operator/ (const Scalar &other) const
 
template<typename OtherDerType>
AutoDiffScalaroperator/= (const AutoDiffScalar< OtherDerType > &other)
 
AutoDiffScalaroperator/= (const Scalar &other)
 
template<typename OtherDerType>
bool operator< (const AutoDiffScalar< OtherDerType > &b) const
 
bool operator< (const Scalar &other) const
 
template<typename OtherDerType>
bool operator<= (const AutoDiffScalar< OtherDerType > &b) const
 
bool operator<= (const Scalar &other) const
 
AutoDiffScalaroperator= (const AutoDiffScalar &other)
 
template<typename OtherDerType>
AutoDiffScalaroperator= (const AutoDiffScalar< OtherDerType > &other)
 
template<typename OtherDerType>
bool operator== (const AutoDiffScalar< OtherDerType > &b) const
 
bool operator== (const Scalar &other) const
 
template<typename OtherDerType>
bool operator> (const AutoDiffScalar< OtherDerType > &b) const
 
bool operator> (const Scalar &other) const
 
template<typename OtherDerType>
bool operator>= (const AutoDiffScalar< OtherDerType > &b) const
 
bool operator>= (const Scalar &other) const
 
Scalar & value ()
 
const Scalar & value () const
 

Protected Attributes

DerType m_derivatives
 
Scalar m_value
 

Detailed Description

template<typename _DerType>
class Eigen::AutoDiffScalar< _DerType >

A scalar type replacement with automatic differentation capability.

Parameters
_DerTypethe vector type used to store/represent the derivatives. The base scalar type as well as the number of derivatives to compute are determined from this type. Typical choices include, e.g., Vector4f for 4 derivatives, or VectorXf if the number of derivatives is not known at compile time, and/or, the number of derivatives is large. Note that _DerType can also be a reference (e.g., VectorXf&) to wrap a existing vector into an AutoDiffScalar. Finally, _DerType can also be any Eigen compatible expression.

This class represents a scalar value while tracking its respective derivatives using Eigen's expression template mechanism.

It supports the following list of global math function:

  • std::abs, std::sqrt, std::pow, std::exp, std::log, std::sin, std::cos,
  • internal::abs, internal::sqrt, internal::pow, internal::exp, internal::log, internal::sin, internal::cos,
  • internal::conj, internal::real, internal::imag, internal::abs2.

AutoDiffScalar can be used as the scalar type of an Eigen::Matrix object. However, in that case, the expression template mechanism only occurs at the top Matrix level, while derivatives are computed right away.

Constructor & Destructor Documentation

◆ AutoDiffScalar() [1/4]

template<typename _DerType>
AutoDiffScalar ( )
inline

Default constructor without any initialization.

◆ AutoDiffScalar() [2/4]

template<typename _DerType>
AutoDiffScalar ( const Scalar & value,
int nbDer,
int derNumber )
inline

Constructs an active scalar from its value, and initializes the nbDer derivatives such that it corresponds to the derNumber -th variable

◆ AutoDiffScalar() [3/4]

template<typename _DerType>
AutoDiffScalar ( const Real & value)
inline

Conversion from a scalar constant to an active scalar. The derivatives are set to zero.

◆ AutoDiffScalar() [4/4]

template<typename _DerType>
AutoDiffScalar ( const Scalar & value,
const DerType & der )
inline

Constructs an active scalar from its value and derivatives der


The documentation for this class was generated from the following file: