26 #ifndef TILEDARRAY_SUBT_ENGINE_H__INCLUDED 27 #define TILEDARRAY_SUBT_ENGINE_H__INCLUDED 34 namespace expressions {
39 template <
typename,
typename,
typename>
class SubtEngine;
42 template <
typename Left,
typename Right,
typename Result>
46 "The left- and right-hand expressions must use the same policy class");
64 typedef typename Left::policy
policy;
72 typedef typename policy::pmap_interface
76 static constexpr
unsigned int leaves =
80 template <
typename Left,
typename Right,
typename Scalar,
typename Result>
84 "The left- and right-hand expressions must use the same policy class");
111 typedef typename policy::pmap_interface
115 static constexpr
unsigned int leaves =
125 template <
typename Left,
typename Right,
typename Result>
168 template <
typename L,
typename R>
211 template <
typename Left,
typename Right,
typename Scalar,
typename Result>
212 class ScalSubtEngine :
213 public BinaryEngine<ScalSubtEngine<Left, Right, Scalar, Result> >
217 typedef ScalSubtEngine<Left, Right, Scalar, Result>
266 template <
typename L,
typename R,
typename S>
305 std::stringstream ss;
306 ss <<
"[-] [" << factor_ <<
"] ";
315 #endif // TILEDARRAY_SUBT_ENGINE_H__INCLUDED EngineTrait< SubtEngine_ >::op_base_type op_base_type
The tile operation type.
EngineTrait< ScalSubtEngine_ >::op_type op_type
The tile operation type.
right_type right_
The right-hand argument.
Subtraction expression engine.
eval_trait< value_type >::type eval_type
Evaluation tile type.
Op::result_type result_type
The result tile type.
TiledArray::detail::DistEval< value_type, policy > dist_eval_type
The distributed evaluator type.
Tile subtraction operation.
EngineTrait< SubtEngine_ >::op_type op_type
The tile operation type.
Right right_type
The right-hand expression type.
SubtEngine< Left, Right, Result > SubtEngine_
This class type.
EngineTrait< SubtEngine_ >::trange_type trange_type
Tiled range type.
op_type::result_type value_type
The result tile type.
const Permutation & perm() const
Permutation accessor.
eval_trait< value_type >::type eval_type
Evaluation tile type.
shape_type make_shape(const Permutation &perm) const
Permuting shape factory function.
policy::size_type size_type
Size type.
Left left_type
The left-hand expression type.
EngineTrait< ScalSubtEngine_ >::pmap_interface pmap_interface
Process map interface type.
Left left_type
The left-hand expression type.
std::string make_tag() const
Expression identification tag.
TiledArray::detail::BinaryWrapper< op_base_type > op_type
The tile operation type.
policy::shape_type shape_type
Shape type.
const shape_type & shape() const
Shape accessor.
Tile scale-subtraction operation.
const char * make_tag() const
Expression identification tag.
BinaryEngine< ScalSubtEngine_ > BinaryEngine_
Binary expression engine base type.
EngineTrait< ScalSubtEngine_ >::op_base_type op_base_type
The tile operation type.
policy::shape_type shape_type
Shape type.
EngineTrait< ScalSubtEngine_ >::trange_type trange_type
Tiled range type.
EngineTrait< ScalSubtEngine_ >::right_type right_type
The right-hand expression type.
BinaryEngine_::ExprEngine_ ExprEngine_
Expression engine base type.
EngineTrait< SubtEngine_ >::size_type size_type
Size type.
Subtraction expression engine.
EngineTrait< SubtEngine_ >::value_type value_type
The result tile type.
ScalSubtEngine(const ScalSubtExpr< L, R, S > &expr)
Constructor.
EngineTrait< ScalSubtEngine_ >::policy policy
The result policy type.
op_type make_tile_op() const
Non-permuting tile operation factory function.
EngineTrait< ScalSubtEngine_ >::size_type size_type
Size type.
Tensor expression object.
shape_type make_shape(const Permutation &perm) const
Permuting shape factory function.
shape_type make_shape() const
Non-permuting shape factory function.
EngineTrait< ScalSubtEngine_ >::shape_type shape_type
Shape type.
Left::policy policy
The result policy type.
TiledArray::detail::BinaryWrapper< op_base_type > op_type
The tile operation type.
policy::pmap_interface pmap_interface
Process map interface type.
Right right_type
The right-hand expression type.
Binary tile operation wrapper.
ScalSubtEngine< Left, Right, Scalar, Result > ScalSubtEngine_
This class type.
BinaryEngine_::ExprEngine_ ExprEngine_
Expression engine base type.
op_type make_tile_op(const Permutation &perm) const
Permuting tile operation factory function.
EngineTrait< SubtEngine_ >::shape_type shape_type
Shape type.
TiledArray::detail::Subt< Result, typename EngineTrait< Left >::eval_type, typename EngineTrait< Right >::eval_type, EngineTrait< Left >::consumable, EngineTrait< Right >::consumable > op_base_type
The base tile operation type.
policy::trange_type trange_type
Tiled range type.
TiledArray::detail::DistEval< value_type, policy > dist_eval_type
The distributed evaluator type.
SubtEngine(const SubtExpr< L, R > &expr)
Constructor.
BinaryEngine< SubtEngine_ > BinaryEngine_
Binary base class type.
policy::pmap_interface pmap_interface
Process map interface type.
static op_type make_tile_op()
Non-permuting tile operation factory function.
Consumable tile type trait.
policy::trange_type trange_type
Tiled range type.
Left::policy policy
The result policy type.
EngineTrait< SubtEngine_ >::pmap_interface pmap_interface
Process map interface type.
op_type::result_type value_type
The result tile type.
TiledArray::detail::ScalSubt< Result, typename EngineTrait< Left >::eval_type, typename EngineTrait< Right >::eval_type, scalar_type, EngineTrait< Left >::consumable, EngineTrait< Right >::consumable > op_base_type
The base tile operation type.
Permutation of a sequence of objects indexed by base-0 indices.
static op_type make_tile_op(const Permutation &perm)
Permuting tile operation factory function.
EngineTrait< SubtEngine_ >::right_type right_type
The right-hand expression type.
EngineTrait< SubtEngine_ >::policy policy
The result policy type.
EngineTrait< ScalSubtEngine_ >::left_type left_type
The left-hand expression type.
policy::size_type size_type
Size type.
EngineTrait< ScalSubtEngine_ >::value_type value_type
The result tile type.
EngineTrait< ScalSubtEngine_ >::dist_eval_type dist_eval_type
The distributed evaluator type.
shape_type make_shape() const
Non-permuting shape factory function.
Scalar scalar_type
Tile scalar type.
left_type left_
The left-hand argument.
EngineTrait< SubtEngine_ >::left_type left_type
The left-hand expression type.
EngineTrait< SubtEngine_ >::dist_eval_type dist_eval_type
The distributed evaluator type.
EngineTrait< ScalSubtEngine_ >::scalar_type scalar_type
Tile scalar type.