Namespaces | Data Structures

viennamath::result_of Namespace Reference

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

Detailed Description

The namespace containing a set of metafunctions which can be used by the ViennaMath library user.