TiledArray::detail Namespace Reference

Classes

struct  absolute_value
 
class  Add
 Tile addition operation. More...
 
struct  ArgumentHelper
 
struct  ArgumentHelper< Future< T > >
 
struct  ArgumentHelper< std::pair< Future< T >, Future< U > > >
 
class  ArrayEvalImpl
 Distributed evaluator for TiledArray::Array objects. More...
 
class  ArrayImpl
 Tensor implementation and base for other tensor implementation objects. More...
 
class  ArrayIterator
 Distributed tensor iterator. More...
 
class  Backtrace
 
class  BinaryEvalImpl
 Binary, distributed tensor evaluator. More...
 
class  BinaryTransformIterator
 Binary transform iterator. More...
 
class  BinaryWrapper
 Binary tile operation wrapper. More...
 
class  Bitset
 Fixed size bitset. More...
 
class  BlockedPmap
 A blocked process map. More...
 
struct  CanMakeRandom
 
struct  CanMakeRandom< double >
 Enables generating random double values. More...
 
struct  CanMakeRandom< float >
 Enables generating random float values. More...
 
struct  CanMakeRandom< int >
 Enables generating random int values. More...
 
struct  CanMakeRandom< std::complex< double > >
 Enables generating random std::complex<double> values. More...
 
struct  CanMakeRandom< std::complex< float > >
 Enables generating random std::complex<float> values. More...
 
struct  cast_then_op
 
struct  cast_then_op< DstTile, SrcTile, Op, std::enable_if_t<!std::is_same< DstTile, SrcTile >::value > >
 
struct  cast_then_op< Tile, Tile, Op, void >
 
class  ComplexConjugate
 
class  ComplexConjugate< ComplexNegTag >
 
class  ComplexConjugate< void >
 Specialization of ComplexConjugate for the case of a unit/identity factor. More...
 
struct  ComplexNegTag
 
class  ContractReduce
 Contract and (sum) reduce operation. More...
 
class  ContractReduce< Result, Left, Right, TiledArray::detail::ComplexConjugate< Scalar > >
 Contract and reduce operation. More...
 
class  ContractReduce< Result, Left, Right, TiledArray::detail::ComplexConjugate< void > >
 Contract and (sum) reduce operation. More...
 
class  ContractReduceBase
 Contract and (sum) reduce base. More...
 
class  CyclicPmap
 Maps cyclically a sequence of indices onto a 2-d matrix of processes. More...
 
struct  default_permutation
 detect cuda tile More...
 
struct  default_permutation< Tensor, std::enable_if_t< is_tensor_of_tensor_v< Tensor > > >
 
struct  default_permutation< Tensor, std::enable_if_t<!is_tensor_of_tensor_v< Tensor > > >
 
struct  default_world
 
class  dist_subarray_vec
 global view of a tilewise-round-robin distributed std::vector of Arrays More...
 
class  DistEval
 Tensor expression object. More...
 
class  DistEvalImpl
 Distributed evaluator implementation object. More...
 
class  DistributedStorage
 Distributed storage container. More...
 
struct  eval_trait_base
 
struct  eval_trait_base< T, typename std::enable_if< has_member_type_eval_type< T >::value &&(detail::is_explicitly_convertible< T, typename T::eval_type >::value||detail::is_explicitly_convertible< T, madness::Future< typename T::eval_type >>::value||detail::is_implicitly_convertible< T, typename T::eval_type >::value||detail::is_implicitly_convertible< T, madness::Future< typename T::eval_type >>::value)>::type >
 
struct  has_conversion_operator
 
struct  has_conversion_operator< From, To, typename std::enable_if< is_type< decltype(std::declval< From >().operator To &())>::value >::type >
 
struct  has_conversion_operator< From, To, typename std::enable_if< is_type< decltype(std::declval< From >().operator To())>::value >::type >
 
class  HashPmap
 Hashed process map. More...
 
struct  is_array
 
struct  is_array< DistArray< T, P > >
 
struct  is_array_tile
 Detect tiles used by ArrayEvalImpl. More...
 
struct  is_array_tile< TiledArray::detail::LazyArrayTile< T, Op > >
 
struct  is_bidirectional_iterator
 
struct  is_boost_gettable
 
struct  is_boost_gettable< I, T, std::void_t< decltype(::boost::get< I >(std::declval< const T & >()))> >
 
struct  is_btas_tensor
 
struct  is_btas_tensor< btas::Tensor< T, Args... > >
 
struct  is_complete_type
 helper to implement other metafunctions is_complete_type<T>::value is true if T is a complete type More...
 
struct  is_complete_type< T, decltype(void(sizeof(T)))>
 
struct  is_complete_type< void >
 
struct  is_complex
 
struct  is_complex< std::complex< T > >
 
struct  is_contiguous_range
 
struct  is_contiguous_range< T, std::void_t< decltype(std::data(std::declval< T & >()))> >
 
struct  is_contiguous_range_helper
 
struct  is_contiguous_range_helper< Range >
 
struct  is_contiguous_tensor
 
struct  is_contiguous_tensor< T >
 
struct  is_contiguous_tensor< T1, T2, Ts... >
 
struct  is_contiguous_tensor<>
 
struct  is_contiguous_tensor_helper
 
struct  is_contiguous_tensor_helper< btas::Tensor< T, Args... > >
 
struct  is_contiguous_tensor_helper< ShiftWrapper< T > >
 
struct  is_contiguous_tensor_helper< Tensor< T, A > >
 
struct  is_contiguous_tensor_helper< TensorInterface< T, R, OpResult > >
 
struct  is_contiguous_tensor_helper< Tile< T > >
 
struct  is_convertible
 
struct  is_explicitly_convertible
 
struct  is_forward_iterator
 
struct  is_gettable_pair
 
struct  is_gettable_pair< T, std::enable_if_t< is_gettable_v< 0, T > &&is_gettable_v< 1, T > > >
 
struct  is_gpair_range
 
struct  is_gpair_range< T, std::enable_if_t< is_gpair_v< value_t< T > > &&is_range_v< T > > >
 
struct  is_implicitly_convertible
 
struct  is_initializer_list
 Primary template for detecting if T is an std::initializer_list. More...
 
struct  is_initializer_list< std::initializer_list< T > >
 Specialization of is_initializer_list for an std::initializer_list. More...
 
struct  is_input_iterator
 
struct  is_integral_list
 
struct  is_integral_list_helper
 
struct  is_integral_list_helper< T, Ts... >
 
struct  is_integral_list_helper<>
 
struct  is_integral_pair
 
struct  is_integral_pair_
 
struct  is_integral_pair_< std::pair< T1, T2 >, typename std::enable_if< std::is_integral< T1 >::value &&std::is_integral< T2 >::value >::type >
 
struct  is_integral_pair_list
 
struct  is_integral_pair_list_helper
 
struct  is_integral_pair_list_helper< T, Ts... >
 
struct  is_integral_pair_list_helper<>
 
struct  is_integral_range
 
struct  is_integral_range< T, std::enable_if_t< std::is_integral_v< value_t< T > > &&is_range_v< T > > >
 
struct  is_integral_sized_range
 
struct  is_integral_sized_range< T, std::enable_if_t< std::is_integral_v< value_t< T > > &&is_sized_range_v< T > > >
 
struct  is_integral_tuple
 
struct  is_integral_tuple< std::tuple< Ts... > >
 
struct  is_invocable
 
struct  is_invocable_r
 
struct  is_invocable_void
 
struct  is_invocable_void_helper
 
struct  is_invocable_void_helper< std::enable_if_t< std::is_void< std::result_of_t< F(Args...)> >::value, void >, F, Args... >
 
struct  is_iterator
 
struct  is_iterator< const T *, void >
 
struct  is_iterator< const T *const, void >
 
struct  is_iterator< T *, void >
 
struct  is_iterator< T *const, void >
 
struct  is_iterator< T, typename std::enable_if< has_member_type_iterator_category< T >::value >::type >
 
struct  is_non_array_lazy_tile
 Detect a lazy evaluation tile that are not a LazyArrayTile. More...
 
struct  is_numeric
 
struct  is_numeric< bool >
 
struct  is_numeric< ComplexConjugate< S > >
 
struct  is_numeric< std::complex< T > >
 
struct  is_output_iterator
 
struct  is_pair
 
struct  is_pair< std::pair< T1, T2 > >
 
struct  is_permutation
 
struct  is_permutation< TiledArray::BipartitePermutation >
 
struct  is_permutation< TiledArray::Permutation >
 
struct  is_permutation< TiledArray::symmetry::Permutation >
 
struct  is_random_iterator
 
struct  is_range
 
struct  is_range< T, std::void_t< decltype(std::begin(std::declval< T & >()), std::end(std::declval< T & >()))> >
 
struct  is_reduce_op_
 
struct  is_reduce_op_< std::void_t< decltype(std::declval< ReduceOp & >()(std::declval< Result & >(), std::declval< const Args * >()...))>, ReduceOp, Result, Args... >
 
struct  is_same_or_derived
 
struct  is_scalar
 
struct  is_scalar< std::complex< T > >
 
struct  is_shifted
 
struct  is_shifted< T >
 
struct  is_shifted< T1, T2, Ts... >
 
struct  is_shifted<>
 
struct  is_shifted_helper
 
struct  is_shifted_helper< ShiftWrapper< T > >
 
struct  is_sized_range
 
struct  is_sized_range< T, std::void_t< decltype(std::size(std::declval< T & >()))> >
 
struct  is_std_gettable
 
struct  is_std_gettable< I, T, std::void_t< decltype(::std::get< I >(std::declval< const T & >()))> >
 
struct  is_strictly_ordered
 
struct  is_strictly_ordered_helper
 
struct  is_ta_tensor
 
struct  is_ta_tensor< Tensor< T, A > >
 
struct  is_tensor
 
struct  is_tensor< T >
 
struct  is_tensor< T1, T2, Ts... >
 
struct  is_tensor<>
 
struct  is_tensor_helper
 
struct  is_tensor_helper< btas::Tensor< T, Args... > >
 
struct  is_tensor_helper< ShiftWrapper< const T > >
 
struct  is_tensor_helper< ShiftWrapper< T > >
 
struct  is_tensor_helper< Tensor< T, A > >
 
struct  is_tensor_helper< TensorInterface< Args... > >
 
struct  is_tensor_helper< Tile< T > >
 
struct  is_tensor_of_tensor
 
struct  is_tensor_of_tensor< T >
 
struct  is_tensor_of_tensor< T1, T2, Ts... >
 
struct  is_tensor_of_tensor<>
 
struct  is_tensor_of_tensor_helper
 
struct  is_tensor_of_tensor_helper< ShiftWrapper< T > >
 
struct  is_tensor_of_tensor_helper< Tensor< T, A > >
 
struct  is_tensor_of_tensor_helper< TensorInterface< T, Args... > >
 
struct  is_tensor_of_tensor_helper< Tile< T > >
 
struct  is_tuple
 
struct  is_tuple< std::tuple< Ts... > >
 
struct  is_type
 helper to implement other metafunctions is_type<T>::value is true if T is a valid type More...
 
class  LazyArrayTile
 Lazy tile for on-the-fly evaluation of array tiles. More...
 
struct  MakeRandom
 
struct  MakeRandom< std::complex< ScalarType > >
 
class  MemoryWatchpoint_x86_64
 MemoryWatchpoint represents a hardware watchpoint for a memory location Implements a memory watchpoint on x86 ... only implemented for macOS so far this is a slightly tweaked version of https://m.habrahabr.ru/post/103073/ see also http://www.sandpile.org/x86/drx.htm for the x86 debugging register map. More...
 
class  Mult
 Tile multiplication operation. More...
 
struct  non_iterator_tag
 
class  Noop
 Tile no operation (noop) More...
 
struct  numeric_type
 Type trait for extracting the numeric type of tensors and arrays. More...
 
struct  numeric_type< T, typename std::enable_if< has_member_type_value_type< T >::value &&(!is_lazy_tile< T >::value) &&(!is_numeric_v< T >)>::type >
 
struct  numeric_type< T, typename std::enable_if< is_lazy_tile< T >::value &&!is_numeric_v< T > >::type >
 
struct  numeric_type< T, typename std::enable_if< is_numeric_v< T > >::type >
 
struct  ordinal_traits
 ordinal trait specifies properties of the ordinal More...
 
struct  ordinal_traits< btas::RangeNd< _Order, _Index, _Ordinal > >
 btas::RangeNd can be col or row-major More...
 
struct  ordinal_traits< Range >
 TA::Range is hardwired to row-major. More...
 
struct  ordinal_traits< T, std::enable_if_t< is_contiguous_tensor_v< T > > >
 ordinal traits of contiguous tensors are defined by their range type More...
 
struct  param
 
struct  param< T, typename std::enable_if< is_numeric_v< T > >::type >
 
struct  param< T, typename std::enable_if< std::is_pointer< T >::value >::type >
 
struct  param< T, typename std::enable_if< std::is_reference< T >::value >::type >
 
class  PermIndex
 A functor that permutes ordinal indices. More...
 
class  ProcGrid
 A 2D processor grid. More...
 
class  RangeIterator
 Coordinate index iterate. More...
 
class  ReducePairOpWrapper
 Wrapper that to convert a pair-wise reduction into a standard reduction. More...
 
class  ReducePairTask
 Reduce pair task. More...
 
class  ReduceTask
 Reduce task. More...
 
struct  remove_cvr
 Remove const, volatile, and reference qualifiers. More...
 
class  ReplicatedPmap
 A Replicated process map. More...
 
class  Replicator
 Replicate a Array object. More...
 
class  RoundRobinPmap
 A blocked process map. More...
 
class  Scal
 Tile scaling operation. More...
 
class  ScalAdd
 Tile scale-addition operation. More...
 
struct  scalar_type
 Type trait for extracting the scalar type of tensors and arrays. More...
 
struct  scalar_type< std::complex< T >, void >
 
struct  scalar_type< T, typename std::enable_if< is_scalar_v< T > >::type >
 
