Representation of an variable (a variable). If the supplied argument is some vector type, a traits system accesses the id-th component. More...
#include <variable.hpp>
Public Types | |
| typedef InterfaceType::numeric_type | numeric_type |
Public Member Functions | |
| rt_variable (id_type my_id) | |
| id_type | id () const |
| numeric_type | operator() (numeric_type value) const |
| Evaluation of the variable by a scalar value. Only valid if the variable ID is zero. | |
| template<typename ScalarType > | |
| rt_constant< ScalarType > | operator() (rt_constant< ScalarType > const &other) const |
| Evaluation of the variable by a ViennaMath runtime constant. Throws an exception if the variable index is larger than zero. | |
| template<long value> | |
| long | operator() (ct_constant< value > const &other) const |
| Evaluation of the variable by a ViennaMath compiletime constant. Throws an exception if the variable index is larger than zero. | |
| template<typename VectorType > | |
| numeric_type | operator() (VectorType const &v) const |
| Evaluation of the variable by a point (vector). Any vector type with .size() member function is supported (eventully, get_from_vector() needs to be overloaded). | |
| InterfaceType * | clone () const |
| Returns a copy of the variable. The returned pointer is not automatically deleted, thus the caller needs to ensure deletion. | |
| numeric_type | eval (std::vector< double > const &v) const |
| Interface function for evaluating the variable. Returns the 'id_'-th entry of the vector. | |
| numeric_type | eval (numeric_type val) const |
| Interface function for evaluating the variable. Throws an exception if the id_ member is larger than zero. | |
| std::string | deep_str () const |
| Returns a detailed string fully describing the variable. | |
| numeric_type | unwrap () const |
| Tries to evaluate the scalar value of the expression, but a variable cannot be converted to a constant and thus an error is thrown. | |
| InterfaceType * | substitute (const InterfaceType *e, const InterfaceType *repl) const |
| If 'e' is equal to this variable, the corresponding replacement in 'repl' is returned. Otherwise, a copy of the variable is returned. The object referred by the pointer is not automatically deleted, thus the caller needs to ensure deletion. | |
| InterfaceType * | substitute (std::vector< const InterfaceType * > const &e, std::vector< const InterfaceType * > const &repl) const |
| Checks whether one of the expressions in 'e' are equal to the variable. If yes, then the corresponding replacement in 'repl' is returned. Otherwise, a copy of the variable is returned. The object referred by the pointer is not automatically deleted, thus the caller needs to ensure deletion. | |
| bool | deep_equal (const InterfaceType *other) const |
| Returns true if the variable is strictly equal to the expression given by 'other' (both type and variable-ID match). | |
| bool | shallow_equal (const InterfaceType *other) const |
| Returns a short string specifying that this object is a variable. | |
| InterfaceType * | diff (const InterfaceType *diff_var) const |
| Differentiates the variable with respect to 'diff_var' and returns the resulting expression. The object referred by the pointer is not automatically deleted, thus the caller needs to ensure deletion. | |
Representation of an variable (a variable). If the supplied argument is some vector type, a traits system accesses the id-th component.
| InterfaceType | The expression runtime interface to inherit from. Usually rt_expression_interface, but extensions are possible. |
| typedef InterfaceType::numeric_type numeric_type |
| rt_variable | ( | id_type | my_id | ) | [inline, explicit] |
| InterfaceType* clone | ( | ) | const [inline] |
Returns a copy of the variable. The returned pointer is not automatically deleted, thus the caller needs to ensure deletion.
| bool deep_equal | ( | const InterfaceType * | other | ) | const [inline] |
Returns true if the variable is strictly equal to the expression given by 'other' (both type and variable-ID match).
| std::string deep_str | ( | ) | const [inline] |
Returns a detailed string fully describing the variable.
| InterfaceType* diff | ( | const InterfaceType * | diff_var | ) | const [inline] |
Differentiates the variable with respect to 'diff_var' and returns the resulting expression. The object referred by the pointer is not automatically deleted, thus the caller needs to ensure deletion.
| numeric_type eval | ( | numeric_type | val | ) | const [inline] |
Interface function for evaluating the variable. Throws an exception if the id_ member is larger than zero.
| numeric_type eval | ( | std::vector< double > const & | v | ) | const [inline] |
Interface function for evaluating the variable. Returns the 'id_'-th entry of the vector.
| id_type id | ( | ) | const [inline] |
| long operator() | ( | ct_constant< value > const & | other | ) | const [inline] |
Evaluation of the variable by a ViennaMath compiletime constant. Throws an exception if the variable index is larger than zero.
| numeric_type operator() | ( | numeric_type | value | ) | const [inline] |
Evaluation of the variable by a scalar value. Only valid if the variable ID is zero.
| numeric_type operator() | ( | VectorType const & | v | ) | const [inline] |
Evaluation of the variable by a point (vector). Any vector type with .size() member function is supported (eventully, get_from_vector() needs to be overloaded).
| rt_constant<ScalarType> operator() | ( | rt_constant< ScalarType > const & | other | ) | const [inline] |
Evaluation of the variable by a ViennaMath runtime constant. Throws an exception if the variable index is larger than zero.
| bool shallow_equal | ( | const InterfaceType * | other | ) | const [inline] |
Returns a short string specifying that this object is a variable.
| InterfaceType* substitute | ( | const InterfaceType * | e, | |
| const InterfaceType * | repl | |||
| ) | const [inline] |
If 'e' is equal to this variable, the corresponding replacement in 'repl' is returned. Otherwise, a copy of the variable is returned. The object referred by the pointer is not automatically deleted, thus the caller needs to ensure deletion.
| InterfaceType* substitute | ( | std::vector< const InterfaceType * > const & | e, | |
| std::vector< const InterfaceType * > const & | repl | |||
| ) | const [inline] |
Checks whether one of the expressions in 'e' are equal to the variable. If yes, then the corresponding replacement in 'repl' is returned. Otherwise, a copy of the variable is returned. The object referred by the pointer is not automatically deleted, thus the caller needs to ensure deletion.
| numeric_type unwrap | ( | ) | const [inline] |
Tries to evaluate the scalar value of the expression, but a variable cannot be converted to a constant and thus an error is thrown.
1.7.1