Tile interface for user defined tensor types

Documentation

Classes

struct  TiledArray::eval_trait< T >
 Determine the object type used in the evaluation of tensor expressions. More...
 
struct  TiledArray::is_lazy_tile< T >
 Detect lazy evaluation tiles. More...
 
struct  TiledArray::is_lazy_tile< DistArray< Tile, Policy > >
 
struct  TiledArray::is_consumable_tile< T >
 Consumable tile type trait. More...
 
struct  TiledArray::is_consumable_tile< ZeroTensor >
 

Functions

template<typename Arg >
Tile< Arg > TiledArray::clone (const Tile< Arg > &arg)
 Create a copy of arg. More...
 
template<typename Arg >
bool TiledArray::empty (const Tile< Arg > &arg)
 Check that arg is empty (no data) More...
 
template<typename Arg , typename Perm , typename = std::enable_if_t<detail::is_permutation_v<Perm>>>
decltype(auto) TiledArray::permute (const Tile< Arg > &arg, const Perm &perm)
 Create a permuted copy of arg. More...
 
template<typename Arg , typename Index , typename = std::enable_if_t<detail::is_integral_range_v<Index>>>
decltype(auto) TiledArray::shift (const Tile< Arg > &arg, const Index &range_shift)
 Shift the range of arg. More...
 
template<typename Arg , typename Index , typename = std::enable_if_t<std::is_integral_v<Index>>>
decltype(auto) TiledArray::shift (const Tile< Arg > &arg, const std::initializer_list< Index > &range_shift)
 Shift the range of arg. More...
 
template<typename Arg , typename Index , typename = std::enable_if_t<detail::is_integral_range_v<Index>>>
Tile< Arg > & TiledArray::shift_to (Tile< Arg > &arg, const Index &range_shift)
 Shift the range of arg in place. More...
 
template<typename Arg , typename Index , typename = std::enable_if_t<std::is_integral_v<Index>>>
Tile< Arg > & TiledArray::shift_to (Tile< Arg > &arg, const std::initializer_list< Index > &range_shift)
 Shift the range of arg in place. More...
 
template<typename Left , typename Right >
decltype(auto) TiledArray::add (const Tile< Left > &left, const Tile< Right > &right)
 Add tile arguments. More...
 
template<typename Left , typename Right , typename Scalar , typename std::enable_if< detail::is_numeric_v< Scalar >>::type * = nullptr>
decltype(auto) TiledArray::add (const Tile< Left > &left, const Tile< Right > &right, const Scalar factor)
 Add and scale tile arguments. More...
 
template<typename Left , typename Right , typename Perm , typename = std::enable_if_t<detail::is_permutation_v<Perm>>>
decltype(auto) TiledArray::add (const Tile< Left > &left, const Tile< Right > &right, const Perm &perm)
 Add and permute tile arguments. More...
 
template<typename Left , typename Right , typename Scalar , typename Perm , typename std::enable_if< detail::is_numeric_v< Scalar > &&detail::is_permutation_v< Perm >>::type * = nullptr>
decltype(auto) TiledArray::add (const Tile< Left > &left, const Tile< Right > &right, const Scalar factor, const Perm &perm)
 Add, scale, and permute tile arguments. More...
 
template<typename Arg , typename Scalar , typename std::enable_if< detail::is_numeric_v< Scalar >>::type * = nullptr>
decltype(auto) TiledArray::add (const Tile< Arg > &arg, const Scalar value)
 Add a constant scalar to tile argument. More...
 
template<typename Arg , typename Scalar , typename Perm , typename std::enable_if< detail::is_numeric_v< Scalar > &&detail::is_permutation_v< Perm >>::type * = nullptr>
decltype(auto) TiledArray::add (const Tile< Arg > &arg, const Scalar value, const Perm &perm)
 Add a constant scalar and permute tile argument. More...
 
template<typename Result , typename Arg >
Tile< Result > & TiledArray::add_to (Tile< Result > &result, const Tile< Arg > &arg)
 Add to the result tile. More...
 
template<typename Result , typename Arg , typename Scalar , typename std::enable_if< detail::is_numeric_v< Scalar >>::type * = nullptr>
Tile< Result > & TiledArray::add_to (Tile< Result > &result, const Tile< Arg > &arg, const Scalar factor)
 Add and scale to the result tile. More...
 
template<typename Result , typename Scalar , typename std::enable_if< detail::is_numeric_v< Scalar >>::type * = nullptr>
Tile< Result > & TiledArray::add_to (Tile< Result > &result, const Scalar value)
 Add constant scalar to the result tile. More...
 
template<typename Left , typename Right >
decltype(auto) TiledArray::subt (const Tile< Left > &left, const Tile< Right > &right)
 Subtract tile arguments. More...
 
template<typename Left , typename Right , typename Scalar , typename std::enable_if< detail::is_numeric_v< Scalar >>::type * = nullptr>
decltype(auto) TiledArray::subt (const Tile< Left > &left, const Tile< Right > &right, const Scalar factor)
 Subtract and scale tile arguments. More...
 
template<typename Left , typename Right , typename Perm , typename = std::enable_if_t<detail::is_permutation_v<Perm>>>
decltype(auto) TiledArray::subt (const Tile< Left > &left, const Tile< Right > &right, const Perm &perm)
 Subtract and permute tile arguments. More...
 
template<typename Left , typename Right , typename Scalar , typename Perm , typename std::enable_if< detail::is_numeric_v< Scalar > &&detail::is_permutation_v< Perm >>::type * = nullptr>
decltype(auto) TiledArray::subt (const Tile< Left > &left, const Tile< Right > &right, const Scalar factor, const Perm &perm)
 Subtract, scale, and permute tile arguments. More...
 
template<typename Arg , typename Scalar , typename std::enable_if< detail::is_numeric_v< Scalar >>::type * = nullptr>
decltype(auto) TiledArray::subt (const Tile< Arg > &arg, const Scalar value)
 Subtract a scalar constant from the tile argument. More...
 
template<typename Arg , typename Scalar , typename Perm , typename std::enable_if< detail::is_numeric_v< Scalar > &&detail::is_permutation_v< Perm >>::type * = nullptr>
decltype(auto) TiledArray::subt (const Tile< Arg > &arg, const Scalar value, const Perm &perm)
 Subtract a constant scalar and permute tile argument. More...
 
template<typename Result , typename Arg >
Tile< Result > & TiledArray::subt_to (Tile< Result > &result, const Tile< Arg > &arg)
 Subtract from the result tile. More...
 
template<typename Result , typename Arg , typename Scalar , typename std::enable_if< detail::is_numeric_v< Scalar >>::type * = nullptr>
Tile< Result > & TiledArray::subt_to (Tile< Result > &result, const Tile< Arg > &arg, const Scalar factor)
 Subtract and scale from the result tile. More...
 
