Data Structures | Namespaces | Functions

/export/development/ViennaMath/viennamath/manipulation/eval.hpp File Reference

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.

Detailed Description

Provides the user interface for the runtime or compiletime evaluation of expressions.