SUNphi
1.0
|
#include <TensKind.hpp>
Classes | |
class | _BlendWithTypes |
class | _BlendWithTypes< Tuple< Oths... > > |
struct | _firstVectorizingComp |
struct | _Merged |
struct | _Merged< IntSeq< IDelims... >, IntSeq< IGroups... > > |
Struct used to merge the components of the TensKind. More... | |
struct | ConstrainIsValidCompMerge |
Helper to constrain the cast. More... | |
struct | TensCompsListMerged |
struct | TensCompsListMerged< IntSeq< IComps... > > |
Create a TensComp merging the components IComps. More... | |
Public Types | |
using | DynCompsPos = decltype(_DynCompsPos< 0 >(intSeq<>)) |
Position of dynamical components. | |
typedef Tuple< T... > | types |
Tuple containing all types. | |
template<typename Tab > | |
using | AllButType = TensKindFromTuple< decltype(getAllButType< Tab >(types{}))> |
Get all types but one. | |
using | Twinned = TensKind< TwinCompOf< T >... > |
Get the twinned (transposed) type. | |
using | IsMatrixComp = IntSeq<(hasTwin< T > and tupleHasType< T, typename Twinned::types >)... > |
Reports through an IntSeq whether a component is Matricial or not. | |
template<typename Is > | |
using | InsertTrueTwinnedPos = InsertTrueTwinnedPosOfTuple< Is, types > |
Insert in the IntSeq Is the points where true twinned types are present. | |
using | IsDiagComp = IntSeq<((not tupleHasType< T, typename Twinned::types >) or posOfTypeNotAsserting< T, typename Twinned::types > >=posOfType< T, types >)... > |
Report which components are needed to represent the Diagonal. | |
using | DiagCompsPos = FilterVariadicClassPos< IsNotNull, IsDiagComp > |
Position of Diagonal components. | |
using | Diag = TensKindFromTuple< decltype(getIndexed(DiagCompsPos{}, types{}))> |
TensKind corresponding to the types of the diagonal. | |
template<typename Is > | |
using | Merged = typename _Merged< Is, IntsUpTo< Is::size-1 >>::type |
Merged components according to IntSeq Is. | |
template<typename OthTk , typename = ConstrainIsTensKind<OthTk>> | |
using | BlendWithTensKind = typename _BlendWithTypes< typename OthTk::types >::type |
Static Public Member Functions | |
static constexpr const char * | name () |
Name of the Tk provided with "name()" suffix. | |
Static Public Attributes | |
static constexpr int | nDynamic |
Number of dynamical components. More... | |
static constexpr bool | isFullyStatic |
Check if the type is fully static. More... | |
static constexpr int | nTypes |
Number of types of the kind. More... | |
template<typename Oth , typename = ConstrainIsTensKind<Oth>> | |
static constexpr bool | contains |
Check that another TensKind is contained. More... | |
template<typename TC , typename = ConstrainIsTensComp<TC>, typename = ConstrainIsDynamic<TC>> | |
static constexpr TypeIf< isTensComp< TC > and isDynamic< TC >, int > | dynCompPos |
Returns the position of a dynamical size. More... | |
template<typename F > | |
static constexpr int | firstVectorizingComp |
static constexpr int | maxStaticIdx |
Maximal value of the index, restricted to the statical components. More... | |
template<int... Ints> | |
static constexpr int | tensCompsListTotMaxKnownSubMultiple |
Maximal total submultiple of a list of components. More... | |
template<int... Ints> | |
static constexpr int | tensCompsListTotSize |
template<typename Is > | |
static constexpr bool | isValidCompMerge |
Determines whether an IntSeq is a valid CastMerge type for the TensKind. More... | |
Private Types | |
typedef IntSeq<(T::size==DYNAMIC)... > | AreDynamic |
Check that all types are different. More... | |
Static Private Member Functions | |
template<int NScanned, int... CompsPos> | |
static decltype(auto) constexpr | _DynCompsPos (const IntSeq< CompsPos... > &) |
Tensor Kind used to define the structure of a tensor
The tensor kind defines the list of components of a tensor. It is used to the define the underlying set of components of a TensorStorage
, or the returned type of a SmET
Definition at line 84 of file TensKind.hpp.
|
private |
Check that all types are different.
An integer sequence defining whether the types are dynamic or not
Definition at line 87 of file TensKind.hpp.
using SUNphi::TensKind< T >::BlendWithTensKind = typename _BlendWithTypes<typename OthTk::types>::type |
Blend the TensKind with another one
The TensComp already present are not appended. Example:
Definition at line 418 of file TensKind.hpp.
|
inlinestaticprivate |
Position of dynamical components
Internal implementation
Definition at line 100 of file TensKind.hpp.
|
static |
Check that another TensKind
is contained.
Definition at line 144 of file TensKind.hpp.
|
static |
Returns the position of a dynamical size.
Definition at line 152 of file TensKind.hpp.
|
static |
Return the position of the first component needed to vectorize
If no factorization is possible, returns -1
Definition at line 211 of file TensKind.hpp.
|
static |
Check if the type is fully static.
Definition at line 131 of file TensKind.hpp.
|
static |
Determines whether an IntSeq is a valid CastMerge type for the TensKind.
Definition at line 314 of file TensKind.hpp.
|
static |
Maximal value of the index, restricted to the statical components.
Definition at line 246 of file TensKind.hpp.
|
static |
Number of dynamical components.
Definition at line 127 of file TensKind.hpp.
|
static |
Number of types of the kind.
Definition at line 138 of file TensKind.hpp.
|
static |
Maximal total submultiple of a list of components.
Definition at line 253 of file TensKind.hpp.
|
static |
Total size of a list of components
If any component is dynamic, returns DYNAMIC, otherwise the product
Definition at line 260 of file TensKind.hpp.