struct  scalar_type< T, typename std::enable_if<!is_numeric_v< T > >::type >
 
class  ScalMult
 Tile scale-multiplication operation. More...
 
class  ScalShift
 Tile shift operation. More...
 
class  ScalSubt
 Tile scale-subtraction operation. More...
 
class  Shift
 Tile shift operation. More...
 
class  ShiftWrapper
 Shift wrapper class. More...
 
class  SizeArray
 Array wrapper. More...
 
class  Subt
 Tile subtraction operation. More...
 
class  Summa
 Distributed contraction evaluator implementation. More...
 
class  TensorConstReference
 
class  TensorImpl
 Tensor implementation and base for other tensor implementation objects. More...
 
class  TensorInterface
 Tensor interface for external data. More...
 
class  TensorReference
 
class  TileConstReference
 Tensor tile reference. More...
 
class  TileReference
 Tensor tile reference. More...
 
struct  Trace
 
struct  Trace< Tensor< T, A >, detail::enable_if_numeric_t< T > >
 
struct  TraceIsDefined
 
struct  TraceIsDefined< btas::Tensor< T, Range, Storage >, enable_if_numeric_t< T > >
 
struct  TraceIsDefined< Tensor< T, A >, enable_if_numeric_t< T > >
 Signals that we can take the trace of a Tensor<T, A> (for numeric T) More...
 
struct  TraceIsDefined< Tile< Arg >, enable_if_trace_is_defined_t< Arg > >
 Signals that we can take the trace of a Tile<Arg> if can trace Arg. More...
 
struct  transform
 
struct  transform< Tensor< T, A > >
 specialization of TiledArray::detail::transform for Tensor More...
 
struct  type_printer
 
class  UnaryEvalImpl
 Tensor that is composed from an argument tensor. More...
 
class  UnaryTransformIterator
 Unary transform iterator. More...
 
class  UnaryWrapper
 Unary tile operation wrapper. More...
 
class  ValArray
 Value array. More...
 

Typedefs

template<typename Tensor >
using default_permutation_t = typename default_permutation< Tensor >::type
 
template<typename T , typename U = void>
using enable_if_trace_is_defined_t = std::enable_if_t< trace_is_defined_v< T >, U >
 SFINAE type for enabling code when the trace operation is defined. More...
 
template<typename T , typename U = void>
using enable_if_numeric_t = std::enable_if_t< is_numeric_v< T >, U >
 SFINAE type for enabling code when T is a numeric type. More...
 
template<typename T >
using numeric_t = typename TiledArray::detail::numeric_type< T >::type
 numeric_t<T> is an alias for numeric_type<T>::type More...
 
template<typename T >
using scalar_t = typename TiledArray::detail::scalar_type< T >::type
 scalar_t<T> is an alias for scalar_type<T>::type More...
 
template<typename T >
using remove_cvr_t = typename remove_cvr< T >::type
 
template<bool B, typename T >
using const_if_t = typename std::conditional< B, const T, T >::type
 prepends const to T if B is true More...
 
template<typename U >
using param_type = typename param< U >::type
 
template<class T >
using iterator_t = decltype(std::begin(std::declval< T & >()))
 
template<class T >
using value_t = remove_cvr_t< decltype(*std::begin(std::declval< T & >()))>
 
template<typename Scalar1 , typename Scalar2 >
using add_t = decltype(std::declval< Scalar1 >()+std::declval< Scalar2 >())
 
template<typename Scalar1 , typename Scalar2 >
using subt_t = decltype(std::declval< Scalar1 >() - std::declval< Scalar2 >())
 
template<typename Scalar1 , typename Scalar2 >
using mult_t = decltype(std::declval< Scalar1 >() *std::declval< Scalar2 >())
 
template<typename T >
using trange_t = typename T::trange_type
 
template<typename T >
using shape_t = typename T::shape_type
 
template<typename T >
using pmap_t = typename T::pmap_interface
 
template<typename T >
using policy_t = typename T::policy_type
 
template<typename T >
using vector_il = std::initializer_list< T >
 
template<typename T >
using matrix_il = std::initializer_list< vector_il< T > >
 
template<typename T >
using tensor3_il = std::initializer_list< matrix_il< T > >
 
template<typename T >
using tensor4_il = std::initializer_list< tensor3_il< T > >
 
template<typename T >
using tensor5_il = std::initializer_list< tensor4_il< T > >
 
template<typename T >
using tensor6_il = std::initializer_list< tensor5_il< T > >
 
template<typename T >
using enable_if_can_make_random_t = std::enable_if_t< can_make_random_v< T > >
 

Functions

template<typename Impl >
bool operator== (const TileReference< Impl > &a, const TileReference< Impl > &b)
 comparison operator for TileReference objects More...
 
template<typename Impl >
bool operator!= (const TileReference< Impl > &a, const TileReference< Impl > &b)
 inequality operator for TileReference objects More...
 
template<typename Impl >
std::ostream & operator<< (std::ostream &os, const TileReference< Impl > &a)
 redirect operator to std::ostream for TileReference objects More...
 
template<typename Impl >
bool operator== (const TileConstReference< Impl > &a, const TileConstReference< Impl > &b)
 comparison operator for TileConstReference objects More...
 
template<typename Impl >
bool operator!= (const TileConstReference< Impl > &a, const TileConstReference< Impl > &b)
 inequality operator for TileConstReference objects More...
 
template<typename Impl >
std::ostream & operator<< (std::ostream &os, const TileConstReference< Impl > &a)
 redirect operator to std::ostream for TileConstReference objects More...
 
template<typename B >
void swap (Bitset< B > &b0, Bitset< B > &b1)
 
template<typename Block >
Bitset< Block > operator& (Bitset< Block > left, const Bitset< Block > &right)
 Bitwise and operator of bitset. More...
 
template<typename Block >
Bitset< Block > operator| (Bitset< Block > left, const Bitset< Block > &right)
 Bitwise or operator of bitset. More...
 
template<typename Block >
Bitset< Block > operator^ (Bitset< Block > left, const Bitset< Block > &right)
 Bitwise xor operator of bitset. More...
 
template<typename Block >
std::ostream & operator<< (std::ostream &os, const Bitset< Block > &bitset)
 
template<typename DistArray_ , typename BTAS_Tensor_ >
void counted_btas_subtensor_to_tensor (const BTAS_Tensor_ *src, DistArray_ *dst, const typename DistArray_::ordinal_type i, madness::AtomicInt *counter)
 
template<typename TA_Tensor_ , typename BTAS_Tensor_ >
void counted_tensor_to_btas_subtensor (const TA_Tensor_ &src, BTAS_Tensor_ *dst, madness::AtomicInt *counter)
 Task function for assigning a tensor to an Eigen submatrix. More...
 
template<bool sparse>
auto make_shape (World &world, const TiledArray::TiledRange &trange)
 
template<>
auto make_shape< true > (World &world, const TiledArray::TiledRange &trange)
 
template<>
auto make_shape< false > (World &, const TiledArray::TiledRange &)
 
template<typename A , typename Derived >
void counted_eigen_submatrix_to_tensor (const Eigen::MatrixBase< Derived > *matrix, A *array, const typename A::ordinal_type i, madness::AtomicInt *counter)
 Task function for converting Eigen submatrix to a tensor. More...
 
template<typename Derived , typename T >
void counted_tensor_to_eigen_submatrix (const T &tensor, Eigen::MatrixBase< Derived > *matrix, madness::AtomicInt *counter)
 Task function for assigning a tensor to an Eigen submatrix. More...
 
template<bool inplace = false, typename Op , typename ResultTile , typename ArgTile , typename Policy , typename... ArgTiles>
std::enable_if_t< is_dense_v< Policy >, DistArray< ResultTile, Policy > > foreach (Op &&op, const_if_t< not inplace, DistArray< ArgTile, Policy >> &arg, const DistArray< ArgTiles, Policy > &... args)
 base implementation of dense TiledArray::foreach More...
 
template<bool inplace = false, typename Op , typename ResultTile , typename ArgTile , typename Policy , typename... ArgTiles>
std::enable_if_t<!is_dense_v< Policy >, DistArray< ResultTile, Policy > > foreach (Op &&op, const ShapeReductionMethod shape_reduction, const_if_t< not inplace, DistArray< ArgTile, Policy >> &arg, const DistArray< ArgTiles, Policy > &... args)
 base implementation of sparse TiledArray::foreach More...
 
TA::TiledRange prepend_dim_to_trange (std::size_t array_rank, const TiledArray::TiledRange &array_trange, std::size_t block_size=1)
 prepends an extra dimension to a TRange More...
 
template<typename Tile >
TA::SparseShape< float > fuse_vector_of_shapes_tiles (madness::World &global_world, const std::vector< TA::DistArray< Tile, TA::SparsePolicy >> &arrays, const std::size_t array_rank, const TA::TiledRange &fused_trange)
 fuses the SparseShape objects of a tilewise-round-robin distributed vector of Arrays into single SparseShape object, with the vector index forming the first dimension. More...
 
template<typename Tile >
TA::DenseShape fuse_vector_of_shapes_tiles (madness::World &, const std::vector< TA::DistArray< Tile, TA::DensePolicy >> &arrays, const std::size_t array_rank, const TA::TiledRange &fused_trange)
 fuses the DenseShape objects of a tilewise-round-robin distributed vector of Arrays into single DenseShape object, with the vector index forming the first dimension. More...
 
TA::SparseShape< float > subshape_from_fused_tile (const TA::TiledRange &split_trange, const TA::SparsePolicy::shape_type &shape, const std::size_t tile_idx, const std::size_t split_ntiles, const std::size_t tile_size)
 extracts the shape of a slice of a fused array created with fuse_vector_of_arrays More...
 
TA::DenseShape subshape_from_fused_tile (const TA::TiledRange &split_trange, const TA::DensePolicy::shape_type &shape, const std::size_t tile_idx, const std::size_t split_ntiles, const std::size_t tile_size)
 extracts the shape of a subarray of a fused array created with fuse_vector_of_arrays More...
 
const TiledArray::Rangemake_ta_range (const TiledArray::Range &range)
 
template<::blas::Layout Order, typename... Args>
TiledArray::Range make_ta_range (const btas::RangeNd< Order, Args... > &range)
 makes TiledArray::Range from a btas::RangeNd More...
 
template<typename Perm , typename Arg , typename Result , typename = std::enable_if_t<is_permutation_v<Perm>>>
void permute_array (const Perm &perm, const Arg &arg, Result &result)
 Create a permuted copy of an array. More...
 
template<typename T , typename Container >
bool operator== (const RangeIterator< T, Container > &left_it, const RangeIterator< T, Container > &right_it)
 Equality operator. More...
 
template<typename T , typename Container >
bool operator!= (const RangeIterator< T, Container > &left_it, const RangeIterator< T, Container > &right_it)
 Inequality operator. More...
 
template<typename T >
std::vector< T > operator* (const Permutation &perm, const SizeArray< T > &orig)
 
template<typename T >
std::ostream & operator<< (std::ostream &os, const SizeArray< T > &size_array)
 
Range diagonal_range (Range const &rng)
 Computes a range of the diagonal elements (if any) in a rank-d Range. More...
 
template<typename T >
Tensor< float > diagonal_shape (TiledRange const &trange, T val)
 computes shape data (i.e. Frobenius norms of the tiles) for a constant diagonal tensor More...
 
template<typename RandomAccessIterator >
std::enable_if_t< is_iterator< RandomAccessIterator >::value, Tensor< float > > diagonal_shape (TiledRange const &trange, RandomAccessIterator diagonals_begin, RandomAccessIterator diagonals_end={})
 computes shape data (i.e. Frobenius norms of the tiles) for a non-constant diagonal tensor More...
 
template<typename Array , typename T >
void write_diag_tiles_to_array_val (Array &A, T val)
 Writes tiles of a constant diagonal array. More...
 
template<typename Array , typename RandomAccessIterator >
std::enable_if_t< is_iterator< RandomAccessIterator >::value, void > write_diag_tiles_to_array_rng (Array &A, RandomAccessIterator diagonals_begin)
 Writes tiles of a nonconstant diagonal array. More...
 
template<typename R , typename std::enable_if< is_numeric_v< R > &&!is_complex< R >::value >::type * = nullptr>
TILEDARRAY_FORCE_INLINE R conj (const R r)
 Wrapper function for std::conj More...
 
template<typename R >
TILEDARRAY_FORCE_INLINE std::complex< R > conj (const std::complex< R > z)
 Wrapper function for std::conj. More...
 
template<typename L , typename R , typename std::enable_if< is_numeric_v< L > &&!is_complex< L >::value >::type * = nullptr>
TILEDARRAY_FORCE_INLINE auto inner_product (const L l, const R r)
 Inner product of a real value and a numeric value. More...
 
template<typename R , typename std::enable_if< is_numeric_v< R > &&!is_complex< R >::value >::type * = nullptr>
TILEDARRAY_FORCE_INLINE R norm (const R r)
 Wrapper function for std::norm More...
 
template<typename R >
TILEDARRAY_FORCE_INLINE R norm (const std::complex< R > z)
 Compute the norm of a complex number z More...
 
template<typename S >
ComplexConjugate< S > conj_op (const S factor)
 ComplexConjugate operator factory function. More...
 
ComplexConjugate< void > conj_op ()
 ComplexConjugate operator factory function. More...
 
template<typename L , typename R >
TILEDARRAY_FORCE_INLINE auto operator* (const L value, const ComplexConjugate< R > op)
 
template<typename L >
TILEDARRAY_FORCE_INLINE auto operator* (const L value, const ComplexConjugate< void > &)
 
template<typename L >
TILEDARRAY_FORCE_INLINE auto operator* (const L value, const ComplexConjugate< ComplexNegTag > &)
 
template<typename L , typename R >
TILEDARRAY_FORCE_INLINE auto operator* (const ComplexConjugate< L > op, const R value)
 