template<typename Result , typename Scalar , typename std::enable_if< detail::is_numeric_v< Scalar >>::type * = nullptr>
Tile< Result > & TiledArray::subt_to (Tile< Result > &result, const Scalar value)
 Subtract constant scalar from the result tile. More...
 
template<typename Left , typename Right >
decltype(auto) TiledArray::mult (const Tile< Left > &left, const Tile< Right > &right)
 Multiplication tile arguments. More...
 
template<typename Left , typename Right , typename Scalar , typename std::enable_if< detail::is_numeric_v< Scalar >>::type * = nullptr>
decltype(auto) TiledArray::mult (const Tile< Left > &left, const Tile< Right > &right, const Scalar factor)
 Multiplication and scale tile arguments. More...
 
template<typename Left , typename Right , typename Perm , typename = std::enable_if_t<detail::is_permutation_v<Perm>>>
decltype(auto) TiledArray::mult (const Tile< Left > &left, const Tile< Right > &right, const Perm &perm)
 Multiplication and permute tile arguments. More...
 
template<typename Left , typename Right , typename Scalar , typename Perm , typename std::enable_if< detail::is_numeric_v< Scalar > &&detail::is_permutation_v< Perm >>::type * = nullptr>
decltype(auto) TiledArray::mult (const Tile< Left > &left, const Tile< Right > &right, const Scalar factor, const Perm &perm)
 Multiplication, scale, and permute tile arguments. More...
 
template<typename Result , typename Arg >
Tile< Result > & TiledArray::mult_to (Tile< Result > &result, const Tile< Arg > &arg)
 Multiply to the result tile. More...
 
template<typename Result , typename Arg , typename Scalar , typename std::enable_if< detail::is_numeric_v< Scalar >>::type * = nullptr>
Tile< Result > & TiledArray::mult_to (Tile< Result > &result, const Tile< Arg > &arg, const Scalar factor)
 Multiply and scale to the result tile. More...
 
template<typename Left , typename Right , typename Op >
decltype(auto) TiledArray::binary (const Tile< Left > &left, const Tile< Right > &right, Op &&op)
 Binary element-wise transform producing a new tile. More...
 
template<typename Left , typename Right , typename Op , typename Perm , typename = std::enable_if_t<detail::is_permutation_v<Perm>>>
decltype(auto) TiledArray::binary (const Tile< Left > &left, const Tile< Right > &right, Op &&op, const Perm &perm)
 Binary element-wise transform producing a new tile. More...
 
template<typename Left , typename Right , typename Op >
Tile< Left > & TiledArray::inplace_binary (Tile< Left > &left, const Tile< Right > &right, Op &&op)
 Binary element-wise in-place transform. More...
 
template<typename Arg , typename Scalar , typename std::enable_if< detail::is_numeric_v< Scalar >>::type * = nullptr>
decltype(auto) TiledArray::scale (const Tile< Arg > &arg, const Scalar factor)
 Scalar the tile argument. More...
 
template<typename Arg , typename Scalar , typename Perm , typename std::enable_if< detail::is_numeric_v< Scalar > &&detail::is_permutation_v< Perm >>::type * = nullptr>
decltype(auto) TiledArray::scale (const Tile< Arg > &arg, const Scalar factor, const Perm &perm)
 Scale and permute tile argument. More...
 
template<typename Result , typename Scalar , typename std::enable_if< detail::is_numeric_v< Scalar >>::type * = nullptr>
Tile< Result > & TiledArray::scale_to (Tile< Result > &result, const Scalar factor)
 Scale to the result tile. More...
 
template<typename Arg >
decltype(auto) TiledArray::neg (const Tile< Arg > &arg)
 Negate the tile argument. More...
 
template<typename Arg , typename Perm , typename = std::enable_if_t<detail::is_permutation_v<Perm>>>
decltype(auto) TiledArray::neg (const Tile< Arg > &arg, const Perm &perm)
 Negate and permute tile argument. More...
 
template<typename Result >
Tile< Result > & TiledArray::neg_to (Tile< Result > &result)
 In-place negate tile. More...
 
template<typename Arg >
decltype(auto) TiledArray::conj (const Tile< Arg > &arg)
 Create a complex conjugated copy of a tile. More...
 
template<typename Arg , typename Scalar , typename std::enable_if< TiledArray::detail::is_numeric_v< Scalar >>::type * = nullptr>
decltype(auto) TiledArray::conj (const Tile< Arg > &arg, const Scalar factor)
 Create a complex conjugated and scaled copy of a tile. More...
 
template<typename Arg , typename Perm , typename = std::enable_if_t<detail::is_permutation_v<Perm>>>
decltype(auto) TiledArray::conj (const Tile< Arg > &arg, const Perm &perm)
 Create a complex conjugated and permuted copy of a tile. More...
 
template<typename Arg , typename Scalar , typename Perm , typename std::enable_if< TiledArray::detail::is_numeric_v< Scalar > &&detail::is_permutation_v< Perm >>::type * = nullptr>
decltype(auto) TiledArray::conj (const Tile< Arg > &arg, const Scalar factor, const Perm &perm)
 Create a complex conjugated, scaled, and permuted copy of a tile. More...
 
template<typename Result >
Tile< Result > & TiledArray::conj_to (Tile< Result > &result)
 In-place complex conjugate a tile. More...
 
template<typename Result , typename Scalar , typename std::enable_if< TiledArray::detail::is_numeric_v< Scalar >>::type * = nullptr>
Tile< Result > & TiledArray::conj_to (Tile< Result > &result, const Scalar factor)
 In-place complex conjugate and scale a tile. More...
 
template<typename Arg , typename Op >
decltype(auto) TiledArray::unary (const Tile< Arg > &arg, Op &&op)
 Unary element-wise transform producing a new tile. More...
 
template<typename Arg , typename Op , typename Perm , typename = std::enable_if_t<detail::is_permutation_v<Perm>>>
decltype(auto) TiledArray::unary (const Tile< Arg > &arg, Op &&op, const Perm &perm)
 Unary element-wise transform producing a new tile. More...
 
template<typename Result , typename Op >
Tile< Result > & TiledArray::inplace_unary (Tile< Result > &arg, Op &&op)
 Unary element-wise in-place transform. More...
 
template<typename Left , typename Right , typename Scalar , typename std::enable_if< detail::is_numeric_v< Scalar >>::type * = nullptr>
decltype(auto) TiledArray::gemm (const Tile< Left > &left, const Tile< Right > &right, const Scalar factor, const math::GemmHelper &gemm_config)
 Contract 2 tensors over head/tail modes and scale the product. More...
 
template<typename Result , typename Left , typename Right , typename Scalar , typename std::enable_if< detail::is_numeric_v< Scalar >>::type * = nullptr>
Tile< Result > & TiledArray::gemm (Tile< Result > &result, const Tile< Left > &left, const Tile< Right > &right, const Scalar factor, const math::GemmHelper &gemm_config)
 
