26 #ifndef TILEDARRAY_EXPRESSIONS_SCAL_EXPR_H__INCLUDED 27 #define TILEDARRAY_EXPRESSIONS_SCAL_EXPR_H__INCLUDED 33 namespace expressions {
39 template <
typename Arg,
typename Scalar>
48 typedef numeric_t<typename EngineTrait<engine_type>::eval_type>
55 template <
typename Arg,
typename Scalar>
111 template <
typename Arg,
typename Scalar,
112 typename std::enable_if<
115 inline ScalExpr<Arg, Scalar>
118 "no_alias() expressions are not allowed on the right-hand side of " 119 "the assignment operator.");
130 template <
typename Arg,
typename Scalar,
131 typename std::enable_if<
134 inline ScalExpr<Arg, Scalar>
137 "no_alias() expressions are not allowed on the right-hand side of " 138 "the assignment operator.");
149 template <
typename Arg,
typename Scalar1,
typename Scalar2,
150 typename std::enable_if<
153 inline ScalExpr<Arg, mult_t<Scalar1, Scalar2> >
165 template <
typename Arg,
typename Scalar1,
typename Scalar2,
166 typename std::enable_if<
169 inline ScalExpr<Arg, mult_t<Scalar2, Scalar1> >
179 template <
typename Arg>
183 "no_alias() expressions are not allowed on the right-hand side of " 184 "the assignment operator.");
193 template <
typename Arg,
typename Scalar>
201 #endif // TILEDARRAY_EXPRESSIONS_SCAL_EXPR_H__INCLUDED ScalEngine< typename ExprTrait< Arg >::engine_type, Scalar, result_type > engine_type
Expression engine type.
ScalExpr_ & operator=(const ScalExpr_ &)=delete
ScalExpr< Arg, Scalar > ScalExpr_
This class type.
Scalar scalar_type
Addition result scalar type.
scalar_type factor() const
Scaling factor accessor.
Scaling expression engine.
ExprTrait< ScalExpr_ >::engine_type engine_type
Expression engine type.
std::enable_if< TiledArray::detail::is_numeric< Scalar >::value, ScalAddExpr< Left, Right, Scalar > >::type operator*(const AddExpr< Left, Right > &expr, const Scalar &factor)
Scaled-addition expression factor.
decltype(std::declval< Scalar1 >() *std::declval< Scalar2 >()) mult_t
decltype(scale(std::declval< T >()...)) result_of_scale_t
typename TiledArray::detail::numeric_type< T >::type numeric_t
TiledArray::tile_interface::result_of_scale_t< typename EngineTrait< typename ExprTrait< Arg >::engine_type >::eval_type, scalar_type > result_type
Result tile type.
numeric_t< typename EngineTrait< engine_type >::eval_type > numeric_type
Addition result numeric type.
typename TiledArray::detail::scalar_type< T >::type scalar_t
ExprTrait< ScalExpr_ >::argument_type argument_type
The argument expression type.
Arg argument_type
The argument expression type.
Base class for expression evaluation.
derived_type & derived()
Cast this object to it's derived type.
ScalAddExpr< Left, Right, typename ExprTrait< AddExpr< Left, Right > >::numeric_type > operator-(const AddExpr< Left, Right > &expr)
Negated addition expression factor.
ScalExpr(const ScalExpr_ &)=default
UnaryExpr< ScalExpr_ > UnaryExpr_
Unary base class type.
ExprTrait< ScalExpr_ >::scalar_type scalar_type
Scalar type.
ScalExpr(const ScalExpr_ &other, const scalar_type factor)
Rescale expression constructor.
const argument_type & arg() const
Argument expression accessor.
ScalExpr(const argument_type &arg, const scalar_type factor)
Scaled expression constructor.