template<typename R >
TILEDARRAY_FORCE_INLINE auto operator* (const ComplexConjugate< void >, const R value)
 
template<typename R >
TILEDARRAY_FORCE_INLINE auto operator* (const ComplexConjugate< ComplexNegTag >, const R value)
 
template<typename L , typename R , typename std::enable_if<!std::is_void< R >::value >::type * = nullptr>
TILEDARRAY_FORCE_INLINE L & operator*= (L &value, const ComplexConjugate< R > op)
 
template<typename L >
TILEDARRAY_FORCE_INLINE L & operator*= (L &value, const ComplexConjugate< void > &)
 
template<typename L >
TILEDARRAY_FORCE_INLINE L & operator*= (L &value, const ComplexConjugate< ComplexNegTag > &)
 
template<typename T >
auto abs (const ComplexConjugate< T > &a)
 
int abs (const ComplexConjugate< void > &a)
 
template<typename TR , typename Op , typename T1 , typename... Ts, typename std::enable_if< is_tensor< TR, T1, Ts... >::value||is_tensor_of_tensor< TR, T1, Ts... >::value >::type * = nullptr>
TR tensor_op (Op &&op, const T1 &tensor1, const Ts &... tensors)
 Tensor operations with contiguous data. More...
 
template<typename TR , typename Op , typename T1 , typename... Ts, typename std::enable_if<(is_tensor< T1, Ts... >::value||is_tensor_of_tensor< TR, T1, Ts... >::value) &&is_contiguous_tensor< T1, Ts... >::value >::type * = nullptr>
TR tensor_op (Op &&op, const Permutation &perm, const T1 &tensor1, const Ts &... tensors)
 Tensor permutation operations with contiguous data. More...
 
template<typename Op , typename TR , typename... Ts, typename std::enable_if< is_tensor< TR, Ts... >::value &&is_contiguous_tensor< TR, Ts... >::value >::type * = nullptr>
void inplace_tensor_op (Op &&op, TR &result, const Ts &... tensors)
 In-place tensor operations with contiguous data. More...
 
template<typename InputOp , typename OutputOp , typename TR , typename T1 , typename... Ts, typename std::enable_if< is_tensor< TR, T1, Ts... >::value &&is_contiguous_tensor< TR, T1, Ts... >::value >::type * = nullptr>
void inplace_tensor_op (InputOp &&input_op, OutputOp &&output_op, const Permutation &perm, TR &result, const T1 &tensor1, const Ts &... tensors)
 In-place tensor permutation operations with contiguous data. More...
 
template<typename Op , typename TR , typename... Ts, typename std::enable_if< is_tensor< TR, Ts... >::value &&is_contiguous_tensor< TR, Ts... >::value >::type * = nullptr>
void tensor_init (Op &&op, TR &result, const Ts &... tensors)
 Initialize tensor with contiguous tensor arguments. More...
 
template<typename Op , typename TR , typename T1 , typename... Ts, typename std::enable_if< is_tensor< TR, T1, Ts... >::value >::type * = nullptr>
void tensor_init (Op &&op, const Permutation &perm, TR &result, const T1 &tensor1, const Ts &... tensors)
 Initialize tensor with permuted tensor arguments. More...
 
template<typename Op , typename TR , typename T1 , typename... Ts, typename std::enable_if< is_tensor< TR, T1, Ts... >::value &&is_contiguous_tensor< TR >::value &&!is_contiguous_tensor< T1, Ts... >::value >::type * = nullptr>
void tensor_init (Op &&op, TR &result, const T1 &tensor1, const Ts &... tensors)
 Initialize tensor with one or more non-contiguous tensor arguments. More...
 
template<typename ReduceOp , typename JoinOp , typename Scalar , typename T1 , typename... Ts, typename std::enable_if_t< is_tensor< T1, Ts... >::value &&is_contiguous_tensor< T1, Ts... >::value &&!is_reduce_op_v< std::decay_t< ReduceOp >, std::decay_t< Scalar >, std::decay_t< T1 >, std::decay_t< Ts >... >> * = nullptr>
Scalar tensor_reduce (ReduceOp &&reduce_op, JoinOp &&join_op, Scalar identity, const T1 &tensor1, const Ts &... tensors)
 Reduction operation for contiguous tensors. More...
 
template<typename SizeType , typename ExtentType >
void fuse_dimensions (SizeType *MADNESS_RESTRICT const fused_size, SizeType *MADNESS_RESTRICT const fused_weight, const ExtentType *MADNESS_RESTRICT const size, const Permutation &perm)
 Compute the fused dimensions for permutation. More...
 
template<typename InputOp , typename OutputOp , typename Result , typename Perm , typename Arg0 , typename... Args, typename = std::enable_if_t<detail::is_permutation_v<Perm>>>
void permute (InputOp &&input_op, OutputOp &&output_op, Result &result, const Perm &perm, const Arg0 &arg0, const Args &... args)
 Construct a permuted tensor copy. More...
 
template<typename Left , typename Right >
bool is_range_congruent (const Left &left, const ShiftWrapper< Right > &right)
 Check for congruent range objects with a shifted tensor. More...
 
template<typename T , typename Range , typename OpResult >
bool operator== (const TensorInterface< T, Range, OpResult > &first, const TensorInterface< T, Range, OpResult > &second)
 Shallow comparison operator. More...
 
template<typename T , typename std::enable_if< is_contiguous_tensor< T >::value >::type * = nullptr>
auto clone_range (const T &tensor)
 Create a copy of the range of the tensor. More...
 
template<typename T , typename std::enable_if< !is_contiguous_tensor< T >::value >::type * = nullptr>
Range clone_range (const T &tensor)
 Create a contiguous copy of the range of the tensor. More...
 
template<typename T1 , typename T2 , typename std::enable_if<!(is_shifted< T1 >::value||is_shifted< T2 >::value)>::type * = nullptr>
bool is_range_congruent (const T1 &tensor1, const T2 &tensor2)
 Test that the ranges of a pair of tensors are congruent. More...
 
template<typename T1 , typename T2 , typename std::enable_if<!(is_shifted< T1 >::value||is_shifted< T2 >::value)>::type * = nullptr>
bool is_range_congruent (const T1 &tensor1, const T2 &tensor2, const Permutation &perm)
 Test that the ranges of a pair of permuted tensors are congruent. More...
 
template<typename T >
constexpr bool is_range_set_congruent (const Permutation &perm, const T &tensor)
 Test that the ranges of a permuted tensor is congruent with itself. More...
 
template<typename T1 , typename T2 , typename... Ts>
bool is_range_set_congruent (const Permutation &perm, const T1 &tensor1, const T2 &tensor2, const Ts &... tensors)
 Test that the ranges of a permuted set of tensors are congruent. More...
 
template<typename T >
constexpr bool is_range_set_congruent (const T &tensor)
 Test that the ranges of a tensor is congruent with itself. More...
 
template<typename T1 , typename T2 , typename... Ts>
bool is_range_set_congruent (const T1 &tensor1, const T2 &tensor2, const Ts &... tensors)
 Test that the ranges of a set of tensors are congruent. More...
 
template<typename T >
T::size_type inner_size_helper (const T &tensor)
 Get the inner size. More...
 
template<typename T1 , typename T2 >
T1::size_type inner_size_helper (const T1 &tensor1, const T2 &tensor2)
 Get the inner size of two tensors. More...
 
template<typename T1 , typename T2 , typename std::enable_if<!is_contiguous_tensor< T1 >::value &&is_contiguous_tensor< T2 >::value >::type * = nullptr>
T1::size_type inner_size (const T1 &tensor1, const T2 &)
 Get the inner size of two tensors. More...
 
template<typename T , typename std::enable_if< !is_contiguous_tensor< T >::value >::type * = nullptr>
T::size_type inner_size (const T &tensor)
 Get the inner size. More...
 
constexpr bool empty ()
 Test for empty tensors in an empty list. More...
 
template<typename T1 , typename... Ts>
bool empty (const T1 &tensor1, const Ts &... tensors)
 Test for empty tensors. More...
 
template<typename T >
Tile< T > make_tile (T &&t)
 Factory function for tiles. More...
 
template<typename Iter1 , typename Iter2 , typename Op >
BinaryTransformIterator< Iter1, Iter2, Op > make_tran_it (Iter1 it1, Iter2 it2, Op op)
 Binary Transform iterator factory. More...
 
template<typename Iter , typename Op >
UnaryTransformIterator< Iter, Op > make_tran_it (Iter it, Op op)
 Unary Transform iterator factory. More...
 
template<std::size_t I, typename T >
auto get (T &&t)
 
template<typename GeneralizedPair , typename = std::enable_if_t<is_gpair_v<GeneralizedPair>>>
decltype(auto) at (GeneralizedPair &&v, std::size_t idx)
 at(pair, i) extracts i-th element from gpair More...
 
std::string dummy_annotation (unsigned int n_outer_size, unsigned int n_inner_size=0)
 
auto remove_whitespace (std::string s)
 
auto tokenize_index (const std::string &s, char delim)
 
bool is_valid_index (const std::string &idx)
 
bool is_tot_index (const std::string &idx)
 
auto split_index (const std::string &idx)
 
template<typename A >
void print_array (std::ostream &out, const A &a, const std::size_t n)
 Print the content of an array like object. More...
 
template<typename A >
void print_array (std::ostream &out, const A &a)
 Print the content of an array like object. More...
 
std::atomic< bool > & ignore_tile_position_accessor ()
 
template<typename T >
std::ostream & operator<< (std::ostream &os, const ValArray< T > &val_array)
 

Variables

template<typename T >
constexpr const bool is_btas_tensor_v = is_btas_tensor<T>::value
 
template<typename... Ts>
constexpr const bool is_tensor_v = is_tensor<Ts...>::value
 
template<typename... Ts>
constexpr const bool is_tensor_of_tensor_v = is_tensor_of_tensor<Ts...>::value
 
template<typename T >
constexpr const bool is_ta_tensor_v = is_ta_tensor<T>::value
 
template<typename... Ts>
constexpr const bool is_contiguous_tensor_v
 
template<typename... Ts>
constexpr const bool is_shifted_v = is_shifted<Ts...>::value
 
template<typename ReduceOp , typename Result , typename... Args>
constexpr const bool is_reduce_op_v
 
template<typename T >
constexpr auto trace_is_defined_v = TraceIsDefined<T>::value
 
template<typename T >
constexpr const bool is_type_v = is_type<T>::value
 
template<typename T >
constexpr const bool is_complete_type_v = is_complete_type<T>::value
 
template<class From , class To >
constexpr const bool has_conversion_operator_v
 
template<class From , class To >
constexpr const bool is_explicitly_convertible_v
 
template<class From , class To >
constexpr const bool is_implicitly_convertible_v
 
template<class From , class To >
constexpr const bool is_convertible_v = is_convertible<From, To>::value
 
template<typename T >
constexpr const bool is_complex_v = is_complex<T>::value
 is_complex_v<T> is an alias for is_complex<T>::value More...
 
template<typename T >
constexpr const bool is_numeric_v = is_numeric<T>::value
 is_numeric_v<T> is an alias for is_numeric<T>::value More...
 
template<typename T >
constexpr const bool is_scalar_v = is_scalar<T>::value
 is_scalar_v<T> is an alias for is_scalar_v<T> More...
 
template<typename T >
constexpr const bool is_array_tile_v = is_array_tile<T>::value
 is_array_tile_v<T> is an alias for is_array_tile<T>::value More...
 
template<typename T >
constexpr const bool is_non_array_lazy_tile_v
 
template<typename T >
constexpr const bool is_strictly_ordered_v = is_strictly_ordered<T>::value
 is_strictly_ordered_v<T> is an alias for is_strictly_ordered<T>::value More...
 
template<typename... Ts>
constexpr const bool is_integral_list_v = is_integral_list<Ts...>::value
 is_integral_list_v<T> is an alias for is_integral_list<T>::value More...
 
template<typename T >
constexpr const bool is_tuple_v = is_tuple<T>::value
 is_tuple_v<T> is an alias for is_tuple<T>::value More...
 
template<std::size_t I, typename T >
constexpr const bool is_std_gettable_v = is_std_gettable<I, T>::value
 
template<std::size_t I, typename T >
constexpr const bool is_boost_gettable_v = is_boost_gettable<I, T>::value
 
template<std::size_t I, typename T >
constexpr const bool is_gettable_v
 
template<typename T >
constexpr const bool is_gettable_pair_v = is_gettable_pair<T>::value
 is_gettable_pair_v<T> is an alias for is_gettable_pair<T>::value More...
 
template<typename T >
constexpr const bool is_integral_pair_v = is_integral_pair<T>::value
 is_integral_pair_v<T> is an alias for is_integral_pair<T>::value More...
 
template<typename... Ts>
constexpr const bool is_integral_pair_list_v
 
template<typename T >
constexpr const bool is_integral_tuple_v = is_integral_tuple<T>::value
 is_integral_tuple_v<T> is an alias for is_integral_tuple<T>::value More...
 
template<typename T >
constexpr const bool is_pair_v = is_pair<T>::value
 is_pair_v<T> is an alias for is_pair<T>::value More...
 

Typedef Documentation

◆ add_t

template<typename Scalar1 , typename Scalar2 >
using TiledArray::detail::add_t = typedef decltype(std::declval<Scalar1>() + std::declval<Scalar2>())

Definition at line 1153 of file type_traits.h.

◆ const_if_t

template<bool B, typename T >
using TiledArray::detail::const_if_t = typedef typename std::conditional<B, const T, T>::type

prepends const to T if B is true

Definition at line 966 of file type_traits.h.

◆ default_permutation_t

template<typename Tensor >
using TiledArray::detail::default_permutation_t = typedef typename default_permutation<Tensor>::type

Definition at line 290 of file type_traits.h.

◆ enable_if_can_make_random_t

template<typename T >
using TiledArray::detail::enable_if_can_make_random_t = typedef std::enable_if_t<can_make_random_v<T> >

