Armin Ronacher <[EMAIL PROTECTED]> wrote:
> It's one of those "non issues" but there are still some situations where you
> have to deal with Infinity and NaN, even in Python. Basically one the problems
> is that the repr of floating point numbers is platform depending and sometimes
> yields "nan" which is not evaluable. It's true that eval() is probably a bad
> thing but there are some libraries that use repr/%r for code generation and it
> could happen that they produce erroneous code because of that. Also there is 
> no
> way to get the Infinity and NaN values and also no way to test if they exist.
> 
> Maybe changing the repr of `nan` to `math.NaN` and `inf` to `math.Infinity` as
> well as `-inf` to `(-math.Infinity)` and add that code to the math module (of
> course as a C implementation, there are even macros for testing for NaN 
> values)::

That would work for eval(repr(x)), but it fails for float(repr(x)).  I
believe this particular issue has been brought up before, as well as the
particular solution, but I can't remember the final outcome.


>     Infinity = 1e10000

Has the storage of infinity in .pyc files been fixed?  For a while it
was broken.

>     NaN = Infinity / Infinity
> 
>     def is_nan(x):
>         return type(x) is float and x != x
> 
>     def is_finite(x):
>         return x != Infinity

you mean

    def is_finite(x):
        return x not in (Infinity, -Infinity)


 - Josiah

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to