[Numpy-discussion] NaN (Not a Number) occurs in calculation of complex number for Bessel functions

Pauli Virtanen pav@iki...
Fri Dec 21 09:45:40 CST 2012


Hi,

Your code tries to to evaluate

    z = 1263309.3633394379 + 101064.74910119522j
    jv(536, z)
    # -> (inf+inf*j)

In reality, this number is not infinite, but

    jv(536, z) == -2.3955170861527422e+43888 + 9.6910119847300024e+43887

These numbers (~ 10^43888) are too large for the floating point
numbers that computers use (maximum ~ 10^308). This is why you get
infinities and NaNs in the result. The same is true for the spherical
Bessel functions.

You will not be able to do this calculation using any software
that uses only floating point numbers (Scipy, Matlab, ...).

You need to use analytical properties of your problem to
get rid of such large numbers. Alternatively, you can use arbitrary
precision numbers. Python has libraries for that:

http://code.google.com/p/mpmath/


By the way, the proper place for this discussion is the following
mailing list:

http://mail.scipy.org/mailman/listinfo/scipy-user

-- 
Pauli Virtanen




More information about the NumPy-Discussion mailing list