[Numpy-discussion] Odd-looking long double on windows 32 bit

Matthew Brett matthew.brett at gmail.com
Sun Nov 13 02:57:12 EST 2011


Hi,

On Sat, Nov 12, 2011 at 11:35 PM, Matthew Brett <matthew.brett at gmail.com> wrote:
> Hi,
>
> Sorry for my continued confusion here.  This is numpy 1.6.1 on windows
> XP 32 bit.
>
> In [2]: np.finfo(np.float96).nmant
> Out[2]: 52
>
> In [3]: np.finfo(np.float96).nexp
> Out[3]: 15
>
> In [4]: np.finfo(np.float64).nmant
> Out[4]: 52
>
> In [5]: np.finfo(np.float64).nexp
> Out[5]: 11
>
> If there are 52 bits of precision, 2**53+1 should not be
> representable, and sure enough:
>
> In [6]: np.float96(2**53)+1
> Out[6]: 9007199254740992.0
>
> In [7]: np.float64(2**53)+1
> Out[7]: 9007199254740992.0
>
> If the nexp is right, the max should be higher for the float96 type:
>
> In [9]: np.finfo(np.float64).max
> Out[9]: 1.7976931348623157e+308
>
> In [10]: np.finfo(np.float96).max
> Out[10]: 1.#INF
>
> I see that long double in C is 12 bytes wide, and double is the usual 8 bytes.

Sorry - sizeof(long double) is 12 using mingw.  I see that long double
is the same as double in MS Visual C++.

http://en.wikipedia.org/wiki/Long_double

but, as expected from the name:

In [11]: np.dtype(np.float96).itemsize
Out[11]: 12

Cheers,

Matthew



More information about the NumPy-Discussion mailing list