template<typename Result , typename Left , typename Right , typename ElementMultiplyAddOp , typename std::enable_if< std::is_invocable_r_v< void, std::remove_reference_t< ElementMultiplyAddOp >, typename Result::value_type &, const typename Left::value_type &, const typename Right::value_type & >>::type * = nullptr>
Tile< Result > & TiledArray::gemm (Tile< Result > &result, const Tile< Left > &left, const Tile< Right > &right, const math::GemmHelper &gemm_config, ElementMultiplyAddOp &&element_multiplyadd_op)
 
template<typename Arg >
decltype(auto) TiledArray::trace (const Tile< Arg > &arg)
 Sum the hyper-diagonal elements a tile. More...
 
template<typename Arg >
decltype(auto) TiledArray::sum (const Tile< Arg > &arg)
 Sum the elements of a tile. More...
 
template<typename Arg >
decltype(auto) TiledArray::product (const Tile< Arg > &arg)
 Multiply the elements of a tile. More...
 
template<typename Arg >
decltype(auto) TiledArray::squared_norm (const Tile< Arg > &arg)
 Squared vector 2-norm of the elements of a tile. More...
 
template<typename Arg >
decltype(auto) TiledArray::norm (const Tile< Arg > &arg)
 Vector 2-norm of a tile. More...
 
template<typename Arg , typename ResultType >
void TiledArray::norm (const Tile< Arg > &arg, ResultType &result)
 Vector 2-norm of a tile. More...
 
template<typename Arg >
decltype(auto) TiledArray::max (const Tile< Arg > &arg)
 Maximum element of a tile. More...
 
template<typename Arg >
decltype(auto) TiledArray::min (const Tile< Arg > &arg)
 Minimum element of a tile. More...
 
template<typename Arg >
decltype(auto) TiledArray::abs_max (const Tile< Arg > &arg)
 Absolute maximum element of a tile. More...
 
template<typename Arg >
decltype(auto) TiledArray::abs_min (const Tile< Arg > &arg)
 Absolute mainimum element of a tile. More...
 
template<typename Left , typename Right >
decltype(auto) TiledArray::dot (const Tile< Left > &left, const Tile< Right > &right)
 Vector dot product of a tile. More...
 
template<typename Left , typename Right >
decltype(auto) TiledArray::inner_product (const Tile< Left > &left, const Tile< Right > &right)
 Vector inner product of a tile. More...
 
template<typename T >
std::ostream & TiledArray::operator<< (std::ostream &os, const Tile< T > &tile)
 

Variables

template<typename T >
constexpr const bool TiledArray::is_lazy_tile_v = is_lazy_tile<T>::value
 is_lazy_tile_v<T> is an alias for is_lazy_tile<T>::value More...
 
template<typename T >
constexpr const bool TiledArray::is_consumable_tile_v = is_consumable_tile<T>::value
 is_consumable_tile_v<T> is an alias for is_consumable_tile<T>::value More...
 

Function Documentation

◆ abs_max()

template<typename Arg >
decltype(auto) TiledArray::abs_max ( const Tile< Arg > &  arg)
inline

Absolute maximum element of a tile.

Template Parameters
ArgThe tile argument type
Parameters
argThe argument to find the maximum
Returns
A scalar that is equal to abs(max(arg))

Definition at line 1569 of file tile.h.

Here is the call graph for this function:

◆ abs_min()

template<typename Arg >
decltype(auto) TiledArray::abs_min ( const Tile< Arg > &  arg)
inline

Absolute mainimum element of a tile.

Template Parameters
ArgThe tile argument type
Parameters
argThe argument to find the minimum
Returns
A scalar that is equal to abs(min(arg))

Definition at line 1579 of file tile.h.

Here is the call graph for this function:

◆ add() [1/6]

template<typename Arg , typename Scalar , typename std::enable_if< detail::is_numeric_v< Scalar >>::type * = nullptr>
decltype(auto) TiledArray::add ( const Tile< Arg > &  arg,
const Scalar  value 
)
inline

Add a constant scalar to tile argument.

Template Parameters
ArgThe tile argument type
ScalarA scalar type
Parameters
argThe left-hand argument to be added
valueThe constant scalar to be added
Returns
A tile that is equal to arg + value

Definition at line 801 of file tile.h.

Here is the call graph for this function:

◆ add() [2/6]

template<typename Arg , typename Scalar , typename Perm , typename std::enable_if< detail::is_numeric_v< Scalar > &&detail::is_permutation_v< Perm >>::type * = nullptr>
decltype(auto) TiledArray::add ( const Tile< Arg > &  arg,
const Scalar  value,
const Perm &  perm 
)
inline

Add a constant scalar and permute tile argument.

Template Parameters
ArgThe tile argument type
ScalarA scalar type
PermA permutation tile
Parameters
argThe left-hand argument to be added
valueThe constant scalar value to be added
permThe permutation to be applied to the result
Returns
A tile that is equal to perm ^ (arg + value)

Definition at line 818 of file tile.h.

Here is the call graph for this function:

◆ add() [3/6]

template<typename Left , typename Right >
decltype(auto) TiledArray::add ( const Tile< Left > &  left,
const Tile< Right > &  right 
)
inline

Add tile arguments.

Template Parameters
LeftThe left-hand tile type
RightThe right-hand tile type
Parameters
leftThe left-hand argument to be added
rightThe right-hand argument to be added
Returns
A tile that is equal to (left + right)

Definition at line 734 of file tile.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ add() [4/6]

template<typename Left , typename Right , typename Perm , typename = std::enable_if_t<detail::is_permutation_v<Perm>>>
decltype(auto) TiledArray::add ( const Tile< Left > &  left,
const Tile< Right > &  right,
const Perm &  perm 
)
inline

Add and permute tile arguments.

Template Parameters
LeftThe left-hand tile type
RightThe right-hand tile type
PermA permutation type
Parameters
leftThe left-hand argument to be added
rightThe right-hand argument to be added
permThe permutation to be applied to the result
Returns
A tile that is equal to perm * (left + right)

Definition at line 766 of file tile.h.

Here is the call graph for this function:

◆ add() [5/6]

template<typename Left , typename Right , typename Scalar , typename std::enable_if< detail::is_numeric_v< Scalar >>::type * = nullptr>
decltype(auto) TiledArray::add ( const Tile< Left > &  left,
const Tile< Right > &  right,
const Scalar  factor 
)
inline

Add and scale tile arguments.

Template Parameters
LeftThe left-hand tile type
RightThe right-hand tile type
ScalarA scalar type
Parameters
leftThe left-hand argument to be added
rightThe right-hand argument to be added
factorThe scaling factor
Returns
A tile that is equal to (left + right) * factor

Definition at line 750 of file tile.h.

Here is the call graph for this function:

