SyTen
syten::IdentityDenseTensorImpl Namespace Reference

Implementation for identity dense tensors. More...

Classes

struct  IdentityDenseTensor
 Implementation for syten::IdentityDenseTensor. More...
 

Functions

template<Rank rank, typename Scalar >
bool isZero (IdentityDenseTensor< rank, Scalar > const &)
 Identity tensors are never zero, hence this function always returns false. More...
 
template<Rank srank, typename Scalar >
GenericDenseTensor< srank-1, Scalar > merge (IdentityDenseTensor< 3, Scalar > const &a, CudaDenseTensor< srank, Scalar > const &b, std::array< int, 3 > const &c_a, std::array< int, srank > const &c_b)
 Product which merges two tensor legs together. More...
 
template<Rank srank, typename Scalar >
GenericDenseTensor< srank-1, Scalar > merge (IdentityDenseTensor< 3, Scalar > const &a, DenseTensor< srank, Scalar > const &b, std::array< int, 3 > const &c_a, std::array< int, srank > const &c_b)
 Product which merges two tensor legs together. More...
 
template<Rank rank, typename Scalar >
IdentityDenseTensor< rank, Scalar > multi_transpose (IdentityDenseTensor< rank, Scalar > const &in, ConstSpan< Index >, Conj=Conj::n())
 
template<Rank rank, typename Scalar >
ScalarBase< Scalar >::type normSqd (IdentityDenseTensor< rank, Scalar > const &a)
 Returns the squared norm of the input tensor a. More...
 
template<Rank summed, Rank frank, Rank srank, typename Scalar , std::enable_if_t<(int(frank)+int(srank) - 2 *int(summed) > 0), int > = 0>
GenericDenseTensor< frank+srank - 2 *summed, Scalar > prodD (CudaDenseTensor< frank, Scalar > const &a, IdentityDenseTensor< srank, Scalar > const &b, std::array< int, frank > const &c_a, std::array< int, srank > const &c_b, bool conjugate=false, EliminateZeros const ezeros=EliminateZeros::No, DenseProduct::TemporaryTransposeStorage< Scalar, frank, srank > *=nullptr)
 Overload for product of an identity dense tensor and a cuda dense tensor. More...
 
template<Rank summed, Rank frank, Rank srank, typename Scalar , std::enable_if_t<(int(frank)+int(srank) - 2 *int(summed) > 0), int > = 0>
GenericDenseTensor< frank+srank - 2 *summed, Scalar > prodD (DenseTensor< frank, Scalar > const &a, IdentityDenseTensor< srank, Scalar > const &b, std::array< int, frank > const &c_a, std::array< int, srank > const &c_b, bool=false, EliminateZeros const ezeros=EliminateZeros::No, DenseProduct::TemporaryTransposeStorage< Scalar, frank, srank > *=nullptr)
 Product of a standard dense tensor and an identity dense tensor. More...
 
template<Rank summed, Rank frank, Rank srank, typename Scalar , std::enable_if_t<(int(frank)+int(srank) - 2 *int(summed) > 0), int > = 0>
GenericDenseTensor< frank+srank - 2 *summed, Scalar > prodD (IdentityDenseTensor< frank, Scalar > const &, IdentityDenseTensor< srank, Scalar > const &, std::array< int, frank > const &, std::array< int, srank > const &, bool=false, EliminateZeros const =EliminateZeros::No, DenseProduct::TemporaryTransposeStorage< Scalar, frank, srank > *=nullptr)
 Dummy implementation for the product of two identity tensors. More...
 
template<Rank summed, Rank frank, Rank srank, typename Scalar , std::enable_if_t<(int(frank)+int(srank) - 2 *int(summed) > 0), int > = 0>
GenericDenseTensor< frank+srank - 2 *summed, Scalar > prodD (IdentityDenseTensor< frank, Scalar > const &a, CudaDenseTensor< srank, Scalar > const &b, std::array< int, frank > const &c_a, std::array< int, srank > const &c_b, bool conjugate=false, EliminateZeros const ezeros=EliminateZeros::No, DenseProduct::TemporaryTransposeStorage< Scalar, frank, srank > *=nullptr)
 Overload for product of an identity dense tensor and a cuda dense tensor. More...
 
template<Rank summed, Rank frank, Rank srank, typename Scalar , std::enable_if_t<(int(frank)+int(srank) - 2 *int(summed) > 0), int > = 0>
GenericDenseTensor< frank+srank - 2 *summed, Scalar > prodD (IdentityDenseTensor< frank, Scalar > const &a, DenseTensor< srank, Scalar > const &b, std::array< int, frank > const &c_a, std::array< int, srank > const &c_b, bool conjugate=false, EliminateZeros const ezeros=EliminateZeros::No, DenseProduct::TemporaryTransposeStorage< Scalar, frank, srank > *=nullptr)
 Product of an identity dense tensor and a standard dense tensor. More...
 
template<Rank srank, typename Scalar >
GenericDenseTensor< srank+1, Scalar > split (IdentityDenseTensor< 3, Scalar > const &a, CudaDenseTensor< srank, Scalar > const &b, std::array< int, 3 > const &c_a, std::array< int, srank > const &c_b)
 Split of two legs of a cuda dense tensor using a rank-3 identity dense tensor. More...
 
template<Rank srank, typename Scalar >
GenericDenseTensor< srank+1, Scalar > split (IdentityDenseTensor< 3, Scalar > const &a, DenseTensor< srank, Scalar > const &b, std::array< int, 3 > const &c_a, std::array< int, srank > const &c_b)
 Split of two legs of a standard dense tensor using a rank-3 identity dense tensor. More...
 

Detailed Description

Implementation for identity dense tensors.