Mitsuba Renderer  0.5.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DScalar2< _Scalar, _Gradient, _Hessian > Struct Template Reference

Automatic differentiation scalar with first- and second-order derivatives. More...

#include <mitsuba/core/autodiff.h>

+ Inheritance diagram for DScalar2< _Scalar, _Gradient, _Hessian >:

Public Types

typedef _Scalar Scalar
 
typedef _Gradient Gradient
 
typedef _Hessian Hessian
 
typedef Eigen::Matrix
< DScalar2, 2, 1 > 
DVector2
 
typedef Eigen::Matrix
< DScalar2, 3, 1 > 
DVector3
 

Public Member Functions

Constructors and accessors
 DScalar2 (Scalar value=(Scalar) 0)
 Create a new constant automatic differentiation scalar. More...
 
 DScalar2 (size_t index, const Scalar &value)
 Construct a new scalar with the specified value and one first derivative set to 1. More...
 
 DScalar2 (Scalar value, const Gradient &grad, const Hessian &hess)
 Construct a scalar associated with the given gradient and Hessian. More...
 
 DScalar2 (const DScalar2 &s)
 Copy constructor. More...
 
const ScalargetValue () const
 Create a new constant automatic differentiation scalar. More...
 
const GradientgetGradient () const
 Create a new constant automatic differentiation scalar. More...
 
const HessiangetHessian () const
 Create a new constant automatic differentiation scalar. More...
 
Comparison and assignment
void operator= (const DScalar2 &s)
 
void operator= (const Scalar &v)
 
bool operator< (const DScalar2 &s) const
 
bool operator<= (const DScalar2 &s) const
 
bool operator> (const DScalar2 &s) const
 
bool operator>= (const DScalar2 &s) const
 
bool operator< (const Scalar &s) const
 
bool operator<= (const Scalar &s) const
 
bool operator> (const Scalar &s) const
 
bool operator>= (const Scalar &s) const
 
bool operator== (const Scalar &s) const
 
bool operator!= (const Scalar &s) const
 

Protected Attributes

Scalar value
 
Gradient grad
 
Hessian hess
 

Friends

Miscellaneous functions
DScalar2 sqrt (const DScalar2 &s)
 
DScalar2 pow (const DScalar2 &s, const Scalar &a)
 
DScalar2 exp (const DScalar2 &s)
 
DScalar2 log (const DScalar2 &s)
 
DScalar2 sin (const DScalar2 &s)
 
DScalar2 cos (const DScalar2 &s)
 
DScalar2 acos (const DScalar2 &s)
 
DScalar2 asin (const DScalar2 &s)
 
DScalar2 atan2 (const DScalar2 &y, const DScalar2 &x)
 

Addition

DScalar2operator+= (const DScalar2 &s)
 
DScalar2operator+= (const Scalar &v)
 
DScalar2 operator+ (const DScalar2 &lhs, const DScalar2 &rhs)
 
DScalar2 operator+ (const DScalar2 &lhs, const Scalar &rhs)
 
DScalar2 operator+ (const Scalar &lhs, const DScalar2 &rhs)
 

Subtraction

DScalar2operator-= (const DScalar2 &s)
 
DScalar2operator-= (const Scalar &v)
 
DScalar2 operator- (const DScalar2 &lhs, const DScalar2 &rhs)
 
DScalar2 operator- (const DScalar2 &lhs, const Scalar &rhs)
 
DScalar2 operator- (const Scalar &lhs, const DScalar2 &rhs)
 
DScalar2 operator- (const DScalar2 &s)
 

Division

DScalar2operator/= (const Scalar &v)
 
DScalar2 operator/ (const DScalar2 &lhs, const Scalar &rhs)
 
DScalar2 operator/ (const Scalar &lhs, const DScalar2 &rhs)
 
DScalar2 operator/ (const DScalar2 &lhs, const DScalar2 &rhs)
 
DScalar2 inverse (const DScalar2 &s)
 

Multiplication

DScalar2operator*= (const Scalar &v)
 
DScalar2 operator* (const DScalar2 &lhs, const Scalar &rhs)
 
DScalar2 operator* (const Scalar &lhs, const DScalar2 &rhs)
 
DScalar2 operator* (const DScalar2 &lhs, const DScalar2 &rhs)
 

Additional Inherited Members

- Static Public Member Functions inherited from DiffScalarBase
static void setVariableCount (size_t value)
 Set the independent variable count used by the automatic differentiation layer. More...
 
static size_t getVariableCount ()
 Get the variable count used by the automatic differentiation layer. More...
 
