| 
| 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.