My Project
OSExpressionTree.h
Go to the documentation of this file.
1/* $Id$ */
15#ifndef EXPRESSIONTREE_H
16#define EXPRESSIONTREE_H
17
18#include "OSnLNode.h"
19#include <vector>
20#include <map>
21
22class ExprNode;
23class OSnLNode;
24class OSnLMNode;
25
38{
39public:
44
49
55 std::map<int, int> *mapVarIdx;
56
65 //virtual std::map<int, int> *getVariableIndicesMap();
66
71
77
82
86 bool IsEqual(OSExpressionTree *that);
87};//end OSExpressionTree
88
89
100{
101public:
102
107
112
117
121 bool IsEqual(ScalarExpressionTree *that);
122
131 std::vector<ExprNode*> getPrefixFromExpressionTree();
132
141 std::vector<ExprNode*> getPostfixFromExpressionTree();
142
151 std::map<int, int> *getVariableIndicesMap();
152
153#if 0
158
163 bool bADMustReTape;
164
168 bool bDestroyNlNodes;
169#endif
170
182 double calculateFunction( double *x, bool new_x);
183
189 //bool deepCopyFrom(ScalarExpressionTree *that);
190
191private:
196};//end ScalarExpressionTree
197
198
209{
210public:
215
220
225
229 bool IsEqual(MatrixExpressionTree *that);
230
239 std::vector<ExprNode*> getPrefixFromExpressionTree();
240
249 std::vector<ExprNode*> getPostfixFromExpressionTree();
250
259 //std::map<int, int> *getVariableIndicesMap();
260
261#if 0
266
271 bool bADMustReTape;
272
276 bool bDestroyNlNodes;
277
289 double calculateFunction( double *x, bool new_x);
290#endif
291
292private:
293
297 //double m_dTreeRootValue;
298};//end MatrixExpressionTree
299
300#endif
301
This file defines the OSnLNode class along with its derived classes.
A generic class from which we derive both OSnLNode and OSnLMNode.
Definition OSnLNode.h:57
Used to hold the instance in memory.
std::vector< ExprNode * > getPostfixFromExpressionTree()
Get a vector of pointers to ExprNodes that correspond to a scalar-valued OSExpressionTree in postfix ...
MatrixExpressionTree()
default constructor.
bool IsEqual(MatrixExpressionTree *that)
A function to check for the equality of two objects.
std::vector< ExprNode * > getPrefixFromExpressionTree()
Get a vector of pointers to ExprNodes that correspond to a scalar-valued OSExpressionTree in prefix f...
~MatrixExpressionTree()
default destructor.
OSnLMNode * m_treeRoot
m_treeRoot holds the root node (of OSnLMNode type) of the expression tree.
Used to hold the instance in memory.
bool bDestroyNlNodes
m_bDestroyNlNodes is true if the destructor deletes the nodes in the Expression tree
OSExpressionTree()
default constructor.
bool m_bIndexMapGenerated
Retrieve a map of the indices of the variables that are in the expression tree.
std::map< int, int > * mapVarIdx
m_mapVarIdx is a map used to generate the infix expression for AD the key is idx,...
bool IsEqual(OSExpressionTree *that)
A function to check for the equality of two objects.
bool bADMustReTape
is true if an AD Expression Tree has an expression that can change depending on the value of the inpu...
~OSExpressionTree()
default destructor.
The OSnLMNode Class for nonlinear expressions involving matrices.
Definition OSnLNode.h:1761
The OSnLNode Class for nonlinear expressions.
Definition OSnLNode.h:180
Used to hold part of the instance in memory.
std::vector< ExprNode * > getPrefixFromExpressionTree()
Get a vector of pointers to ExprNodes that correspond to a scalar-valued OSExpressionTree in prefix f...
double calculateFunction(double *x, bool new_x)
Calculate the expression tree function value given the current variable values using the calculateFun...
double m_dTreeRootValue
A function to make a deep copy of an instance of this class.
bool IsEqual(ScalarExpressionTree *that)
A function to check for the equality of two objects.
std::map< int, int > * getVariableIndicesMap()
Retrieve a map of the indices of the variables that are in the expression tree.
~ScalarExpressionTree()
default destructor.
ScalarExpressionTree()
default constructor.
std::vector< ExprNode * > getPostfixFromExpressionTree()
Get a vector of pointers to ExprNodes that correspond to a scalar-valued OSExpressionTree in postfix ...
OSnLNode * m_treeRoot
m_treeRoot holds the root node (of OSnLNode type) of the expression tree.