Enables a function only when we can generate a random value of type T

Template Parameters
TThe type of random value we are attempting to generate.

Definition at line 77 of file random.h.

◆ enable_if_numeric_t

template<typename T , typename U = void>
using TiledArray::detail::enable_if_numeric_t = typedef std::enable_if_t<is_numeric_v<T>, U>

SFINAE type for enabling code when T is a numeric type.

Definition at line 649 of file type_traits.h.

◆ enable_if_trace_is_defined_t

template<typename T , typename U = void>
using TiledArray::detail::enable_if_trace_is_defined_t = typedef std::enable_if_t<trace_is_defined_v<T>, U>

SFINAE type for enabling code when the trace operation is defined.

Definition at line 61 of file trace.h.

◆ iterator_t

template<class T >
using TiledArray::detail::iterator_t = typedef decltype(std::begin(std::declval<T&>()))
Template Parameters
Ta range type iterator_t<T> is the iterator type, i.e. the type returned by std::begin(T&)
Warning
will be replaced by C++20 ranges::iterator_t

Definition at line 1106 of file type_traits.h.

◆ matrix_il

template<typename T >
using TiledArray::detail::matrix_il = typedef std::initializer_list<vector_il<T> >

Definition at line 381 of file initializer_list.h.

◆ mult_t

template<typename Scalar1 , typename Scalar2 >
using TiledArray::detail::mult_t = typedef decltype(std::declval<Scalar1>() * std::declval<Scalar2>())

Definition at line 1159 of file type_traits.h.

◆ numeric_t

template<typename T >
using TiledArray::detail::numeric_t = typedef typename TiledArray::detail::numeric_type<T>::type

numeric_t<T> is an alias for numeric_type<T>::type

Definition at line 730 of file type_traits.h.

◆ param_type

template<typename U >
using TiledArray::detail::param_type = typedef typename param<U>::type

Definition at line 991 of file type_traits.h.

◆ pmap_t

template<typename T >
using TiledArray::detail::pmap_t = typedef typename T::pmap_interface

Definition at line 1177 of file type_traits.h.

◆ policy_t

template<typename T >
using TiledArray::detail::policy_t = typedef typename T::policy_type

Definition at line 1180 of file type_traits.h.

◆ remove_cvr_t

template<typename T >
using TiledArray::detail::remove_cvr_t = typedef typename remove_cvr<T>::type

Definition at line 962 of file type_traits.h.

◆ scalar_t

template<typename T >
using TiledArray::detail::scalar_t = typedef typename TiledArray::detail::scalar_type<T>::type

scalar_t<T> is an alias for scalar_type<T>::type

Definition at line 760 of file type_traits.h.

◆ shape_t

template<typename T >
using TiledArray::detail::shape_t = typedef typename T::shape_type

Definition at line 1174 of file type_traits.h.

◆ subt_t

template<typename Scalar1 , typename Scalar2 >
using TiledArray::detail::subt_t = typedef decltype(std::declval<Scalar1>() - std::declval<Scalar2>())

Definition at line 1156 of file type_traits.h.

◆ tensor3_il

template<typename T >
using TiledArray::detail::tensor3_il = typedef std::initializer_list<matrix_il<T> >

Definition at line 385 of file initializer_list.h.

◆ tensor4_il

template<typename T >
using TiledArray::detail::tensor4_il = typedef std::initializer_list<tensor3_il<T> >

Definition at line 389 of file initializer_list.h.

◆ tensor5_il

template<typename T >
using TiledArray::detail::tensor5_il = typedef std::initializer_list<tensor4_il<T> >

Definition at line 393 of file initializer_list.h.

◆ tensor6_il

template<typename T >
using TiledArray::detail::tensor6_il = typedef std::initializer_list<tensor5_il<T> >

Definition at line 397 of file initializer_list.h.

◆ trange_t

template<typename T >
using TiledArray::detail::trange_t = typedef typename T::trange_type

Definition at line 1171 of file type_traits.h.

◆ value_t

template<class T >
using TiledArray::detail::value_t = typedef remove_cvr_t<decltype(*std::begin(std::declval<T&>()))>
Template Parameters
Ta range type value_t<T> is the value type, i.e. the type to which std::begin(T&) dereferences to
Warning
will be replaced by C++20 ranges::value_t

Definition at line 1113 of file type_traits.h.

◆ vector_il

template<typename T >
using TiledArray::detail::vector_il = typedef std::initializer_list<T>

Definition at line 377 of file initializer_list.h.

Function Documentation

◆ abs() [1/2]

template<typename T >
auto TiledArray::detail::abs ( const ComplexConjugate< T > &  a)
inline

Definition at line 270 of file complex.h.

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

◆ abs() [2/2]

int TiledArray::detail::abs ( const ComplexConjugate< void > &  a)
inline

Definition at line 274 of file complex.h.

Here is the caller graph for this function:

◆ at()

template<typename GeneralizedPair , typename = std::enable_if_t<is_gpair_v<GeneralizedPair>>>
decltype(auto) TiledArray::detail::at ( GeneralizedPair &&  v,
std::size_t  idx 
)

at(pair, i) extracts i-th element from gpair

Definition at line 1268 of file type_traits.h.

Here is the caller graph for this function:

◆ clone_range() [1/2]

template<typename T , typename std::enable_if< is_contiguous_tensor< T >::value >::type * = nullptr>
auto TiledArray::detail::clone_range ( const T &  tensor)
inline

Create a copy of the range of the tensor.

Template Parameters
TThe tensor type
Parameters
tensorThe tensor with the range to be cloned
Returns
A contiguous range with the same lower and upper bounds as the range of tensor.

Definition at line 47 of file utility.h.

Here is the caller graph for this function:

◆ clone_range() [2/2]

template<typename T , typename std::enable_if< !is_contiguous_tensor< T >::value >::type * = nullptr>
Range TiledArray::detail::clone_range ( const T &  tensor)
inline

Create a contiguous copy of the range of the tensor.

Template Parameters
TThe tensor type
Parameters
tensorThe tensor with the range to be cloned
Returns
A contiguous range with the same lower and upper bounds as the range of tensor.

Definition at line 59 of file utility.h.

◆ conj() [1/2]

template<typename R , typename std::enable_if< is_numeric_v< R > &&!is_complex< R >::value >::type * = nullptr>
TILEDARRAY_FORCE_INLINE R TiledArray::detail::conj ( const R  r)

Wrapper function for std::conj

This function disables the call to std::conj for real values to prevent the result from being converted into a complex value.

Template Parameters
RA real scalar type
Parameters
rThe real scalar
Returns
r

Definition at line 45 of file complex.h.

Here is the caller graph for this function:

◆ conj() [2/2]

template<typename R >
TILEDARRAY_FORCE_INLINE std::complex<R> TiledArray::detail::conj ( const std::complex< R >  z)

Wrapper function for std::conj.

Template Parameters
RThe scalar type
Parameters
zThe complex scalar
Returns
The complex conjugate of z

Definition at line 55 of file complex.h.

◆ conj_op() [1/2]

ComplexConjugate<void> TiledArray::detail::conj_op ( )
inline

ComplexConjugate operator factory function.

Returns
A complex conjugate operator

Definition at line 211 of file complex.h.

◆ conj_op() [2/2]

template<typename S >
ComplexConjugate<S> TiledArray::detail::conj_op ( const S  factor)
inline

ComplexConjugate operator factory function.

Template Parameters
SThe scalar type
Parameters
factorThe scaling factor
Returns
A scaling complex conjugate operator

Definition at line 204 of file complex.h.

Here is the caller graph for this function:

◆ counted_btas_subtensor_to_tensor()

template<typename DistArray_ , typename BTAS_Tensor_ >
void TiledArray::detail::counted_btas_subtensor_to_tensor ( const BTAS_Tensor_ *  src,
DistArray_ *  dst,
const typename DistArray_::ordinal_type  i,
madness::AtomicInt *  counter 
)

Task function for converting btas::Tensor subblock to a TiledArray::DistArray

Template Parameters
DistArray_a TiledArray::DistArray type
TArgsthe type pack in btas::Tensor<TArgs...> type
Parameters
srcThe btas::Tensor object whose block will be copied
dstThe array that will hold the result
iThe index of the tile to be copied
counterThe task counter

Definition at line 126 of file btas.h.

Here is the call graph for this function:

◆ counted_eigen_submatrix_to_tensor()

template<typename A , typename Derived >
void TiledArray::detail::counted_eigen_submatrix_to_tensor ( const Eigen::MatrixBase< Derived > *  matrix,
A *  array,
const typename A::ordinal_type  i,
madness::AtomicInt *  counter 
)

Task function for converting Eigen submatrix to a tensor.

Template Parameters
AArray type
DerivedThe matrix type
Parameters
matrixThe matrix that will be copied
arrayThe array that will hold the result
iThe index of the tile to be copied
counterThe task counter

Definition at line 338 of file eigen.h.

Here is the call graph for this function:

◆ counted_tensor_to_btas_subtensor()

template<typename TA_Tensor_ , typename BTAS_Tensor_ >
void TiledArray::detail::counted_tensor_to_btas_subtensor ( const TA_Tensor_ &  src,
BTAS_Tensor_ *  dst,
madness::AtomicInt *  counter 
)

Task function for assigning a tensor to an Eigen submatrix.

Template Parameters
Tensor_a TiledArray::Tensor type
TArgsthe type pack in btas::Tensor<TArgs...> type
Parameters
srcThe source tensor
dstThe destination tensor
counterThe task counter

Definition at line 143 of file btas.h.

Here is the call graph for this function:

◆ counted_tensor_to_eigen_submatrix()

template<typename Derived , typename T >
void TiledArray::detail::counted_tensor_to_eigen_submatrix ( const T &  tensor,
Eigen::MatrixBase< Derived > *  matrix,
madness::AtomicInt *  counter 
)

Task function for assigning a tensor to an Eigen submatrix.

Template Parameters
DerivedThe matrix type
TTensor type
Parameters
matrixThe matrix to be assigned
tensorThe tensor to be copied
counterThe task counter

Definition at line 356 of file eigen.h.

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

◆ diagonal_range()

Range TiledArray::detail::diagonal_range ( Range const &  rng)
inline

Computes a range of the diagonal elements (if any) in a rank-d Range.

computes [min,max) describing the diagonal elements that rank-d Range contains; if the input Range contains no diagonal elements this return an empty Range

Parameters
[in]rngan input (rank-d) Range
Returns
the range of diagonal elements, as a rank-1 Range

Definition at line 45 of file diagonal_array.h.

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

◆ diagonal_shape() [1/2]

template<typename RandomAccessIterator >
std::enable_if_t<is_iterator<RandomAccessIterator>::value, Tensor<float> > TiledArray::detail::diagonal_shape ( TiledRange const &  trange,
RandomAccessIterator  diagonals_begin,
RandomAccessIterator  diagonals_end = {} 
)

computes shape data (i.e. Frobenius norms of the tiles) for a non-constant diagonal tensor

Template Parameters
RandomAccessIteratoran iterator over the range of diagonal elements
Parameters
[in]trangea TiledRange of the result
[in]diagonals_beginthe begin iterator of the range of the diagonals
[in]diagonals_endthe end iterator of the range of the diagonals; if not given, default initialized and thus will not be checked
Returns
a Tensor<float> containing the Frobenius norms of the tiles of a DistArray with val on the diagonal and zeroes elsewhere

Definition at line 110 of file diagonal_array.h.

◆ diagonal_shape() [2/2]

template<typename T >
Tensor<float> TiledArray::detail::diagonal_shape ( TiledRange const &  trange,
val 
)

computes shape data (i.e. Frobenius norms of the tiles) for a constant diagonal tensor

Template Parameters
Ta numeric type
Parameters
trangea TiledRange of the result
valvalue of the diagonal elements
Returns
a Tensor<float> containing the Frobenius norms of the tiles of a DistArray with val on the diagonal and zeroes elsewhere

Definition at line 70 of file diagonal_array.h.

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

◆ dummy_annotation()

std::string TiledArray::detail::dummy_annotation ( unsigned int  n_outer_size,
unsigned int  n_inner_size = 0 
)
inline

Definition at line 35 of file annotation.h.

Here is the caller graph for this function:

◆ empty() [1/2]

constexpr bool TiledArray::detail::empty ( )
inlineconstexpr

Test for empty tensors in an empty list.

This function is used as the termination step for the recursive empty() function. It also handles the case where there are no tensors in the list.

Returns
true

Definition at line 320 of file utility.h.

Here is the caller graph for this function:

◆ empty() [2/2]

template<typename T1 , typename... Ts>
bool TiledArray::detail::empty ( const T1 &  tensor1,
const Ts &...  tensors 
)
inline

Test for empty tensors.

Template Parameters
T1The first tensor type
TsThe remaining tensor types
Parameters
tensor1The first tensor to test
tensorsThe remaining tensors to test
Returns
true if one or more tensors are empty

Definition at line 330 of file utility.h.

Here is the call graph for this function:

◆ foreach() [1/2]

template<bool inplace = false, typename Op , typename ResultTile , typename ArgTile , typename Policy , typename... ArgTiles>
std:: enable_if_t<!is_dense_v<Policy>, DistArray<ResultTile, Policy> > TiledArray::detail::foreach ( Op &&  op,
const ShapeReductionMethod  shape_reduction,
const_if_t< not inplace, DistArray< ArgTile, Policy >> &  arg,
const DistArray< ArgTiles, Policy > &...  args 
)
inline

base implementation of sparse TiledArray::foreach

Template Parameters
Opthe operation type, the following expression must be valid and return void or be convertible to DistArray<ArgTile, Policy>::shape_type::value_type :
Op(ResultTile&, const
ArgTile&, const ArgTiles&...)
Note
can't autodeduce ResultTile from void Op(ResultTile,ArgTile)

Definition at line 243 of file foreach.h.

Here is the call graph for this function:

◆ foreach() [2/2]

