|
virtual | ~Operation () |
|
virtual std::string | getName () const =0 |
| Get the name of this Operation. More...
|
|
virtual Id | getId () const =0 |
| Get this Operation's ID. More...
|
|
virtual int | getNumArguments () const =0 |
| Get the number of arguments this operation expects. More...
|
|
virtual Operation * | clone () const =0 |
| Create a clone of this Operation. More...
|
|
virtual double | evaluate (double *args, const std::map< std::string, double > &variables) const =0 |
| Perform the computation represented by this operation. More...
|
|
virtual ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const =0 |
| Return an ExpressionTreeNode which represents the analytic derivative of this Operation with respect to a variable. More...
|
|
virtual bool | isInfixOperator () const |
| Get whether this operation should be displayed with infix notation. More...
|
|
virtual bool | isSymmetric () const |
| Get whether this is a symmetric binary operation, such that exchanging its arguments does not affect the result. More...
|
|
virtual bool | operator!= (const Operation &op) const |
|
virtual bool | operator== (const Operation &op) const |
|
| Constant (double value) |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
double | getValue () const |
|
bool | operator!= (const Operation &op) const |
|
| Variable (const std::string &name) |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
bool | operator!= (const Operation &op) const |
|
| Custom (const std::string &name, CustomFunction *function) |
|
| Custom (const Custom &base, int derivIndex) |
|
| ~Custom () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
const std::vector< int > & | getDerivOrder () const |
|
bool | operator!= (const Operation &op) const |
|
| Add () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
bool | isInfixOperator () const |
|
bool | isSymmetric () const |
|
| Subtract () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
bool | isInfixOperator () const |
|
| Multiply () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
bool | isInfixOperator () const |
|
bool | isSymmetric () const |
|
| Divide () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
bool | isInfixOperator () const |
|
| Power () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
bool | isInfixOperator () const |
|
| Negate () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
| Sqrt () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
| Exp () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
| Log () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
| Sin () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
| Cos () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
| Sec () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
| Csc () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
| Tan () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
| Cot () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
| Asin () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
| Acos () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
| Atan () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
| Sinh () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
| Cosh () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
| Tanh () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
| Erf () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
| Erfc () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
| Step () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
| Delta () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
| Square () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
| Cube () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
| Reciprocal () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
| AddConstant (double value) |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
double | getValue () const |
|
bool | operator!= (const Operation &op) const |
|
| MultiplyConstant (double value) |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
double | getValue () const |
|
bool | operator!= (const Operation &op) const |
|
| PowerConstant (double value) |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
double | getValue () const |
|
bool | operator!= (const Operation &op) const |
|
bool | isInfixOperator () const |
|
| Min () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
| Max () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
| Abs () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
| Floor () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
| Ceil () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
| Select () |
|
std::string | getName () const |
|
Id | getId () const |
|
int | getNumArguments () const |
|
Operation * | clone () const |
|
double | evaluate (double *args, const std::map< std::string, double > &variables) const |
|
ExpressionTreeNode | differentiate (const std::vector< ExpressionTreeNode > &children, const std::vector< ExpressionTreeNode > &childDerivs, const std::string &variable) const |
|
An Operation represents a single step in the evaluation of an expression, such as a function, an operator, or a constant value.
Each Operation takes some number of values as arguments and produces a single value.
This is an abstract class with subclasses for specific operations.