- Static Public Attributes inherited from DiffScalarBase
static __thread size_t m_variableCount
 

Detailed Description

template<typename _Scalar, typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
struct DScalar2< _Scalar, _Gradient, _Hessian >

Automatic differentiation scalar with first- and second-order derivatives.

This class provides an instrumented "scalar" value, which may be dependent on a number of independent variables. The implementation keeps tracks of first and second-order drivatives with respect to these variables using a set of overloaded operations and implementations of special functions (sin, tan, exp, ..).

This is extremely useful for numerical optimization, particularly when analytic derivatives from programs like Maple or Mathematica suffer from excessively complicated expressions.

The class relies on templates, which makes it possible to fix the number of independent variables at compile-time so that instances can be allocated on the stack. Otherwise, they will be placed on the heap.

This is an extended C++ port of Jon Kaldor's implementation, which is based on a C version by Eitan Grinspun at Caltech)

See Also
DScalar1
Author
Wenzel Jakob

Member Typedef Documentation

template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
typedef Eigen::Matrix<DScalar2, 2, 1> DScalar2< _Scalar, _Gradient, _Hessian >::DVector2
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
typedef Eigen::Matrix<DScalar2, 3, 1> DScalar2< _Scalar, _Gradient, _Hessian >::DVector3
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
typedef _Gradient DScalar2< _Scalar, _Gradient, _Hessian >::Gradient
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
typedef _Hessian DScalar2< _Scalar, _Gradient, _Hessian >::Hessian
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
typedef _Scalar DScalar2< _Scalar, _Gradient, _Hessian >::Scalar

Constructor & Destructor Documentation

template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2< _Scalar, _Gradient, _Hessian >::DScalar2 ( Scalar  value = (Scalar) 0)
inlineexplicit

Create a new constant automatic differentiation scalar.

template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2< _Scalar, _Gradient, _Hessian >::DScalar2 ( size_t  index,
const Scalar value 
)
inline

Construct a new scalar with the specified value and one first derivative set to 1.

template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2< _Scalar, _Gradient, _Hessian >::DScalar2 ( Scalar  value,
const Gradient grad,
const Hessian hess 
)
inline

Construct a scalar associated with the given gradient and Hessian.

template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2< _Scalar, _Gradient, _Hessian >::DScalar2 ( const DScalar2< _Scalar, _Gradient, _Hessian > &  s)
inline

Copy constructor.

Member Function Documentation

template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
const Gradient& DScalar2< _Scalar, _Gradient, _Hessian >::getGradient ( ) const
inline

Create a new constant automatic differentiation scalar.

template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
const Hessian& DScalar2< _Scalar, _Gradient, _Hessian >::getHessian ( ) const
inline

Create a new constant automatic differentiation scalar.

template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
const Scalar& DScalar2< _Scalar, _Gradient, _Hessian >::getValue ( ) const
inline

Create a new constant automatic differentiation scalar.

template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
bool DScalar2< _Scalar, _Gradient, _Hessian >::operator!= ( const Scalar s) const
inline
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2& DScalar2< _Scalar, _Gradient, _Hessian >::operator*= ( const Scalar v)
inline

Product rule

template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2& DScalar2< _Scalar, _Gradient, _Hessian >::operator+= ( const DScalar2< _Scalar, _Gradient, _Hessian > &  s)
inline
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2& DScalar2< _Scalar, _Gradient, _Hessian >::operator+= ( const Scalar v)
inline
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2& DScalar2< _Scalar, _Gradient, _Hessian >::operator-= ( const DScalar2< _Scalar, _Gradient, _Hessian > &  s)
inline
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2& DScalar2< _Scalar, _Gradient, _Hessian >::operator-= ( const Scalar v)
inline
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2& DScalar2< _Scalar, _Gradient, _Hessian >::operator/= ( const Scalar v)
inline
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
bool DScalar2< _Scalar, _Gradient, _Hessian >::operator< ( const DScalar2< _Scalar, _Gradient, _Hessian > &  s) const
inline
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
bool DScalar2< _Scalar, _Gradient, _Hessian >::operator< ( const Scalar s) const
inline
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
bool DScalar2< _Scalar, _Gradient, _Hessian >::operator<= ( const DScalar2< _Scalar, _Gradient, _Hessian > &  s) const
inline
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
bool DScalar2< _Scalar, _Gradient, _Hessian >::operator<= ( const Scalar s) const
inline
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
void DScalar2< _Scalar, _Gradient, _Hessian >::operator= ( const DScalar2< _Scalar, _Gradient, _Hessian > &  s)
inline
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
void DScalar2< _Scalar, _Gradient, _Hessian >::operator= ( const Scalar v)
inline
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
bool DScalar2< _Scalar, _Gradient, _Hessian >::operator== ( const Scalar s) const
inline
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
bool DScalar2< _Scalar, _Gradient, _Hessian >::operator> ( const DScalar2< _Scalar, _Gradient, _Hessian > &  s) const
inline
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
bool DScalar2< _Scalar, _Gradient, _Hessian >::operator> ( const Scalar s) const
inline
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
bool DScalar2< _Scalar, _Gradient, _Hessian >::operator>= ( const DScalar2< _Scalar, _Gradient, _Hessian > &  s) const
inline
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
bool DScalar2< _Scalar, _Gradient, _Hessian >::operator>= ( const Scalar s) const
inline