template<bool inplace = false, typename Op , typename ResultTile , typename ArgTile , typename Policy , typename... ArgTiles>
std:: enable_if_t<is_dense_v<Policy>, DistArray<ResultTile, Policy> > TiledArray::detail::foreach ( Op &&  op,
const_if_t< not inplace, DistArray< ArgTile, Policy >> &  arg,
const DistArray< ArgTiles, Policy > &...  args 
)
inline

base implementation of dense TiledArray::foreach

Note
can't autodeduce ResultTile from void Op(ResultTile,ArgTile)

Definition at line 173 of file foreach.h.

Here is the call graph for this function:

◆ fuse_dimensions()

template<typename SizeType , typename ExtentType >
void TiledArray::detail::fuse_dimensions ( SizeType *MADNESS_RESTRICT const  fused_size,
SizeType *MADNESS_RESTRICT const  fused_weight,
const ExtentType *MADNESS_RESTRICT const  size,
const Permutation perm 
)
inline

Compute the fused dimensions for permutation.

This function will compute the fused dimensions of a tensor for use in permutation algorithms. The idea is to partition the stride 1 dimensions in both the input and output tensor, which yields a forth-order tensor (second- and third-order tensors have size of 1 and stride of 0 in the unused dimensions).

Template Parameters
SizeTypeAn unsigned integral type
Parameters
[out]fused_sizeAn array for the fused size output
[out]fused_weightAn array for the fused weight output
[in]sizeAn array that holds the unfused size information of the argument tensor
[in]permThe permutation that will be applied to the argument tensor(s).

Definition at line 51 of file permute.h.

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

◆ fuse_vector_of_shapes_tiles() [1/2]

template<typename Tile >
TA::DenseShape TiledArray::detail::fuse_vector_of_shapes_tiles ( madness::World &  ,
const std::vector< TA::DistArray< Tile, TA::DensePolicy >> &  arrays,
const std::size_t  array_rank,
const TA::TiledRange fused_trange 
)

fuses the DenseShape objects of a tilewise-round-robin distributed vector of Arrays into single DenseShape object, with the vector index forming the first dimension.

This is the same as the sparse version above, but far simpler.

Parameters
global_worldthe World object in which the new fused array will live
[in]arraysa vector of DistArray objects; these are local components of a vector distributed tilewise in round-robin manner; each element of arrays must have the same TiledRange;
array_rankSum of the sizes of arrays on each rank (the size of arrays on each rank will depend on world.size)
[in]fused_trangethe TiledRange of the fused arrays
Returns
DenseShape of fused Array object

Definition at line 159 of file vector_of_arrays.h.

◆ fuse_vector_of_shapes_tiles() [2/2]

template<typename Tile >
TA::SparseShape<float> TiledArray::detail::fuse_vector_of_shapes_tiles ( madness::World &  global_world,
const std::vector< TA::DistArray< Tile, TA::SparsePolicy >> &  arrays,
const std::size_t  array_rank,
const TA::TiledRange fused_trange 
)

fuses the SparseShape objects of a tilewise-round-robin distributed vector of Arrays into single SparseShape object, with the vector index forming the first dimension.

This is used to fuse shapes of a sequence of N-dimensional arrays into the shape of the fused (N+1)-dimensional array. The sequence is tiled, and the tiles are round-robin distributed. Hence for p ranks tile I will reside on processor Ip ; this tile includes shapes of arrays [I*b, (I+1)*b).

Parameters
global_worldthe World object in which the new fused array will live
[in]arraysa vector of DistArray objects; these are local components of a vector distributed tilewise in round-robin manner; each element of arrays must have the same TiledRange;
array_rankSum of the sizes of arrays on each rank (the size of arrays on each rank will depend on world.size)
[in]fused_trangethe TiledRange of the fused arrays
Returns
SparseShape of fused Array object TODO rename to fuse_tilewise_vector_of_shapes

Definition at line 71 of file vector_of_arrays.h.

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

◆ get()

template<std::size_t I, typename T >
auto TiledArray::detail::get ( T &&  t)

Definition at line 858 of file type_traits.h.

◆ ignore_tile_position_accessor()

std::atomic<bool>& TiledArray::detail::ignore_tile_position_accessor ( )
inline

Definition at line 68 of file utility.h.

Here is the caller graph for this function:

◆ inner_product()

template<typename L , typename R , typename std::enable_if< is_numeric_v< L > &&!is_complex< L >::value >::type * = nullptr>
TILEDARRAY_FORCE_INLINE auto TiledArray::detail::inner_product ( const L  l,
const R  r 
)

Inner product of a real value and a numeric value.

Inner product of a complex value and a numeric value.

Template Parameters
LA real scalar type
RA numeric type
Returns
r
Template Parameters
LA complex type
RA numeric type
Returns
r

Definition at line 67 of file complex.h.

Here is the caller graph for this function:

◆ inner_size() [1/2]

template<typename T , typename std::enable_if< !is_contiguous_tensor< T >::value >::type * = nullptr>
T::size_type TiledArray::detail::inner_size ( const T &  tensor)
inline

Get the inner size.

This function searches of the largest contiguous size in the range of a non-contiguous tensor. At a minimum, this is equal to the size of the stride-one dimension.

Template Parameters
TA tensor type
Parameters
tensorThe tensor to be tested
Returns
The largest contiguous, inner-dimension size.

Definition at line 310 of file utility.h.

Here is the call graph for this function:

◆ inner_size() [2/2]

template<typename T1 , typename T2 , typename std::enable_if<!is_contiguous_tensor< T1 >::value &&is_contiguous_tensor< T2 >::value >::type * = nullptr>
T1::size_type TiledArray::detail::inner_size ( const T1 &  tensor1,
const T2 &  tensor2 
)
inline

Get the inner size of two tensors.

This function searches of the largest, common contiguous size in the ranges of two non-contiguous tensors. At a minimum, this is equal to the size of the stride-one dimension.

Template Parameters
T1The first tensor type
T2The secont tensor type
Parameters
tensor1The first tensor to be tested
Returns
The largest contiguous, inner-dimension size.

This function searches of the largest, common contiguous size in the ranges of two non-contiguous tensors. At a minimum, this is equal to the size of the stride-one dimension.

Template Parameters
T1The first tensor type
T2The secont tensor type
Parameters
tensor2The second tensor to be tested
Returns
The largest contiguous, inner-dimension size.

This function searches of the largest, common contiguous size in the ranges of two non-contiguous tensors. At a minimum, this is equal to the size of the stride-one dimension.

Template Parameters
T1The first tensor type
T2The secont tensor type
Parameters
tensor1The first tensor to be tested
tensor2The second tensor to be tested
Returns
The largest common, contiguous inner-dimension size of the two tensors.

Definition at line 260 of file utility.h.

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

◆ inner_size_helper() [1/2]

template<typename T >
T::size_type TiledArray::detail::inner_size_helper ( const T &  tensor)
inline

Get the inner size.

This function searches of the largest contiguous size in the range of a non-contiguous tensor. At a minimum, this is equal to the size of the stride-one dimension.

Template Parameters
TA tensor type
Parameters
tensorThe tensor to be tested
Returns
The largest contiguous, inner-dimension size.

Definition at line 192 of file utility.h.

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

◆ inner_size_helper() [2/2]

template<typename T1 , typename T2 >
T1::size_type TiledArray::detail::inner_size_helper ( const T1 &  tensor1,
const T2 &  tensor2 
)
inline

Get the inner size of two tensors.

This function searches of the largest, common contiguous size in the ranges of two non-contiguous tensors. At a minimum, this is equal to the size of the stride-one dimension.

Template Parameters
T1The first tensor type
T2The secont tensor type
Parameters
tensor1The first tensor to be tested
tensor2The second tensor to be tested
Returns
The largest contiguous, inner-dimension size of the two tensors.

Definition at line 221 of file utility.h.

Here is the call graph for this function:

◆ inplace_tensor_op() [1/2]

template<typename InputOp , typename OutputOp , typename TR , typename T1 , typename... Ts, typename std::enable_if< is_tensor< TR, T1, Ts... >::value &&is_contiguous_tensor< TR, T1, Ts... >::value >::type * = nullptr>
void TiledArray::detail::inplace_tensor_op ( InputOp &&  input_op,
OutputOp &&  output_op,
const Permutation perm,
TR &  result,
const T1 &  tensor1,
const Ts &...  tensors 
)
inline

In-place tensor permutation operations with contiguous data.

In-place tensor of tensors permutation operations with contiguous data.

This function sets the i -th element of result with the result of op(tensor1[i],tensors[i]...) The expected signature of the input operations is:

Result::value_type op(const T1::value_type, const Ts::value_type...)

The expected signature of the output operations is:

void op(TR::value_type*, const TR::value_type)
Template Parameters
InputOpThe input operation type
OutputOpThe output operation type
TRThe result tensor type
T1The first argument tensor type
TsThe remaining argument tensor types
Parameters
[in]input_opThe operation that is used to generate the output value from the input arguments
[in]output_opThe operation that is used to set the value of the result tensor given the element pointer and the result value
[in]permThe permutation applied to the argument tensors
[in,out]resultThe result tensor
[in]tensor1The first argument tensor
[in]tensorsThe remaining argument tensors

This function sets the i -th element of result with the result of op(tensor1[i], tensors[i]...) The expected signature of the input operations is:

Result::value_type op(const T1::value_type::value_type, const
Ts::value_type::value_type...)

The expected signature of the output operations is:

void op(TR::value_type::value_type*, const
TR::value_type::value_type)
Template Parameters
InputOpThe input operation type
OutputOpThe output operation type
TRThe result tensor type
T1The first argument tensor type
TsThe remaining argument tensor types
Parameters
[in]input_opThe operation that is used to generate the output value from the input arguments
[in]output_opThe operation that is used to set the value of the result tensor given the element pointer and the result value
[in]permThe permutation applied to the argument tensors
[in,out]resultThe result tensor
[in]tensor1The first argument tensor
[in]tensorsThe remaining argument tensors

Definition at line 262 of file kernels.h.

Here is the call graph for this function:

◆ inplace_tensor_op() [2/2]

template<typename Op , typename TR , typename... Ts, typename std::enable_if< is_tensor< TR, Ts... >::value &&is_contiguous_tensor< TR, Ts... >::value >::type * = nullptr>
void TiledArray::detail::inplace_tensor_op ( Op &&  op,
TR &  result,
const Ts &...  tensors 
)
inline

In-place tensor operations with contiguous data.

In-place tensor of tensors operations with non-contiguous data.

In-place tensor operations with non-contiguous data.

In-place tensor of tensors operations with contiguous data.

This function sets the elements of result with the result of op(tensors[i]...)

Template Parameters
OpThe element initialization operation type
TRThe result tensor type
TsThe remaining argument tensor types
Parameters
[in]opThe result tensor element initialization operation
[in,out]resultThe result tensor
[in]tensorsThe argument tensors

This function sets the i -th element of result with the result of op(tensors[i]...)

Template Parameters
OpThe element initialization operation type
TRThe result tensor type
TsThe remaining argument tensor types
Parameters
[in]opThe result tensor element initialization operation
[in,out]resultThe result tensor
[in]tensorsThe argument tensors

Definition at line 197 of file kernels.h.

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

◆ is_range_congruent() [1/3]

template<typename Left , typename Right >
bool TiledArray::detail::is_range_congruent ( const Left &  left,
const ShiftWrapper< Right > &  right 
)
inline

Check for congruent range objects with a shifted tensor.

Template Parameters
LeftThe left-hand tensor type
RightThe right-hand tensor type
Parameters
leftThe left-hand tensor
rightThe right-hand tensor
Returns
true if the lower and upper bounds of the left- and right-hand tensor ranges are equal, otherwise false

Definition at line 120 of file shift_wrapper.h.

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

◆ is_range_congruent() [2/3]

template<typename T1 , typename T2 , typename std::enable_if<!(is_shifted< T1 >::value||is_shifted< T2 >::value)>::type * = nullptr>
bool TiledArray::detail::is_range_congruent ( const T1 &  tensor1,
const T2 &  tensor2 
)
inline

Test that the ranges of a pair of tensors are congruent.

Test that the ranges of a pair of shifted tensors are congruent.

This function tests that the rank and extent of tensor1 are equal to those of tensor2.

Template Parameters
T1The first tensor type
T2The second tensor type
Parameters
tensor1The first tensor to be compared
tensor2The second tensor to be compared
Returns
true if the rank and extent of the two tensors equal, otherwise false.

This function tests that the extents of the two tensors are equal. One or both of the tensors may be shifted.

Template Parameters
T1The first tensor type
T2The second tensor type
Parameters
tensor1The first tensor to be compared
tensor2The second tensor to be compared
Returns
true if the rank and extent of the two tensors equal, otherwise false.

Definition at line 76 of file utility.h.

Here is the call graph for this function:

◆ is_range_congruent() [3/3]

template<typename T1 , typename T2 , typename std::enable_if<!(is_shifted< T1 >::value||is_shifted< T2 >::value)>::type * = nullptr>
bool TiledArray::detail::is_range_congruent ( const T1 &  tensor1,
const T2 &  tensor2,
const Permutation perm 
)
inline

Test that the ranges of a pair of permuted tensors are congruent.

This function tests that the rank, lower bound, and upper bound of tensor1 is equal to that of the permuted range of tensor2.

Template Parameters
T1The first tensor type
T2The second tensor type
Parameters
tensor1The first tensor to be compared
tensor2The second tensor to be compared
permThe permutation to be applied to tensor2
Returns
true if the rank and extent of the two tensors equal, otherwise false.

Definition at line 94 of file utility.h.

Here is the call graph for this function:

◆ is_range_set_congruent() [1/4]

template<typename T >
constexpr bool TiledArray::detail::is_range_set_congruent ( const Permutation perm,
const T &  tensor 
)
inlineconstexpr

Test that the ranges of a permuted tensor is congruent with itself.

This function is used as the termination step for the recursive is_range_set_congruent() function, and to handle the case of a single tensor.