◆ add() [6/6]

template<typename Left , typename Right , typename Scalar , typename Perm , typename std::enable_if< detail::is_numeric_v< Scalar > &&detail::is_permutation_v< Perm >>::type * = nullptr>
decltype(auto) TiledArray::add ( const Tile< Left > &  left,
const Tile< Right > &  right,
const Scalar  factor,
const Perm &  perm 
)
inline

Add, scale, and permute tile arguments.

Template Parameters
LeftThe left-hand tile type
RightThe right-hand tile type
ScalarA scalar type
PermA permutation tile
Parameters
leftThe left-hand argument to be added
rightThe right-hand argument to be added
factorThe scaling factor
permThe permutation to be applied to the result
Returns
A tile that is equal to perm ^ (left + right) * factor

Definition at line 786 of file tile.h.

Here is the call graph for this function:

◆ add_to() [1/3]

template<typename Result , typename Scalar , typename std::enable_if< detail::is_numeric_v< Scalar >>::type * = nullptr>
Tile<Result>& TiledArray::add_to ( Tile< Result > &  result,
const Scalar  value 
)
inline

Add constant scalar to the result tile.

Template Parameters
ResultThe result tile type
ScalarA scalar type
Parameters
resultThe result tile
valueThe constant scalar to be added to result
Returns
A tile that is equal to (result[i] += arg[i]) *= factor

Definition at line 864 of file tile.h.

Here is the call graph for this function:

◆ add_to() [2/3]

template<typename Result , typename Arg >
Tile<Result>& TiledArray::add_to ( Tile< Result > &  result,
const Tile< Arg > &  arg 
)
inline

Add to the result tile.

Template Parameters
ResultThe result tile type
ArgThe argument tile type
Parameters
resultThe result tile
argThe argument to be added to the result
Returns
A tile that is equal to result[i] += arg[i]

Definition at line 831 of file tile.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ add_to() [3/3]

template<typename Result , typename Arg , typename Scalar , typename std::enable_if< detail::is_numeric_v< Scalar >>::type * = nullptr>
Tile<Result>& TiledArray::add_to ( Tile< Result > &  result,
const Tile< Arg > &  arg,
const Scalar  factor 
)
inline

Add and scale to the result tile.

Template Parameters
ResultThe result tile type
ArgThe argument tile type
ScalarA scalar type
Parameters
resultThe result tile
argThe argument to be added to result
factorThe scaling factor
Returns
A tile that is equal to (result[i] += arg[i]) * factor

Definition at line 848 of file tile.h.

Here is the call graph for this function:

◆ binary() [1/2]

template<typename Left , typename Right , typename Op >
decltype(auto) TiledArray::binary ( const Tile< Left > &  left,
const Tile< Right > &  right,
Op &&  op 
)
inline

Binary element-wise transform producing a new tile.

Template Parameters
LeftThe left-hand tile type
RightThe right-hand tile type
OpAn element-wise operation type
Parameters
[in]leftThe left-hand argument to the transform
[in]rightThe right-hand argument to the transform
opAn element-wise operation
Returns
result where for each i in left.range() result[i]==op(left[i],right[i])

Definition at line 1118 of file tile.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ binary() [2/2]

template<typename Left , typename Right , typename Op , typename Perm , typename = std::enable_if_t<detail::is_permutation_v<Perm>>>
decltype(auto) TiledArray::binary ( const Tile< Left > &  left,
const Tile< Right > &  right,
Op &&  op,
const Perm &  perm 
)
inline

Binary element-wise transform producing a new tile.

Template Parameters
LeftThe left-hand tile type
RightThe right-hand tile type
OpAn element-wise operation type
PermA permutation type
Parameters
[in]leftThe left-hand argument to the transform
[in]rightThe right-hand argument to the transform
opAn element-wise operation
permThe permutation to be applied to the result
Returns
perm^result where for each i in left.range() result[i]==op(left[i],right[i])

Definition at line 1139 of file tile.h.

Here is the call graph for this function:

◆ clone()

template<typename Arg >
Tile<Arg> TiledArray::clone ( const Tile< Arg > &  arg)
inline

Create a copy of arg.

Template Parameters
ArgThe tile argument type
Parameters
argThe tile argument to be permuted
Returns
A (deep) copy of arg

Definition at line 633 of file tile.h.

Here is the call graph for this function:

◆ conj() [1/4]

template<typename Arg >
decltype(auto) TiledArray::conj ( const Tile< Arg > &  arg)
inline

Create a complex conjugated copy of a tile.

Template Parameters
ArgThe tile argument type
Parameters
argThe tile to be conjugated
Returns
A complex conjugated copy of arg

Definition at line 1256 of file tile.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ conj() [2/4]

template<typename Arg , typename Perm , typename = std::enable_if_t<detail::is_permutation_v<Perm>>>
decltype(auto) TiledArray::conj ( const Tile< Arg > &  arg,
const Perm &  perm 
)
inline

Create a complex conjugated and permuted copy of a tile.

Template Parameters
ArgThe tile argument type
PermA permutation tile
Parameters
argThe tile to be conjugated
permThe permutation to be applied to arg
Returns
A complex conjugated and permuted copy of arg

Definition at line 1283 of file tile.h.

Here is the call graph for this function:

◆ conj() [3/4]

template<typename Arg , typename Scalar , typename std::enable_if< TiledArray::detail::is_numeric_v< Scalar >>::type * = nullptr>
decltype(auto) TiledArray::conj ( const Tile< Arg > &  arg,
const Scalar  factor 
)
inline

Create a complex conjugated and scaled copy of a tile.

Template Parameters
ArgThe tile argument type
ScalarA scalar type
Parameters
argThe tile to be conjugated
factorThe scaling factor
Returns
A complex conjugated and scaled copy of arg

Definition at line 1270 of file tile.h.

Here is the call graph for this function:

◆ conj() [4/4]

template<typename Arg , typename Scalar , typename Perm , typename std::enable_if< TiledArray::detail::is_numeric_v< Scalar > &&detail::is_permutation_v< Perm >>::type * = nullptr>
decltype(auto) TiledArray::conj ( const Tile< Arg > &  arg,
const Scalar  factor,
const Perm &  perm 
)
inline

Create a complex conjugated, scaled, and permuted copy of a tile.

Template Parameters
ArgThe tile argument type
ScalarA scalar type
PermA permutation tile
Parameters
argThe argument to be conjugated
factorThe scaling factor
permThe permutation to be applied to arg
Returns
A complex conjugated, scaled, and permuted copy of arg

Definition at line 1300 of file tile.h.

Here is the call graph for this function:

◆ conj_to() [1/2]

template<typename Result >
Tile<Result>& TiledArray::conj_to ( Tile< Result > &  result)
inline

In-place complex conjugate a tile.

Template Parameters
ResultThe tile type
Parameters
resultThe tile to be conjugated
Returns
A reference to result

