SUNphi  1.0
SUNphi::PairOfTensKindMergeability Namespace Reference

Determine mergeability of pair of TensKind. More...

Typedefs

using AbsentInBoth = IntSeq< false, false >
 Type returned when is absent in both.
 
template<typename MD1 , typename MD2 , typename I1 , typename I2 >
using CompsMergeability = decltype(_compsMergeability(MD1{}, MD2{}, I1{}, I2{}))
 

Functions

template<typename PrevPres = AbsentInBoth, int ResPos = 0, int PrevPos1 = 0, int PrevPos2 = 0, int... MDel1, int... MDel2>
decltype(auto) _compsMergeability (IntSeq< MDel1... > MD1, IntSeq< MDel2... > MD2, IntSeq<> P1, IntSeq<> P2)
 
template<typename PrevPres = AbsentInBoth, int ResPos = 0, int PrevPos1 = 0, int PrevPos2 = 0, int... MDel1, int... MDel2, int Head1, int... Tail1, int Head2, int... Tail2>
decltype(auto) _compsMergeability (IntSeq< MDel1... > MD1, IntSeq< MDel2... > MD2, IntSeq< Head1, Tail1... > P1, IntSeq< Head2, Tail2... > P2)
 

Detailed Description

Determine mergeability of pair of TensKind.

Typedef Documentation

template<typename MD1 , typename MD2 , typename I1 , typename I2 >
using SUNphi::PairOfTensKindMergeability::CompsMergeability = typedef decltype(_compsMergeability(MD1{},MD2{},I1{},I2{}))

Determine the mergeability of a given TensComp

A component is declared mergeable if its presence in the two TensKind is of the same nature of the previous one (e.g. present only in one of the two TensKind, if its position inside the two TensKind is consecutive with previous TensComp, and if the component was mergeable in both TensKind

Definition at line 197 of file BinarySmET.hpp.

Function Documentation

template<typename PrevPres = AbsentInBoth, int ResPos = 0, int PrevPos1 = 0, int PrevPos2 = 0, int... MDel1, int... MDel2>
decltype(auto) SUNphi::PairOfTensKindMergeability::_compsMergeability ( IntSeq< MDel1... >  MD1,
IntSeq< MDel2... >  MD2,
IntSeq<>  P1,
IntSeq<>  P2 
)

Determine the mergeability of a given TensComp

Terminator of the nested implementation, returning an IntSeq holding just the current searched position, as a final delimiter

Parameters
MD1Holds the mergeability delimiters of first SmET
MD2Holds the mergeability delimiters of second SmET
P1Holds the position of first SmET where the Res TensComp are found
P2Holds the position of second SmET where the Res TensComp are found

Definition at line 109 of file BinarySmET.hpp.

template<typename PrevPres = AbsentInBoth, int ResPos = 0, int PrevPos1 = 0, int PrevPos2 = 0, int... MDel1, int... MDel2, int Head1, int... Tail1, int Head2, int... Tail2>
decltype(auto) SUNphi::PairOfTensKindMergeability::_compsMergeability ( IntSeq< MDel1... >  MD1,
IntSeq< MDel2... >  MD2,
IntSeq< Head1, Tail1... >  P1,
IntSeq< Head2, Tail2... >  P2 
)

Determine the mergeability of a given TensComp, provided two TensKind

Nested internal implementation, catting the current component with the tail mergeability.

Presence of current position

Check consecutivity in first TensKind

Check consecutivity in second TensKind

Result of mergeability of nested components

Check if the component was mergeable in the first TensKind

Check if the component was mergeable in the second TensKind

Determine if a break in mergeability is needed

Insert a break or not

Parameters
MD1Holds the mergeability delimiters of first SmET
MD2Holds the mergeability delimiters of second SmET
P1Holds the position of first SmET where the TensComp is found
P2Holds the position of second SmET where the TensComp is found

Definition at line 131 of file BinarySmET.hpp.