19 #ifndef yap_ClebschGordan_h
20 #define yap_ClebschGordan_h
30 namespace ClebschGordan {
39 std::string
to_string(
unsigned two_j1,
int two_m1,
unsigned two_j2,
int two_m2,
unsigned two_J,
int two_M);
47 inline std::string
to_string(
unsigned two_j1,
int two_m1,
unsigned two_j2,
int two_m2,
unsigned two_J)
48 {
return to_string(two_j1, two_m1, two_j2, two_m2, two_J, two_m1 + two_m2); }
57 const bool nonzeroCoefficient(
unsigned two_j1,
int two_m1,
unsigned two_j2,
int two_m2,
unsigned two_J,
int two_M);
65 inline const bool nonzeroCoefficient(
unsigned two_j1,
int two_m1,
unsigned two_j2,
int two_m2,
unsigned two_J)
66 {
return nonzeroCoefficient(two_j1, two_m1, two_j2, two_m2, two_J, two_m1 + two_m2); }
76 const double coefficient(
unsigned two_j1,
int two_m1,
unsigned two_j2,
int two_m2,
unsigned two_J,
int two_M);
84 inline const double coefficient(
unsigned two_j1,
int two_m1,
unsigned two_j2,
int two_m2,
unsigned two_J)
85 {
return coefficient(two_j1, two_m1, two_j2, two_m2, two_J, two_m1 + two_m2); }
95 inline const bool nonzeroCoupling(
unsigned two_j1,
int two_lambda1,
unsigned two_j2,
int two_lambda2,
unsigned l,
unsigned two_s,
unsigned two_J)
96 {
return nonzeroCoefficient(2 * l, 0, two_s, two_lambda1 - two_lambda2, two_J) and nonzeroCoefficient(two_j1, two_lambda1, two_j2, -two_lambda2, two_s); }
107 double const couple(
unsigned two_j1,
int two_lambda1,
unsigned two_j2,
int two_lambda2,
unsigned l,
unsigned two_s,
unsigned two_J);
112 const
bool consistent(
unsigned two_J,
int two_M);
std::string to_string(const CachedValue::Status &S)
streaming operator for CachedValue::Status
Definition: CachedValue.cxx:27