35 # include <cppad/cppad.hpp>
37 typedef 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.
virtual std::vector< ExprNode * > preOrderOSnLNodeTraversal(std::vector< ExprNode * > *prefixVector)
Called by getPrefixFromExpressionTree().
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 * > 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.
virtual ExprNode * cloneExprNode()=0
Create or clone a node of this type.
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 * > getPostfixFromExpressionTree()
Get a vector of pointers to ExprNodes that correspond to the expression tree in postfix format.
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 std::string getTokenName()=0
virtual std::vector< ExprNode * > postOrderOSnLNodeTraversal(std::vector< ExprNode * > *postfixVector)
Called by getPostfixFromExpressionTree().
virtual std::string getTokenNumber()
a data structure to represent a matrix object (derived from MatrixType)
~OSnLMNodeDiagonalMatrixFromVector()
default destructor.
OSnLMNodeDiagonalMatrixFromVector()
default constructor.
virtual OSnLMNode * cloneExprNode()
Create or clone a node of this type.
virtual std::string getTokenName()
OSnLMNodeIdentityMatrix()
default constructor.
~OSnLMNodeIdentityMatrix()
default destructor.
virtual std::string getTokenName()
virtual OSnLMNode * cloneExprNode()
Create or clone a node of this type.
int idx
The index of the matrixCon.
virtual bool IsEqual(OSnLMNodeMatrixCon *that)
A function to check for the equality of two objects.
~OSnLMNodeMatrixCon()
default destructor.
virtual std::string getTokenName()
OSnLMNodeMatrixCon()
default constructor.
virtual std::string getTokenNumber()
virtual std::string getNonlinearExpressionInXML()
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 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 std::string getTokenName()
OSnLMNodeMatrixInverse()
default constructor.
virtual OSnLMNode * cloneExprNode()
Create or clone a node of this type.
bool includeDiagonal
A boolean to express whether the diagonal is to be part of the upper triangle or not.
virtual std::string getNonlinearExpressionInXML()
virtual bool IsEqual(OSnLMNodeMatrixLowerTriangle *that)
A function to check for the equality of two objects.
virtual OSnLMNode * cloneExprNode()
Create or clone a node of this type.
virtual std::string getTokenName()
virtual OSnLMNode * copyNodeAndDescendants()
make a copy of this node and all its descendants
OSnLMNodeMatrixLowerTriangle()
default constructor.
~OSnLMNodeMatrixLowerTriangle()
default destructor.
~OSnLMNodeMatrixMinus()
default destructor.
virtual std::string getTokenName()
virtual OSnLMNode * cloneExprNode()
Create or clone a node of this type.
OSnLMNodeMatrixMinus()
default constructor.
OSnLMNodeMatrixNegate()
default constructor.
~OSnLMNodeMatrixNegate()
default destructor.
virtual OSnLMNode * cloneExprNode()
Create or clone a node of this type.
virtual std::string getTokenName()
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 OSnLMNode * copyNodeAndDescendants()
make a copy of this node and all its descendants
virtual std::string getNonlinearExpressionInXML()
virtual std::string getTokenNumber()
virtual OSnLMNode * cloneExprNode()
Create or clone a node of this type.
virtual std::string getTokenName()
virtual OSnLMNode * cloneExprNode()
Create or clone a node of this type.
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 std::string getTokenNumber()
virtual bool IsEqual(OSnLMNodeMatrixReference *that)
A function to check for the equality of two objects.
virtual OSnLMNode * cloneExprNode()
Create or clone a node of this type.
OSnLMNodeMatrixReference()
default constructor.
virtual OSnLMNode * copyNodeAndDescendants()
make a copy of this node and all its descendants
virtual std::string getTokenName()
virtual std::string getNonlinearExpressionInXML()
~OSnLMNodeMatrixReference()
default destructor.
~OSnLMNodeMatrixScalarTimes()
default destructor.
OSnLMNodeMatrixScalarTimes()
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.
~OSnLMNodeMatrixSubmatrixAt()
default destructor.
OSnLMNodeMatrixSubmatrixAt()
default constructor.
virtual std::string getTokenName()
virtual std::string getTokenName()
~OSnLMNodeMatrixSum()
default destructor.
OSnLMNodeMatrixSum()
default constructor.
virtual OSnLMNode * cloneExprNode()
Create or clone a node of this type.
~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.
virtual OSnLMNode * cloneExprNode()
Create or clone a node of this type.
~OSnLMNodeMatrixTranspose()
default destructor.
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 OSnLMNode * copyNodeAndDescendants()
make a copy of this node and all its descendants
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()
virtual OSnLMNode * copyNodeAndDescendants()
make a copy of this node and all its descendants
virtual OSnLMNode * cloneExprNode()
Create or clone a node of this type.
~OSnLMNodeMatrixVar()
default destructor.
int idx
The index of the matrixVar.
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 * > getPostfixFromExpressionTree()
Get a vector of pointers to ExprNodes that correspond to the expression tree in postfix format.
virtual OSnLMNode * copyNodeAndDescendants()
make a copy of this node and all its descendants
std::vector< ExprNode * > preOrderOSnLNodeTraversal(std::vector< ExprNode * > *prefixVector)
Called by getPrefixFromExpressionTree().
std::vector< ExprNode * > getPrefixFromExpressionTree()
Get a vector of pointers to OSnLNodes and OSnLMNodes that correspond to the (matrix-valued) expressio...
std::vector< ExprNode * > postOrderOSnLNodeTraversal(std::vector< ExprNode * > *postfixVector)
Called by getPostfixFromExpressionTree().
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...
bool IsEqual(OSnLMNode *that)
A function to check for the equality of two objects.
virtual ~OSnLMNode()
default destructor.
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 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.
virtual OSnLNode * cloneExprNode()
Create or clone a node of this type.
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 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 OSnLNode * copyNodeAndDescendants()
make a copy of this node and all its descendants
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 * copyNodeAndDescendants()
make a copy of this node and all its descendants
virtual OSnLNode * cloneExprNode()
The implementation of the virtual functions.
virtual std::string getTokenName()
virtual std::string getNonlinearExpressionInXML()
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.
OSnLNode * createExpressionTreeFromPrefix(std::vector< ExprNode * > nlNodeVec)
Take a vector of ExprNodes (OSnLNodes and OSnLMNodes) in prefix format and create a scalar-valued OSE...
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.
ADdouble m_ADTape
m_ADTape stores the expression tree for the this OSnLNode as an ADdouble.
virtual OSnLNode * copyNodeAndDescendants()
make a copy of this node and all its descendants
virtual std::vector< ExprNode * > getPrefixFromExpressionTree()
Get a vector of pointers to OSnLNodes and OSnLMNodes that correspond to the (scalar-valued or matrix-...
OSnLNode * createExpressionTreeFromPostfix(std::vector< ExprNode * > nlNodeVec)
Take a vector of ExprNodes (OSnLNodes and OSnLMNodes) in postfix format and create a scalar-valued OS...
virtual std::vector< ExprNode * > preOrderOSnLNodeTraversal(std::vector< ExprNode * > *prefixVector)
Called by getPrefixFromExpressionTree().
virtual double calculateFunction(double *x)=0
Calculate the function value given the current variable values.
virtual std::vector< ExprNode * > postOrderOSnLNodeTraversal(std::vector< ExprNode * > *postfixVector)
Called by getPostfixFromExpressionTree().
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.