Provides routines for the simplification of expressions (remove trivial operations, collect constants, etc.).
More...
Data Structures |
struct | simplify_impl< ExpressionType > |
struct | simplify_impl< ct_binary_expr< LHS, OP, RHS > > |
struct | simplify_impl< ct_binary_expr< LHS, op_plus< NumericT >, ct_constant< 0 > > > |
struct | simplify_impl< ct_binary_expr< ct_constant< 0 >, op_plus< NumericT >, RHS > > |
struct | simplify_impl< ct_binary_expr< ct_constant< 0 >, op_plus< NumericT >, ct_constant< 0 > > > |
struct | simplify_impl< ct_binary_expr< LHS, op_minus< NumericT >, ct_constant< 0 > > > |
struct | simplify_impl< ct_binary_expr< LHS1, op_plus< NumericT >, ct_binary_expr< ct_constant< 0 >, op_minus< NumericT >, RHS2 > > > |
struct | simplify_impl< ct_binary_expr< LHS1, op_minus< NumericT >, ct_binary_expr< ct_constant< 0 >, op_minus< NumericT >, RHS2 > > > |
struct | simplify_impl< ct_binary_expr< ct_binary_expr< ct_constant< 0 >, op_minus< NumericT >, RHS1 >, op_plus< NumericT >, RHS2 > > |
struct | simplify_impl< ct_binary_expr< ct_binary_expr< ct_constant< 0 >, op_minus< NumericT >, RHS1 >, op_minus< NumericT >, RHS2 > > |
struct | simplify_impl< ct_binary_expr< ct_binary_expr< ct_constant< 0 >, op_minus< NumericT >, RHS1 >, op_plus< NumericT >, ct_binary_expr< ct_constant< 0 >, op_minus< NumericT >, RHS2 > > > |
struct | simplify_impl< ct_binary_expr< ct_binary_expr< ct_constant< 0 >, op_minus< NumericT >, RHS1 >, op_minus< NumericT >, ct_binary_expr< ct_constant< 0 >, op_minus< NumericT >, RHS2 > > > |
struct | simplify_impl< ct_binary_expr< LHS, op_mult< NumericT >, ct_constant< 0 > > > |
struct | simplify_impl< ct_binary_expr< ct_constant< 0 >, op_mult< NumericT >, RHS > > |
struct | simplify_impl< ct_binary_expr< ct_constant< 0 >, op_mult< NumericT >, ct_constant< 0 > > > |
struct | simplify_impl< ct_binary_expr< LHS, op_mult< NumericT >, ct_constant< 1 > > > |
struct | simplify_impl< ct_binary_expr< ct_constant< 1 >, op_mult< NumericT >, RHS > > |
struct | simplify_impl< ct_binary_expr< ct_constant< 1 >, op_mult< NumericT >, ct_constant< 1 > > > |
struct | simplify_impl< ct_binary_expr< ct_constant< 1 >, op_mult< NumericT >, ct_constant< 0 > > > |
struct | simplify_impl< ct_binary_expr< ct_constant< 0 >, op_mult< NumericT >, ct_constant< 1 > > > |
struct | simplify_impl< ct_binary_expr< ct_constant< 0 >, op_div< NumericT >, RHS > > |
struct | simplify_impl< ct_binary_expr< LHS, op_div< NumericT >, ct_constant< 0 > > > |
struct | simplify_impl< ct_binary_expr< ct_constant< 0 >, op_div< NumericT >, ct_constant< 0 > > > |
struct | simplify_impl< ct_binary_expr< LHS, op_div< NumericT >, ct_constant< 1 > > > |
struct | simplify_impl< ct_binary_expr< LHS, op_mult< NumericT >, ct_binary_expr< ct_constant< 1 >, op_div< NumericT >, RHS > > > |
struct | simplify_impl< ct_binary_expr< ct_binary_expr< ct_constant< 1 >, op_div< NumericT >, RHS1 >, op_mult< NumericT >, RHS2 > > |
struct | simplify_impl< ct_binary_expr< ct_binary_expr< ct_constant< 1 >, op_div< NumericT >, RHS1 >, op_mult< NumericT >, ct_binary_expr< ct_constant< 1 >, op_div< NumericT >, RHS2 > > > |
struct | simplify_impl< ct_binary_expr< ct_binary_expr< ct_constant< numerator_1 >, op_div< NumericT >, ct_constant< denominator_1 > >, op_plus< NumericT >, ct_binary_expr< ct_constant< numerator_2 >, op_div< NumericT >, ct_constant< denominator_2 > > > > |
struct | simplify_impl< ct_binary_expr< ct_constant< value_1 >, op_plus< NumericT >, ct_binary_expr< ct_constant< numerator_2 >, op_div< NumericT >, ct_constant< denominator_2 > > > > |
struct | simplify_impl< ct_binary_expr< ct_binary_expr< ct_constant< numerator_1 >, op_div< NumericT >, ct_constant< denominator_1 > >, op_plus< NumericT >, ct_constant< value_2 > > > |
struct | simplify_impl< ct_binary_expr< ct_binary_expr< ct_constant< numerator_1 >, op_div< NumericT >, ct_constant< denominator_1 > >, op_minus< NumericT >, ct_binary_expr< ct_constant< numerator_2 >, op_div< NumericT >, ct_constant< denominator_2 > > > > |
struct | simplify_impl< ct_binary_expr< ct_constant< value_1 >, op_minus< NumericT >, ct_binary_expr< ct_constant< numerator_2 >, op_div< NumericT >, ct_constant< denominator_2 > > > > |
struct | simplify_impl< ct_binary_expr< ct_binary_expr< ct_constant< numerator_1 >, op_div< NumericT >, ct_constant< denominator_1 > >, op_minus< NumericT >, ct_constant< value_2 > > > |
struct | simplify_impl< ct_binary_expr< ct_binary_expr< ct_constant< numerator_1 >, op_div< NumericT >, ct_constant< denominator_1 > >, op_minus< NumericT >, ct_constant< 0 > > > |
struct | simplify_impl< ct_binary_expr< ct_binary_expr< ct_constant< numerator_1 >, op_div< NumericT >, ct_constant< denominator_1 > >, op_mult< NumericT >, ct_binary_expr< ct_constant< numerator_2 >, op_div< NumericT >, ct_constant< denominator_2 > > > > |
struct | simplify_impl< ct_binary_expr< ct_constant< value_1 >, op_mult< NumericT >, ct_binary_expr< ct_constant< numerator_2 >, op_div< NumericT >, ct_constant< denominator_2 > > > > |
struct | simplify_impl< ct_binary_expr< ct_binary_expr< ct_constant< numerator_1 >, op_div< NumericT >, ct_constant< denominator_1 > >, op_mult< NumericT >, ct_constant< value_2 > > > |
struct | simplify_impl< ct_binary_expr< ct_binary_expr< ct_constant< numerator_1 >, op_div< NumericT >, ct_constant< denominator_1 > >, op_div< NumericT >, ct_binary_expr< ct_constant< numerator_2 >, op_div< NumericT >, ct_constant< denominator_2 > > > > |
struct | simplify_impl< ct_binary_expr< ct_constant< value_1 >, op_div< NumericT >, ct_binary_expr< ct_constant< numerator_2 >, op_div< NumericT >, ct_constant< denominator_2 > > > > |
struct | simplify_impl< ct_binary_expr< ct_binary_expr< ct_constant< numerator_1 >, op_div< NumericT >, ct_constant< denominator_1 > >, op_div< NumericT >, ct_constant< value_2 > > > |
struct | simplify_impl< ct_binary_expr< ct_constant< value_1 >, op_plus< NumericT >, ct_constant< value_2 > > > |
struct | simplify_impl< ct_binary_expr< ct_constant< value_1 >, op_plus< NumericT >, ct_constant< 0 > > > |
struct | simplify_impl< ct_binary_expr< ct_constant< 0 >, op_plus< NumericT >, ct_constant< value_2 > > > |
struct | simplify_impl< ct_binary_expr< ct_constant< value_1 >, op_minus< NumericT >, ct_constant< value_2 > > > |
struct | simplify_impl< ct_binary_expr< ct_constant< 1 >, op_minus< NumericT >, ct_constant< 0 > > > |
struct | simplify_impl< ct_binary_expr< ct_constant<-1 >, op_minus< NumericT >, ct_constant< 0 > > > |
struct | simplify_impl< ct_binary_expr< ct_constant< value_1 >, op_mult< NumericT >, ct_constant< value_2 > > > |
struct | simplify_impl< ct_binary_expr< ct_constant< 1 >, op_mult< NumericT >, ct_constant< value_2 > > > |
struct | simplify_impl< ct_binary_expr< ct_constant< value_1 >, op_mult< NumericT >, ct_constant< 1 > > > |
struct | simplify_impl< ct_binary_expr< ct_constant< value_1 >, op_mult< NumericT >, ct_constant< 0 > > > |
struct | simplify_impl< ct_binary_expr< ct_constant< 0 >, op_mult< NumericT >, ct_constant< value_2 > > > |
struct | simplify_impl< ct_binary_expr< ct_constant< value_1 >, op_div< NumericT >, ct_constant< value_2 > > > |
struct | simplify_impl< ct_binary_expr< ct_constant< 0 >, op_div< NumericT >, ct_constant< value_2 > > > |
struct | simplify_impl< ct_binary_expr< ct_constant< 0 >, op_div< NumericT >, ct_constant< 1 > > > |
struct | simplify_impl< ct_binary_expr< ct_constant< value_1 >, op_div< NumericT >, ct_constant< 1 > > > |
struct | simplify_impl< ct_binary_expr< ct_constant< value_1 >, op_div< NumericT >, ct_constant<-1 > > > |
struct | simplify< ExpressionType, optimization_possible > |
| Top-level metafunction for the simplification of expressions. Loops over simplification rules until no more simplifications can be applied. More...
|
struct | simplify< ct_binary_expr< LHS, OP, RHS >, true > |
| Specialization for a binary expression, for which optimizations can be applied. More...
|
struct | simplify< ct_binary_expr< LHS, OP, RHS >, false > |
| Specialization for a binary expression, for which no optimizations can be applied: Return the unmodified expression. More...
|
struct | simplify< ct_unary_expr< LHS, OP >, true > |
| Specialization for a unary expression, for which optimizations can be applied. More...
|
struct | simplify< ct_unary_expr< LHS, OP >, false > |
| Specialization for a unary expression, for which no optimizations can be applied: Return the unmodified expression. More...
|
struct | simplify< ct_constant< value >, true > |
| Specialization for a constant, for which optimizations can be applied. More...
|
struct | simplify< ct_constant< value >, false > |
| Specialization for a constant, for which no optimizations can be applied: Return the unmodified constant. More...
|
struct | simplify< ct_function_symbol< TAG >, true > |
| Specialization for a function symbol, for which optimizations can be applied. More...
|
struct | simplify< ct_function_symbol< TAG >, false > |
| Specialization for a function symbol, for which no optimizations can be applied: Return the unmodified constant. More...
|
struct | simplify< ct_variable< id >, true > |
| Specialization for a variable, for which optimizations can be applied. More...
|
struct | simplify< ct_variable< id >, false > |
| Specialization for a compiletime variable, for which no optimizations can be applied: Return the unmodified constant. More...
|
Namespaces |
namespace | viennamath |
| The main ViennaMath namespace. All types and functions for the user reside here.
|
namespace | viennamath::result_of |
| The namespace containing a set of metafunctions which can be used by the ViennaMath library user.
|
namespace | viennamath::result_of::detail |
| Implementation details for the metafunctions in ViennaMath. Not intended for direct use.
|
Functions |
template<typename ExpressionType > |
result_of::simplify
< ExpressionType >::type | simplify (ExpressionType const &e) |
| The generic interface function for compiletime manipulations.
|
template<typename InterfaceType > |
void | inplace_simplify (rt_expr< InterfaceType > &e) |
| Simplifies an expression. Directly manipulates the provided expression.
|
template<typename InterfaceType > |
void | inplace_simplify (rt_unary_expr< InterfaceType > &e) |
| Simplifies an expression. Directly manipulates the provided expression.
|
template<typename InterfaceType > |
void | inplace_simplify (rt_binary_expr< InterfaceType > &e) |
| Simplifies an expression. Directly manipulates the provided expression.
|
template<typename T > |
void | inplace_simplify (T &e) |
| Simplifies an expression. Directly manipulates the provided expression.
|
template<typename InterfaceType > |
rt_expr< InterfaceType > | simplify (rt_expr< InterfaceType > const &e) |
| Returns a new, simplified expression.
|
template<typename InterfaceType > |
rt_expr< InterfaceType > | simplify (rt_unary_expr< InterfaceType > const &e) |
| Returns a new, simplified expression.
|
template<typename InterfaceType > |
rt_expr< InterfaceType > | simplify (rt_binary_expr< InterfaceType > const &e) |
| Returns a new, simplified expression.
|
template<typename T > |
T | simplify (T const &e) |
| Returns a new, simplified expression.
|
Provides routines for the simplification of expressions (remove trivial operations, collect constants, etc.).