35# include <cppad/cppad.hpp>
37typedef CppAD::vector<ADdouble>
ADvector;
1925 virtual ADdouble constructADTape(std::map<int, int> *ADIdx,
ADvector *XAD);
2501 virtual double calculateFunction(
double *x);
2521 virtual ADdouble constructADTape(std::map<int, int> *ADIdx,
ADvector *XAD);
2572 virtual double calculateFunction(
double *x);
2592 virtual ADdouble constructADTape(std::map<int, int> *ADIdx,
ADvector *XAD);
2643 virtual double calculateFunction(
double *x);
2663 virtual ADdouble constructADTape(std::map<int, int> *ADIdx,
ADvector *XAD);
2714 virtual double calculateFunction(
double *x);
2734 virtual ADdouble constructADTape(std::map<int, int> *ADIdx,
ADvector *XAD);
std::vector< ADdouble > ADvector
A generic class from which we derive both OSnLNode and OSnLMNode.
OSnLNode ** m_mChildren
m_mChildren holds all the operands, that is, nodes that the current node operates on.
int inodeType
inodeType essentially tracks whether the number of children are known or not.
int inodeInt
inodeInt is the unique integer assigned to the OSnLNode or OSnLMNode in OSParameters....
virtual std::vector< ExprNode * > getPostfixFromExpressionTree()
Get a vector of pointers to ExprNodes that correspond to the expression tree in postfix format.
virtual std::vector< ExprNode * > getPrefixFromExpressionTree()
Get a vector of pointers to OSnLNodes and OSnLMNodes that correspond to the (scalar-valued or matrix-...
virtual std::string getNonlinearExpressionInXML()
The following method writes an OSnLNode or OSnLMNode in OSiL format.
ExprNode()
default constructor.
unsigned int inumberOfMatrixChildren
inumberOfMatrixChildren is the number of OSnLMNode child elements If this number is not fixed,...
unsigned int inumberOfChildren
inumberOfChildren is the number of OSnLNode child elements If this number is not fixed,...
virtual std::vector< ExprNode * > preOrderOSnLNodeTraversal(std::vector< ExprNode * > *prefixVector)
Called by getPrefixFromExpressionTree().
OSnLMNode ** m_mMatrixChildren
m_mMatrixChildren holds all the matrix-valued operands, if any.
virtual bool IsEqual(ExprNode *that)
A function to check for the equality of two objects.
virtual ~ExprNode()
default destructor.
virtual ExprNode * cloneExprNode()=0
Create or clone a node of this type.
virtual std::vector< ExprNode * > postOrderOSnLNodeTraversal(std::vector< ExprNode * > *postfixVector)
Called by getPostfixFromExpressionTree().
virtual std::string getTokenName()=0
virtual std::string getTokenNumber()
a data structure to represent a matrix object (derived from MatrixType)
virtual OSnLMNode * cloneExprNode()
Create or clone a node of this type.
~OSnLMNodeDiagonalMatrixFromVector()
default destructor.
OSnLMNodeDiagonalMatrixFromVector()
default constructor.
virtual std::string getTokenName()
OSnLMNodeIdentityMatrix()
default constructor.
~OSnLMNodeIdentityMatrix()
default destructor.
virtual OSnLMNode * cloneExprNode()
Create or clone a node of this type.
virtual std::string getTokenName()
int idx
The index of the matrixCon.
virtual OSnLMNode * cloneExprNode()
Create or clone a node of this type.
virtual bool IsEqual(OSnLMNodeMatrixCon *that)
A function to check for the equality of two objects.
~OSnLMNodeMatrixCon()
default destructor.
virtual std::string getTokenName()
virtual OSnLMNode * copyNodeAndDescendants()
make a copy of this node and all its descendants
OSnLMNodeMatrixCon()
default constructor.
virtual std::string getTokenNumber()
virtual std::string getNonlinearExpressionInXML()
virtual OSnLMNode * cloneExprNode()
Create or clone a node of this type.
OSnLMNodeMatrixDiagonal()
default constructor.
~OSnLMNodeMatrixDiagonal()
default destructor.
virtual std::string getTokenName()
~OSnLMNodeMatrixDotTimes()
default destructor.
virtual std::string getTokenName()
OSnLMNodeMatrixDotTimes()
default constructor.
virtual OSnLMNode * cloneExprNode()
Create or clone a node of this type.
~OSnLMNodeMatrixInverse()
default destructor.
virtual OSnLMNode * cloneExprNode()
Create or clone a node of this type.
virtual std::string getTokenName()
OSnLMNodeMatrixInverse()
default constructor.
bool includeDiagonal
A boolean to express whether the diagonal is to be part of the upper triangle or not.
virtual OSnLMNode * cloneExprNode()
Create or clone a node of this type.
virtual std::string getNonlinearExpressionInXML()
virtual bool IsEqual(OSnLMNodeMatrixLowerTriangle *that)
A function to check for the equality of two objects.
virtual std::string getTokenName()
OSnLMNodeMatrixLowerTriangle()
default constructor.
~OSnLMNodeMatrixLowerTriangle()
default destructor.
virtual OSnLMNode * copyNodeAndDescendants()
make a copy of this node and all its descendants
~OSnLMNodeMatrixMinus()
default destructor.
virtual OSnLMNode * cloneExprNode()
Create or clone a node of this type.
virtual std::string getTokenName()
OSnLMNodeMatrixMinus()
default constructor.
virtual OSnLMNode * cloneExprNode()
Create or clone a node of this type.
OSnLMNodeMatrixNegate()
default constructor.
~OSnLMNodeMatrixNegate()
default destructor.
virtual std::string getTokenName()
virtual OSnLMNode * cloneExprNode()
Create or clone a node of this type.
OSnLMNodeMatrixObj()
default constructor.
virtual bool IsEqual(OSnLMNodeMatrixObj *that)
A function to check for the equality of two objects.
~OSnLMNodeMatrixObj()
default destructor.
virtual std::string getTokenName()
int idx
The index of the matrixObj.
virtual std::string getNonlinearExpressionInXML()
virtual std::string getTokenNumber()
virtual OSnLMNode * copyNodeAndDescendants()
make a copy of this node and all its descendants
virtual OSnLMNode * cloneExprNode()
Create or clone a node of this type.
virtual std::string getTokenName()
OSnLMNodeMatrixPlus()
default constructor.
~OSnLMNodeMatrixPlus()
default destructor.
The OSnLMNodeMatrixProduct Class.
~OSnLMNodeMatrixProduct()
default destructor.
virtual std::string getTokenName()
OSnLMNodeMatrixProduct()
default constructor.
virtual OSnLMNode * cloneExprNode()
The implementation of the virtual functions.
int idx
The index of the matrix.
virtual OSnLMNode * copyNodeAndDescendants()
make a copy of this node and all its descendants
virtual std::string getTokenNumber()
virtual bool IsEqual(OSnLMNodeMatrixReference *that)
A function to check for the equality of two objects.
OSnLMNodeMatrixReference()
default constructor.
virtual std::string getTokenName()
virtual std::string getNonlinearExpressionInXML()
virtual OSnLMNode * cloneExprNode()
Create or clone a node of this type.
~OSnLMNodeMatrixReference()
default destructor.
~OSnLMNodeMatrixScalarTimes()
default destructor.
OSnLMNodeMatrixScalarTimes()
default constructor.
virtual OSnLMNode * cloneExprNode()
Create or clone a node of this type.
virtual std::string getTokenName()
~OSnLMNodeMatrixSubmatrixAt()
default destructor.
OSnLMNodeMatrixSubmatrixAt()
default constructor.
virtual std::string getTokenName()
virtual OSnLMNode * cloneExprNode()
Create or clone a node of this type.
virtual OSnLMNode * cloneExprNode()
Create or clone a node of this type.
virtual std::string getTokenName()
~OSnLMNodeMatrixSum()
default destructor.
OSnLMNodeMatrixSum()
default constructor.
~OSnLMNodeMatrixTimes()
default destructor.
virtual OSnLMNode * cloneExprNode()
Create or clone a node of this type.
virtual std::string getTokenName()
OSnLMNodeMatrixTimes()
default constructor.
virtual std::string getTokenName()
OSnLMNodeMatrixTranspose()
default constructor.
~OSnLMNodeMatrixTranspose()
default destructor.
virtual OSnLMNode * cloneExprNode()
Create or clone a node of this type.
virtual OSnLMNode * copyNodeAndDescendants()
make a copy of this node and all its descendants
virtual OSnLMNode * cloneExprNode()
Create or clone a node of this type.
virtual std::string getNonlinearExpressionInXML()
bool includeDiagonal
A boolean to express whether the diagonal is to be part of the upper triangle or not.
virtual std::string getTokenName()
OSnLMNodeMatrixUpperTriangle()
default constructor.
virtual bool IsEqual(OSnLMNodeMatrixUpperTriangle *that)
A function to check for the equality of two objects.
~OSnLMNodeMatrixUpperTriangle()
default destructor.
virtual std::string getTokenName()
virtual std::string getNonlinearExpressionInXML()
~OSnLMNodeMatrixVar()
default destructor.
virtual OSnLMNode * cloneExprNode()
Create or clone a node of this type.
int idx
The index of the matrixVar.
virtual OSnLMNode * copyNodeAndDescendants()
make a copy of this node and all its descendants
virtual bool IsEqual(OSnLMNodeMatrixVar *that)
A function to check for the equality of two objects.
virtual std::string getTokenNumber()
OSnLMNodeMatrixVar()
default constructor.
The OSnLMNode Class for nonlinear expressions involving matrices.
std::vector< ExprNode * > postOrderOSnLNodeTraversal(std::vector< ExprNode * > *postfixVector)
Called by getPostfixFromExpressionTree().
std::vector< ExprNode * > getPrefixFromExpressionTree()
Get a vector of pointers to OSnLNodes and OSnLMNodes that correspond to the (matrix-valued) expressio...
OSnLMNode * createExpressionTreeFromPrefix(std::vector< ExprNode * > nlNodeVec)
Take a vector of ExprNodes (OSnLNodes and OSnLMNodes) in prefix format and create a matrix-valued OSE...
OSnLMNode * createExpressionTreeFromPostfix(std::vector< ExprNode * > nlNodeVec)
Take a vector of ExprNodes (OSnLNodes and OSnLMNodes) in postfix format and create a matrix-valued OS...
std::vector< ExprNode * > preOrderOSnLNodeTraversal(std::vector< ExprNode * > *prefixVector)
Called by getPrefixFromExpressionTree().
std::vector< ExprNode * > getPostfixFromExpressionTree()
Get a vector of pointers to ExprNodes that correspond to the expression tree in postfix format.
bool IsEqual(OSnLMNode *that)
A function to check for the equality of two objects.
virtual ~OSnLMNode()
default destructor.
virtual OSnLMNode * copyNodeAndDescendants()
make a copy of this node and all its descendants
OSnLMNode()
default constructor.
~OSnLNodeAbs()
default destructor.
OSnLNodeAbs()
default constructor.
virtual double calculateFunction(double *x)
Calculate the function value given the current variable values.
virtual std::string getTokenName()
virtual OSnLNode * cloneExprNode()
The implementation of the virtual functions.
virtual ADdouble constructADTape(std::map< int, int > *ADIdx, ADvector *XAD)
The implementation of the virtual functions.
The OSnLNodeAllDiff Class.
virtual double calculateFunction(double *x)
Calculate the function value given the current variable values.
virtual ADdouble constructADTape(std::map< int, int > *ADIdx, ADvector *XAD)
The implementation of the virtual functions.
virtual OSnLNode * cloneExprNode()
The implementation of the virtual functions.
~OSnLNodeAllDiff()
default destructor.
OSnLNodeAllDiff()
default constructor.
virtual std::string getTokenName()
virtual OSnLNode * cloneExprNode()
The implementation of the virtual functions.
virtual std::string getTokenName()
virtual ADdouble constructADTape(std::map< int, int > *ADIdx, ADvector *XAD)
The implementation of the virtual functions.
virtual double calculateFunction(double *x)
Calculate the function value given the current variable values.
~OSnLNodeCos()
default destructor.
OSnLNodeCos()
default constructor.
The OSnLNodeDivide Class.
~OSnLNodeDivide()
default destructor.
virtual std::string getTokenName()
OSnLNodeDivide()
default constructor.
virtual ADdouble constructADTape(std::map< int, int > *ADIdx, ADvector *XAD)
The implementation of the virtual functions.
virtual OSnLNode * cloneExprNode()
The implementation of the virtual functions.
virtual double calculateFunction(double *x)
Calculate the function value given the current variable values.
virtual std::string getTokenName()
virtual double calculateFunction(double *x)
Calculate the function value given the current variable values.
~OSnLNodeE()
default destructor.
virtual OSnLNode * cloneExprNode()
The implementation of the virtual functions.
virtual std::string getTokenNumber()
virtual ADdouble constructADTape(std::map< int, int > *ADIdx, ADvector *XAD)
The implementation of the virtual functions.
OSnLNodeE()
default constructor.
virtual std::string getNonlinearExpressionInXML()
OSnLNodeErf()
default constructor.
virtual double calculateFunction(double *x)
Calculate the function value given the current variable values.
virtual ADdouble constructADTape(std::map< int, int > *ADIdx, ADvector *XAD)
Create the AD tape to be evaluated by AD.
virtual OSnLNode * cloneExprNode()
The implementation of the virtual functions.
virtual std::string getTokenName()
~OSnLNodeErf()
default destructor.
OSnLNodeExp()
default constructor.
~OSnLNodeExp()
default destructor.
virtual ADdouble constructADTape(std::map< int, int > *ADIdx, ADvector *XAD)
The implementation of the virtual functions.
virtual double calculateFunction(double *x)
Calculate the function value given the current variable values.
virtual OSnLNode * cloneExprNode()
The implementation of the virtual functions.
virtual std::string getTokenName()
~OSnLNodeIf()
default destructor.
OSnLNodeIf()
default constructor.
virtual OSnLNode * cloneExprNode()
The implementation of the virtual functions.
virtual ADdouble constructADTape(std::map< int, int > *ADIdx, ADvector *XAD)
The implementation of the virtual functions.
virtual double calculateFunction(double *x)
Calculate the function value given the current variable values.
virtual std::string getTokenName()
~OSnLNodeLn()
default destructor.
virtual double calculateFunction(double *x)
Calculate the function value given the current variable values.
OSnLNodeLn()
default constructor.
virtual ADdouble constructADTape(std::map< int, int > *ADIdx, ADvector *XAD)
The implementation of the virtual functions.
virtual std::string getTokenName()
virtual OSnLNode * cloneExprNode()
The implementation of the virtual functions.
The next few nodes evaluate to a scalar even though one or more of its arguments are matrices.
virtual OSnLNode * cloneExprNode()
Create or clone a node of this type.
virtual ADdouble constructADTape(std::map< int, int > *ADIdx, ADvector *XAD)
The implementation of the virtual functions.
virtual std::string getTokenName()
~OSnLNodeMatrixDeterminant()
default destructor.
virtual double calculateFunction(double *x)
The implementation of the virtual functions.
OSnLNodeMatrixDeterminant()
default constructor.
The OSnLNodeMatrixTrace Class.
~OSnLNodeMatrixToScalar()
default destructor.
OSnLNodeMatrixToScalar()
default constructor.
virtual std::string getTokenName()
virtual OSnLNode * cloneExprNode()
Create or clone a node of this type.
virtual double calculateFunction(double *x)
Calculate the function value given the current variable values.
virtual ADdouble constructADTape(std::map< int, int > *ADIdx, ADvector *XAD)
Create the AD tape to be evaluated by AD.
The OSnLNodeMatrixTrace Class.
virtual ADdouble constructADTape(std::map< int, int > *ADIdx, ADvector *XAD)
The implementation of the virtual functions.
virtual double calculateFunction(double *x)
The implementation of the virtual functions.
~OSnLNodeMatrixTrace()
default destructor.
OSnLNodeMatrixTrace()
default constructor.
virtual OSnLNode * cloneExprNode()
Create or clone a node of this type.
virtual std::string getTokenName()
virtual ADdouble constructADTape(std::map< int, int > *ADIdx, ADvector *XAD)
The implementation of the virtual functions.
virtual std::string getTokenName()
~OSnLNodeMax()
default destructor.
OSnLNodeMax()
default constructor.
virtual OSnLNode * cloneExprNode()
The implementation of the virtual functions.
virtual double calculateFunction(double *x)
Calculate the function value given the current variable values.
virtual ADdouble constructADTape(std::map< int, int > *ADIdx, ADvector *XAD)
The implementation of the virtual functions.
virtual double calculateFunction(double *x)
Calculate the function value given the current variable values.
~OSnLNodeMin()
default destructor.
OSnLNodeMin()
default constructor.
virtual OSnLNode * cloneExprNode()
The implementation of the virtual functions.
virtual std::string getTokenName()
virtual std::string getTokenName()
virtual OSnLNode * cloneExprNode()
The implementation of the virtual functions.
virtual ADdouble constructADTape(std::map< int, int > *ADIdx, ADvector *XAD)
The implementation of the virtual functions.
~OSnLNodeMinus()
default destructor.
OSnLNodeMinus()
default constructor.
virtual double calculateFunction(double *x)
Calculate the function value given the current variable values.
The OSnLNodeNegate Class.
virtual std::string getTokenName()
virtual ADdouble constructADTape(std::map< int, int > *ADIdx, ADvector *XAD)
The implementation of the virtual functions.
virtual double calculateFunction(double *x)
Calculate the function value given the current variable values.
OSnLNodeNegate()
default constructor.
virtual OSnLNode * cloneExprNode()
The implementation of the virtual functions.
~OSnLNodeNegate()
default destructor.
The OSnLNodeNumber Class.
double value
value is the value of the number
virtual OSnLNode * copyNodeAndDescendants()
make a copy of this node and all its descendants
virtual double calculateFunction(double *x)
Calculate the function value given the current variable values.
virtual ADdouble constructADTape(std::map< int, int > *ADIdx, ADvector *XAD)
The implementation of the virtual functions.
virtual OSnLNode * cloneExprNode()
The implementation of the virtual functions.
~OSnLNodeNumber()
default destructor.
virtual std::string getNonlinearExpressionInXML()
virtual bool IsEqual(OSnLNodeNumber *that)
A function to check for the equality of two objects.
OSnLNodeNumber()
default constructor.
std::string id
later, e.g.
virtual std::string getTokenName()
std::string type
in the C++ type is real
virtual std::string getTokenNumber()
virtual double calculateFunction(double *x)
Calculate the function value given the current variable values.
virtual std::string getTokenName()
virtual std::string getNonlinearExpressionInXML()
~OSnLNodePI()
default destructor.
virtual OSnLNode * cloneExprNode()
The implementation of the virtual functions.
virtual ADdouble constructADTape(std::map< int, int > *ADIdx, ADvector *XAD)
The implementation of the virtual functions.
virtual std::string getTokenNumber()
OSnLNodePI()
default constructor.
virtual double calculateFunction(double *x)
The implementation of the virtual functions.
OSnLNodePlus()
default constructor.
virtual std::string getTokenName()
virtual ADdouble constructADTape(std::map< int, int > *ADIdx, ADvector *XAD)
The implementation of the virtual functions.
~OSnLNodePlus()
default destructor.
virtual OSnLNode * cloneExprNode()
The implementation of the virtual functions.
~OSnLNodePower()
default destructor.
virtual double calculateFunction(double *x)
Calculate the function value given the current variable values.
virtual OSnLNode * cloneExprNode()
The implementation of the virtual functions.
virtual ADdouble constructADTape(std::map< int, int > *ADIdx, ADvector *XAD)
The implementation of the virtual functions.
OSnLNodePower()
default constructor.
virtual std::string getTokenName()
The OSnLNodeProduct Class.
virtual OSnLNode * cloneExprNode()
The implementation of the virtual functions.
virtual ADdouble constructADTape(std::map< int, int > *ADIdx, ADvector *XAD)
The implementation of the virtual functions.
virtual std::string getTokenName()
OSnLNodeProduct()
default constructor.
~OSnLNodeProduct()
default destructor.
virtual double calculateFunction(double *x)
Calculate the function value given the current variable values.
virtual std::string getTokenName()
OSnLNodeSin()
default constructor.
virtual double calculateFunction(double *x)
Calculate the function value given the current variable values.
~OSnLNodeSin()
default destructor.
virtual ADdouble constructADTape(std::map< int, int > *ADIdx, ADvector *XAD)
The implementation of the virtual functions.
virtual OSnLNode * cloneExprNode()
The implementation of the virtual functions.
OSnLNodeSqrt()
default constructor.
virtual double calculateFunction(double *x)
Calculate the function value given the current variable values.
~OSnLNodeSqrt()
default destructor.
virtual OSnLNode * cloneExprNode()
The implementation of the virtual functions.
virtual ADdouble constructADTape(std::map< int, int > *ADIdx, ADvector *XAD)
The implementation of the virtual functions.
virtual std::string getTokenName()
The OSnLNodeSquare Class.
virtual ADdouble constructADTape(std::map< int, int > *ADIdx, ADvector *XAD)
The implementation of the virtual functions.
OSnLNodeSquare()
default constructor.
virtual std::string getTokenName()
virtual OSnLNode * cloneExprNode()
The implementation of the virtual functions.
~OSnLNodeSquare()
default destructor.
virtual double calculateFunction(double *x)
Calculate the function value given the current variable values.
OSnLNodeSum()
default constructor.
virtual OSnLNode * cloneExprNode()
The implementation of the virtual functions.
~OSnLNodeSum()
default destructor.
virtual double calculateFunction(double *x)
Calculate the function value given the current variable values.
virtual ADdouble constructADTape(std::map< int, int > *ADIdx, ADvector *XAD)
The implementation of the virtual functions.
virtual std::string getTokenName()
OSnLNodeTimes()
default constructor.
virtual ADdouble constructADTape(std::map< int, int > *ADIdx, ADvector *XAD)
Create the AD tape to be evaluated by AD.
~OSnLNodeTimes()
default destructor.
virtual double calculateFunction(double *x)
Calculate the function value given the current variable values.
virtual OSnLNode * cloneExprNode()
The implementation of the virtual functions.
virtual std::string getTokenName()
The OSnLNodeVariable Class.
~OSnLNodeVariable()
default destructor.
virtual void getVariableIndexMap(std::map< int, int > *varIdx)
varIdx is a map where the key is the index of an OSnLNodeVariable and (*varIdx)[ idx] is the kth vari...
virtual OSnLNode * cloneExprNode()
The implementation of the virtual functions.
virtual std::string getTokenName()
virtual std::string getNonlinearExpressionInXML()
virtual OSnLNode * copyNodeAndDescendants()
make a copy of this node and all its descendants
virtual ADdouble constructADTape(std::map< int, int > *ADIdx, ADvector *XAD)
The implementation of the virtual functions.
OSnLNodeVariable()
default constructor.
int idx
idx is the index of the variable
virtual double calculateFunction(double *x)
Calculate the function value given the current variable values.
double coef
coef is an option coefficient on the variable, the default value is 1.0
virtual std::string getTokenNumber()
virtual bool IsEqual(OSnLNodeVariable *that)
A function to check for the equality of two objects.
The OSnLNode Class for nonlinear expressions.
virtual std::vector< ExprNode * > preOrderOSnLNodeTraversal(std::vector< ExprNode * > *prefixVector)
Called by getPrefixFromExpressionTree().
OSnLNode * createExpressionTreeFromPostfix(std::vector< ExprNode * > nlNodeVec)
Take a vector of ExprNodes (OSnLNodes and OSnLMNodes) in postfix format and create a scalar-valued OS...
OSnLNode()
default constructor.
virtual std::vector< ExprNode * > getPostfixFromExpressionTree()
Get a vector of pointers to ExprNodes that correspond to the expression tree in postfix format.
bool IsEqual(OSnLNode *that)
A function to check for the equality of two objects.
virtual ~OSnLNode()
default destructor.
virtual OSnLNode * copyNodeAndDescendants()
make a copy of this node and all its descendants
virtual std::vector< ExprNode * > postOrderOSnLNodeTraversal(std::vector< ExprNode * > *postfixVector)
Called by getPostfixFromExpressionTree().
ADdouble m_ADTape
m_ADTape stores the expression tree for the this OSnLNode as an ADdouble.
virtual std::vector< ExprNode * > getPrefixFromExpressionTree()
Get a vector of pointers to OSnLNodes and OSnLMNodes that correspond to the (scalar-valued or matrix-...
OSnLNode * createExpressionTreeFromPrefix(std::vector< ExprNode * > nlNodeVec)
Take a vector of ExprNodes (OSnLNodes and OSnLMNodes) in prefix format and create a scalar-valued OSE...
virtual double calculateFunction(double *x)=0
Calculate the function value given the current variable values.
virtual void getVariableIndexMap(std::map< int, int > *varIdx)
varIdx is a map where the key is the index of an OSnLNodeVariable and (*varIdx)[ idx] is the kth vari...
double m_dFunctionValue
m_dFunctionValue holds the function value given the current variable values.
virtual ADdouble constructADTape(std::map< int, int > *ADIdx, ADvector *XAD)=0
Create the AD tape to be evaluated by AD.