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