Template Parameters
TThe tensor type
Parameters
permThe permutation
tensorThe tensor
Returns
true

Definition at line 130 of file utility.h.

Here is the caller graph for this function:

◆ is_range_set_congruent() [2/4]

template<typename T1 , typename T2 , typename... Ts>
bool TiledArray::detail::is_range_set_congruent ( const Permutation perm,
const T1 &  tensor1,
const T2 &  tensor2,
const Ts &...  tensors 
)
inline

Test that the ranges of a permuted set of tensors are congruent.

Template Parameters
T1The first tensor type
T2The second tensor type
TsThe remaining tensor types
Parameters
permThe permutation to be applied to tensor2 and tensors...
tensor1The first tensor to be compared
tensor2The second tensor to be compared
tensorsThe remaining tensor to be compared in recursive steps
Returns
true if all permuted tensors in the list are congruent with the first tensor in the set, otherwise false.

Definition at line 147 of file utility.h.

Here is the call graph for this function:

◆ is_range_set_congruent() [3/4]

template<typename T >
constexpr bool TiledArray::detail::is_range_set_congruent ( const T &  tensor)
inlineconstexpr

Test that the ranges of a tensor is congruent with itself.

This function is used as the termination step for the recursive is_range_set_congruent() function, and to handle the case of a single tensor.

Template Parameters
TThe tensor type
Parameters
tensorThe tensor
Returns
true

Definition at line 162 of file utility.h.

◆ is_range_set_congruent() [4/4]

template<typename T1 , typename T2 , typename... Ts>
bool TiledArray::detail::is_range_set_congruent ( const T1 &  tensor1,
const T2 &  tensor2,
const Ts &...  tensors 
)
inline

Test that the ranges of a set of tensors are congruent.

Template Parameters
T1The first tensor type
T2The second tensor type
TsThe remaining tensor types
Parameters
tensor1The first tensor to be compared
tensor2The second tensor to be compared
tensorsThe remaining tensor to be compared in recursive steps
Returns
true if all tensors in the list are congruent with the first tensor in the set, otherwise false.

Definition at line 177 of file utility.h.

Here is the call graph for this function:

◆ is_tot_index()

bool TiledArray::detail::is_tot_index ( const std::string &  idx)
inline

Defines what it means for a string index to be for a Tensor-of-Tensors

TiledArray defines an index as being for a tensor-of-tensors if:

  • the index is valid
  • the index contains a semicolon
Parameters
[in]idxThe index whose tensor-of-tensor-ness is in question.
Returns
True if idx is a valid tensor-of-tensor index and false otherwise.
Exceptions
std::bad_allocif is_valid_index throws while copying or splitting idx. Strong throw guarantee.

Definition at line 160 of file annotation.h.

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

◆ is_valid_index()

bool TiledArray::detail::is_valid_index ( const std::string &  idx)
inline

Checks that the provided index is a valid TiledArray index

