From 430e5b2a6bad039da876f95832ba620d92eb1aa3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ne=C4=8Dada?= Date: Wed, 2 May 2018 21:17:06 +0300 Subject: [PATCH] Update the Xu table translation test (TODO the .fodt file) Former-commit-id: cd4f3cbc1c451a790d2e06691d083e85ceab41fb --- qpms/tests/testcases_translations_Xu | 6 ++++++ qpms/tests/translations_xutable_test.c | 2 +- qpms/translations.c | 8 +++++--- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/qpms/tests/testcases_translations_Xu b/qpms/tests/testcases_translations_Xu index 51dc266..5577dc9 100644 --- a/qpms/tests/testcases_translations_Xu +++ b/qpms/tests/testcases_translations_Xu @@ -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, 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}, +// Yu-lin Xu, Journal of computational physics 139, 137–165 (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 {QPMS_NORMALISATION_UNDEF, 0,0,0,0, {0, 0, 0}, QPMS_BESSEL_UNDEF, 0 + 0 * I, 0 + 0* I} diff --git a/qpms/tests/translations_xutable_test.c b/qpms/tests/translations_xutable_test.c index 21ce6b3..200735f 100644 --- a/qpms/tests/translations_xutable_test.c +++ b/qpms/tests/translations_xutable_test.c @@ -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 //#include diff --git a/qpms/translations.c b/qpms/translations.c index 89f6717..90b6826 100644 --- a/qpms/translations.c +++ b/qpms/translations.c @@ -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, int m, int n, int mu, int nu, sph_t kdlj, 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; double costheta = cos(kdlj.theta); @@ -481,7 +483,7 @@ static void qpms_trans_calculator_multipliers_A_general( double Ppfac = (Pp_order >= 0) ? 1 : 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; - dest[q] = presum * summandfac * Ppfac; + dest[q] = presum * summandfac * Ppfac /* * ipow(n-nu) */; // 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)) ); 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) */; } }