32 #ifndef PLANCK_WIGNER_H 33 #define PLANCK_WIGNER_H 51 void do_line0 (
double *l1,
int j);
52 void do_line (
const double *l1,
double *l2,
int j,
int k);
71 void do_line0 (
double *l1,
int j);
72 void do_line (
const double *l1,
double *l2,
int j,
int k);
119 typedef double dbl3[3];
122 double fsmall, fbig, eps;
129 int m1, m2, am1, am2, mlo, mhi, cosPow, sinPow;
130 long double prefactor;
137 enum { large_exponent2=90, minscale=-4, maxscale=14 };
151 void prepare (
int m1_,
int m2_);
170 wignergen (
int lmax_,
const arr<double> &thetas,
double epsilon)
178 wignergen (
int lmax_,
const arr<double> &thetas,
double epsilon)
183 class wigner_estimator
186 int lmax, m1, m2, mbig;
187 double xlmax, epsPow, cosm1m2;
190 wigner_estimator (
int lmax_,
double epsPow_);
192 void prepare_m (
int m1_,
int m2_);
193 bool canSkip (
double theta)
const;
void prepare(int m1_, int m2_)
wignergen_scalar(int lmax_, const arr< double > &thetas, double epsilon)
const arr< double > & calc(int nth, int &firstl)