Definition at line 1311 of file tile.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ conj_to() [2/2]

template<typename Result , typename Scalar , typename std::enable_if< TiledArray::detail::is_numeric_v< Scalar >>::type * = nullptr>
Tile<Result>& TiledArray::conj_to ( Tile< Result > &  result,
const Scalar  factor 
)
inline

In-place complex conjugate and scale a tile.

Template Parameters
ResultThe tile type
ScalarA scalar type
Parameters
resultThe tile to be conjugated
factorThe scaling factor
Returns
A reference to result

Definition at line 1326 of file tile.h.

Here is the call graph for this function:

◆ dot()

template<typename Left , typename Right >
decltype(auto) TiledArray::dot ( const Tile< Left > &  left,
const Tile< Right > &  right 
)
inline

Vector dot product of a tile.

Template Parameters
LeftThe left-hand argument type
RightThe right-hand argument type
Parameters
leftThe left-hand argument tile to be contracted
rightThe right-hand argument tile to be contracted
Returns
A scalar that is equal to sum_i left[i] * right[i]

Definition at line 1591 of file tile.h.

Here is the call graph for this function:

◆ empty()

template<typename Arg >
bool TiledArray::empty ( const Tile< Arg > &  arg)
inline

Check that arg is empty (no data)

Template Parameters
ArgThe tile argument type
Parameters
argThe tile argument to be permuted
Returns
true if arg is empty, otherwise false.

Definition at line 646 of file tile.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ gemm() [1/3]

template<typename Left , typename Right , typename Scalar , typename std::enable_if< detail::is_numeric_v< Scalar >>::type * = nullptr>
decltype(auto) TiledArray::gemm ( const Tile< Left > &  left,
const Tile< Right > &  right,
const Scalar  factor,
const math::GemmHelper gemm_config 
)
inline

Contract 2 tensors over head/tail modes and scale the product.

The contraction is done via a GEMM operation with fused indices as defined by gemm_config.

Template Parameters
LeftThe left-hand tile type
RightThe right-hand tile type
ScalarA numeric type
Parameters
leftThe left-hand argument to be contracted
rightThe right-hand argument to be contracted
factorThe scaling factor
gemm_configA helper object used to simplify gemm operations
Returns
A tile that is equal to (left * right) * factor

Definition at line 1396 of file tile.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ gemm() [2/3]

template<typename Result , typename Left , typename Right , typename ElementMultiplyAddOp , typename std::enable_if< std::is_invocable_r_v< void, std::remove_reference_t< ElementMultiplyAddOp >, typename Result::value_type &, const typename Left::value_type &, const typename Right::value_type & >>::type * = nullptr>
Tile<Result>& TiledArray::gemm ( Tile< Result > &  result,
const Tile< Left > &  left,
const Tile< Right > &  right,
const math::GemmHelper gemm_config,
ElementMultiplyAddOp &&  element_multiplyadd_op 
)
inline

Contract 2 tensors over head/tail modes and accumulate into result using a custom element-wise multiply-add op The contraction is done via a GEMM operation with fused indices as defined by gemm_config.

Template Parameters
ResultThe result tile type
LeftThe left-hand tile type
RightThe right-hand tile type
ElementMultiplyAddOpa callable type with signature
void (Result::value_type& result, Left::value_type const& left,
Right::value_type const& right)
that implements custom multiply-add operation:
result = (result) ? result add left mult right : left mult add
Parameters
resultThe contracted result
leftThe left-hand argument to be contracted
rightThe right-hand argument to be contracted
factorThe scaling factor
gemm_configA helper object used to simplify gemm operations
element_multiplyadd_opa custom multiply op operation for tensor elements
Returns
A tile whose element result[i,j] obtained by executing foreach k: element_multiplyadd_op(result[i,j], left[i,k], right[k,j])

Definition at line 1460 of file tile.h.

Here is the call graph for this function:

◆ gemm() [3/3]

template<typename Result , typename Left , typename Right , typename Scalar , typename std::enable_if< detail::is_numeric_v< Scalar >>::type * = nullptr>
Tile<Result>& TiledArray::gemm ( Tile< Result > &  result,
const Tile< Left > &  left,
const Tile< Right > &  right,
const Scalar  factor,
const math::GemmHelper gemm_config 
)
inline

Contract 2 tensors over head/tail modes, scale the product, and add to result The contraction is done via a GEMM operation with fused indices as defined by gemm_config.

Template Parameters
ResultThe result tile type
LeftThe left-hand tile type
RightThe right-hand tile type
ScalarA numeric type
Parameters
resultThe contracted result
leftThe left-hand argument to be contracted
rightThe right-hand argument to be contracted
factorThe scaling factor
gemm_configA helper object used to simplify gemm operations
Returns
A tile that is equal to result + (left * right) * factor

Definition at line 1421 of file tile.h.

Here is the call graph for this function:

◆ inner_product()

template<typename Left , typename Right >
decltype(auto) TiledArray::inner_product ( const Tile< Left > &  left,
const Tile< Right > &  right 
)
inline

Vector inner product of a tile.

Template Parameters
LeftThe left-hand argument type
RightThe right-hand argument type
Parameters
leftThe left-hand argument tile to be contracted
rightThe right-hand argument tile to be contracted

Definition at line 1602 of file tile.h.

Here is the call graph for this function:

◆ inplace_binary()

template<typename Left , typename Right , typename Op >
Tile<Left>& TiledArray::inplace_binary ( Tile< Left > &  left,
const Tile< Right > &  right,
Op &&  op 
)
inline

Binary element-wise in-place transform.

Template Parameters
LeftThe left-hand tile type
RightThe right-hand tile type
OpAn element-wise operation type
Parameters
[in,out]leftThe left-hand argument to the transform; output contains the result of binary(left,right,op)
[in]rightThe right-hand argument to the transform
opAn element-wise operation
Returns
reference to left

Definition at line 1157 of file tile.h.

Here is the call graph for this function:

◆ inplace_unary()

template<typename Result , typename Op >
Tile<Result>& TiledArray::inplace_unary ( Tile< Result > &  arg,
Op &&  op 
)
inline

Unary element-wise in-place transform.

Template Parameters
ArgThe tile argument type
OpAn element-wise operation type
Parameters
[in,out]argThe tile to be transformed, on output for each i in arg.range() arg[i] contains op(arg[i])
opAn element-wise operation
Returns
reference to arg

Definition at line 1374 of file tile.h.

Here is the call graph for this function:

◆ max()

template<typename Arg >
decltype(auto) TiledArray::max ( const Tile< Arg > &  arg)
inline

Maximum element of a tile.

Template Parameters
ArgThe tile argument type
Parameters
argThe argument to find the maximum
Returns
A scalar that is equal to max(arg)

Definition at line 1549 of file tile.h.

Here is the caller graph for this function:

◆ min()

template<typename Arg >
decltype(auto) TiledArray::min ( const Tile< Arg > &  arg)
inline

Minimum element of a tile.

Template Parameters
ArgThe tile argument type
Parameters
argThe argument to find the minimum
Returns
A scalar that is equal to min(arg)

Definition at line 1559 of file tile.h.

Here is the caller graph for this function:

◆ mult() [1/4]

template<typename Left , typename Right >
decltype(auto) TiledArray::mult ( const Tile< Left > &  left,
const Tile< Right > &  right 
)
inline

Multiplication tile arguments.

Template Parameters
LeftThe left-hand tile type
RightThe right-hand tile type
Parameters
leftThe left-hand argument to be multiplied
rightThe right-hand argument to be multiplied
Returns
A tile that is equal to (left * right)

Definition at line 1018 of file tile.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ mult() [2/4]

template<typename Left , typename Right , typename Perm , typename = std::enable_if_t<detail::is_permutation_v<Perm>>>
decltype(auto) TiledArray::mult ( const Tile< Left > &  left,
const Tile< Right > &  right,
const Perm &  perm 
)
inline

Multiplication and permute tile arguments.

Template Parameters
LeftThe left-hand tile type
RightThe right-hand tile type
PermA permutation tile
Parameters
leftThe left-hand argument to be multiplied
rightThe right-hand argument to be multiplied
permThe permutation to be applied to the result
Returns
A tile that is equal to perm ^ (left * right)

Definition at line 1049 of file tile.h.

Here is the call graph for this function:

◆ mult() [3/4]

template<typename Left , typename Right , typename Scalar , typename std::enable_if< detail::is_numeric_v< Scalar >>::type * = nullptr>
decltype(auto) TiledArray::mult ( const Tile< Left > &  left,
const Tile< Right > &  right,
const Scalar  factor 
)
inline

Multiplication and scale tile arguments.

Template Parameters
LeftThe left-hand tile type
RightThe right-hand tile type
Parameters
leftThe left-hand argument to be multiplied
rightThe right-hand argument to be multiplied
factorThe scaling factor
Returns
A tile that is equal to (left * right) * factor

Definition at line 1033 of file tile.h.

Here is the call graph for this function:

◆ mult() [4/4]

template<typename Left , typename Right , typename Scalar , typename Perm , typename std::enable_if< detail::is_numeric_v< Scalar > &&detail::is_permutation_v< Perm >>::type * = nullptr>
decltype(auto) TiledArray::mult ( const Tile< Left > &  left,
const Tile< Right > &  right,
const Scalar  factor,
const Perm &  perm 
)
inline

Multiplication, scale, and permute tile arguments.

Template Parameters
LeftThe left-hand tile type
RightThe right-hand tile type
PermA permutation tile
Parameters
leftThe left-hand argument to be multiplied
rightThe right-hand argument to be multiplied
factorThe scaling factor
permThe permutation to be applied to the result
Returns
A tile that is equal to perm ^ (left * right) * factor

Definition at line 1068 of file tile.h.

Here is the call graph for this function:

◆ mult_to() [1/2]

template<typename Result , typename Arg >
Tile<Result>& TiledArray::mult_to ( Tile< Result > &  result,
const Tile< Arg > &  arg 
)
inline

Multiply to the result tile.

Template Parameters
ResultThe result tile type
ArgThe argument tile type
Parameters
resultThe result tile to be multiplied
argThe argument to be multiplied by the result
Returns
A tile that is equal to result *= arg

Definition at line 1081 of file tile.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ mult_to() [2/2]

template<typename Result , typename Arg , typename Scalar , typename std::enable_if< detail::is_numeric_v< Scalar >>::type * = nullptr>
Tile<Result>& TiledArray::mult_to ( Tile< Result > &  result,
const Tile< Arg > &  arg,
const Scalar  factor 
)
inline

Multiply and scale to the result tile.

Template Parameters
ResultThe result tile type
ArgThe argument tile type
Parameters
resultThe result tile to be multiplied
argThe argument to be multiplied by result
factorThe scaling factor
Returns
A tile that is equal to (result *= arg) *= factor

Definition at line 1097 of file tile.h.

Here is the call graph for this function:

◆ neg() [1/2]

template<typename Arg >
decltype(auto) TiledArray::neg ( const Tile< Arg > &  arg)
inline

Negate the tile argument.

Template Parameters
ArgThe tile argument type
Parameters
argThe argument to be negated
Returns
A tile that is equal to -arg
Note
equivalent to scale(arg,-1)

Definition at line 1218 of file tile.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ neg() [2/2]

template<typename Arg , typename Perm , typename = std::enable_if_t<detail::is_permutation_v<Perm>>>
decltype(auto) TiledArray::neg ( const Tile< Arg > &  arg,
const Perm &  perm 
)
inline

Negate and permute tile argument.

Template Parameters
ArgThe tile argument type
PermA permutation tile
Parameters
argThe argument to be negated
permThe permutation to be applied to the result
Returns
A tile that is equal to perm ^ -arg
Note
equivalent to scale(arg,-1,perm)

Definition at line 1232 of file tile.h.

Here is the call graph for this function:

◆ neg_to()

template<typename Result >
Tile<Result>& TiledArray::neg_to ( Tile< Result > &  result)
inline

In-place negate tile.

Template Parameters
ResultThe result tile type
Parameters
resultThe result tile to be negated
Returns
negated result
Note
equivalent to scale_to(arg,-1)

Definition at line 1243 of file tile.h.

Here is the call graph for this function:

◆ norm() [1/2]

template<typename Arg >
decltype(auto) TiledArray::norm ( const Tile< Arg > &  arg)
inline

Vector 2-norm of a tile.

Template Parameters
ArgThe tile argument type
Parameters
[in]argThe argument to be multiplied and summed
Returns
A scalar that is equal to sqrt(sum_i arg[i] * arg[i])

Definition at line 1527 of file tile.h.

Here is the caller graph for this function:

◆ norm() [2/2]

template<typename Arg , typename ResultType >
void TiledArray::norm ( const Tile< Arg > &  arg,
ResultType &  result 
)
inline

Vector 2-norm of a tile.

Template Parameters
ArgThe tile argument type
ResultTypeThe result type
Parameters
[in,out]argThe argument to be multiplied and summed; on output will contain the vector 2-norm of arg , i.e. sqrt(sum_i arg[i] * arg[i])

Definition at line 1539 of file tile.h.

Here is the call graph for this function:

◆ operator<<()

template<typename T >
std::ostream& TiledArray::operator<< ( std::ostream &  os,
const Tile< T > &  tile 
)
inline

Tile output stream operator

Template Parameters
TThe tensor type
Parameters
osThe output stream
tileThe tile to be printed
Returns
The modified output stream

Definition at line 1619 of file tile.h.

Here is the call graph for this function:

◆ permute()