Friends And Related Function Documentation

template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2 acos ( const DScalar2< _Scalar, _Gradient, _Hessian > &  s)
friend
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2 asin ( const DScalar2< _Scalar, _Gradient, _Hessian > &  s)
friend
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2 atan2 ( const DScalar2< _Scalar, _Gradient, _Hessian > &  y,
const DScalar2< _Scalar, _Gradient, _Hessian > &  x 
)
friend
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2 cos ( const DScalar2< _Scalar, _Gradient, _Hessian > &  s)
friend
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2 exp ( const DScalar2< _Scalar, _Gradient, _Hessian > &  s)
friend
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2 inverse ( const DScalar2< _Scalar, _Gradient, _Hessian > &  s)
friend
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2 log ( const DScalar2< _Scalar, _Gradient, _Hessian > &  s)
friend
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2 operator* ( const DScalar2< _Scalar, _Gradient, _Hessian > &  lhs,
const Scalar rhs 
)
friend

Product rule

template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2 operator* ( const Scalar lhs,
const DScalar2< _Scalar, _Gradient, _Hessian > &  rhs 
)
friend

Product rule

template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2 operator* ( const DScalar2< _Scalar, _Gradient, _Hessian > &  lhs,
const DScalar2< _Scalar, _Gradient, _Hessian > &  rhs 
)
friend

Product rule

template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2 operator+ ( const DScalar2< _Scalar, _Gradient, _Hessian > &  lhs,
const DScalar2< _Scalar, _Gradient, _Hessian > &  rhs 
)
friend
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2 operator+ ( const DScalar2< _Scalar, _Gradient, _Hessian > &  lhs,
const Scalar rhs 
)
friend
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2 operator+ ( const Scalar lhs,
const DScalar2< _Scalar, _Gradient, _Hessian > &  rhs 
)
friend
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2 operator- ( const DScalar2< _Scalar, _Gradient, _Hessian > &  lhs,
const DScalar2< _Scalar, _Gradient, _Hessian > &  rhs 
)
friend
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2 operator- ( const DScalar2< _Scalar, _Gradient, _Hessian > &  lhs,
const Scalar rhs 
)
friend
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2 operator- ( const Scalar lhs,
const DScalar2< _Scalar, _Gradient, _Hessian > &  rhs 
)
friend
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2 operator- ( const DScalar2< _Scalar, _Gradient, _Hessian > &  s)
friend
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2 operator/ ( const DScalar2< _Scalar, _Gradient, _Hessian > &  lhs,
const Scalar rhs 
)
friend
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2 operator/ ( const Scalar lhs,
const DScalar2< _Scalar, _Gradient, _Hessian > &  rhs 
)
friend
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2 operator/ ( const DScalar2< _Scalar, _Gradient, _Hessian > &  lhs,
const DScalar2< _Scalar, _Gradient, _Hessian > &  rhs 
)
friend
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2 pow ( const DScalar2< _Scalar, _Gradient, _Hessian > &  s,
const Scalar a 
)
friend
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2 sin ( const DScalar2< _Scalar, _Gradient, _Hessian > &  s)
friend
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
DScalar2 sqrt ( const DScalar2< _Scalar, _Gradient, _Hessian > &  s)
friend

Member Data Documentation

template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
Gradient DScalar2< _Scalar, _Gradient, _Hessian >::grad
protected
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
Hessian DScalar2< _Scalar, _Gradient, _Hessian >::hess
protected
template<typename _Scalar , typename _Gradient = Eigen::Matrix<_Scalar, Eigen::Dynamic, 1>, typename _Hessian = Eigen::Matrix<_Scalar, Eigen::Dynamic, Eigen::Dynamic>>
Scalar DScalar2< _Scalar, _Gradient, _Hessian >::value
protected

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