The namespace containing a set of metafunctions which can be used by the ViennaMath library user. More...
Namespaces | |
namespace | detail |
Implementation details for the metafunctions in ViennaMath. Not intended for direct use. | |
Data Structures | |
struct | add< LHS, RHS, true, true > |
Metafunction for adding two compiletime expressions. More... | |
struct | subtract< LHS, RHS, true, true > |
Metafunction for subtracting two compiletime expressions. More... | |
struct | mult< LHS, RHS, true, true > |
Metafunction for multiplying two compiletime expressions. More... | |
struct | div< LHS, RHS, true, true > |
Metafunction for dividing two compiletime expressions. More... | |
struct | is_viennamath |
A metafunction with value 'true' if the provided argument is a ViennaMath expression type. Otherwise, false is returned. More... | |
struct | is_viennamath< ct_constant< val > > |
Specialization of the metafunction for a ViennaMath compiletime constant. More... | |
struct | is_viennamath< ct_variable< id > > |
Specialization of the metafunction for a ViennaMath compiletime variable. More... | |
struct | is_viennamath< ct_function_symbol< TAG > > |
Specialization of the metafunction for a ViennaMath compiletime function symbol. More... | |
struct | is_viennamath< ct_binary_expr< LHS, OP, RHS > > |
Specialization of the metafunction for a ViennaMath compiletime binary expression. More... | |
struct | is_viennamath< ct_unary_expr< LHS, OP > > |
Specialization of the metafunction for a ViennaMath compiletime unary expression. More... | |
struct | is_viennamath< rt_constant< NumericType, InterfaceType > > |
Specialization of the metafunction for a ViennaMath runtime constant. More... | |
struct | is_viennamath< rt_variable< InterfaceType > > |
Specialization of the metafunction for a ViennaMath runtime variable. More... | |
struct | is_viennamath< rt_function_symbol< InterfaceType > > |
Specialization of the metafunction for a ViennaMath runtime function symbol. More... | |
struct | is_viennamath< rt_unary_expr< InterfaceType > > |
Specialization of the metafunction for a ViennaMath runtime unary expression. More... | |
struct | is_viennamath< rt_binary_expr< InterfaceType > > |
Specialization of the metafunction for a ViennaMath runtime binary expression. More... | |
struct | is_viennamath< rt_expr< InterfaceType > > |
Specialization of the metafunction for a ViennaMath runtime expression. More... | |
struct | is_compiletime |
A metafunction returning a value 'true' if the provided argument is a ViennaMath compiletime expression type. Otherwise, false is returned. More... | |
struct | is_compiletime< ct_constant< val > > |
Specialization of the metafunction for a ViennaMath compiletime constant. More... | |
struct | is_compiletime< ct_variable< id > > |
Specialization of the metafunction for a ViennaMath compiletime variable. More... | |
struct | is_compiletime< ct_function_symbol< TAG > > |
Specialization of the metafunction for a ViennaMath compiletime function symbol. More... | |
struct | is_compiletime< ct_binary_expr< LHS, OP, RHS > > |
Specialization of the metafunction for a ViennaMath compiletime binary expression. More... | |
struct | is_compiletime< ct_unary_expr< LHS, OP > > |
Specialization of the metafunction for a ViennaMath compiletime unary expression. More... | |
struct | interface |
A metafunction deducing the ViennaMath runtime expression interface (base class) from two types. The first argument has priority. More... | |
struct | interface< rt_constant< T, U >, RHS > |
Specialization of the runtime expression interface deduction for a ViennaMath runtime constant. More... | |
struct | interface< rt_variable< T >, RHS > |
Specialization of the runtime expression interface deduction for a ViennaMath runtime variable. More... | |
struct | interface< default_numeric_type, rt_variable< T > > |
Specialization of the runtime expression interface deduction for a ViennaMath runtime variable. More... | |
struct | interface< rt_binary_expr< T >, RHS > |
Specialization of the runtime expression interface deduction for a ViennaMath runtime binary expression. More... | |
struct | interface< default_numeric_type, rt_binary_expr< T > > |
Specialization of the runtime expression interface deduction for a ViennaMath runtime binary expression. More... | |
struct | interface< rt_unary_expr< T >, RHS > |
Specialization of the runtime expression interface deduction for a ViennaMath runtime unary expression. More... | |
struct | interface< rt_expr< T >, RHS > |
Specialization of the runtime expression interface deduction for the ViennaMath runtime expression wrapper. More... | |
struct | interface< double, rt_expr< T > > |
Specialization of the runtime expression interface deduction for the ViennaMath runtime expression wrapper. More... | |
struct | gcd |
Helper metafunction for computing the greatest common divisor of two numbers. More... | |
struct | gcd< a, 0 > |
Specialization for the computation of the greatest common divisor of a and 0, which is a. More... | |
struct | gcd< 0, 0 > |
Specialization forcing a compile time error, since the greatest common divisor of 0 and 0 is not defined. More... | |
struct | coefficient |
User metafunction for extracting the coefficient of a variable or sub-expression from an expression. More... | |
struct | diff |
Returns the type of the expression after differentiation of 'ARG' with respect to the variable 'VAR'. More... | |
struct | diff< ct_binary_expr< LHS, op_plus< default_numeric_type >, RHS >, ct_variable< id > > |
Specialization implementing the rule (u + v)' = u' + v'. More... | |
struct | diff< ct_binary_expr< LHS, op_minus< default_numeric_type >, RHS >, ct_variable< id > > |
Specialization implementing the rule (u - v)' = u' - v'. More... | |
struct | diff< ct_binary_expr< LHS, op_mult< default_numeric_type >, RHS >, ct_variable< id > > |
Specialization implementing the rule (u * v)' = u'*v + u*v'. More... | |
struct | diff< ct_binary_expr< LHS, op_div< default_numeric_type >, RHS >, ct_variable< id > > |
Specialization implementing the rule (u/v)' = (u'*v - u*v') / v^2. More... | |
struct | diff< ct_variable< other_id >, ct_variable< id > > |
Specialization of (d x_i) / (d x_j) for i != j. More... | |
struct | diff< ct_variable< id >, ct_variable< id > > |
Specialization for (d x) / (d x) = 1. More... | |
struct | diff< ct_constant< value >, ct_variable< id > > |
Specialization: The derivative of a constant is zero. More... | |
struct | drop_dependent_terms |
Interface metafunction for removing dependent terms from an expression. More... | |
struct | is_ct_evaluable |
Returns nonzero if supplied expression can be evaluated at compile time. More... | |
struct | is_ct_evaluable< ct_binary_expr< LHS, OP, RHS > > |
Specialization: Determines whether a binary expression is compiletime evaluable by recursively acting on the operands. More... | |
struct | is_ct_evaluable< ct_constant< val > > |
Specialization: A constant is compiletime evaluable. More... | |
struct | is_ct_evaluable< ct_variable< id > > |
Specialization: A variable is compiletime evaluable. More... | |
struct | is_ct_vector |
Returns nonzero if the supplied vector type is a compile-time vector. More... | |
struct | is_ct_vector< ct_vector_1< T0 > > |
Specialization of the helper function for the determination of whether a vector is a compiletime type. More... | |
struct | is_ct_vector< ct_vector_2< T0, T1 > > |
Specialization of the helper function for the determination of whether a vector is a compiletime type. More... | |
struct | is_ct_vector< ct_vector_3< T0, T1, T2 > > |
Specialization of the helper function for the determination of whether a vector is a compiletime type. More... | |
struct | eval |
Main metafunction for compiletime evaluation. More... | |
struct | eval< ct_binary_expr< LHS, OP, RHS >, VectorType, true > |
Specialization for the evaluation of a binary expression at compile time. More... | |
struct | eval< ct_constant< value >, VectorType, true > |
Specialization for the evaluation of a constant at compile time. More... | |
struct | eval< ct_variable< id >, VectorType, true > |
Specialization for the evaluation of a variable at compile time. More... | |
struct | eval< ct_variable< 0 >, ct_constant< value >, true > |
Specialization for the evaluation of a variable at compile time. More... | |
struct | expand |
The main metafunction for expanding a compiletime expression. More... | |
struct | expand< ct_binary_expr< LHS, op_plus< NumericT >, RHS > > |
Specialization for a binary expression (addition): Expand both addends. More... | |
struct | expand< ct_binary_expr< LHS, op_minus< NumericT >, RHS > > |
Specialization for a binary expression (subtraction): Expand both operands. More... | |
struct | expand< ct_binary_expr< LHS, op_mult< NumericT >, RHS > > |
Specialization for a binary expression (product): Redirect to helper metafunction. More... | |
struct | expand< ct_binary_expr< LHS, op_div< NumericT >, RHS > > |
Specialization for a binary expression (division): Expand numerator and denominator of fractional expressions separately. More... | |
struct | expand< ct_unary_expr< LHS, OP > > |
A unary expression is not expanded further, since the operator is typically nonlinear. More... | |
struct | expand< ct_function_symbol< TAG > > |
A function symbol cannot be further expanded, thus it is returned unmodified. More... | |
struct | expand< ct_constant< value > > |
A constant cannot be further expanded, thus it is returned unmodified. More... | |
struct | expand< ct_variable< id > > |
A variable cannot be further expanded, thus it is returned unmodified. More... | |
struct | polynomial_degree |
Returns the power of ct_variable<id> inside an expression. More... | |
struct | polynomial_degree< VariableType, VariableType > |
Specialization for the power of a single variable, which is known to be 1. More... | |
struct | polynomial_degree< VariableType, ct_binary_expr< LHS, op_plus< NumericT >, RHS > > |
Specialization for forcing a compile time error if a sum of expressions is encountered. More... | |
struct | polynomial_degree< VariableType, ct_binary_expr< LHS, op_minus< NumericT >, RHS > > |
Specialization for forcing a compile time error if a difference of expressions is encountered. More... | |
struct | polynomial_degree< VariableType, ct_binary_expr< LHS, op_mult< NumericT >, RHS > > |
Specialization for a product: The polynomial degree is given by the sum of the polynomial degree of each factor. More... | |
struct | polynomial_degree< VariableType, ct_binary_expr< LHS, op_div< NumericT >, RHS > > |
Specialization for a division: The polynomial degree is given by the difference of the polynomial degree of the numerator and the denominator. More... | |
struct | pow |
Metafunction returning the power of an expression. Tries to balance the generated expression tree. More... | |
struct | pow< T, 0 > |
Specialization for the zeroth power of an expression. More... | |
struct | pow< T, 1 > |
Specialization for the first power of an expression. More... | |
struct | pow< T, 2 > |
Specialization for the square of an expression. More... | |
struct | integrate_monomial |
Metafunction for the integration of a monomial consisting of a single variable. More... | |
struct | integrate_monomial< VariableType, 0 > |
Specialization for the integration of a constant: Return the variable directly. More... | |
struct | integrate |
The main metafunction for the integration of a compiletime expression. More... | |
struct | integrate< LowerBound, UpperBound, ct_binary_expr< LHS, OP, RHS >, VariableType > |
Specialization for the integration of a compiletime binary expression. More... | |
struct | integrate< LowerBound, UpperBound, ct_unary_expr< LHS, OP >, VariableType > |
Specialization for the integration of a compiletime unary expression. Not supported at the moment, thus a compile time error is forced. More... | |
struct | integrate< LowerBound, UpperBound, ct_constant< value >, VariableType > |
Specialization for the integration of a compile time constant. Forwards the integration to the worker metafunction integrate_impl. More... | |
struct | integrate< LowerBound, UpperBound, ct_function_symbol< TAG >, VariableType > |
Specialization for the integration of a compiletime function symbol. This is a user error, since a function symbol should have been replaced already by another expression. Thus, a compile time error is forced. More... | |
struct | integrate< LowerBound, UpperBound, ct_variable< id >, VariableType > |
Specialization for the integration of a compile time variable. Forwards the integration to the worker metafunction integrate_impl. More... | |
struct | simplify |
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... | |
struct | substitute |
Default case for the compiletime substitution metafunction: Do not define any return type. This provides SFINAE for the interface function. More... | |
struct | substitute< SearchType, ReplacementType, ct_binary_expr< LHS, OP, RHS > > |
For a binary expression, the substitution is performed for both operands. More... | |
struct | substitute< SearchType, ReplacementType, ct_unary_expr< LHS, OP > > |
For a unary expression, the substitution is performed for the operand. More... | |
struct | substitute< SearchType, ReplacementType, ct_constant< value > > |
By default, a compiletime constant is left unmodified (no match). More... | |
struct | substitute< SearchType, ReplacementType, ct_function_symbol< TAG > > |
By default, a compiletime function symbol is left unmodified (no match). More... | |
struct | substitute< SearchType, ReplacementType, ct_variable< id > > |
By default, a compiletime variable is left unmodified (no match). More... | |
struct | substitute< ct_binary_expr< LHS, OP, RHS >, ReplacementType, ct_binary_expr< LHS, OP, RHS > > |
If there is a match for the binary expression, the replacement is returned. More... | |
struct | substitute< ct_unary_expr< LHS, OP >, ReplacementType, ct_unary_expr< LHS, OP > > |
If there is a match for the unary expression, the replacement is returned. More... | |
struct | substitute< ct_constant< value >, ReplacementType, ct_constant< value > > |
If there is a match for the compiletime constant, the replacement is returned. More... | |
struct | substitute< ct_function_symbol< TAG >, ReplacementType, ct_function_symbol< TAG > > |
If there is a match for the compiletime function symbol, the replacement is returned. More... | |
struct | substitute< ct_variable< id >, ReplacementType, ct_variable< id > > |
If there is a match for the compiletime variable, the replacement is returned. More... | |
struct | add |
Returns the type of adding two expressions together. Default case: both types are runtime expressions. More... | |
struct | subtract |
Returns the type when subtracting two expressions. Default case: both types are runtime expressions. More... | |
struct | mult |
Returns the type when multiplying two expressions. Default case: both types are runtime expressions. More... | |
struct | div |
Returns the type when dividing two expressions. Default case: both types are runtime expressions. More... |
The namespace containing a set of metafunctions which can be used by the ViennaMath library user.