template<typename Arg , typename Perm , typename = std::enable_if_t<detail::is_permutation_v<Perm>>>
decltype(auto) TiledArray::permute ( const Tile< Arg > &  arg,
const Perm &  perm 
)
inline

Create a permuted copy of arg.

Template Parameters
ArgThe tile argument type
PermA permutation tile
Parameters
argThe tile argument to be permuted
permThe permutation to be applied to the result
Returns
A tile that is equal to perm ^ arg

Definition at line 662 of file tile.h.

Here is the call graph for this function:

◆ product()

template<typename Arg >
decltype(auto) TiledArray::product ( const Tile< Arg > &  arg)
inline

Multiply the elements of a tile.

Template Parameters
ArgThe tile argument type
Parameters
argThe argument to be multiplied
Returns
A scalar that is equal to prod_i arg[i]

Definition at line 1506 of file tile.h.

Here is the caller graph for this function:

◆ scale() [1/2]

template<typename Arg , typename Scalar , typename std::enable_if< detail::is_numeric_v< Scalar >>::type * = nullptr>
decltype(auto) TiledArray::scale ( const Tile< Arg > &  arg,
const Scalar  factor 
)
inline

Scalar the tile argument.

Template Parameters
ArgThe tile argument type
Parameters
argThe left-hand argument to be scaled
factorThe scaling factor
Returns
A tile that is equal to arg * factor

Definition at line 1174 of file tile.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ scale() [2/2]

template<typename Arg , typename Scalar , typename Perm , typename std::enable_if< detail::is_numeric_v< Scalar > &&detail::is_permutation_v< Perm >>::type * = nullptr>
decltype(auto) TiledArray::scale ( const Tile< Arg > &  arg,
const Scalar  factor,
const Perm &  perm 
)
inline

Scale and permute tile argument.

Template Parameters
ArgThe tile argument type
PermA permutation tile
Parameters
argThe left-hand argument to be scaled
factorThe scaling factor
permThe permutation to be applied to the result
Returns
A tile that is equal to perm ^ (arg * factor)

Definition at line 1190 of file tile.h.

Here is the call graph for this function:

◆ scale_to()

template<typename Result , typename Scalar , typename std::enable_if< detail::is_numeric_v< Scalar >>::type * = nullptr>
Tile<Result>& TiledArray::scale_to ( Tile< Result > &  result,
const Scalar  factor 
)
inline

Scale to the result tile.

Template Parameters
ResultThe result tile type
Parameters
resultThe result tile to be scaled
factorThe scaling factor
Returns
A tile that is equal to result *= factor

Definition at line 1204 of file tile.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ shift() [1/2]

template<typename Arg , typename Index , typename = std::enable_if_t<detail::is_integral_range_v<Index>>>
decltype(auto) TiledArray::shift ( const Tile< Arg > &  arg,
const Index &  range_shift 
)
inline

Shift the range of arg.

Template Parameters
ArgThe tensor argument type
IndexAn integral range type
Parameters
argThe tile argument to be shifted
range_shiftThe offset to be applied to the argument range
Returns
A copy of the tile with a new range

Definition at line 677 of file tile.h.

Here is the call graph for this function:

◆ shift() [2/2]

template<typename Arg , typename Index , typename = std::enable_if_t<std::is_integral_v<Index>>>
decltype(auto) TiledArray::shift ( const Tile< Arg > &  arg,
const std::initializer_list< Index > &  range_shift 
)
inline

Shift the range of arg.

Template Parameters
ArgThe tensor argument type
IndexAn integral type
Parameters
argThe tile argument to be shifted
range_shiftThe offset to be applied to the argument range
Returns
A copy of the tile with a new range

Definition at line 690 of file tile.h.

Here is the call graph for this function:

◆ shift_to() [1/2]

template<typename Arg , typename Index , typename = std::enable_if_t<detail::is_integral_range_v<Index>>>
Tile<Arg>& TiledArray::shift_to ( Tile< Arg > &  arg,
const Index &  range_shift 
)
inline

Shift the range of arg in place.

Template Parameters
ArgThe tensor argument type
IndexAn integral range type
Parameters
argThe tile argument to be shifted
range_shiftThe offset to be applied to the argument range
Returns
A copy of the tile with a new range

Definition at line 704 of file tile.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ shift_to() [2/2]

template<typename Arg , typename Index , typename = std::enable_if_t<std::is_integral_v<Index>>>
Tile<Arg>& TiledArray::shift_to ( Tile< Arg > &  arg,
const std::initializer_list< Index > &  range_shift 
)
inline

Shift the range of arg in place.

Template Parameters
ArgThe tensor argument type
IndexAn integral type
Parameters
argThe tile argument to be shifted
range_shiftThe offset to be applied to the argument range
Returns
A copy of the tile with a new range

Definition at line 718 of file tile.h.

Here is the call graph for this function:

◆ squared_norm()

template<typename Arg >
decltype(auto) TiledArray::squared_norm ( const Tile< Arg > &  arg)
inline

Squared vector 2-norm of the elements of a tile.

Template Parameters
ArgThe tile argument type
Parameters
argThe argument to be multiplied and summed
Returns
The sum of the squared elements of arg
A scalar that is equal to sum_i arg[i] * arg[i]

Definition at line 1517 of file tile.h.

Here is the call graph for this function:

◆ subt() [1/6]

template<typename Arg , typename Scalar , typename std::enable_if< detail::is_numeric_v< Scalar >>::type * = nullptr>
decltype(auto) TiledArray::subt ( const Tile< Arg > &  arg,
const Scalar  value 
)
inline

Subtract a scalar constant from the tile argument.

Template Parameters
ArgThe tile argument type
Parameters
argThe left-hand argument to be subtracted
valueThe constant scalar to be subtracted
Returns
A tile that is equal to arg - value

Definition at line 943 of file tile.h.

Here is the call graph for this function:

◆ subt() [2/6]

template<typename Arg , typename Scalar , typename Perm , typename std::enable_if< detail::is_numeric_v< Scalar > &&detail::is_permutation_v< Perm >>::type * = nullptr>
decltype(auto) TiledArray::subt ( const Tile< Arg > &  arg,
const Scalar  value,
const Perm &  perm 
)
inline

Subtract a constant scalar and permute tile argument.

Template Parameters
ArgThe tile argument type
PermA permutation tile
Parameters
argThe left-hand argument to be subtracted
valueThe constant scalar value to be subtracted
permThe permutation to be applied to the result
Returns
A tile that is equal to perm ^ (arg - value)

Definition at line 959 of file tile.h.

Here is the call graph for this function:

◆ subt() [3/6]

template<typename Left , typename Right >
decltype(auto) TiledArray::subt ( const Tile< Left > &  left,
const Tile< Right > &  right 
)
inline

Subtract tile arguments.

