Represents an abstract class which is the base of concrete symbolic-expression classes.
#include <drake/common/symbolic/expression/expression_cell.h>
Public Member Functions | |
| virtual | ~ExpressionCell () |
| std::atomic< int > & | use_count () const |
| Returns the intrusive use count (ala boost::intrusive_ptr). | |
| ExpressionKind | get_kind () const |
| Returns expression kind. | |
| virtual void | HashAppendDetail (DelegatingHasher *) const =0 |
| Sends all hash-relevant bytes for this ExpressionCell type into the given hasher, per the hash_append generic hashing concept – except for get_kind(), because Expression already sends that. | |
| virtual Variables | GetVariables () const =0 |
| Collects variables in expression. | |
| virtual bool | EqualTo (const ExpressionCell &c) const =0 |
| Checks structural equality. | |
| virtual bool | Less (const ExpressionCell &c) const =0 |
| Provides lexicographical ordering between expressions. | |
| bool | is_polynomial () const |
| Checks if this symbolic expression is convertible to Polynomial. | |
| bool | is_expanded () const |
| Checks if this symbolic expression is already expanded. | |
| void | set_expanded () |
| Sets this symbolic expression as already expanded. | |
| virtual double | Evaluate (const Environment &env) const =0 |
| Evaluates under a given environment (by default, an empty environment). | |
| virtual Expression | Expand () const =0 |
| Expands out products and positive integer powers in expression. | |
| virtual Expression | EvaluatePartial (const Environment &env) const =0 |
Returns an Expression obtained by replacing all occurrences of the variables in env in the current expression cell with the corresponding values in env. | |
| virtual Expression | Substitute (const Substitution &s) const =0 |
Returns an Expression obtained by replacing all occurrences of the variables in s in the current expression cell with the corresponding expressions in s. | |
| virtual Expression | Differentiate (const Variable &x) const =0 |
Differentiates this symbolic expression with respect to the variable var. | |
| virtual std::ostream & | Display (std::ostream &os) const =0 |
Outputs string representation of expression into output stream os. | |
Does not allow copy, move, or assignment | |
| ExpressionCell (const ExpressionCell &)=delete | |
| ExpressionCell & | operator= (const ExpressionCell &)=delete |
| ExpressionCell (ExpressionCell &&)=delete | |
| ExpressionCell & | operator= (ExpressionCell &&)=delete |
Protected Member Functions | |
| ExpressionCell (ExpressionKind k, bool is_poly, bool is_expanded) | |
Constructs ExpressionCell of kind k with is_poly and is_expanded, with a use_count of zero. | |
|
delete |
|
delete |
|
virtual |
|
protected |
Constructs ExpressionCell of kind k with is_poly and is_expanded, with a use_count of zero.
|
nodiscardpure virtual |
Differentiates this symbolic expression with respect to the variable var.
| std::exception | if it is not differentiable. |
Implemented in ExpressionAbs, ExpressionAcos, ExpressionAdd, ExpressionAsin, ExpressionAtan2, ExpressionAtan, ExpressionCeiling, ExpressionCos, ExpressionCosh, ExpressionDiv, ExpressionExp, ExpressionFloor, ExpressionIfThenElse, ExpressionLog, ExpressionMax, ExpressionMin, ExpressionMul, ExpressionNaN, ExpressionPow, ExpressionSin, ExpressionSinh, ExpressionSqrt, ExpressionTan, ExpressionTanh, ExpressionUninterpretedFunction, and ExpressionVar.
|
pure virtual |
Outputs string representation of expression into output stream os.
Implemented in ExpressionAbs, ExpressionAcos, ExpressionAdd, ExpressionAsin, ExpressionAtan2, ExpressionAtan, ExpressionCeiling, ExpressionCos, ExpressionCosh, ExpressionDiv, ExpressionExp, ExpressionFloor, ExpressionIfThenElse, ExpressionLog, ExpressionMax, ExpressionMin, ExpressionMul, ExpressionNaN, ExpressionPow, ExpressionSin, ExpressionSinh, ExpressionSqrt, ExpressionTan, ExpressionTanh, ExpressionUninterpretedFunction, and ExpressionVar.
|
nodiscardpure virtual |
Checks structural equality.
Implemented in BinaryExpressionCell, ExpressionAdd, ExpressionIfThenElse, ExpressionMul, ExpressionNaN, ExpressionUninterpretedFunction, ExpressionVar, and UnaryExpressionCell.
|
nodiscardpure virtual |
Evaluates under a given environment (by default, an empty environment).
| std::exception | if NaN is detected during evaluation. |
Implemented in BinaryExpressionCell, ExpressionAdd, ExpressionIfThenElse, ExpressionMul, ExpressionNaN, ExpressionUninterpretedFunction, ExpressionVar, and UnaryExpressionCell.
|
nodiscardpure virtual |
Returns an Expression obtained by replacing all occurrences of the variables in env in the current expression cell with the corresponding values in env.
| std::exception | if NaN is detected during substitution. |
Implemented in ExpressionAbs, ExpressionAcos, ExpressionAdd, ExpressionAsin, ExpressionAtan2, ExpressionAtan, ExpressionCeiling, ExpressionCos, ExpressionCosh, ExpressionDiv, ExpressionExp, ExpressionFloor, ExpressionIfThenElse, ExpressionLog, ExpressionMax, ExpressionMin, ExpressionMul, ExpressionNaN, ExpressionPow, ExpressionSin, ExpressionSinh, ExpressionSqrt, ExpressionTan, ExpressionTanh, ExpressionUninterpretedFunction, and ExpressionVar.
|
nodiscardpure virtual |
Expands out products and positive integer powers in expression.
| std::exception | if NaN is detected during expansion. |
Implemented in ExpressionAbs, ExpressionAcos, ExpressionAdd, ExpressionAsin, ExpressionAtan2, ExpressionAtan, ExpressionCeiling, ExpressionCos, ExpressionCosh, ExpressionDiv, ExpressionExp, ExpressionFloor, ExpressionIfThenElse, ExpressionLog, ExpressionMax, ExpressionMin, ExpressionMul, ExpressionNaN, ExpressionPow, ExpressionSin, ExpressionSinh, ExpressionSqrt, ExpressionTan, ExpressionTanh, ExpressionUninterpretedFunction, and ExpressionVar.
|
nodiscard |
Returns expression kind.
|
nodiscardpure virtual |
Collects variables in expression.
Implemented in BinaryExpressionCell, ExpressionAdd, ExpressionIfThenElse, ExpressionMul, ExpressionNaN, ExpressionUninterpretedFunction, ExpressionVar, and UnaryExpressionCell.
|
pure virtual |
Sends all hash-relevant bytes for this ExpressionCell type into the given hasher, per the hash_append generic hashing concept – except for get_kind(), because Expression already sends that.
Implemented in BinaryExpressionCell, ExpressionAdd, ExpressionIfThenElse, ExpressionMul, ExpressionNaN, ExpressionUninterpretedFunction, ExpressionVar, and UnaryExpressionCell.
|
nodiscard |
Checks if this symbolic expression is already expanded.
|
nodiscard |
Checks if this symbolic expression is convertible to Polynomial.
|
nodiscardpure virtual |
Provides lexicographical ordering between expressions.
Implemented in BinaryExpressionCell, ExpressionAdd, ExpressionIfThenElse, ExpressionMul, ExpressionNaN, ExpressionUninterpretedFunction, ExpressionVar, and UnaryExpressionCell.
|
delete |
|
delete |
| void set_expanded | ( | ) |
Sets this symbolic expression as already expanded.
|
nodiscardpure virtual |
Returns an Expression obtained by replacing all occurrences of the variables in s in the current expression cell with the corresponding expressions in s.
| std::exception | if NaN is detected during substitution. |
Implemented in ExpressionAbs, ExpressionAcos, ExpressionAdd, ExpressionAsin, ExpressionAtan2, ExpressionAtan, ExpressionCeiling, ExpressionCos, ExpressionCosh, ExpressionDiv, ExpressionExp, ExpressionFloor, ExpressionIfThenElse, ExpressionLog, ExpressionMax, ExpressionMin, ExpressionMul, ExpressionNaN, ExpressionPow, ExpressionSin, ExpressionSinh, ExpressionSqrt, ExpressionTan, ExpressionTanh, ExpressionUninterpretedFunction, and ExpressionVar.
| std::atomic< int > & use_count | ( | ) | const |
Returns the intrusive use count (ala boost::intrusive_ptr).