tile_interface.h File Reference
#include <TiledArray/tensor/type_traits.h>
#include <TiledArray/type_traits.h>
#include <iterator>
#include <vector>
Include dependency graph for tile_interface.h:
This graph shows which files directly or indirectly include this file:

Namespaces

 TiledArray
 
 TiledArray::math
 
 TiledArray::detail
 

Typedefs

template<typename... T>
using TiledArray::result_of_subt_t = decltype(subt(std::declval< T >()...))
 
template<typename... T>
using TiledArray::result_of_subt_to_t = decltype(subt_to(std::declval< T >()...))
 
template<typename... T>
using TiledArray::result_of_mult_t = decltype(mult(std::declval< T >()...))
 
template<typename... T>
using TiledArray::result_of_mult_to_t = decltype(mult_to(std::declval< T >()...))
 
template<typename... T>
using TiledArray::result_of_binary_t = decltype(binary(std::declval< T >()...))
 
template<typename... T>
using TiledArray::result_of_inplace_binary_t = decltype(inplace_binary(std::declval< T >()...))
 
template<typename... T>
using TiledArray::result_of_neg_t = decltype(neg(std::declval< T >()...))
 
template<typename... T>
using TiledArray::result_of_neg_to_t = decltype(neg_to(std::declval< T >()...))
 
template<typename... T>
using TiledArray::result_of_conj_t = decltype(conj(std::declval< T >()...))
 
template<typename... T>
using TiledArray::result_of_conj_to_t = decltype(conj_to(std::declval< T >()...))
 
template<typename... T>
using TiledArray::result_of_unary_t = decltype(unary(std::declval< T >()...))
 
template<typename... T>
using TiledArray::result_of_inplace_unary_t = decltype(inplace_unary(std::declval< T >()...))
 
template<typename... T>
using TiledArray::result_of_gemm_t = decltype(gemm(std::declval< T >()...))
 
template<typename T >
using TiledArray::result_of_sum_t = decltype(sum(std::declval< T >()))
 
template<typename T >
using TiledArray::result_of_product_t = decltype(product(std::declval< T >()))
 
template<typename T >
using TiledArray::result_of_squared_norm_t = decltype(squared_norm(std::declval< T >()))
 
template<typename T , typename ResultType = T>
using TiledArray::result_of_norm_t = decltype(norm(std::declval< T >(), std::declval< ResultType & >()))
 
template<typename T >
using TiledArray::result_of_max_t = decltype(max(std::declval< T >()))
 
template<typename T >
using TiledArray::result_of_min_t = decltype(min(std::declval< T >()))
 
template<typename T >
using TiledArray::result_of_abs_max_t = decltype(abs_max(std::declval< T >()))
 
template<typename T >
using TiledArray::result_of_abs_min_t = decltype(abs_min(std::declval< T >()))
 
template<typename L , typename R >
using TiledArray::result_of_dot_t = decltype(dot(std::declval< L >(), std::declval< R >()))
 

Functions

template<typename Left , typename Right >
auto TiledArray::subt (const Left &left, const Right &right)
 Subtract tile arguments. More...
 