Template Parameters
LeftThe left-hand tile type
RightThe right-hand tile type
Parameters
leftThe left-hand argument to be subtracted
rightThe right-hand argument to be subtracted
Returns
A tile that is equal to (left - right)

Definition at line 879 of file tile.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ subt() [4/6]

template<typename Left , typename Right , typename Perm , typename = std::enable_if_t<detail::is_permutation_v<Perm>>>
decltype(auto) TiledArray::subt ( const Tile< Left > &  left,
const Tile< Right > &  right,
const Perm &  perm 
)
inline

Subtract and permute tile arguments.

Template Parameters
LeftThe left-hand tile type
RightThe right-hand tile type
PermA permutation tile
Parameters
leftThe left-hand argument to be subtracted
rightThe right-hand argument to be subtracted
permThe permutation to be applied to the result
Returns
A tile that is equal to perm ^ (left - right)

Definition at line 910 of file tile.h.

Here is the call graph for this function:

◆ subt() [5/6]

template<typename Left , typename Right , typename Scalar , typename std::enable_if< detail::is_numeric_v< Scalar >>::type * = nullptr>
decltype(auto) TiledArray::subt ( const Tile< Left > &  left,
const Tile< Right > &  right,
const Scalar  factor 
)
inline

Subtract and scale tile arguments.

Template Parameters
LeftThe left-hand tile type
RightThe right-hand tile type
Parameters
leftThe left-hand argument to be subtracted
rightThe right-hand argument to be subtracted
factorThe scaling factor
Returns
A tile that is equal to (left - right) * factor

Definition at line 894 of file tile.h.

Here is the call graph for this function:

◆ subt() [6/6]

template<typename Left , typename Right , typename Scalar , typename Perm , typename std::enable_if< detail::is_numeric_v< Scalar > &&detail::is_permutation_v< Perm >>::type * = nullptr>
decltype(auto) TiledArray::subt ( const Tile< Left > &  left,
const Tile< Right > &  right,
const Scalar  factor,
const Perm &  perm 
)
inline

Subtract, scale, and permute tile arguments.

Template Parameters
LeftThe left-hand tile type
RightThe right-hand tile type
PermA permutation tile
Parameters
leftThe left-hand argument to be subtracted
rightThe right-hand argument to be subtracted
factorThe scaling factor
permThe permutation to be applied to the result
Returns
A tile that is equal to perm ^ (left - right) * factor

Definition at line 929 of file tile.h.

Here is the call graph for this function:

◆ subt_to() [1/3]

template<typename Result , typename Scalar , typename std::enable_if< detail::is_numeric_v< Scalar >>::type * = nullptr>
Tile<Result>& TiledArray::subt_to ( Tile< Result > &  result,
const Scalar  value 
)
inline

Subtract constant scalar from the result tile.

Template Parameters
ResultThe result tile type
Parameters
resultThe result tile
valueThe constant scalar to be subtracted from result
Returns
A tile that is equal to (result -= arg) *= factor

Definition at line 1003 of file tile.h.

Here is the call graph for this function:

◆ subt_to() [2/3]

template<typename Result , typename Arg >
Tile<Result>& TiledArray::subt_to ( Tile< Result > &  result,
const Tile< Arg > &  arg 
)
inline

Subtract from the result tile.

Template Parameters
ResultThe result tile type
ArgThe argument tile type
Parameters
resultThe result tile
argThe argument to be subtracted from the result
Returns
A tile that is equal to result[i] -= arg[i]

Definition at line 972 of file tile.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ subt_to() [3/3]

template<typename Result , typename Arg , typename Scalar , typename std::enable_if< detail::is_numeric_v< Scalar >>::type * = nullptr>
Tile<Result>& TiledArray::subt_to ( Tile< Result > &  result,
const Tile< Arg > &  arg,
const Scalar  factor 
)
inline

Subtract and scale from the result tile.

Template Parameters
ResultThe result tile type
ArgThe argument tile type
Parameters
resultThe result tile
argThe argument to be subtracted from result
factorThe scaling factor
Returns
A tile that is equal to (result -= arg) *= factor

Definition at line 988 of file tile.h.

Here is the call graph for this function:

◆ sum()

template<typename Arg >
decltype(auto) TiledArray::sum ( const Tile< Arg > &  arg)
inline

Sum the elements of a tile.

Template Parameters
ArgThe tile argument type
Parameters
argThe argument to be summed
Returns
A scalar that is equal to sum_i arg[i]

Definition at line 1496 of file tile.h.

Here is the caller graph for this function:

◆ trace()

template<typename Arg >
decltype(auto) TiledArray::trace ( const Tile< Arg > &  arg)
inline

Sum the hyper-diagonal elements a tile.

Template Parameters
ArgThe tile argument type
Parameters
argThe argument to be summed
Returns
The sum of the hyper-diagonal elements of arg

Definition at line 1477 of file tile.h.

Here is the caller graph for this function:

◆ unary() [1/2]

template<typename Arg , typename Op >
decltype(auto) TiledArray::unary ( const Tile< Arg > &  arg,
Op &&  op 
)
inline

Unary element-wise transform producing a new tile.

Template Parameters
ArgThe tile argument type
OpAn element-wise operation type
Parameters
[in]argThe tile to be transformed
opAn element-wise operation
Returns
result where for each i in arg.range() result[i]==op(arg[i])

Definition at line 1344 of file tile.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ unary() [2/2]

template<typename Arg , typename Op , typename Perm , typename = std::enable_if_t<detail::is_permutation_v<Perm>>>
decltype(auto) TiledArray::unary ( const Tile< Arg > &  arg,
Op &&  op,
const Perm &  perm 
)
inline

Unary element-wise transform producing a new tile.

Template Parameters
ArgThe tile argument type
OpAn element-wise operation type
Parameters
[in]argThe tile to be transformed
opAn element-wise operation
permThe permutation to be applied to the result of the transform
Returns
perm^result where for each i in arg.range() result[i]==op(arg[i])

Definition at line 1360 of file tile.h.

Here is the call graph for this function:

Variable Documentation

◆ is_consumable_tile_v

template<typename T >
constexpr const bool TiledArray::is_consumable_tile_v = is_consumable_tile<T>::value
constexpr

is_consumable_tile_v<T> is an alias for is_consumable_tile<T>::value

Definition at line 618 of file type_traits.h.

◆ is_lazy_tile_v

template<typename T >
constexpr const bool TiledArray::is_lazy_tile_v = is_lazy_tile<T>::value
constexpr

is_lazy_tile_v<T> is an alias for is_lazy_tile<T>::value

Definition at line 598 of file type_traits.h.

decltype(auto) add(const Tile< Left > &left, const Tile< Right > &right)
Add tile arguments.
Definition: tile.h:734
decltype(auto) mult(const Tile< Left > &left, const Tile< Right > &right)
Multiplication tile arguments.
Definition: tile.h:1018