14double djmm(
double j,
double m,
double mprime,
double beta)
18 if (j < 0 || j + mprime < 0) {
19 std::cout <<
"Error in djmm argument" << std::endl;
26 double root = sqrt(f1);
31 double cosB = cos(beta / 2.0);
32 double sinB = sin(beta / 2.0);
34 double sigma = (double)iSigma;
35 if (m + mprime + sigma >= 0) {
41 if (j - mprime - sigma >= 0) {
45 if (j - m - sigma >= 0) {
51 double phase = pow(-1, j - mprime - sigma);
53 if (2 * sigma + m + mprime == 0)
56 top = phase * pow(cosB, 2 * sigma + m + mprime);
57 if (2 * j - 2 * sigma - m - mprime != 0)
58 top = top * pow(sinB, 2 * j - 2 * sigma - m - mprime);
60 sum = sum + top / denom;
66std::complex<double>
BigD(
double j,
double m,
double mprime,
double alpha,
double beta,
double gamma)
69 std::complex<double> Zi = std::complex<double>(0.0, 1.0);
70 std::complex<double> Z1 = std::exp(Zi * m * alpha);
71 std::complex<double> Z2 = std::exp(Zi * mprime * gamma);
72 return Z1 *
djmm(j, m, mprime, beta) * Z2;
std::complex< double > BigD(double j, double m, double mprime, double alpha, double beta, double gamma)