vec_expr_v2.h File Reference

Go to the source code of this file.

## Classes

struct | is_vec< T >
struct | is_vec< vec< T, M > >
struct | is_vec_expr_v2_arg< T >
struct | is_vec_expr_v2_arg< vec< T, M > >
struct | vec_expr_v2_unary< Op, Expr >
struct | vec_expr_v2_unary< Op, Expr >::const_iterator
struct | is_vec_expr_v2_arg< vec_expr_v2_unary< Op, Expr > >
struct | vec_expr_v2_binary< Op, Expr1, Expr2 >
struct | vec_expr_v2_binary< Op, Expr1, Expr2 >::const_iterator
struct | is_vec_expr_v2_arg< vec_expr_v2_binary< Op, Expr1, Expr2 > >
struct | vec_expr_v2_binary_traits< Op, Expr1, Expr2, Sfinae >
struct | vec_expr_v2_binary_traits< Op, Expr1, Expr2, typename std::enable_if< details::is_vec_expr_v2_arg< Expr1 >::value &&details::is_vec_expr_v2_arg< Expr2 >::value >::type >
struct | vec_expr_v2_binary_traits< Op, Expr1, Expr2, typename std::enable_if< details::is_rheolef_arithmetic< Expr1 >::value &&details::is_vec_expr_v2_arg< Expr2 >::value >::type >
struct | vec_expr_v2_binary_traits< Op, Expr1, Expr2, typename std::enable_if< details::is_vec_expr_v2_arg< Expr1 >::value &&details::is_rheolef_arithmetic< Expr2 >::value >::type >
class | std

## Namespaces

| rheolef
| This file is part of Rheolef.
| rheolef::details

## Macros

#define | _RHEOLEF_vec_expr_v2_unary_operator(OP, FUNCTOR)
#define | _RHEOLEF_vec_expr_v2_binary_operator(OP, FUNCTOR)
#define | _RHEOLEF_vec_expr_v2_op_assign(OP, FUNCTOR)
#define | _RHEOLEF_vec_expr_v2_op_assign_constant(OP, FUNCTOR)

## Typedefs

typedef Expr1::memory_type | M

## Functions

