18template <
typename Kind,
typename Scalar_>
21template <
typename Kind_,
typename Scalar__>
24 constexpr static int Nq = 1;
41template <
typename Kind,
typename Scalar_ =
double>
47 static constexpr std::size_t
Nq = 1;
51 static constexpr std::array<bool, Nq>
ABELIAN = {
false};
52 static constexpr std::array<bool, Nq>
IS_TRIVIAL = {
false};
53 static constexpr std::array<bool, Nq>
IS_MODULAR = {
false};
57 static constexpr std::array<int, Nq>
MOD_N = {1};
84 if constexpr(
IS_SPIN[0]) {
return true; }
92 if constexpr(not
IS_SPIN[0]) {
return true; }
106 inline static constexpr std::array<KIND, Nq>
kind() {
return {Kind::name}; }
109 inline static constexpr std::array<qType, 1>
lowest_qs() {
return std::array<qType, 1>{{
qarray<1>(std::array<int, 1>{{2}})}}; }
131 return ((q[0] - 1) % 2 != 0) ? -1. : 1.;
136 template <
typename PlainLib>
148 template <
typename PlainLib>
166 return std::sqrt(Q12[0] * Q23[0]) * phase<Scalar>((q1[0] + q2[0] + q3[0] + Q[0]) / 2.) *
coeff_6j(q1, q2, Q12, q3, Q, Q23);
173 bool parity = ((ql[0] - 1) % 2 != 0) and ((qr[0] - 1) % 2 != 0);
174 sign = parity ? -1. : 1.;
176 return triangle(ql, qr, qf) ? sign * phase<Scalar>((ql[0] + qr[0] - qf[0] - 1) / 2) :
Scalar(0.);
185#ifndef XPED_COMPILED_LIB
Definition: CombSym.hpp:8
@ T
Definition: functions.hpp:35
@ FT
Definition: functions.hpp:36
@ S
Definition: functions.hpp:33
XpedWorld & getUniverse()
Definition: Mpi.hpp:49
CTF::Tensor< Scalar > TType
Definition: PlainInterface_Cyclops_impl.cpp:13
static constexpr bool ALL_IS_BOSONIC
Definition: SU2.hpp:74
static constexpr std::size_t Nq
Definition: SU2.hpp:47
static Scalar coeff_rightOrtho(const qType &q1, const qType &q2)
Definition: SU2.hpp:139
static Scalar coeff_3j(const qType &q1, const qType &q2, const qType &q3, int q1_z, int q2_z, int q3_z)
Definition: SU2.cpp:64
static Scalar coeff_9j(const qType &q1, const qType &q2, const qType &q3, const qType &q4, const qType &q5, const qType &q6, const qType &q7, const qType &q8, const qType &q9)
Definition: SU2.cpp:99
static constexpr std::array< bool, Nq > IS_BOSONIC
Definition: SU2.hpp:55
static constexpr bool ALL_IS_SPIN
Definition: SU2.hpp:75
static constexpr bool ANY_IS_SPIN
Definition: SU2.hpp:66
static constexpr std::array< bool, Nq > HAS_MULTIPLICITIES
Definition: SU2.hpp:49
static constexpr bool ANY_NON_ABELIAN
Definition: SU2.hpp:60
static qType random_q()
Definition: SU2.cpp:10
static constexpr std::array< bool, Nq > IS_TRIVIAL
Definition: SU2.hpp:52
static constexpr bool ALL_ABELIAN
Definition: SU2.hpp:70
static constexpr bool ALL_IS_TRIVIAL
Definition: SU2.hpp:71
static PlainLib::template TType< Scalar_, 3 > CGC(const qType &q1, const qType &q2, const qType &q3, const std::size_t, const mpi::XpedWorld &world=mpi::getUniverse())
Definition: SU2.cpp:73
static constexpr bool ALL_HAS_MULTIPLICITIES
Definition: SU2.hpp:68
static Scalar coeff_recouple(const qType &q1, const qType &q2, const qType &q3, const qType &Q, const qType &Q12, const qType &Q23)
Definition: SU2.hpp:164
static constexpr bool ANY_IS_BOSONIC
Definition: SU2.hpp:65
static PlainLib::template TType< Scalar_, 2 > one_j_tensor(const qType &q1, const mpi::XpedWorld &world=mpi::getUniverse())
Definition: SU2.cpp:43
static constexpr bool ANY_IS_TRIVIAL
Definition: SU2.hpp:62
static constexpr bool IS_SPIN_U1()
Definition: SU2.hpp:88
qarray< Nq > qType
Definition: SU2.hpp:101
static Scalar coeff_swap(const qType &ql, const qType &qr, const qType &qf)
Definition: SU2.hpp:169
static constexpr bool ALL_NON_ABELIAN
Definition: SU2.hpp:69
static constexpr std::array< bool, Nq > NON_ABELIAN
Definition: SU2.hpp:50
static constexpr bool ANY_IS_FERMIONIC
Definition: SU2.hpp:64
static Scalar coeff_turn(const qType &ql, const qType &qr, const qType &qf)
Definition: SU2.hpp:143
static constexpr std::array< bool, Nq > IS_MODULAR
Definition: SU2.hpp:53
static constexpr std::array< bool, Nq > ABELIAN
Definition: SU2.hpp:51
SU2()
Definition: SU2.hpp:103
static constexpr std::array< qType, 1 > lowest_qs()
Definition: SU2.hpp:109
static Scalar coeff_6j(const qType &q1, const qType &q2, const qType &q3, const qType &q4, const qType &q5, const qType &q6)
Definition: SU2.cpp:92
static Scalar coeff_FS(const qType &q1)
Definition: SU2.cpp:36
static int degeneracy(const qType &q)
Definition: SU2.hpp:112
static constexpr bool IS_SPIN_SU2()
Definition: SU2.hpp:82
static std::string name()
Definition: SU2.hpp:105
static constexpr bool ANY_IS_MODULAR
Definition: SU2.hpp:63
static constexpr std::array< bool, Nq > IS_FERMIONIC
Definition: SU2.hpp:54
Scalar_ Scalar
Definition: SU2.hpp:44
static constexpr bool ALL_IS_FERMIONIC
Definition: SU2.hpp:73
static constexpr bool ANY_ABELIAN
Definition: SU2.hpp:61
static std::size_t multiplicity(const qType &q1, const qType &q2, const qType &q3)
Definition: SU2.hpp:121
static constexpr std::array< KIND, Nq > kind()
Definition: SU2.hpp:106
static constexpr bool NO_SPIN_SYM()
Definition: SU2.hpp:90
static constexpr std::array< int, Nq > MOD_N
Definition: SU2.hpp:57
static Scalar coeff_twist(const qType &q)
Definition: SU2.hpp:128
static constexpr std::array< bool, Nq > IS_SPIN
Definition: SU2.hpp:56
static constexpr bool ALL_IS_MODULAR
Definition: SU2.hpp:72
static constexpr qType qvacuum()
Definition: SU2.hpp:108
static constexpr bool NO_CHARGE_SYM()
Definition: SU2.hpp:95
static constexpr bool ANY_HAS_MULTIPLICITIES
Definition: SU2.hpp:59
static std::vector< qType > basis_combine(const qType &ql, const qType &qr)
Definition: SU2.cpp:18
static qType conj(const qType &q)
Definition: SU2.hpp:111
static constexpr bool IS_CHARGE_SU2()
Definition: SU2.hpp:77
SymBase< SU2< Kind, Scalar > > Base
Definition: SU2.hpp:45
static Scalar coeff_dot(const qType &q1)
Definition: SU2.cpp:30
static bool triangle(const qType &q1, const qType &q2, const qType &q3)
Definition: SU2.cpp:114
Definition: SymBase.hpp:14
qarray< Nq > qType
Definition: SU2.hpp:25
Scalar__ Scalar
Definition: SU2.hpp:26
Definition: SymBase.hpp:10
Definition: qarray.hpp:30