|
| | BinaryWrapper (const BinaryWrapper< Op > &)=default |
| |
| | BinaryWrapper (BinaryWrapper< Op > &&)=default |
| |
| | ~BinaryWrapper ()=default |
| |
| BinaryWrapper< Op > & | operator= (const BinaryWrapper< Op > &)=default |
| |
| BinaryWrapper< Op > & | operator= (BinaryWrapper< Op > &&)=default |
| |
| | BinaryWrapper (const Op &op, const Permutation &perm) |
| |
| | BinaryWrapper (const Op &op) |
| |
| template<typename L , typename R , std::enable_if_t<!(is_lazy_tile_v< L >||is_lazy_tile_v< R >)> * = nullptr> |
| auto | operator() (L &&left, R &&right) const |
| | Evaluate two non-zero tiles and possibly permute. More...
|
| |
| template<typename R , std::enable_if_t<!is_lazy_tile_v< R > > * = nullptr> |
| auto | operator() (const ZeroTensor &left, R &&right) const |
| | Evaluate a zero tile to a non-zero tiles and possibly permute. More...
|
| |
| template<typename L , std::enable_if_t<!is_lazy_tile_v< L > > * = nullptr> |
| auto | operator() (L &&left, const ZeroTensor &right) const |
| | Evaluate a non-zero tiles to a zero tile and possibly permute. More...
|
| |
| template<typename L , typename R , std::enable_if_t< is_lazy_tile_v< L > &&is_lazy_tile_v< R > &&(left_is_consumable||right_is_consumable)> * = nullptr> |
| auto | operator() (L &&left, R &&right) const |
| | Evaluate two lazy tiles. More...
|
| |
| template<typename L , typename R , std::enable_if_t< is_lazy_tile_v< L > &&(!is_lazy_tile_v< R >)&&(left_is_consumable||right_is_consumable)> * = nullptr> |
| auto | operator() (L &&left, R &&right) const |
| | Evaluate lazy and non-lazy tiles. More...
|
| |
| template<typename L , typename R , std::enable_if_t<(!is_lazy_tile_v< L >)&&is_lazy_tile_v< R > &&(left_is_consumable||right_is_consumable)> * = nullptr> |
| auto | operator() (L &&left, R &&right) const |
| | Evaluate non-lazy and lazy tiles. More...
|
| |
| template<typename L , typename R , std::enable_if_t< is_array_tile_v< L > &&is_array_tile_v< R > &&!(left_is_consumable||right_is_consumable)> * = nullptr> |
| auto | operator() (L &&left, R &&right) const |
| | Evaluate two lazy-array tiles. More...
|
| |
| template<typename L , typename R , std::enable_if_t< is_array_tile_v< L > &&(!is_lazy_tile_v< R >)&&!(left_is_consumable||right_is_consumable)> * = nullptr> |
| auto | operator() (L &&left, R &&right) const |
| |
| template<typename L , typename R , std::enable_if_t< is_array_tile_v< L > &&is_nonarray_lazy_tile_v< R > &&!(left_is_consumable||right_is_consumable)> * = nullptr> |
| auto | operator() (L &&left, R &&right) const |
| |
| template<typename L , typename R , std::enable_if_t<(!is_lazy_tile_v< L >)&&is_array_tile_v< R > &&!(left_is_consumable||right_is_consumable)> * = nullptr> |
| auto | operator() (L &&left, R &&right) const |
| |
| template<typename L , typename R , std::enable_if_t< is_nonarray_lazy_tile_v< L > &&is_array_tile_v< R > &&!(left_is_consumable||right_is_consumable)> * = nullptr> |
| auto | operator() (L &&left, R &&right) const |
| |
template<typename Op>
class TiledArray::detail::BinaryWrapper< Op >
Binary tile operation wrapper.
This wrapper class is handles evaluation of lazily evaluated tiles in binary operations and forwards the evaluated arguments to the base operation object.
The base binary operation class must have the following interface.
class Operator {
public:
LeftConsumable && std::is_same<result_type, Left>::value;
RightConsumable && std::is_same<result_type, Right>::value;
Operator();
Operator(const Scalar);
template <typename L, typename R>
template <typename L, typename R>
template <typename R>
template <typename L>
};
- Template Parameters
-
| Op | The base binary operation type |
Definition at line 89 of file binary_wrapper.h.
template<typename Op >
template<typename L , typename R , std::enable_if_t< is_lazy_tile_v< L > &&(!is_lazy_tile_v< R >)&&(left_is_consumable||right_is_consumable)> * = nullptr>
Evaluate lazy and non-lazy tiles.
This function will evaluate the left , then pass the evaluated tile and right to the appropriate BinaryInterfaceBase_::operator() function.
- Template Parameters
-
| L | The left-hand, lazy tile type |
| R | The right-hand, non-lazy tile type |
- Parameters
-
| left | The left-hand, lazy tile argument |
| right | The right-hand, non-lazy tile argument |
- Returns
- The result tile from the binary operation applied to the evaluated
left and right .
Definition at line 239 of file binary_wrapper.h.
template<typename Op >
template<typename L , typename R , std::enable_if_t<(!is_lazy_tile_v< L >)&&is_lazy_tile_v< R > &&(left_is_consumable||right_is_consumable)> * = nullptr>
Evaluate non-lazy and lazy tiles.
This function will evaluate the right , then pass the evaluated tile and left to the appropriate BinaryInterfaceBase_::operator() function.
- Template Parameters
-
| L | The left-hand, non-lazy tile type |
| R | The right-hand, lazy tile type |
- Parameters
-
| left | The left-hand, non-lazy tile argument |
| right | The right-hand, lazy tile argument |
- Returns
- The result tile from the binary operation applied to the evaluated
left and right .
Definition at line 263 of file binary_wrapper.h.
template<typename Op >
template<typename L , typename R , std::enable_if_t< is_array_tile_v< L > &&is_array_tile_v< R > &&!(left_is_consumable||right_is_consumable)> * = nullptr>
Evaluate two lazy-array tiles.
This function will evaluate the left and right , then pass the evaluated tiles to the appropriate Derived class evaluation kernel.
- Template Parameters
-
| L | The left-hand, lazy-array tile type |
| R | The right-hand, lazy-array tile type |
- Parameters
-
| left | The left-hand, non-lazy tile argument |
| right | The right-hand, lazy tile argument |
- Returns
- The result tile from the binary operation applied to the evaluated
left and right .
Definition at line 283 of file binary_wrapper.h.