TiledArray defines a string as being a valid index if each character is one of the following:

  • Roman letters A through Z (uppercase and lowercase are allowed)
  • Base 10 numbers 0 through 9
  • Whitespace
  • underscore (_), prime ('), comma (,), or semicolon (;)

Additionally the string can not:

  • be only whitespace
  • contain more than one semicolon
  • have anonymous index name (i.e. can't have "i,,k" because the middle index has no name).
Parameters
[in]idxThe index whose validity is being questioned.
Returns
True if the string corresponds to a valid index and false otherwise.
Note
This function only tests that the characters making up the index are valid. The index may still be invalid for a particular tensor. For example if idx is an index for a matrix, but the actual tensor is rank 3, then idx would be an invalid index for that tensor despite being a valid index.
Exceptions
std::bad_allocif there is insufficient memory to copy idx. Strong throw guarantee.
std::bad_allocif there is insufficient memory to split idx into tokens. Strong throw guarantee.

Definition at line 122 of file annotation.h.

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

◆ make_shape()

template<bool sparse>
auto TiledArray::detail::make_shape ( World &  world,
const TiledArray::TiledRange trange 
)

◆ make_shape< false >()

template<>
auto TiledArray::detail::make_shape< false > ( World &  ,
const TiledArray::TiledRange  
)
inline

Definition at line 161 of file btas.h.

◆ make_shape< true >()

template<>
auto TiledArray::detail::make_shape< true > ( World &  world,
const TiledArray::TiledRange trange 
)
inline

Definition at line 153 of file btas.h.

Here is the call graph for this function:

◆ make_ta_range() [1/2]

template<::blas::Layout Order, typename... Args>
TiledArray::Range TiledArray::detail::make_ta_range ( const btas::RangeNd< Order, Args... > &  range)
inline

makes TiledArray::Range from a btas::RangeNd

Parameters
[in]rangea btas::RangeNd object
Exceptions
TiledArray::Exceptionif range is non-row-major

Definition at line 67 of file btas.h.

◆ make_ta_range() [2/2]

const TiledArray::Range& TiledArray::detail::make_ta_range ( const TiledArray::Range range)
inline

Definition at line 58 of file btas.h.

Here is the caller graph for this function:

◆ make_tile()

template<typename T >
Tile<T> TiledArray::detail::make_tile ( T &&  t)

Factory function for tiles.

Template Parameters
TA tensor type
Parameters
tA tensor object
Returns
A tile that wraps a copy of t.

Definition at line 619 of file tile.h.

Here is the caller graph for this function:

◆ make_tran_it() [1/2]

template<typename Iter , typename Op >
UnaryTransformIterator<Iter, Op> TiledArray::detail::make_tran_it ( Iter  it,
Op  op 
)

Unary Transform iterator factory.

Template Parameters
IterThe iterator type
OpThe binary transform type
Parameters
itThe iterator
opThe binary transform object
Returns
A unary transform iterator

Definition at line 437 of file transform_iterator.h.

◆ make_tran_it() [2/2]

template<typename Iter1 , typename Iter2 , typename Op >
BinaryTransformIterator<Iter1, Iter2, Op> TiledArray::detail::make_tran_it ( Iter1  it1,
Iter2  it2,
Op  op 
)

Binary Transform iterator factory.

Template Parameters
Iter1First iterator type
Iter2Second iterator type
OpThe binary transform type
Parameters
it1First iterator
it2Second iterator
opThe binary transform object
Returns
A binary transform iterator

Definition at line 424 of file transform_iterator.h.

◆ norm() [1/2]

template<typename R , typename std::enable_if< is_numeric_v< R > &&!is_complex< R >::value >::type * = nullptr>
TILEDARRAY_FORCE_INLINE R TiledArray::detail::norm ( const R  r)

Wrapper function for std::norm

This function disables the call to std::conj for real values to prevent the result from being converted into a complex value.

Template Parameters
RA real scalar type
Parameters
rThe real scalar
Returns
r

Definition at line 93 of file complex.h.

Here is the caller graph for this function:

◆ norm() [2/2]

template<typename R >
TILEDARRAY_FORCE_INLINE R TiledArray::detail::norm ( const std::complex< R >  z)

Compute the norm of a complex number z

\[ {\rm norm}(z) = zz^* = {\rm Re}(z)^2 + {\rm Im}(z)^2 \]

Template Parameters
RThe scalar type
Parameters
zThe complex scalar
Returns
The complex conjugate of z

Definition at line 106 of file complex.h.

◆ operator!=() [1/3]

template<typename T , typename Container >
bool TiledArray::detail::operator!= ( const RangeIterator< T, Container > &  left_it,
const RangeIterator< T, Container > &  right_it 
)

Inequality operator.

Compares the iterators for inequality.

Template Parameters
TThe value type of the iterator
ContainerThe container that the iterator references
Parameters
left_itThe left-hand iterator to be compared
right_itThe right-hand iterator to be compared
Returns
true if the value or container are not equal for the left_it and right_it , otherwise false .

Definition at line 191 of file range_iterator.h.

◆ operator!=() [2/3]

template<typename Impl >
bool TiledArray::detail::operator!= ( const TileConstReference< Impl > &  a,
const TileConstReference< Impl > &  b 
)

inequality operator for TileConstReference objects

Definition at line 188 of file array_impl.h.

◆ operator!=() [3/3]

template<typename Impl >
bool TiledArray::detail::operator!= ( const TileReference< Impl > &  a,
const TileReference< Impl > &  b 
)

inequality operator for TileReference objects

Definition at line 126 of file array_impl.h.

◆ operator&()

template<typename Block >
Bitset<Block> TiledArray::detail::operator& ( Bitset< Block >  left,
const Bitset< Block > &  right 
)

Bitwise and operator of bitset.

Template Parameters
BlockThe bitset block type
Parameters
leftThe left-hand bitset
rightThe right-hand bitset
Returns
The a intersection of the left and right bitsets

Definition at line 587 of file bitset.h.

◆ operator*() [1/7]

template<typename R >
TILEDARRAY_FORCE_INLINE auto TiledArray::detail::operator* ( const ComplexConjugate< ComplexNegTag ,
const R  value 
)

Definition at line 244 of file complex.h.

Here is the call graph for this function:

◆ operator*() [2/7]

template<typename L , typename R >
TILEDARRAY_FORCE_INLINE auto TiledArray::detail::operator* ( const ComplexConjugate< L >  op,
const R  value 
)

Definition at line 232 of file complex.h.

Here is the call graph for this function:

◆ operator*() [3/7]

template<typename R >
TILEDARRAY_FORCE_INLINE auto TiledArray::detail::operator* ( const ComplexConjugate< void >  ,
const R  value 
)

Definition at line 238 of file complex.h.

Here is the call graph for this function:

◆ operator*() [4/7]

template<typename L >
TILEDARRAY_FORCE_INLINE auto TiledArray::detail::operator* ( const L  value,
const ComplexConjugate< ComplexNegTag > &   
)

Definition at line 226 of file complex.h.

Here is the call graph for this function:

◆ operator*() [5/7]

template<typename L , typename R >
TILEDARRAY_FORCE_INLINE auto TiledArray::detail::operator* ( const L  value,
const ComplexConjugate< R >  op 
)

Definition at line 214 of file complex.h.

Here is the call graph for this function:

◆ operator*() [6/7]

template<typename L >
TILEDARRAY_FORCE_INLINE auto TiledArray::detail::operator* ( const L  value,
const ComplexConjugate< void > &   
)

Definition at line 220 of file complex.h.

Here is the call graph for this function:

◆ operator*() [7/7]

template<typename T >
std::vector<T> TiledArray::detail::operator* ( const Permutation perm,
const SizeArray< T > &  orig 
)
inline

Definition at line 432 of file size_array.h.

Here is the call graph for this function:

◆ operator*=() [1/3]

template<typename L >
TILEDARRAY_FORCE_INLINE L& TiledArray::detail::operator*= ( L &  value,
const ComplexConjugate< ComplexNegTag > &   
)

Definition at line 263 of file complex.h.

Here is the call graph for this function:

◆ operator*=() [2/3]

template<typename L , typename R , typename std::enable_if<!std::is_void< R >::value >::type * = nullptr>
TILEDARRAY_FORCE_INLINE L& TiledArray::detail::operator*= ( L &  value,
const ComplexConjugate< R >  op 
)

Definition at line 251 of file complex.h.

Here is the call graph for this function:

◆ operator*=() [3/3]

template<typename L >
TILEDARRAY_FORCE_INLINE L& TiledArray::detail::operator*= ( L &  value,
const ComplexConjugate< void > &   
)

Definition at line 257 of file complex.h.

Here is the call graph for this function:

◆ operator<<() [1/5]

template<typename Block >
std::ostream& TiledArray::detail::operator<< ( std::ostream &  os,
const Bitset< Block > &  bitset 
)

Definition at line 617 of file bitset.h.

Here is the call graph for this function:

◆ operator<<() [2/5]

template<typename T >
std::ostream& TiledArray::detail::operator<< ( std::ostream &  os,
const SizeArray< T > &  size_array 
)
inline

Definition at line 440 of file size_array.h.

Here is the call graph for this function:

◆ operator<<() [3/5]

template<typename Impl >
std::ostream& TiledArray::detail::operator<< ( std::ostream &  os,
const TileConstReference< Impl > &  a 
)

redirect operator to std::ostream for TileConstReference objects

Definition at line 195 of file array_impl.h.

Here is the call graph for this function:

◆ operator<<() [4/5]

template<typename Impl >
std::ostream& TiledArray::detail::operator<< ( std::ostream &  os,
const TileReference< Impl > &  a 
)

redirect operator to std::ostream for TileReference objects

Definition at line 132 of file array_impl.h.

Here is the call graph for this function:

◆ operator<<() [5/5]

template<typename T >
std::ostream& TiledArray::detail::operator<< ( std::ostream &  os,
const ValArray< T > &  val_array 
)
inline

Definition at line 480 of file val_array.h.

Here is the call graph for this function:

◆ operator==() [1/4]

template<typename T , typename Container >
bool TiledArray::detail::operator== ( const RangeIterator< T, Container > &  left_it,
const RangeIterator< T, Container > &  right_it 
)

Equality operator.

Compares the iterators for equality. They must reference the same range object to be considered equal.

Template Parameters
TThe value type of the iterator
ContainerThe container that the iterator references
Parameters
left_itThe left-hand iterator to be compared
right_itThe right-hand iterator to be compared
Returns
true if the value and container are equal for the left_it and right_it , otherwise false .

Definition at line 175 of file range_iterator.h.

Here is the call graph for this function:

◆ operator==() [2/4]

template<typename T , typename Range , typename OpResult >
bool TiledArray::detail::operator== ( const TensorInterface< T, Range, OpResult > &  first,
const TensorInterface< T, Range, OpResult > &  second 
)

Shallow comparison operator.

Returns
true if first and second view the same data block through equivalent ranges

Definition at line 1143 of file tensor_interface.h.

Here is the call graph for this function:

◆ operator==() [3/4]

template<typename Impl >
bool TiledArray::detail::operator== ( const TileConstReference< Impl > &  a,
const TileConstReference< Impl > &  b 
)

comparison operator for TileConstReference objects

Definition at line 181 of file array_impl.h.

Here is the call graph for this function:

◆ operator==() [4/4]

template<typename Impl >
bool TiledArray::detail::operator== ( const TileReference< Impl > &  a,
const TileReference< Impl > &  b 
)

comparison operator for TileReference objects

Definition at line 120 of file array_impl.h.

Here is the call graph for this function:

◆ operator^()

template<typename Block >
Bitset<Block> TiledArray::detail::operator^ ( Bitset< Block >  left,
const Bitset< Block > &  right 
)

Bitwise xor operator of bitset.

Template Parameters
BlockThe bitset block type
Parameters
leftThe left-hand bitset
rightThe right-hand bitset
Returns
The union of the left and right bitsets

Definition at line 611 of file bitset.h.

◆ operator|()

template<typename Block >
Bitset<Block> TiledArray::detail::operator| ( Bitset< Block >  left,
const Bitset< Block > &  right 
)

Bitwise or operator of bitset.

Template Parameters
BlockThe bitset block type
Parameters
leftThe left-hand bitset
rightThe right-hand bitset
Returns
The union of the left and right bitsets

Definition at line 599 of file bitset.h.

◆ permute()

template<typename InputOp , typename OutputOp , typename Result , typename Perm , typename Arg0 , typename... Args, typename = std::enable_if_t<detail::is_permutation_v<Perm>>>
void TiledArray::detail::permute ( InputOp &&  input_op,
OutputOp &&  output_op,
Result &  result,
const Perm &  perm,
const Arg0 &  arg0,
const Args &...  args 
)
inline

Construct a permuted tensor copy.

The expected signature of the input operations is:

Result::value_type input_op(const Arg0::value_type, const
Args::value_type...)

The expected signature of the output operations is:

void output_op(Result::value_type*, const
Result::value_type)
Template Parameters
InputOpThe input operation type
OutputOpThe output operation type
ResultThe result tensor type
Arg0The first tensor argument type
ArgsThe remaining tensor argument types
Parameters
input_opThe operation that is used to generate the output value from the input arguments
output_opThe operation that is used to set the value of the result tensor given the element pointer and the result value
argsThe data pointers of the tensors to be permuted
permThe permutation that will be applied to the copy

Definition at line 117 of file permute.h.

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

◆ permute_array()

template<typename Perm , typename Arg , typename Result , typename = std::enable_if_t<is_permutation_v<Perm>>>
void TiledArray::detail::permute_array ( const Perm &  perm,
const Arg &  arg,
Result &  result 
)
inline

Create a permuted copy of an array.

Template Parameters
PermThe permutation type
ArgThe input array type
ResultThe output array type
Parameters
[in]permThe permutation
[in]argThe input array to be permuted
[out]resultThe output array that will hold the permuted array

Definition at line 66 of file permutation.h.

Here is the caller graph for this function:

◆ prepend_dim_to_trange()

TA::TiledRange TiledArray::detail::prepend_dim_to_trange ( std::size_t  array_rank,
const TiledArray::TiledRange array_trange,
std::size_t  block_size = 1 
)
inline

prepends an extra dimension to a TRange

The extra dimension will be the leading dimension, and will be blocked by block_size

Parameters
array_rankextent of the leading dimension of the result
array_trangethe base trange
block_sizeblocking range for the new dimension, the dimension being fused
Returns
TiledRange of fused Array object

make the new TiledRange1 for new dimension

make the new range for N+1 Array

Definition at line 24 of file vector_of_arrays.h.

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

◆ print_array() [1/2]

template<typename A >
void TiledArray::detail::print_array ( std::ostream &  out,
const A &  a 
)
inline

Print the content of an array like object.

Template Parameters
AThe array container type
Parameters
outA standard output stream
aThe array-like container to be printed

Definition at line 63 of file utility.h.

Here is the call graph for this function:

◆ print_array() [2/2]

template<typename A >
void TiledArray::detail::print_array ( std::ostream &  out,
const A &  a,
const std::size_t  n 
)
inline

Print the content of an array like object.

Template Parameters
AThe array container type
Parameters
outA standard output stream
aThe array-like container to be printed
nThe number of elements in the array.

Definition at line 48 of file utility.h.

Here is the caller graph for this function:

◆ remove_whitespace()

auto TiledArray::detail::remove_whitespace ( std::string  s)
inline

This function removes all whitespace characters from a string.

Parameters
[in]sThe string we are removing whitespace from.
Returns
s, but without whitespace.
Exceptions
noneNo throw guarantee.

Definition at line 52 of file annotation.h.

Here is the caller graph for this function:

◆ split_index()

auto TiledArray::detail::split_index ( const std::string &  idx)
inline

Splits and sanitizes a string labeling a tensor's modes.

This function encapsulates TiledArray's string index parsing. It is a free function to facilitate usage outside the BipartiteIndexList class. This function will take a string and separate it into the individual mode labels. The API is designed so that split_index can be used with tensors-of-tensors as well as normal, non-nested tensors. By convention, tokenized indices of normal tensors are returned as "outer" indices. The resulting indices will be stripped of all whitespace to facilitate string comparisons.

Note
This function will ensure that idx is a valid string label. This entails requiring that is_valid_index(idx) is true. It does not take into the rank and/or partitioning of the tensor being labeled, i.e., it is the caller's responsibility to make sure the index makes sense for the tensor being labeled.
Parameters
[in]idxThe string label that should be tokenized
Returns
An std::pair such that the first element is a vector containing the tokenized outer indices and the second element of the std::pair is a std::vector with the tokenized inner indices. Inner indices will be an empty std::vector if idx is not a tensor-of-tensor index.
Exceptions
TiledArray::Exceptionif idx is not a valid string labeling. Strong throw guarantee.
std::bad_allocif there is insufficient memory to copy idx or to create the returns. Strong throw guarantee.

Definition at line 191 of file annotation.h.

Here is the call graph for this function:

◆ subshape_from_fused_tile() [1/2]

TA::DenseShape TiledArray::detail::subshape_from_fused_tile ( const TA::TiledRange split_trange,
const TA::DensePolicy::shape_type shape,
const std::size_t  tile_idx,
const std::size_t  split_ntiles,
const std::size_t  tile_size 
)
inline

extracts the shape of a subarray of a fused array created with fuse_vector_of_arrays

Parameters
[in]fused_arraya DistArray created with fuse_vector_of_arrays
[in]ithe index of the subarray whose Shape will be extracted (i.e. the index of the corresponding tile of the leading dimension)
[in]split_trangeTiledRange of the target subarray objct
Returns
the Shape of the i -th subarray

Definition at line 212 of file vector_of_arrays.h.

◆ subshape_from_fused_tile() [2/2]

TA::SparseShape<float> TiledArray::detail::subshape_from_fused_tile ( const TA::TiledRange split_trange,
const TA::SparsePolicy::shape_type shape,
const std::size_t  tile_idx,
const std::size_t  split_ntiles,
const std::size_t  tile_size 
)
inline

extracts the shape of a slice of a fused array created with fuse_vector_of_arrays

Parameters
[in]split_trangethe TiledRange object of each "slice" array that was fused via fuse_vector_of_arrays
[in]shapethe shape of a DistArray created with fuse_vector_of_arrays
[in]tile_idxthe tile index of the leading mode that will be sliced off
[in]split_ntilesthe number of tiles in each "slice" array that was fused via fuse_vector_of_arrays
[in]tile_sizethe size of the tile of the leading dimension of the fused array
Returns
the Shape of the i -th subarray

Definition at line 180 of file vector_of_arrays.h.

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

◆ swap()

template<typename B >
void TiledArray::detail::swap ( Bitset< B > &  b0,
Bitset< B > &  b1 
)
inline

Definition at line 565 of file bitset.h.

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

◆ tensor_init() [1/3]

template<typename Op , typename TR , typename T1 , typename... Ts, typename std::enable_if< is_tensor< TR, T1, Ts... >::value >::type * = nullptr>
void TiledArray::detail::tensor_init ( Op &&  op,
const Permutation perm,
TR &  result,
const T1 &  tensor1,
const Ts &...  tensors 
)
inline

Initialize tensor with permuted tensor arguments.

Initialize tensor of tensors with permuted tensor arguments.

This function initializes the i -th element of result with the result of op(tensor1[i], tensors[i]...)

Precondition
The memory of result has been allocated but not initialized.
Template Parameters
OpThe element initialization operation type
TRThe result tensor type
T1The first argument tensor type
TsThe argument tensor types
Parameters
[in]opThe result tensor element initialization operation
[in]permThe permutation that will be applied to tensor2
[out]resultThe result tensor
[in]tensor1The first argument tensor
[in]tensorsThe argument tensors

This function initializes the i -th element of result with the result of op(tensor1[i], tensors[i]...)

Precondition
The memory of result has been allocated but not initialized.
Template Parameters
OpThe element initialization operation type
PermA permutation type
TRThe result tensor type
T1The first argument tensor type
TsThe argument tensor types
Parameters
[in]opThe result tensor element initialization operation
[out]resultThe result tensor
[in]tensor1The first argument tensor
[in]tensorsThe argument tensors

Definition at line 488 of file kernels.h.

Here is the call graph for this function:

◆ tensor_init() [2/3]

template<typename Op , typename TR , typename T1 , typename... Ts, typename std::enable_if< is_tensor< TR, T1, Ts... >::value &&is_contiguous_tensor< TR >::value &&!is_contiguous_tensor< T1, Ts... >::value >::type * = nullptr>
void TiledArray::detail::tensor_init ( Op &&  op,
TR &  result,
const T1 &  tensor1,
const Ts &...  tensors 
)
inline

Initialize tensor with one or more non-contiguous tensor arguments.

This function initializes the i -th element of result with the result of op(tensor1[i], tensors[i]...)

Precondition
The memory of tensor1 has been allocated but not initialized.
Template Parameters
OpThe element initialization operation type
T1The result tensor type
TsThe argument tensor types
Parameters
[in]opThe result tensor element initialization operation
[out]resultThe result tensor
[in]tensor1The first argument tensor
[in]tensorsThe argument tensors

This function initializes the i -th element of result with the result of op(tensor1[i],tensors[i]...)

Precondition
The memory of tensor1 has been allocated but not initialized.
Template Parameters
OpThe element initialization operation type
T1The result tensor type
TsThe argument tensor types
Parameters
[in]opThe result tensor element initialization operation
[out]resultThe result tensor
[in]tensor1The first argument tensor
[in]tensorsThe argument tensors

Definition at line 567 of file kernels.h.

Here is the call graph for this function:

◆ tensor_init() [3/3]

template<typename Op , typename TR , typename... Ts, typename std::enable_if< is_tensor< TR, Ts... >::value &&is_contiguous_tensor< TR, Ts... >::value >::type * = nullptr>
void TiledArray::detail::tensor_init ( Op &&  op,
TR &  result,
const Ts &...  tensors 
)
inline

Initialize tensor with contiguous tensor arguments.

Initialize tensor of tensors with contiguous tensor arguments.

This function initializes the i -th element of result with the result of op(tensors[i]...)

Precondition
The memory of tensor1 has been allocated but not initialized.
Template Parameters
OpThe element initialization operation type
TRThe result tensor type
TsThe argument tensor types
Parameters
[in]opThe result tensor element initialization operation
[out]resultThe result tensor
[in]tensorsThe argument tensors

Definition at line 421 of file kernels.h.

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

◆ tensor_op() [1/2]

template<typename TR , typename Op , typename T1 , typename... Ts, typename std::enable_if<(is_tensor< T1, Ts... >::value||is_tensor_of_tensor< TR, T1, Ts... >::value) &&is_contiguous_tensor< T1, Ts... >::value >::type * = nullptr>
TR TiledArray::detail::tensor_op ( Op &&  op,
const Permutation perm,
const T1 &  tensor1,
const Ts &...  tensors 
)
inline

Tensor permutation operations with contiguous data.

This function transforms argument tensors applying a callable directly (i.e., tensor-wise as result=op(perm,tensor1,tensors...) ), or by lowering to the elements (i.e., element-wise as result[i]=op(perm,tensor1[i],tensors[i]...) )

Template Parameters
TRThe tensor result type
OpA callable used to produce TR when called with the argument tensors, or produce TR's elements when called with the argument tensor's elements
T1The result tensor type
TsThe argument tensor types
Parameters
[in]opThe operation that is used to compute the result value from the input arguments
[in]permThe permutation applied to the argument tensors
[in]tensor1The first argument tensor
[in]tensorsThe remaining argument tensors

Definition at line 98 of file kernels.h.

◆ tensor_op() [2/2]

template<typename TR , typename Op , typename T1 , typename... Ts, typename std::enable_if< is_tensor< TR, T1, Ts... >::value||is_tensor_of_tensor< TR, T1, Ts... >::value >::type * = nullptr>
TR TiledArray::detail::tensor_op ( Op &&  op,
const T1 &  tensor1,
const Ts &...  tensors 
)
inline

Tensor operations with contiguous data.

This function transforms argument tensors applying a callable directly (i.e., tensor-wise as result=op(tensor1,tensors...) ), or by lowering to the elements (i.e., element-wise as result[i]=op(tensor1[i],tensors[i]...) )

Template Parameters
TRThe tensor result type
OpA callable used to produce TR when called with the argument tensors, or produce TR's elements when called with the argument tensor's elements
T1The first argument tensor type
TsThe remaining argument tensor types
Parameters
opThe result tensor element initialization operation
tensor1The first argument tensor
tensorsThe remaining argument tensors

Definition at line 66 of file kernels.h.

◆ tensor_reduce()

template<typename ReduceOp , typename JoinOp , typename Scalar , typename T1 , typename... Ts, typename std::enable_if_t< is_tensor< T1, Ts... >::value &&is_contiguous_tensor< T1, Ts... >::value &&!is_reduce_op_v< std::decay_t< ReduceOp >, std::decay_t< Scalar >, std::decay_t< T1 >, std::decay_t< Ts >... >> * = nullptr>
Scalar TiledArray::detail::tensor_reduce ( ReduceOp &&  reduce_op,
JoinOp &&  join_op,
Scalar  identity,
const T1 &  tensor1,
const Ts &...  tensors 
)

Reduction operation for contiguous tensors.

Reduction operation for non-contiguous tensors of tensors.

Reduction operation for non-contiguous tensors.

Reduction operation for contiguous tensors of tensors.

Reduction operation for tensors.

Perform an element-wise reduction of the tensors by executing join_op(result, reduce_op(result, &tensor1[i], &tensors[i]...)) for each i in the index range of tensor1 . result is initialized to identity . If HAVE_INTEL_TBB is defined, the reduction will be executed in an undefined order, otherwise will execute in the order of increasing i .

Template Parameters
ReduceOpThe element-wise reduction operation type
JoinOpThe result operation type
ScalarA scalar type
T1The first argument tensor type
TsThe argument tensor types
Parameters
reduce_opThe element-wise reduction operation
identityThe initial value for the reduction and the result
tensor1The first tensor to be reduced
tensorsThe other tensors to be reduced
Returns
The reduced value of the tensor(s)

Perform tensor-wise reduction of the tensors by executing reduce_op(result, &tensor1, &tensors...). result is initialized to identity .

Template Parameters
ReduceOpThe tensor-wise reduction operation type
JoinOpThe result operation type
ScalarA scalar type
T1The first argument tensor type
TsThe argument tensor types
Parameters
reduce_opThe element-wise reduction operation
identityThe initial value for the reduction and the result
tensor1The first tensor to be reduced
tensorsThe other tensors to be reduced
Returns
The reduced value of the tensor(s)

Perform reduction of the tensor-of-tensors' elements by executing join_op(result, reduce_op(tensor1[i], tensors[i]...)) for each i in the index range of tensor1 . result is initialized to identity . This will execute serially, in the order of increasing i (each element's reduction can however be executed in parallel, depending on the element type).

Template Parameters
ReduceOpThe tensor-wise reduction operation type
JoinOpThe result operation type
ScalarA scalar type
T1The first argument tensor type
TsThe argument tensor types
Parameters
reduce_opThe element-wise reduction operation
join_opThe result join operation
identityThe initial value for the reduction and the result
tensor1The first tensor to be reduced
tensorsThe other tensors to be reduced
Returns
The reduced value of the tensor(s)

Perform an element-wise reduction of the tensors by executing join_op(result, reduce_op(tensor1[i], tensors[i]...)) for each i in the index range of tensor1 . result is initialized to identity . This will execute serially, in the order of increasing i (each element-wise reduction can however be executed in parallel, depending on the element type).

Template Parameters
ReduceOpThe element-wise reduction operation type
JoinOpThe result operation type
ScalarA scalar type
T1The first argument tensor type
TsThe argument tensor types
Parameters
reduce_opThe element-wise reduction operation
join_opThe result join operation
identityThe initial value for the reduction and the result
tensor1The first tensor to be reduced
tensorsThe other tensors to be reduced
Returns
The reduced value of the tensor(s)

Definition at line 665 of file kernels.h.

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

◆ tokenize_index()

auto TiledArray::detail::tokenize_index ( const std::string &  s,
char  delim 
)
inline

Splits a string into tokens based on a character delimiter

This function assumes that the input string can be considered a series of delimiter separated tokens. It will split the string into tokens and return an std::vector of the tokens. This function does no additional string processing (such as removing spaces).

It's worth noting several edge cases:

  • If s is an empty string the result vector will contain a single empty string.
  • If s starts/ends with a delimiter the result vector will start/end with an empty string
  • Adjacent delimiters are tokenized as delimiting the empty string

Downstream error checking relies on this edge case behavior.

Parameters
[in]sThe string we are splitting into tokens.
[in]delimThe character used to delimit tokens
Returns
A vector containing the tokens
Exceptions
std::bad_allocif there is insufficient memory to allocate the vector which will hold the return. Strong throw guarantee.
std::bad_allocif there is insufficient memory to allocate the tokens in the return. Strong throw guarantee.

Definition at line 81 of file annotation.h.

Here is the caller graph for this function:

◆ write_diag_tiles_to_array_rng()

template<typename Array , typename RandomAccessIterator >
std::enable_if_t<is_iterator<RandomAccessIterator>::value, void> TiledArray::detail::write_diag_tiles_to_array_rng ( Array A,
RandomAccessIterator  diagonals_begin 
)

Writes tiles of a nonconstant diagonal array.

Template Parameters
Arraya DistArray type
RandomAccessIteratoran iterator over the range of diagonal elements
Parameters
[in]Aan Array object
[in]diagonals_beginthe begin iterator of the range of the diagonals

Definition at line 194 of file diagonal_array.h.

Here is the call graph for this function:

◆ write_diag_tiles_to_array_val()

template<typename Array , typename T >
void TiledArray::detail::write_diag_tiles_to_array_val ( Array A,
val 
)

Writes tiles of a constant diagonal array.

Template Parameters
Arraya DistArray type
Ta numeric type
Parameters
[in]Aan Array object
[in]valthe value of the diagonal elements of A

Definition at line 161 of file diagonal_array.h.

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

Variable Documentation

◆ has_conversion_operator_v

template<class From , class To >
constexpr const bool TiledArray::detail::has_conversion_operator_v
constexpr
Initial value:
=
has_conversion_operator<From, To>::value

has_conversion_operator_v<From, To> is an alias for has_conversion_operator<From, To>::value

Definition at line 496 of file type_traits.h.

◆ is_array_tile_v

template<typename T >
constexpr const bool TiledArray::detail::is_array_tile_v = is_array_tile<T>::value
constexpr

is_array_tile_v<T> is an alias for is_array_tile<T>::value

Definition at line 678 of file type_traits.h.

◆ is_boost_gettable_v

template<std::size_t I, typename T >
constexpr const bool TiledArray::detail::is_boost_gettable_v = is_boost_gettable<I, T>::value
constexpr

Definition at line 851 of file type_traits.h.

◆ is_btas_tensor_v

template<typename T >
constexpr const bool TiledArray::detail::is_btas_tensor_v = is_btas_tensor<T>::value
constexpr

Definition at line 827 of file btas.h.

◆ is_complete_type_v

template<typename T >
constexpr const bool TiledArray::detail::is_complete_type_v = is_complete_type<T>::value
constexpr
Template Parameters
Ta type is_complete_type_v<T> is an alias for is_complete_type<T>::value

Definition at line 412 of file type_traits.h.

◆ is_complex_v

template<typename T >
constexpr const bool TiledArray::detail::is_complex_v = is_complex<T>::value
constexpr

is_complex_v<T> is an alias for is_complex<T>::value

Definition at line 632 of file type_traits.h.

◆ is_contiguous_tensor_v

template<typename... Ts>
constexpr const bool TiledArray::detail::is_contiguous_tensor_v
constexpr
Initial value:
=
is_contiguous_tensor<Ts...>::value
Template Parameters
Tsa parameter pack is_contiguous_tensor_v<Ts...> is an alias for is_contiguous_tensor<Ts...>::value

Definition at line 211 of file type_traits.h.

◆ is_convertible_v

template<class From , class To >
constexpr const bool TiledArray::detail::is_convertible_v = is_convertible<From, To>::value
constexpr

is_convertible_v<From, To> is an alias for is_convertible<From, To>::value

Definition at line 537 of file type_traits.h.

◆ is_explicitly_convertible_v

template<class From , class To >
constexpr const bool TiledArray::detail::is_explicitly_convertible_v
constexpr
Initial value:
=
is_explicitly_convertible<From, To>::value

is_explicitly_convertible_v<From, To> is an alias for is_explicitly_convertible<From, To>::value

Definition at line 508 of file type_traits.h.

◆ is_gettable_pair_v

template<typename T >
constexpr const bool TiledArray::detail::is_gettable_pair_v = is_gettable_pair<T>::value
constexpr

is_gettable_pair_v<T> is an alias for is_gettable_pair<T>::value

Definition at line 888 of file type_traits.h.

◆ is_gettable_v

template<std::size_t I, typename T >
constexpr const bool TiledArray::detail::is_gettable_v
constexpr
Initial value:
=
is_std_gettable_v<I, T> || is_boost_gettable_v<I, T>

Definition at line 854 of file type_traits.h.

◆ is_implicitly_convertible_v

template<class From , class To >
constexpr const bool TiledArray::detail::is_implicitly_convertible_v
constexpr
Initial value:
=
is_implicitly_convertible<From, To>::value

is_implicitly_convertible_v<From, To> is an alias for is_implicitly_convertible<From, To>::value

Definition at line 521 of file type_traits.h.

◆ is_integral_list_v

template<typename... Ts>
constexpr const bool TiledArray::detail::is_integral_list_v = is_integral_list<Ts...>::value
constexpr

is_integral_list_v<T> is an alias for is_integral_list<T>::value

Definition at line 812 of file type_traits.h.

◆ is_integral_pair_list_v

template<typename... Ts>
constexpr const bool TiledArray::detail::is_integral_pair_list_v
constexpr
Initial value:
=
is_integral_pair_list<Ts...>::value

is_integral_pair_list_v<T> is an alias for is_integral_pair_list<T>::value

Definition at line 939 of file type_traits.h.

◆ is_integral_pair_v

template<typename T >
constexpr const bool TiledArray::detail::is_integral_pair_v = is_integral_pair<T>::value
constexpr

is_integral_pair_v<T> is an alias for is_integral_pair<T>::value

Definition at line 909 of file type_traits.h.

◆ is_integral_tuple_v

template<typename T >
constexpr const bool TiledArray::detail::is_integral_tuple_v = is_integral_tuple<T>::value
constexpr

is_integral_tuple_v<T> is an alias for is_integral_tuple<T>::value

Definition at line 952 of file type_traits.h.

◆ is_non_array_lazy_tile_v

template<typename T >
constexpr const bool TiledArray::detail::is_non_array_lazy_tile_v
constexpr
Initial value:
=
is_non_array_lazy_tile<T>::value

is_non_array_lazy_tile_v<T> is an alias for is_non_array_lazy_tile<T>::value

Definition at line 696 of file type_traits.h.

◆ is_numeric_v

template<typename T >
constexpr const bool TiledArray::detail::is_numeric_v = is_numeric<T>::value
constexpr

is_numeric_v<T> is an alias for is_numeric<T>::value

Definition at line 645 of file type_traits.h.

◆ is_pair_v

template<typename T >
constexpr const bool TiledArray::detail::is_pair_v = is_pair<T>::value
constexpr

is_pair_v<T> is an alias for is_pair<T>::value

Definition at line 1203 of file type_traits.h.

◆ is_reduce_op_v

template<typename ReduceOp , typename Result , typename... Args>
constexpr const bool TiledArray::detail::is_reduce_op_v
constexpr
Initial value:
=
is_reduce_op_<void, ReduceOp, Result, Args...>::value

Definition at line 254 of file type_traits.h.

◆ is_scalar_v

template<typename T >
constexpr const bool TiledArray::detail::is_scalar_v = is_scalar<T>::value
constexpr

is_scalar_v<T> is an alias for is_scalar_v<T>

Definition at line 659 of file type_traits.h.

◆ is_shifted_v

template<typename... Ts>
constexpr const bool TiledArray::detail::is_shifted_v = is_shifted<Ts...>::value
constexpr
Template Parameters
Tsa parameter pack is_shifted_v<Ts...> is an alias for is_shifted<Ts...>::value

Definition at line 240 of file type_traits.h.

◆ is_std_gettable_v

template<std::size_t I, typename T >
constexpr const bool TiledArray::detail::is_std_gettable_v = is_std_gettable<I, T>::value
constexpr

Definition at line 840 of file type_traits.h.

◆ is_strictly_ordered_v

template<typename T >
constexpr const bool TiledArray::detail::is_strictly_ordered_v = is_strictly_ordered<T>::value
constexpr

is_strictly_ordered_v<T> is an alias for is_strictly_ordered<T>::value

Definition at line 786 of file type_traits.h.

◆ is_ta_tensor_v

template<typename T >
constexpr const bool TiledArray::detail::is_ta_tensor_v = is_ta_tensor<T>::value
constexpr

Definition at line 164 of file type_traits.h.

◆ is_tensor_of_tensor_v

template<typename... Ts>
constexpr const bool TiledArray::detail::is_tensor_of_tensor_v = is_tensor_of_tensor<Ts...>::value
constexpr
Template Parameters
Tsa parameter pack is_tensor_of_tensor_v<Ts...> is an alias for is_tensor_of_tensor<Ts...>::value

Definition at line 155 of file type_traits.h.

◆ is_tensor_v

template<typename... Ts>
constexpr const bool TiledArray::detail::is_tensor_v = is_tensor<Ts...>::value
constexpr
Template Parameters
Tsa parameter pack is_tensor_v<Ts...> is an alias for is_tensor<Ts...>::value

Definition at line 135 of file type_traits.h.

◆ is_tuple_v

template<typename T >
constexpr const bool TiledArray::detail::is_tuple_v = is_tuple<T>::value
constexpr

is_tuple_v<T> is an alias for is_tuple<T>::value

Definition at line 826 of file type_traits.h.

◆ is_type_v

template<typename T >
constexpr const bool TiledArray::detail::is_type_v = is_type<T>::value
constexpr
Template Parameters
Ta type is_type_v<T> is an alias for is_type<T>::value

Definition at line 393 of file type_traits.h.

◆ trace_is_defined_v

template<typename T >
constexpr auto TiledArray::detail::trace_is_defined_v = TraceIsDefined<T>::value
constexpr

Helper variable for determining if the trace operation is defined for a tile of type T

This global variable is provided as a convenience for checking the value of TraceIsDefined<T>::value.

Template Parameters
TThe type of the tile we are trying to take the trace of.

Definition at line 57 of file trace.h.

::blas::Op Op
Definition: blas.h:46