'a' is x = {0, 0}, m is 8 and we run into /* * y ^ maxExpt >= 2^{-960} * => maxExpt = 960 / log2(y.x[0]) = 708 / log(y.x[0]) * = 665/((1-y.x[0] + y.x[0]^2/2 - ...) * <= 665/(1-y.x[0]) * Quick check to see if we might need to break up the exponentiation */ if (m*(y.x[0]-1) / y.x[0] < -_MAX_EXPONENT * NPY_LOGE2) { /* Now do it carefully, calling log() */ double lg2y = log(y.x[0]) / NPY_LOGE2; double lgAns = m * lg2y; if (lgAns <= -_MAX_EXPONENT) { maxExpt = (int)(nextPowerOf2(-_MAX_EXPONENT / lg2y + 1)/2); } } but we compute y = frexpD(a, &yE); and that results in {0, <optimized out>}, we bogously run into the above and lg2y ends up as -Inf and it's all bullshit from here. Now the question is whether we are supposed to arrive at pow2Scaled_D with all zero 'a'. Since the code uses -msse2 it probably should also use -mfpmath=sse on i586 or alternatively -fexcess-precision=standard. The build isn't much verbose but it seems we use [ 201s] C compiler: gcc -Wno-unused-result -Wsign-compare -DNDEBUG -fomit-frame -pointer -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -g -DO PENSSL_LOAD_CONF -fwrapv -fno-semantic-interposition -fomit-frame-pointer -O2 -W all -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous- unwind-tables -fstack-clash-protection -Werror=return-type -g -IVendor/ -fomit-f rame-pointer -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tab les -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -g -IVendor/ -fomit-frame-pointer -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector- strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -We rror=return-type -flto=auto -g -fno-strict-aliasing -fPIC ... [ 201s] extra options: '-msse -msse2' ... [ 202s] gcc: scipy/special/cephes/kolmogorov.c