TiledArray::detail::Add< Result, Left, Right, LeftConsumable, RightConsumable > Class Template Reference

Documentation

template<typename Result, typename Left, typename Right, bool LeftConsumable, bool RightConsumable>
class TiledArray::detail::Add< Result, Left, Right, LeftConsumable, RightConsumable >

Tile addition operation.

This addition operation will add the content two tiles, and accepts an optional permute argument.

Template Parameters
ResultThe result tile type
LeftThe left-hand argument type
RightThe right-hand argument type
LeftConsumableIf true, the left-hand tile is a temporary and may be consumed
RightConsumableIf true, the right-hand tile is a temporary and may be consumed
Note
Input tiles can be consumed only if their type matches the result type.

Definition at line 54 of file add.h.

Public Types

typedef Add< Result, Left, Right, LeftConsumable, RightConsumable > Add_
 This class type. More...
 
typedef Left left_type
 Left-hand argument base type. More...
 
typedef Right right_type
 Right-hand argument base type. More...
 
typedef Result result_type
 The result tile type. More...
 

Public Member Functions

template<typename L , typename R , typename Perm , typename = std::enable_if_t<TiledArray::detail::is_permutation_v<Perm>>>
result_type operator() (L &&left, R &&right, const Perm &perm) const
 Add-and-permute operator. More...
 
template<typename L , typename R >
result_type operator() (L &&left, R &&right) const
 Add operator. More...
 
template<typename R >
result_type consume_left (left_type &left, R &&right) const
 Add right to left. More...
 
template<typename L >
result_type consume_right (L &&left, right_type &right) const
 Add left to right. More...
 

Static Public Attributes

static constexpr bool left_is_consumable
 Indicates whether it is possible to consume the left tile. More...
 
static constexpr bool right_is_consumable
 Indicates whether it is possible to consume the right tile. More...
 

Member Typedef Documentation

◆ Add_

template<typename Result , typename Left , typename Right , bool LeftConsumable, bool RightConsumable>
typedef Add<Result, Left, Right, LeftConsumable, RightConsumable> TiledArray::detail::Add< Result, Left, Right, LeftConsumable, RightConsumable >::Add_

This class type.

Definition at line 57 of file add.h.

◆ left_type

template<typename Result , typename Left , typename Right , bool LeftConsumable, bool RightConsumable>
typedef Left TiledArray::detail::Add< Result, Left, Right, LeftConsumable, RightConsumable >::left_type

Left-hand argument base type.

Definition at line 58 of file add.h.

◆ result_type

template<typename Result , typename Left , typename Right , bool LeftConsumable, bool RightConsumable>
typedef Result TiledArray::detail::Add< Result, Left, Right, LeftConsumable, RightConsumable >::result_type

The result tile type.

Definition at line 60 of file add.h.

◆ right_type

template<typename Result , typename Left , typename Right , bool LeftConsumable, bool RightConsumable>
typedef Right TiledArray::detail::Add< Result, Left, Right, LeftConsumable, RightConsumable >::right_type

Right-hand argument base type.

Definition at line 59 of file add.h.

Member Function Documentation

◆ consume_left()

template<typename Result , typename Left , typename Right , bool LeftConsumable, bool RightConsumable>
template<typename R >
result_type TiledArray::detail::Add< Result, Left, Right, LeftConsumable, RightConsumable >::consume_left ( left_type left,
R &&  right 
) const
inline

Add right to left.

Add the right tile to the left. The right tile may be replaced with ZeroTensor argument, in which case the argument's element values are assumed to be 0.

Template Parameters
RThe right-hand tile argument type
Parameters
leftThe left-hand tile argument
rightThe right-hand tile argument
Returns
The sum of left and right.

Definition at line 189 of file add.h.

◆ consume_right()

template<typename Result , typename Left , typename Right , bool LeftConsumable, bool RightConsumable>
template<typename L >
result_type TiledArray::detail::Add< Result, Left, Right, LeftConsumable, RightConsumable >::consume_right ( L &&  left,
right_type right 
) const
inline

Add left to right.

Add the left tile to the right. The left tile may be replaced with ZeroTensor argument, in which case the argument's element values are assumed to be 0.

Template Parameters
LThe left-hand tile argument type
Parameters
leftThe left-hand tile argument
rightThe right-hand tile argument
Returns
The sum of left and right.

Definition at line 209 of file add.h.

◆ operator()() [1/2]

template<typename Result , typename Left , typename Right , bool LeftConsumable, bool RightConsumable>
template<typename L , typename R >
result_type TiledArray::detail::Add< Result, Left, Right, LeftConsumable, RightConsumable >::operator() ( L &&  left,
R &&  right 
) const
inline

Add operator.

Compute the sum of two tiles. One of the argument tiles may be replaced with ZeroTensor argument, in which case the argument's element values are assumed to be 0.

Template Parameters
LThe left-hand tile argument type
RThe right-hand tile argument type
Parameters
leftThe left-hand tile argument
rightThe right-hand tile argument
Returns
The scaled sum of left and right.

Definition at line 174 of file add.h.

◆ operator()() [2/2]

template<typename Result , typename Left , typename Right , bool LeftConsumable, bool RightConsumable>
template<typename L , typename R , typename Perm , typename = std::enable_if_t<TiledArray::detail::is_permutation_v<Perm>>>
result_type TiledArray::detail::Add< Result, Left, Right, LeftConsumable, RightConsumable >::operator() ( L &&  left,
R &&  right,
const Perm &  perm 
) const
inline

Add-and-permute operator.

Compute the sum of two tiles and permute the result. One of the argument tiles may be replaced with ZeroTensor argument, in which case the argument's element values are assumed to be 0.

Template Parameters
LThe left-hand tile argument type
RThe right-hand tile argument type
Parameters
leftThe left-hand tile argument
rightThe right-hand tile argument
permThe permutation applied to the result tile
Returns
The permuted and scaled sum of left and right.

Definition at line 159 of file add.h.

Member Data Documentation

◆ left_is_consumable

template<typename Result , typename Left , typename Right , bool LeftConsumable, bool RightConsumable>
constexpr bool TiledArray::detail::Add< Result, Left, Right, LeftConsumable, RightConsumable >::left_is_consumable
staticconstexpr
Initial value:
=
LeftConsumable && std::is_same<result_type, left_type>::value

Indicates whether it is possible to consume the left tile.

Definition at line 63 of file add.h.

◆ right_is_consumable

template<typename Result , typename Left , typename Right , bool LeftConsumable, bool RightConsumable>
constexpr bool TiledArray::detail::Add< Result, Left, Right, LeftConsumable, RightConsumable >::right_is_consumable
staticconstexpr
Initial value:
=
RightConsumable && std::is_same<result_type, right_type>::value

Indicates whether it is possible to consume the right tile.

Definition at line 66 of file add.h.


The documentation for this class was generated from the following file:
  • TiledArray/tile_op/add.h