qpms/qpms/test_translations_xu_multip...

52 lines
1.3 KiB
C

#include "translations.h"
#include "gaunt.h"
#include <stdio.h>
//#include <math.h>
#include <complex.h>
#ifdef QPMS_PACKED_B_MULTIPLIERS
#define BQ_OFFSET 1
#else
#define BQ_OFFSET 0
#endif
void qpms_trans_calculator_multipliers_B_general(
qpms_normalisation_t norm,
complex double *dest, int m, int n, int mu, int nu, int Qmax) ;
int lMax=13;
#define MIN(x,y) ((x)<(y)?(x):(y))
// Python test: Qmax(M, n, mu, nu) = floor(min(n,nu,(n+nu+1-abs(M+mu))/2))
// q in IntegerRange(1, Qmax(-m,n,mu,nu))
int main() {
qpms_trans_calculator *c = qpms_trans_calculator_init(lMax, QPMS_NORMALISATION_XU);
complex double dest[lMax + 2];
for(int n = 1; n <= lMax; ++n)
for(int nu = 1; nu <= lMax; ++nu)
for(int m = -n; m <= n; ++m)
for(int mu = -nu; mu <= nu; ++mu){
int Qmax_alt = MIN(n,MIN(nu,(n+nu+1-abs(mu-m))/2));
qpms_trans_calculator_multipliers_B_general(QPMS_NORMALISATION_XU_CS,
dest, m, n, mu, nu, Qmax_alt);
for(int q = BQ_OFFSET; q <= Qmax_alt; ++q) {
// int p = n + nu - 2*q;
int tubig = cabs(dest[q-BQ_OFFSET]) > 1e-8;
printf("%.16g + %.16g*I, // %d, %d, %d, %d, %d,%s\n",
creal(dest[q-BQ_OFFSET]), cimag(dest[q-BQ_OFFSET]), m, n, mu, nu, q,
q > Qmax_alt ? (tubig?" //tubig":" //tu") : "");
}
fflush(stdout);
}
qpms_trans_calculator_free(c);
}