TiledArray  0.7.0
Tile interface for user defined tensor types

Namespaces

 TiledArray::detail
 

Classes

class  TiledArray::Tile< T >
 An N-dimensional shallow copy wrapper for tile objects. More...
 
struct  TiledArray::Cast< TiledArray::Tensor< typename T::value_type, Allocator >, Tile< T >, detail::void_t< decltype(std::declval< TiledArray::Cast< TiledArray::Tensor< typename T::value_type, Allocator >, T >>()(std::declval< const T & >()))> >
 implement conversions from Tile<T> to TiledArray::Tensor<T::value_type,Allocator> More...
 
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 >
decltype(auto) TiledArray::permute (const Tile< Arg > &arg, const Permutation &perm)
 Create a permuted copy of arg. More...
 
template<typename Arg , typename Index >
decltype(auto) TiledArray::shift (const Tile< Arg > &arg, const Index &range_shift)
 Shift the range of arg. More...
 
template<typename Arg , typename Index >
Tile< Arg > & TiledArray::shift_to (Tile< Arg > &arg, const 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< Scalar >::value >::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 >
decltype(auto) TiledArray::add (const Tile< Left > &left, const Tile< Right > &right, const Permutation &perm)
 Add and permute tile arguments. More...
 
template<typename Left , typename Right , typename Scalar , typename std::enable_if< detail::is_numeric< Scalar >::value >::type * = nullptr>
decltype(auto) TiledArray::add (const Tile< Left > &left, const Tile< Right > &right, const Scalar factor, const Permutation &perm)
 Add, scale, and permute tile arguments. More...
 
template<typename Arg , typename Scalar , typename std::enable_if< detail::is_numeric< Scalar >::value >::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 std::enable_if< detail::is_numeric< Scalar >::value >::type * = nullptr>
decltype(auto) TiledArray::add (const Tile< Arg > &arg, const Scalar value, const Permutation &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< Scalar >::value >::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< Scalar >::value >::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< Scalar >::value >::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 >
decltype(auto) TiledArray::subt (const Tile< Left > &left, const Tile< Right > &right, const Permutation &perm)
 Subtract and permute tile arguments. More...
 
template<typename Left , typename Right , typename Scalar , typename std::enable_if< detail::is_numeric< Scalar >::value >::type * = nullptr>
decltype(auto) TiledArray::subt (const Tile< Left > &left, const Tile< Right > &right, const Scalar factor, const Permutation &perm)
 Subtract, scale, and permute tile arguments. More...
 
template<typename Arg , typename Scalar , typename std::enable_if< detail::is_numeric< Scalar >::value >::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 std::enable_if< detail::is_numeric< Scalar >::value >::type * = nullptr>
decltype(auto) TiledArray::subt (const Tile< Arg > &arg, const Scalar value, const Permutation &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< Scalar >::value >::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< Scalar >::value >::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< Scalar >::value >::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 >
decltype(auto) TiledArray::mult (const Tile< Left > &left, const Tile< Right > &right, const Permutation &perm)
 Multiplication and permute tile arguments. More...
 
template<typename Left , typename Right , typename Scalar , typename std::enable_if< detail::is_numeric< Scalar >::value >::type * = nullptr>
decltype(auto) TiledArray::mult (const Tile< Left > &left, const Tile< Right > &right, const Scalar factor, const Permutation &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< Scalar >::value >::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 Arg , typename Scalar , typename std::enable_if< detail::is_numeric< Scalar >::value >::type * = nullptr>
decltype(auto) TiledArray::scale (const Tile< Arg > &arg, const Scalar factor)
 Scalar the tile argument. More...
 
template<typename Arg , typename Scalar , typename std::enable_if< detail::is_numeric< Scalar >::value >::type * = nullptr>
decltype(auto) TiledArray::scale (const Tile< Arg > &arg, const Scalar factor, const Permutation &perm)
 Scale and permute tile argument. More...
 
template<typename Result , typename Scalar , typename std::enable_if< detail::is_numeric< Scalar >::value >::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 >
decltype(auto) TiledArray::neg (const Tile< Arg > &arg, const Permutation &perm)
 Negate and permute tile argument. More...
 
template<typename Result >
Tile< Result > & TiledArray::neg_to (Tile< Result > &result)
 Multiplication constant scalar to a 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< Scalar >::value >::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 >
decltype(auto) TiledArray::conj (const Tile< Arg > &arg, const Permutation &perm)
 Create a complex conjugated and permuted copy of a tile. More...
 
template<typename Arg , typename Scalar , typename std::enable_if< TiledArray::detail::is_numeric< Scalar >::value >::type * = nullptr>
decltype(auto) TiledArray::conj (const Tile< Arg > &arg, const Scalar factor, const Permutation &perm)
 Create a complex conjugated, scaled, and permuted copy of a tile. More...
 
template<typename Result >
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< Scalar >::value >::type * = nullptr>
Result & TiledArray::conj_to (Tile< Result > &result, const Scalar factor)
 In-place complex conjugate and scale a tile. More...
 
template<typename Left , typename Right , typename Scalar , typename std::enable_if< detail::is_numeric< Scalar >::value >::type * = nullptr>
decltype(auto) TiledArray::gemm (const Tile< Left > &left, const Tile< Right > &right, const Scalar factor, const math::GemmHelper &gemm_config)
 Contract and scale tile arguments. More...
 
template<typename Result , typename Left , typename Right , typename Scalar , typename std::enable_if< detail::is_numeric< Scalar >::value >::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)
 Contract and scale tile arguments to the result tile. More...
 
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 >
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::operator+ (const Tile< Left > &left, const Tile< Right > &right)
 Add tiles operator. More...
 
template<typename Left , typename Right >
Tile< Left > & TiledArray::operator+= (Tile< Left > &left, const Tile< Right > &right)
 In-place add tile operator. More...
 
template<typename Left , typename Right >
decltype(auto) TiledArray::operator- (const Tile< Left > &left, const Tile< Right > &right)
 Subtract tiles operator. More...
 
template<typename Left , typename Right >
Tile< Left > & TiledArray::operator-= (Tile< Left > &left, const Tile< Right > &right)
 In-place subtract tile operator. More...
 
template<typename Left , typename Right >
decltype(auto) TiledArray::operator* (const Tile< Left > &left, const Tile< Right > &right)
 Product tiles operator. More...
 
template<typename Left , typename Right , typename std::enable_if< detail::is_numeric< Right >::value >::type * = nullptr>
decltype(auto) TiledArray::operator* (const Tile< Left > &left, const Right right)
 Scale tile operator. More...
 
template<typename Left , typename Right , typename std::enable_if< TiledArray::detail::is_numeric< Left >::value >::type * = nullptr>
decltype(auto) TiledArray::operator* (const Left left, const Tile< Right > &right)
 Scale tile operator. More...
 
template<typename Left , typename Right >
Tile< Left > & TiledArray::operator*= (Tile< Left > &left, const Tile< Right > &right)
 In-place product tile operator. More...
 
template<typename Arg >
decltype(auto) TiledArray::operator- (const Tile< Arg > &arg)
 Negate tile operator. More...
 
template<typename Arg >
decltype(auto) TiledArray::operator* (const Permutation &perm, Tile< Arg > const arg)
 Permute tile operator. More...
 
template<typename T >
std::ostream & TiledArray::operator<< (std::ostream &os, const Tile< T > &tile)
 Tile output stream operator. More...
 

Detailed Description

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 957 of file tile.h.

Here is the caller 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 966 of file tile.h.

Here is the caller graph for this function:

◆ add() [1/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 362 of file tile.h.

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

◆ add() [2/6]

template<typename Left , typename Right , typename Scalar , typename std::enable_if< detail::is_numeric< Scalar >::value >::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 376 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,
const Permutation perm 
)
inline

Add and permute 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
permThe permutation to be applied to the result
Returns
A tile that is equal to perm * (left + right)

Definition at line 388 of file tile.h.

Here is the call graph for this function:

◆ add() [4/6]

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

Add, scale, and permute 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
permThe permutation to be applied to the result
Returns
A tile that is equal to perm ^ (left + right) * factor

Definition at line 403 of file tile.h.

Here is the call graph for this function:

◆ add() [5/6]

template<typename Arg , typename Scalar , typename std::enable_if< detail::is_numeric< Scalar >::value >::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 416 of file tile.h.

Here is the call graph for this function:

◆ add() [6/6]

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

Add a constant scalar and permute tile argument.

Template Parameters
ArgThe tile argument type
ScalarA scalar type
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 430 of file tile.h.

Here is the call graph for this function:

◆ add_to() [1/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 441 of file tile.h.

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

◆ add_to() [2/3]

template<typename Result , typename Arg , typename Scalar , typename std::enable_if< detail::is_numeric< Scalar >::value >::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 458 of file tile.h.

Here is the call graph for this function:

◆ add_to() [3/3]

template<typename Result , typename Scalar , typename std::enable_if< detail::is_numeric< Scalar >::value >::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 472 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 292 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 772 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 Scalar , typename std::enable_if< TiledArray::detail::is_numeric< Scalar >::value >::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 786 of file tile.h.

Here is the call graph for this function:

◆ conj() [3/4]

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

Create a complex conjugated and permuted copy of a tile.

Template Parameters
ArgThe tile argument type
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 796 of file tile.h.

Here is the call graph for this function:

◆ conj() [4/4]

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

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

Template Parameters
ArgThe tile argument type
ScalarA scalar type
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 811 of file tile.h.

Here is the call graph for this function:

◆ conj_to() [1/2]

template<typename Result >
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 820 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< Scalar >::value >::type * = nullptr>
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 836 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 977 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 305 of file tile.h.

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

◆ gemm() [1/2]

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

Contract and scale tile arguments.

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
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 857 of file tile.h.

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

◆ gemm() [2/2]

template<typename Result , typename Left , typename Right , typename Scalar , typename std::enable_if< detail::is_numeric< Scalar >::value >::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 and scale tile arguments to the result tile.

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
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 876 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 939 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 948 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 614 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 Scalar , typename std::enable_if< detail::is_numeric< Scalar >::value >::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 628 of file tile.h.

Here is the call graph for this function:

◆ mult() [3/4]

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

Multiplication and permute 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
permThe permutation to be applied to the result
Returns
A tile that is equal to perm ^ (left * right)

Definition at line 641 of file tile.h.

Here is the call graph for this function:

◆ mult() [4/4]

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

Multiplication, scale, and permute 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
permThe permutation to be applied to the result
Returns
A tile that is equal to perm ^ (left * right) * factor

Definition at line 656 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 668 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< Scalar >::value >::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 683 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

Definition at line 739 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 >
decltype(auto) TiledArray::neg ( const Tile< Arg > &  arg,
const Permutation perm 
)
inline

Negate and permute tile argument.

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

Definition at line 749 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

Multiplication constant scalar to a tile.

Template Parameters
ResultThe result tile type
Parameters
resultThe result tile to be negated
Returns
A tile that is equal to result = -result

Definition at line 758 of file tile.h.

Here is the call graph for this function:

◆ norm()

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
argThe argument to be multiplied and summed
Returns
A scalar that is equal to sqrt(sum_i arg[i] * arg[i])

Definition at line 930 of file tile.h.

Here is the caller graph for this function:

◆ operator*() [1/4]

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

Product tiles operator.

Template Parameters
LeftThe left-hand tensor type
RightThe right-hand tensor type
Parameters
leftThe left-hand tile
rightThe right-hand tile
Returns
The product of the left and right tiles

Definition at line 1037 of file tile.h.

Here is the call graph for this function:

◆ operator*() [2/4]

template<typename Left , typename Right , typename std::enable_if< detail::is_numeric< Right >::value >::type * = nullptr>
decltype(auto) TiledArray::operator* ( const Tile< Left > &  left,
const Right  right 
)
inline

Scale tile operator.

Template Parameters
LeftThe left-hand tensor type
RightThe right-hand scalar type
Parameters
leftThe left-hand tile
rightThe right-hand scaling factor
Returns
The left tile scaled by right

Definition at line 1049 of file tile.h.

Here is the call graph for this function:

◆ operator*() [3/4]

template<typename Left , typename Right , typename std::enable_if< TiledArray::detail::is_numeric< Left >::value >::type * = nullptr>
decltype(auto) TiledArray::operator* ( const Left  left,
const Tile< Right > &  right 
)
inline

Scale tile operator.

Template Parameters
LeftThe left-hand scalar type
RightThe right-hand scalar type
Parameters
leftThe left-hand scaling factor
rightThe right-hand tile
Returns
The right tile scaled by left

Definition at line 1061 of file tile.h.

Here is the call graph for this function:

◆ operator*() [4/4]

template<typename Arg >
decltype(auto) TiledArray::operator* ( const Permutation perm,
Tile< Arg > const  arg 
)
inline

Permute tile operator.

Template Parameters
ArgThe argument tensor type
Parameters
permThe permutation to be applied to arg
argThe argument tile
Returns
A permuted copy of arg

Definition at line 1092 of file tile.h.

Here is the call graph for this function:

◆ operator*=()

template<typename Left , typename Right >
Tile<Left>& TiledArray::operator*= ( Tile< Left > &  left,
const Tile< Right > &  right 
)
inline

In-place product tile operator.

Multiply the elements of the right tile by that of the left tile.

Template Parameters
LeftThe left-hand tensor type
RightThe right-hand tensor type
Parameters
leftThe left-hand tile
rightThe right-hand tile
Returns
The left tile, left[i] *= right[i]

Definition at line 1073 of file tile.h.

Here is the call graph for this function:

◆ operator+()

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

Add tiles operator.

Template Parameters
LeftThe left-hand tensor type
RightThe right-hand tensor type
Parameters
leftThe left-hand tile
rightThe right-hand tile
Returns
The sum of the left and right tiles

Definition at line 991 of file tile.h.

Here is the call graph for this function:

◆ operator+=()

template<typename Left , typename Right >
Tile<Left>& TiledArray::operator+= ( Tile< Left > &  left,
const Tile< Right > &  right 
)
inline

In-place add tile operator.

Add the elements of the right tile to that of the left tile.

Template Parameters
LeftThe left-hand tensor type
RightThe right-hand tensor type
Parameters
leftThe left-hand tile
rightThe right-hand tile
Returns
The left tile, left[i] += right[i]

Definition at line 1003 of file tile.h.

Here is the call graph for this function:

◆ operator-() [1/2]

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

Subtract tiles operator.

Template Parameters
LeftThe left-hand tensor type
RightThe right-hand tensor type
Parameters
leftThe left-hand tile
rightThe right-hand tile
Returns
The difference of the left and right tiles

Definition at line 1014 of file tile.h.

Here is the call graph for this function:

◆ operator-() [2/2]

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

Negate tile operator.

Template Parameters
ArgThe argument tensor type
Parameters
argThe argument tile
Returns
A negated copy of arg

Definition at line 1082 of file tile.h.

Here is the call graph for this function:

◆ operator-=()

template<typename Left , typename Right >
Tile<Left>& TiledArray::operator-= ( Tile< Left > &  left,
const Tile< Right > &  right 
)
inline

In-place subtract tile operator.

Subtract the elements of the right tile from that of the left tile.

Template Parameters
LeftThe left-hand tensor type
RightThe right-hand tensor type
Parameters
leftThe left-hand tile
rightThe right-hand tile
Returns
The left tile, left[i] -= right[i]

Definition at line 1026 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 printted
Returns
The modified output stream

Definition at line 1102 of file tile.h.

◆ permute()

template<typename Arg >
decltype(auto) TiledArray::permute ( const Tile< Arg > &  arg,
const Permutation perm 
)
inline

Create a permuted copy of arg.

Template Parameters
ArgThe tile argument type
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 319 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 911 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< Scalar >::value >::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 701 of file tile.h.

Here is the call graph for this function:

◆ scale() [2/2]

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

Scale and permute tile argument.

Template Parameters
ArgThe tile argument type
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 714 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< Scalar >::value >::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 725 of file tile.h.

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

◆ shift()

template<typename Arg , typename 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 array 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 335 of file tile.h.

Here is the call graph for this function:

◆ shift_to()

template<typename Arg , typename 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 array 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 346 of file tile.h.

Here is the call graph for this function:
Here is the caller 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 921 of file tile.h.

Here is the caller graph for this function:

◆ subt() [1/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 489 of file tile.h.

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

◆ subt() [2/6]

template<typename Left , typename Right , typename Scalar , typename std::enable_if< detail::is_numeric< Scalar >::value >::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 503 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,
const Permutation perm 
)
inline

Subtract and permute 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
permThe permutation to be applied to the result
Returns
A tile that is equal to perm ^ (left - right)

Definition at line 516 of file tile.h.

Here is the call graph for this function:

◆ subt() [4/6]

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

Subtract, scale, and permute 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
permThe permutation to be applied to the result
Returns
A tile that is equal to perm ^ (left - right) * factor

Definition at line 531 of file tile.h.

Here is the call graph for this function:

◆ subt() [5/6]

template<typename Arg , typename Scalar , typename std::enable_if< detail::is_numeric< Scalar >::value >::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 544 of file tile.h.

Here is the call graph for this function:

◆ subt() [6/6]

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

Subtract a constant scalar and permute tile argument.

Template Parameters
ArgThe tile argument type
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 557 of file tile.h.

Here is the call graph for this function:

◆ subt_to() [1/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 568 of file tile.h.

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

◆ subt_to() [2/3]

template<typename Result , typename Arg , typename Scalar , typename std::enable_if< detail::is_numeric< Scalar >::value >::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 584 of file tile.h.

Here is the call graph for this function:

◆ subt_to() [3/3]

template<typename Result , typename Scalar , typename std::enable_if< detail::is_numeric< Scalar >::value >::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 597 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 902 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 893 of file tile.h.

Here is the caller graph for this function: