Update the Xu table translation test (TODO the .fodt file)

Former-commit-id: cd4f3cbc1c451a790d2e06691d083e85ceab41fb
This commit is contained in:
Marek Nečada 2018-05-02 21:17:06 +03:00
parent 20595e0781
commit 430e5b2a6b
3 changed files with 12 additions and 4 deletions

View File

@ -28,6 +28,12 @@
{QPMS_NORMALISATION_XU, -72,72,1,3, {2., 0.5, 0.5}, QPMS_HANKEL_PLUS, .6946365327e-42 + -.1782022552e-41 * I, .1833377882e-43 + .7146549596e-44* I}, {QPMS_NORMALISATION_XU, -72,72,1,3, {2., 0.5, 0.5}, QPMS_HANKEL_PLUS, .6946365327e-42 + -.1782022552e-41 * I, .1833377882e-43 + .7146549596e-44* I},
{QPMS_NORMALISATION_XU, 42,52,9,81, {2., 0.5, 0.5}, QPMS_HANKEL_PLUS, .3656934399e+271 + .3705813223e+271 * I, -.4499925012e+269 + -.4440572037e+269* I}, {QPMS_NORMALISATION_XU, 42,52,9,81, {2., 0.5, 0.5}, QPMS_HANKEL_PLUS, .3656934399e+271 + .3705813223e+271 * I, -.4499925012e+269 + -.4440572037e+269* I},
{QPMS_NORMALISATION_XU, 18,100,-5,45, {2., 0.5, 0.5}, QPMS_HANKEL_PLUS, .4118769973e+293 + .7460688240e+293 * I, .5914795871e+291 + -.3265339985e+291* I}, {QPMS_NORMALISATION_XU, 18,100,-5,45, {2., 0.5, 0.5}, QPMS_HANKEL_PLUS, .4118769973e+293 + .7460688240e+293 * I, .5914795871e+291 + -.3265339985e+291* I},
// Yu-lin Xu, Journal of computational physics 139, 137165 (1998), Table 14 // FIXME not in the .fodt file because of motherfucking ubuntu at work
{QPMS_NORMALISATION_XU, -2,6,-2,10, {2., 0.5, 0.5}, QPMS_HANKEL_PLUS, .1377011649e-01 + .2385575934e+13 * I, -.3282035237e+12 + .1587043209e-02* I},
{QPMS_NORMALISATION_XU, -15,16,-15,20, {2., 0.5, 0.5}, QPMS_HANKEL_PLUS, .2074318970e-01 + -.2653706899e+36 * I, -.5072175010e+35 + .9852438545E-02 * I},
{QPMS_NORMALISATION_XU, -20,35,-20,45, {2., 0.5, 0.5}, QPMS_HANKEL_PLUS, .1851837652E-05 + -.4993981811e+115 * I, -.2073152255+114 + .4193366215E-07 * I},
{QPMS_NORMALISATION_XU, 41,45,-42,45, {2., 0.5, 0.5}, QPMS_HANKEL_PLUS, .2276246420e+247 + .2937180509e+247 * I, -.8692874643e+243 + .6736775193e+243 * I},
{QPMS_NORMALISATION_XU, 45,57,-38,42, {2., 0.5, 0.5}, QPMS_HANKEL_PLUS, .4293609827e+274 + .3327447520e+274 * I, -.4939385256e+271 + -.6373592055e+271 * I},
// THE END // THE END
{QPMS_NORMALISATION_UNDEF, 0,0,0,0, {0, 0, 0}, QPMS_BESSEL_UNDEF, 0 + 0 * I, 0 + 0* I} {QPMS_NORMALISATION_UNDEF, 0,0,0,0, {0, 0, 0}, QPMS_BESSEL_UNDEF, 0 + 0 * I, 0 + 0* I}

View File

@ -1,4 +1,4 @@
// c99 -ggdb -I .. -o translations_xutable translations_xutable_test.c ../translations.c ../gaunt.c -lgsl -lblas -lm // c99 -ggdb -I .. -DUSE_BROKEN_SINGLETC -o translations_xutable translations_xutable_test.c ../translations.c ../gaunt.c -lgsl -lblas -lm
#include "translations.h" #include "translations.h"
#include <stdio.h> #include <stdio.h>
//#include <math.h> //#include <math.h>

View File

@ -290,7 +290,9 @@ complex double qpms_trans_single_B_Xu(int m, int n, int mu, int nu, sph_t kdlj,
complex double qpms_trans_single_B(qpms_normalisation_t norm, complex double qpms_trans_single_B(qpms_normalisation_t norm,
int m, int n, int mu, int nu, sph_t kdlj, int m, int n, int mu, int nu, sph_t kdlj,
bool r_ge_d, qpms_bessel_t J) { bool r_ge_d, qpms_bessel_t J) {
//assert(0); // FIXME probably gives wrong values, do not use. #ifndef USE_BROKEN_SINGLETC
assert(0); // FIXME probably gives wrong values, do not use.
#endif
if(r_ge_d) J = QPMS_BESSEL_REGULAR; if(r_ge_d) J = QPMS_BESSEL_REGULAR;
double costheta = cos(kdlj.theta); double costheta = cos(kdlj.theta);
@ -481,7 +483,7 @@ static void qpms_trans_calculator_multipliers_A_general(
double Ppfac = (Pp_order >= 0) ? 1 : double Ppfac = (Pp_order >= 0) ? 1 :
min1pow(mu-m) * exp(lgamma(1+p+Pp_order)-lgamma(1+p-Pp_order)); min1pow(mu-m) * exp(lgamma(1+p+Pp_order)-lgamma(1+p-Pp_order));
double summandfac = (n*(n+1) + nu*(nu+1) - p*(p+1)) * min1pow(q) * a1q_n; double summandfac = (n*(n+1) + nu*(nu+1) - p*(p+1)) * min1pow(q) * a1q_n;
dest[q] = presum * summandfac * Ppfac; dest[q] = presum * summandfac * Ppfac /* * ipow(n-nu) */;
// FIXME I might not need complex here // FIXME I might not need complex here
} }
} }
@ -531,7 +533,7 @@ void qpms_trans_calculator_multipliers_B_general(
* (isq(n+nu+1)-isq(p+1)) * (isq(n+nu+1)-isq(p+1))
); );
dest[q-BQ_OFFSET] = presum * t * Ppfac_ dest[q-BQ_OFFSET] = presum * t * Ppfac_
* cruzan_bfactor(-m,n,mu,nu,p) * ipow(p+1); * cruzan_bfactor(-m,n,mu,nu,p) * ipow(p+1) /* * ipow(n-nu) */;
} }
} }