Provides the user interface for the runtime or compiletime evaluation of expressions. More...
#include "viennamath/forwards.h"
#include "viennamath/compiletime/ct_variable.hpp"
#include "viennamath/manipulation/simplify.hpp"
Go to the source code of this file.
Data Structures | |
struct | is_ct_evaluable< E > |
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< VectorType > |
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< ExpressionType, VectorType, ct_evaluable > |
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... | |
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. | |
Functions | |
template<typename ExpressionType , typename VectorType > | |
enable_if < result_of::is_ct_evaluable < ExpressionType >::value &&result_of::is_ct_vector < VectorType >::value, default_numeric_type >::type | eval (ExpressionType const &e, VectorType const &v) |
Main user function for the evaluation of a compiletime expression at compiletime. | |
template<typename VectorType > | |
default_numeric_type | eval (default_numeric_type value, VectorType const &v) |
Evaluation of a numeric constant at a vector: Return the constant. | |
template<typename VectorType > | |
long | eval (long value, VectorType const &v) |
Evaluation of a long integer at a vector: Return the integer. | |
template<typename T , typename InterfaceType , typename VectorType > | |
InterfaceType::numeric_type | eval (rt_constant< T, InterfaceType > c, VectorType const &v) |
Evaluation of a runtime constant at a vector: Return the runtime constant. | |
template<typename InterfaceType , typename VectorType > | |
InterfaceType::numeric_type | eval (rt_expr< InterfaceType > e, VectorType const &v) |
Evaluation of a ViennaMath expression wrapper. | |
template<typename InterfaceType , typename VectorType > | |
InterfaceType::numeric_type | eval (rt_binary_expr< InterfaceType > e, VectorType const &v) |
Evaluation of a ViennaMath binary expression. | |
template<typename InterfaceType , typename VectorType > | |
InterfaceType::numeric_type | eval (rt_unary_expr< InterfaceType > e, VectorType const &v) |
Evaluation of a ViennaMath unary expression. | |
template<typename InterfaceType , typename VectorType > | |
InterfaceType::numeric_type | eval (rt_variable< InterfaceType > e, VectorType const &v) |
Evaluation of a ViennaMath variable. | |
template<typename LHS , typename OP , typename RHS , typename VectorType > | |
enable_if <!result_of::is_ct_evaluable < ct_binary_expr< LHS, OP, RHS > >::value||!result_of::is_ct_vector < VectorType >::value, default_numeric_type >::type | eval (ct_binary_expr< LHS, OP, RHS > ex, VectorType const &v) |
Evaluation of a ViennaMath compiletime binary expression using a runtime vector. | |
template<typename LHS , typename OP , typename VectorType > | |
enable_if <!result_of::is_ct_evaluable < ct_unary_expr< LHS, OP > >::value||!result_of::is_ct_vector < VectorType >::value, default_numeric_type >::type | eval (ct_unary_expr< LHS, OP > ex, VectorType const &v) |
Evaluation of a ViennaMath compiletime unary expression using a runtime vector. | |
template<long value, typename VectorType > | |
default_numeric_type | eval (ct_constant< value > c, VectorType const &v) |
Evaluation of a ViennaMath compiletime constant using a runtime vector. | |
template<id_type id, typename VectorType > | |
default_numeric_type | eval (ct_variable< id > c, VectorType const &v) |
Evaluation of a ViennaMath compiletime variable using a runtime vector. | |
template<id_type id, typename T0 > | |
default_numeric_type | eval (ct_variable< id > c, ct_vector_1< T0 > const &v) |
Evaluation of a ViennaMath compiletime variable using a compiletime vector with one entry. | |
template<id_type id, typename T0 , typename T1 > | |
default_numeric_type | eval (ct_variable< id > c, ct_vector_2< T0, T1 > const &v) |
Evaluation of a ViennaMath compiletime variable using a compiletime vector with two entries. | |
template<id_type id, typename T0 , typename T1 , typename T2 > | |
default_numeric_type | eval (ct_variable< id > c, ct_vector_3< T0, T1, T2 > const &v) |
Evaluation of a ViennaMath compiletime variable using a compiletime vector with three entries. |
Provides the user interface for the runtime or compiletime evaluation of expressions.