Dear GNU developers, I just re-encountered a two-year old bug in the calculation of Wigner's 6-j (and, hence, 9-J) symbols. The original bug report is here, from v1.13:
https://savannah.gnu.org/bugs/?29606 It is still unfixed in 1.15. The problem is that the routine fails to check whether the each triad that passes the triangle selection also have an even sum.I suggest fixing this by changing this block starting at line 205 of specfunc/coupling.c from: else if( triangle_selection_fails(two_ja, two_jb, two_jc) || triangle_selection_fails(two_ja, two_je, two_jf) || triangle_selection_fails(two_jb, two_jd, two_jf) || triangle_selection_fails(two_je, two_jd, two_jc) ) { result->val = 0.0; result->err = 0.0; return GSL_SUCCESS; } to: else if( triangle_selection_fails(two_ja, two_jb, two_jc) || ((two_ja + two_jb + two_jc) % 2) || triangle_selection_fails(two_ja, two_je, two_jf) || ((two_ja + two_je + two_jf) % 2) || triangle_selection_fails(two_jb, two_jd, two_jf) || ((two_jb + two_jd + two_jf) % 2) || triangle_selection_fails(two_je, two_jd, two_jc) || ((two_je + two_jd + two_jc) % 2) ) { result->val = 0.0; result->err = 0.0; return GSL_SUCCESS; } Thank you, Jason Detwiler