template<typename Left , typename Right , typename Scalar , typename std::enable_if< detail::is_numeric_v< Scalar >>::type * = nullptr>
auto TiledArray::subt (const Left &left, const 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>>>
auto TiledArray::subt (const Left &left, const 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>
auto TiledArray::subt (const Left &left, const 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>
auto TiledArray::subt (const 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>
auto TiledArray::subt (const Arg &arg, const Scalar value, const Perm &perm)
 Subtract a constant scalar and permute tile argument. More...
 
template<typename Result , typename Arg >
Result & TiledArray::subt_to (Result &result, const 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>
Result & TiledArray::subt_to (Result &result, const 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>
Result & TiledArray::subt_to (Result &result, const Scalar value)
 Subtract constant scalar from the result tile. More...
 
template<typename Left , typename Right >
auto TiledArray::mult (const Left &left, const Right &right)
 Multiplication tile arguments. More...
 
template<typename Left , typename Right , typename Scalar , std::enable_if_t< TiledArray::detail::is_numeric_v< Scalar >> * = nullptr>
auto TiledArray::mult (const Left &left, const 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> && detail::has_member_function_mult_anyreturn_v< const Left, const Right&, const Perm&>>>
auto TiledArray::mult (const Left &left, const Right &right, const Perm &perm)
 Multiplication and permute tile arguments. More...
 
template<typename Left , typename Right , typename Scalar , typename Perm , std::enable_if_t< TiledArray::detail::is_numeric_v< Scalar > &&detail::is_permutation_v< Perm >> * = nullptr>
auto TiledArray::mult (const Left &left, const Right &right, const Scalar factor, const Perm &perm)
 Multiplication, scale, and permute tile arguments. More...
 
template<typename Result , typename Arg >
Result & TiledArray::mult_to (Result &result, const Arg &arg)
 Multiply to the result tile. More...
 
template<typename Result , typename Arg , typename Scalar , std::enable_if_t< TiledArray::detail::is_numeric_v< Scalar >> * = nullptr>
Result & TiledArray::mult_to (Result &result, const 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 Left &left, const 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 Left &left, const Right &right, Op &&op, const Perm &perm)
 Binary element-wise transform producing a new tile. More...
 
template<typename Left , typename Right , typename Op >
Left & TiledArray::inplace_binary (Left &left, const Right &right, Op &&op)
 Binary element-wise in-place transform. More...
 
template<typename Arg >
auto TiledArray::neg (const Arg &arg)
 Negate the tile argument. More...
 
template<typename Arg , typename Perm , typename = std::enable_if_t<detail::is_permutation_v<Perm>>>
auto TiledArray::neg (const Arg &arg, const Perm &perm)
 Negate and permute tile argument. More...
 
template<typename Result >
Result & TiledArray::neg_to (Result &result)
 Negate the tile argument in-place. More...
 
template<typename Arg >
auto TiledArray::conj (const 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>
auto TiledArray::conj (const 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>>>
auto TiledArray::conj (const 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>
auto TiledArray::conj (const Arg &arg, const Scalar factor, const Perm &perm)
 Create a complex conjugated, scaled, and permuted copy of a tile. More...
 
template<typename Result >
Result & TiledArray::conj_to (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>
Result & TiledArray::conj_to (Result &result, const Scalar factor)
 In-place complex conjugate and scale a tile. More...
 
template<typename Arg , typename Op >
decltype(auto) TiledArray::unary (const 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 Arg &arg, Op &&op, const Perm &perm)
 Unary element-wise transform producing a new tile. More...
 
template<typename Result , typename Op >
Result & TiledArray::inplace_unary (Result &arg, Op &&op)
 Unary element-wise in-place transform. More...
 
template<typename Left , typename Right , typename Scalar , std::enable_if_t< TiledArray::detail::is_numeric_v< Scalar >> * = nullptr>
auto TiledArray::gemm (const Left &left, const 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 , std::enable_if_t< TiledArray::detail::is_numeric_v< Scalar >> * = nullptr>
Result & TiledArray::gemm (Result &result, const Left &left, const Right &right, const Scalar factor, const math::GemmHelper &gemm_config)
 
template<typename Result , typename Left , typename Right , typename ElementMultiplyAddOp , std::enable_if_t< 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 & >> * = nullptr>
Result & TiledArray::gemm (Result &result, const Left &left, const Right &right, const math::GemmHelper &gemm_config, ElementMultiplyAddOp &&element_multiplyadd_op)
 
template<typename Arg >
auto TiledArray::sum (const Arg &arg)
 Sum the hyper-diagonal elements a tile. More...
 
template<typename Arg >
auto TiledArray::product (const Arg &arg)
 Multiply the elements of a tile. More...
 
template<typename Arg >
auto TiledArray::squared_norm (const Arg &arg)
 Squared vector 2-norm of the elements of a tile. More...
 
template<typename Arg >
auto TiledArray::norm (const Arg &arg)
 Vector 2-norm of a tile. More...
 
template<typename Arg , typename ResultType >
void TiledArray::norm (const Arg &arg, ResultType &result)
 Vector 2-norm of a tile. More...
 
template<typename Arg >
auto TiledArray::max (const Arg &arg)
 Maximum element of a tile. More...
 
template<typename Arg >
auto TiledArray::min (const Arg &arg)
 Minimum element of a tile. More...
 
template<typename Arg >
auto TiledArray::abs_max (const Arg &arg)
 Absolute maximum element of a tile. More...
 
template<typename Arg >
auto TiledArray::abs_min (const Arg &arg)
 Absolute mainimum element of a tile. More...
 
template<typename Left , typename Right >
auto TiledArray::dot (const Left &left, const Right &right)
 Vector dot product of two tiles. More...
 
template<typename Left , typename Right >
auto TiledArray::inner_product (const Left &left, const Right &right)
 Vector inner product of two tiles. More...