28 DK(KSQRTPII,0.56418958354775628694807945156077258584405062932900);
30 static inline R alpha_al(
const int k,
const int n)
35 return IF(k%2,K(1.0),K(-1.0));
37 return SQRT(((R)(2*k+1))/((R)(k-n+1)))*SQRT((((R)(2*k+1))/((R)(k+n+1))));
44 return IF(n%2,K(0.0),K(-1.0));
49 static inline R beta_al(
const int k,
const int n)
57 static inline R gamma_al(
const int k,
const int n)
60 return SQRT(KSQRTPII*nfft_lambda((R)(n),K(0.5)));
64 return -SQRT(((R)(k-n))/((R)(k-n+1))*((R)(k+n))/((R)(k+n+1)));
67 void alpha_al_row(R *alpha,
const int N,
const int n)
71 for (j = -1; j <= N; j++)
75 void beta_al_row(R *beta,
const int N,
const int n)
79 for (j = -1; j <= N; j++)
83 void gamma_al_row(R *gamma,
const int N,
const int n)
87 for (j = -1; j <= N; j++)
95 for (i = 0; i <= N; i++)
96 for (j = -1; j <= N; j++)
104 for (i = 0; i <= N; i++)
105 for (j = -1; j <= N; j++)
113 for (i = 0; i <= N; i++)
114 for (j = -1; j <= N; j++)
115 *p++ = gamma_al(j,i);
118 void eval_al(R *x, R *y,
const int size,
const int k, R *alpha,
125 R a,b,x_val_act,a_old;
127 R *alpha_act, *beta_act, *gamma_act;
132 for (i = 0; i < size; i++)
144 alpha_act = &(alpha[k]);
145 beta_act = &(beta[k]);
146 gamma_act = &(gamma[k]);
147 for (j = k; j > 1; j--)
150 a = b + a_old*((*alpha_act)*x_val_act+(*beta_act));
151 b = a_old*(*gamma_act);
156 *y_act = (a*((*alpha_act)*x_val_act+(*beta_act))+b);
164 R *beta, R *gamma, R threshold)
170 R a,b,x_val_act,a_old;
172 R *alpha_act, *beta_act, *gamma_act;
177 for (i = 0; i < size; i++)
189 alpha_act = &(alpha[k]);
190 beta_act = &(beta[k]);
191 gamma_act = &(gamma[k]);
192 for (j = k; j > 1; j--)
195 a = b + a_old*((*alpha_act)*x_val_act+(*beta_act));
196 b = a_old*(*gamma_act);
201 *y_act = (a*((*alpha_act)*x_val_act+(*beta_act))+b);
202 if (fabs(*y_act) > threshold)