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

Documentation

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

Tile scale-subtraction operation.

This subtraction operation will subtract the content two tiles and apply a permutation to the result tensor. If no permutation is given or the permutation is null, then the result is not permuted.

Template Parameters
ResultThe result tile type
LeftThe left-hand argument type
RightThe right-hand argument type
ScalarThe scaling factor 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 237 of file subt.h.

Public Types

typedef ScalSubt< Result, Left, Right, Scalar, LeftConsumable, RightConsumable > ScalSubt_
 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 Scalar scalar_type
 Scaling factor type. More...
 
typedef Result result_type
 The result tile type. More...
 

Public Member Functions

 ScalSubt (const ScalSubt_ &)=default
 
 ScalSubt (ScalSubt_ &&)=default
 
 ~ScalSubt ()=default
 
ScalSubt_operator= (const ScalSubt_ &)=default
 
ScalSubt_operator= (ScalSubt_ &&)=default
 
 ScalSubt (const Scalar factor)
 Constructor. More...
 
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
 Scale-subtract-and-permute operator. More...
 
template<typename L , typename R >
result_type operator() (L &&left, R &&right) const
 Scale-and-subtract operator. More...
 
template<typename R >
result_type consume_left (left_type &left, R &&right) const
 Subtract right to left and scale the result. More...
 
template<typename L >
result_type consume_right (L &&left, right_type &right) const
 Subtract left to right and scale the result. More...
 

Static Public Attributes

static constexpr bool left_is_consumable
 
static constexpr bool right_is_consumable
 

Member Typedef Documentation

◆ left_type

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

Left-hand argument base type.

Definition at line 242 of file subt.h.

◆ result_type

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

The result tile type.

Definition at line 245 of file subt.h.

◆ right_type

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

Right-hand argument base type.

Definition at line 243 of file subt.h.

◆ scalar_type

template<typename Result , typename Left , typename Right , typename Scalar , bool LeftConsumable, bool RightConsumable>
typedef Scalar TiledArray::detail::ScalSubt< Result, Left, Right, Scalar, LeftConsumable, RightConsumable >::scalar_type

Scaling factor type.

Definition at line 244 of file subt.h.

◆ ScalSubt_

template<typename Result , typename Left , typename Right , typename Scalar , bool LeftConsumable, bool RightConsumable>
typedef ScalSubt<Result, Left, Right, Scalar, LeftConsumable, RightConsumable> TiledArray::detail::ScalSubt< Result, Left, Right, Scalar, LeftConsumable, RightConsumable >::ScalSubt_

This class type.

Definition at line 241 of file subt.h.

Constructor & Destructor Documentation

◆ ScalSubt() [1/3]

template<typename Result , typename Left , typename Right , typename Scalar , bool LeftConsumable, bool RightConsumable>
TiledArray::detail::ScalSubt< Result, Left, Right, Scalar, LeftConsumable, RightConsumable >::ScalSubt ( const ScalSubt_ )
default

◆ ScalSubt() [2/3]

template<typename Result , typename Left , typename Right , typename Scalar , bool LeftConsumable, bool RightConsumable>
TiledArray::detail::ScalSubt< Result, Left, Right, Scalar, LeftConsumable, RightConsumable >::ScalSubt ( ScalSubt_ &&  )
default

◆ ~ScalSubt()

template<typename Result , typename Left , typename Right , typename Scalar , bool LeftConsumable, bool RightConsumable>
TiledArray::detail::ScalSubt< Result, Left, Right, Scalar, LeftConsumable, RightConsumable >::~ScalSubt ( )
default

◆ ScalSubt() [3/3]

template<typename Result , typename Left , typename Right , typename Scalar , bool LeftConsumable, bool RightConsumable>
TiledArray::detail::ScalSubt< Result, Left, Right, Scalar, LeftConsumable, RightConsumable >::ScalSubt ( const Scalar  factor)
inlineexplicit

Constructor.

Parameters
factorThe scaling factor applied to result tiles

Definition at line 341 of file subt.h.

Member Function Documentation

◆ consume_left()

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

Subtract right to left and scale the result.

Subtract 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 difference of left and right.

Definition at line 387 of file subt.h.

◆ consume_right()

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

Subtract left to right and scale the result.

Subtract the left tile to the right, and scale the resulting left tile. 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 difference of left and right.

Definition at line 407 of file subt.h.

◆ operator()() [1/2]

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

Scale-and-subtract operator.

Compute the scaled difference 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 difference of left and right.

Definition at line 372 of file subt.h.

◆ operator()() [2/2]

template<typename Result , typename Left , typename Right , typename Scalar , 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::ScalSubt< Result, Left, Right, Scalar, LeftConsumable, RightConsumable >::operator() ( L &&  left,
R &&  right,
const Perm &  perm 
) const
inline

Scale-subtract-and-permute operator.

Compute the scaled difference 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 difference of left and right.

Definition at line 357 of file subt.h.

◆ operator=() [1/2]

template<typename Result , typename Left , typename Right , typename Scalar , bool LeftConsumable, bool RightConsumable>
ScalSubt_& TiledArray::detail::ScalSubt< Result, Left, Right, Scalar, LeftConsumable, RightConsumable >::operator= ( const ScalSubt_ )
default

◆ operator=() [2/2]

template<typename Result , typename Left , typename Right , typename Scalar , bool LeftConsumable, bool RightConsumable>
ScalSubt_& TiledArray::detail::ScalSubt< Result, Left, Right, Scalar, LeftConsumable, RightConsumable >::operator= ( ScalSubt_ &&  )
default

Member Data Documentation

◆ left_is_consumable

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

Definition at line 247 of file subt.h.

◆ right_is_consumable

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

Definition at line 249 of file subt.h.


The documentation for this class was generated from the following file: