Defines special (non-standard) operator overloads for runtime constants. More...
#include <ostream>
#include "viennamath/forwards.h"
#include "viennamath/compiletime/promote_traits.hpp"
#include "viennamath/runtime/binary_operators.hpp"
Go to the source code of this file.
Namespaces | |
namespace | viennamath |
The main ViennaMath namespace. All types and functions for the user reside here. | |
Functions | |
template<typename ScalarType , typename InterfaceType , typename OtherScalarType , typename RHS > | |
ct_binary_expr< rt_constant < typename promote_traits < ScalarType, op_plus < typename InterfaceType::numeric_type > , OtherScalarType > ::result_type, InterfaceType > , op_plus< typename InterfaceType::numeric_type > , RHS > | operator+ (rt_constant< ScalarType, InterfaceType > const &lhs, ct_binary_expr< rt_constant< OtherScalarType, InterfaceType >, op_plus< typename InterfaceType::numeric_type >, RHS > const &other) |
Special overload for c1 + (c2 + X) -> [c1 + c2] + X, where c1 and c2 are runtime constants and X is any expression: | |
template<typename ScalarType , typename InterfaceType , long value, typename RHS > | |
ct_binary_expr< rt_constant < typename promote_traits < ScalarType, op_plus < typename InterfaceType::numeric_type > , long >::result_type, InterfaceType >, op_plus < typename InterfaceType::numeric_type > , RHS > | operator+ (rt_constant< ScalarType, InterfaceType > const &lhs, ct_binary_expr< ct_constant< value >, op_plus< typename InterfaceType::numeric_type >, RHS > const &other) |
Special overload for c1 + (ct_c2 + X) -> [c1 + ct_c2] + X, where c1 is a runtime constant, ct_c2 is a compiletime constant, and X is any expression: | |
template<typename ScalarType , typename InterfaceType , typename OtherScalarType , typename RHS > | |
ct_binary_expr< rt_constant < typename promote_traits < ScalarType, op_plus < typename InterfaceType::numeric_type > , OtherScalarType > ::result_type, InterfaceType > , op_minus< typename InterfaceType::numeric_type > , RHS > | operator+ (rt_constant< ScalarType, InterfaceType > const &lhs, ct_binary_expr< rt_constant< OtherScalarType, InterfaceType >, op_minus< typename InterfaceType::numeric_type >, RHS > const &other) |
Special overload for c1 + (c2 - X) -> [c1 + c2] - X, where c1 and c2 are runtime constants and X is any expression: | |
template<typename ScalarType , typename InterfaceType , long value, typename RHS > | |
ct_binary_expr< rt_constant < typename promote_traits < ScalarType, op_plus < typename InterfaceType::numeric_type > , long >::result_type, InterfaceType >, op_minus < typename InterfaceType::numeric_type > , RHS > | operator+ (rt_constant< ScalarType, InterfaceType > const &lhs, ct_binary_expr< ct_constant< value >, op_minus< typename InterfaceType::numeric_type >, RHS > const &other) |
Special overload for c1 + (ct_c2 - X) -> [c1 + ct_c2] - X, where c1 is a runtime constant, ct_c2 is a compiletime constant, and X is any expression: | |
template<long value, typename RHS , typename ScalarType , typename T , typename InterfaceType > | |
ct_binary_expr< rt_constant < typename promote_traits < long, op_plus< T > , ScalarType >::result_type > , op_plus< T >, RHS > | operator+ (ct_binary_expr< ct_constant< value >, op_plus< T >, RHS > const &lhs, rt_constant< ScalarType, InterfaceType > const &other) |
Special overload for (ct_c1 + X) + c2 -> [ct_c1 + c2] + X, where ct_c1 is a compile constant, c2 is a runtime constant, and X is any expression: | |
template<long value, typename RHS , typename ScalarType , typename InterfaceType > | |
ct_binary_expr< rt_constant < default_numeric_type, InterfaceType >, op_minus < default_numeric_type >, RHS > | operator+ (ct_binary_expr< ct_constant< value >, op_minus< default_numeric_type >, RHS > const &lhs, rt_constant< ScalarType, InterfaceType > const &other) |
Special overload for (ct_c1 - X) + c2 -> [ct_c1 + c2] - X, where ct_c1 is a compile constant, c2 is a runtime constant, and X is any expression: | |
template<typename ScalarType , typename InterfaceType , typename OtherScalarType , typename RHS > | |
ct_binary_expr< rt_constant < typename promote_traits < ScalarType, op_minus < typename InterfaceType::numeric_type > , OtherScalarType > ::result_type, InterfaceType > , op_minus< typename InterfaceType::numeric_type > , RHS > | operator- (rt_constant< ScalarType, InterfaceType > const &lhs, ct_binary_expr< rt_constant< OtherScalarType, InterfaceType >, op_plus< typename InterfaceType::numeric_type >, RHS > const &other) |
Special overload for c1 - (c2 + X) -> [c1 - c2] - X, where c1 and c2 are runtime constants and X is any expression: | |
template<typename ScalarType , typename InterfaceType , long value, typename RHS > | |
ct_binary_expr< rt_constant < typename promote_traits < ScalarType, op_minus < typename InterfaceType::numeric_type > , long >::result_type, InterfaceType >, op_minus < typename InterfaceType::numeric_type > , RHS > | operator- (rt_constant< ScalarType, InterfaceType > const &lhs, ct_binary_expr< ct_constant< value >, op_plus< typename InterfaceType::numeric_type >, RHS > const &other) |
Special overload for c1 - (ct_c2 + X) -> [c1 - ct_c2] - X, where c1 is a runtime constant, ct_c2 is a compiletime constant, and X is any expression: | |
template<typename ScalarType , typename InterfaceType , typename OtherScalarType , typename RHS > | |
ct_binary_expr< rt_constant < typename promote_traits < ScalarType, op_minus < typename InterfaceType::numeric_type > , OtherScalarType > ::result_type, InterfaceType > , op_plus< typename InterfaceType::numeric_type > , RHS > | operator- (rt_constant< ScalarType, InterfaceType > const &lhs, ct_binary_expr< rt_constant< OtherScalarType, InterfaceType >, op_minus< typename InterfaceType::numeric_type >, RHS > const &other) |
Special overload for c1 - (c2 - X) -> [c1 - c2] + X, where c1 and c2 are runtime constants and X is any expression: | |
template<typename ScalarType , typename InterfaceType , long value, typename RHS > | |
ct_binary_expr< rt_constant < typename promote_traits < ScalarType, op_minus < typename InterfaceType::numeric_type > , long >::result_type, InterfaceType >, op_plus < typename InterfaceType::numeric_type > , RHS > | operator- (rt_constant< ScalarType, InterfaceType > const &lhs, ct_binary_expr< ct_constant< value >, op_minus< typename InterfaceType::numeric_type >, RHS > const &other) |
Special overload for c1 - (ct_c2 - X) -> [c1 - ct_c2] + X, where c1 is a runtime constant, ct_c2 is a compiletime constant, and X is any expression: |
Defines special (non-standard) operator overloads for runtime constants.