| _RHEOLEF_vec_expr_v2_unary_operator (+, details::generic_unary_plus<>) _RHEOLEF_vec_expr_v2_unary_operator(-
| _RHEOLEF_vec_expr_v2_binary_operator (+, details::generic_plus<>) _RHEOLEF_vec_expr_v2_binary_operator(-
template<class Expr1 , class Expr2 >
details::generic_minus std::enable_if<(details::is_rheolef_arithmetic< Expr1 >::value &&details::is_vec_expr_v2_arg< Expr2 >::value)||(details::is_vec_expr_v2_arg< Expr1 >::value &&details::is_rheolef_arithmetic< Expr2 >::value), typename details::vec_expr_v2_binary_traits< details::generic_multiplies<>, Expr1, Expr2 >::type >::type | operator* (const Expr1 &expr1, const Expr2 &expr2)
template<class Expr1 , class Expr2 >
std::enable_if<(details::is_vec_expr_v2_arg< Expr1 >::value &&details::is_rheolef_arithmetic< Expr2 >::value), typename details::vec_expr_v2_binary_traits< details::generic_divides<>, Expr1, Expr2 >::type >::type | operator/ (const Expr1 &expr1, const Expr2 &expr2)
| _RHEOLEF_vec_expr_v2_op_assign (+=, details::plus_assign) _RHEOLEF_vec_expr_v2_op_assign(-
| _RHEOLEF_vec_expr_v2_op_assign_constant (+=, details::plus_assign) _RHEOLEF_vec_expr_v2_op_assign_constant(-
details::minus_assign _RHEOLEF_vec_expr_v2_op_assign_constant details::multiplies_assign | _RHEOLEF_vec_expr_v2_op_assign_constant (/=, details::divides_assign) template< class Expr1
| dot(x,y): see the `expression` page for the full documentation More...
rheolef::std enable_if ::type dot const Expr1 expr1, const Expr2 expr2 | dot (const Expr1 &expr1, const Expr2 &expr2)
| dot(x,y): see the `expression` page for the full documentation More...
return | dis_inner_product (expr1.begin(), expr2.begin(), expr1.size(), expr1.ownership().comm(), M())

## Variables

rheolef::details::is_vec | dot

## Macro Definition Documentation

## _RHEOLEF_vec_expr_v2_unary_operator

#define _RHEOLEF_vec_expr_v2_unary_operator | ( |  | OP,
|  |  | FUNCTOR
| ) |  |

Value:
template <class Expr> \
inline \
typename \
std::enable_if< \
details::is_vec_expr_v2_arg<Expr>::value, \
details::vec_expr_v2_unary< \
FUNCTOR, \
Expr \
> \
>::type \
operator OP (const Expr& expr) \
{ \
typedef details::vec_expr_v2_unary <FUNCTOR, Expr> expr_t; \
return expr_t (FUNCTOR(), expr); \
}
mkgeo_ball.expr
expr
Definition: mkgeo_ball.sh:361

Definition at line 129 of file vec_expr_v2.h.

## _RHEOLEF_vec_expr_v2_binary_operator

#define _RHEOLEF_vec_expr_v2_binary_operator | ( |  | OP,
|  |  | FUNCTOR
| ) |  |

Value:
template <class Expr1, class Expr2> \
inline \
typename \
std::enable_if< \
(details::is_vec_expr_v2_arg<Expr1>::value && \
details::is_vec_expr_v2_arg<Expr2>::value) || \
(details::is_rheolef_arithmetic<Expr1>::value && \
details::is_vec_expr_v2_arg<Expr2>::value) || \
(details::is_vec_expr_v2_arg<Expr1>::value && \
details::is_rheolef_arithmetic<Expr2>::value), \
typename \
details::vec_expr_v2_binary_traits< \
FUNCTOR, \
Expr1, Expr2 \
>::type \
>::type \
operator OP (const Expr1& expr1, const Expr2& expr2) \
{ \
typedef typename details::vec_expr_v2_binary_traits <FUNCTOR, Expr1, Expr2>::type expr_t; \
return expr_t (FUNCTOR(), expr1, expr2); \
}

Definition at line 248 of file vec_expr_v2.h.

## _RHEOLEF_vec_expr_v2_op_assign

#define _RHEOLEF_vec_expr_v2_op_assign | ( |  | OP,
|  |  | FUNCTOR
| ) |  |

Value:
template<class T, class M, class Expr> \
inline \
typename std::enable_if< \
details::is_vec_expr_v2_arg<Expr>::value, \
vec<T,M>&>::type \
operator OP (vec<T,M>& x, const Expr& expr) \
{ \
check_macro (x.size() == expr.size(), "vec " << #OP << " vec_expression : incompatible spaces " \
<< x.size() << " and " << expr.size()); \
details::assign_with_operator (x.begin(), x.end(), expr.begin(), FUNCTOR()); \
return x; \
}
rheolef::details::assign_with_operator
void assign_with_operator(ForwardIterator first, ForwardIterator last, InputIterator iter_rhs, OpAssign op_assign)
Definition: expr_utilities.h:137

Definition at line 352 of file vec_expr_v2.h.

## _RHEOLEF_vec_expr_v2_op_assign_constant

#define _RHEOLEF_vec_expr_v2_op_assign_constant | ( |  | OP,
|  |  | FUNCTOR
| ) |  |

Value:
template<class T, class M, class Expr> \
inline \
typename std::enable_if< \
details::is_rheolef_arithmetic<Expr>::value, \
vec<T,M>&>::type \
operator OP (vec<T,M>& x, const Expr& expr) \
{ \
details::assign_with_operator (x.begin(), x.end(), details::iterator_on_constant<Expr>(expr), FUNCTOR()); \
return x; \
}

Definition at line 370 of file vec_expr_v2.h.

## Typedef Documentation

## M

typedef Expr1::memory_type M

Definition at line 416 of file vec_expr_v2.h.

## Function Documentation

## dis_inner_product()

return dot::dis_inner_product | ( | expr1. | begin(),
|  | expr2. | begin(),
|  | expr1. | size(),
|  | expr1. | ownership).comm(,
|  | M() |
| ) |  |