struct doesn't handle NaN values?
John Roth
newsgroups at jhrothjr.com
Thu May 13 16:18:10 EDT 2004
"Grant Edwards" <grante at visi.com> wrote in message
news:slrnca7k1l.an4.grante at grante.rivatek.com...
> Perhaps I'm doing something wrong: the struct module docs say
> it's IEE 754, but I can't figure out how to get it to handle
> NaN values correctly (either packing or unpacking).
>
> >>> x = float('nan')
> >>> struct.pack("<f",x)
> Traceback (most recent call last):
> File "<stdin>", line 1, in ?
> SystemError: frexp() result out of range
>
> >>> struct.unpack("<f",'\xff\xff\xff\xff')
> (-6.8056469327705772e+38,)
>
> I don't have my copy of 754 at hand, but I'm pretty sure that
> 0xffffffff is a NaN (printf on IA32 Linux agrees) and not
> -6.8056469327705772e+38 as claimed by struct.unpack().
I believe that struct uses the c library as is, like the
float support in general. Unfortunately, that leaves
everyone at the mercy of the rather inconsistent
and ideosyncratic implementations of corner cases
in existing c libraries. See PEP 754 for a discussion
of the issues.
John Roth
>
> --
> Grant Edwards grante Yow! Of course, you
> at UNDERSTAND about the
PLAIDS
> visi.com in the SPIN CYCLE --
More information about the Python-list
mailing list