Michael> What's the best way to portably generate binary floating point
    Michael> infinity and NaNs? 

I take it this isn't portable even though it works on Mac, Linux and Solaris
across a number of different Python versions and a couple GCC versions:

    % python
    Python 2.4.2 (#1, Feb 23 2006, 12:48:31) 
    [GCC 3.4.1] on sunos5
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import struct
    >>> struct.pack("f", float("NaN"))
    '\xff\xff\xff\x7f'
    >>> struct.pack("f", float("Inf"))
    '\x00\x00\x80\x7f'

    $ python
    Python 2.5 (release25-maint:53536, Jan 23 2007, 18:15:37) 
    [GCC 3.4.6 20060404 (Red Hat 3.4.6-3)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import struct
    >>> struct.pack("f", float("NaN"))
    '\x00\x00\xc0\x7f'
    >>> struct.pack("f", float("Inf"))
    '\x00\x00\x80\x7f'

    % python
    Python 2.6a0 (trunk:54264M, Mar 10 2007, 15:19:48) 
    [GCC 4.0.1 (Apple Computer, Inc. build 5367)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import struct
    >>> struct.pack("f", float("Inf"))
    '\x7f\x80\x00\x00'
    >>> struct.pack("f", float("NaN"))
    '\x7f\xc0\x00\x00'

(Note the absence of a demonstration on Windows.)  Can't the above be
blessed as the One True Way and wormed around in floatmodule.c for those
platforms where float'ing "NaN" or "Inf" doesn't currently work?

Skip
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to