in reply to Re^7: Introspection into floats/NV
in thread Introspection into floats/NV
So let me restate my question, provided perl is compiled with other settings. (FP32,FP64,FP80,FP128, etc?)
Will F return another bitlength? ¹
Citing the docs
f A single-precision float in native format. d A double-precision float in native format. F A Perl internal floating-point value (NV) in native format D A float of long-double precision in native format. (Long doubles are available only if your system supports long double values. Raises an exception otherwise. +(* WRONG see demo) Note that there are different long double formats.)
What I read - and can't test² - is that F will produce f,d or D according to the setting.
D will fail* if not internally available, but f and d will coerce° accordingly.
Unfortunately, there is no mention of the FP80³ format you mentioned in another thread.
If I'm wrong, don't you think perldocs of packtut and pack should clarify this?
1)
From our previous discussion:
> > > There's no way to know if F is an IEEE double or not.
> > I'm confused, I'm expecting F to return 32, 64, 80 or 128 bits (at least)
IEEE double means FP64, if F returns different bit length it's possible to tell that it's not a FP64.
It might be much trickier to tell if its according to IEEE though (i.e. position and format of sign and exponent)
²) well lets try
*) wrong °)seems to be true
main::(-e:1): 0 DB<1> say unpack "B*", pack "f", 1/3 10101011101010101010101000111110 DB<2> say unpack "B*", pack "d", 1/3 0101010101010101010101010101010101010101010101011101010100111111 DB<3> say unpack "B*", pack "F", 1/3 0101010101010101010101010101010101010101010101011101010100111111 DB<4> say unpack "B*", pack "D", 1/3 0000000010101000101010101010101010101010101010101010101010101010111111 +0100111111000000000000000000000000000000000000000000000000 DB<5> use warnings; say unpack "B*", pack "D", 1/3 # NO EXCE +PTION RAISED 0000000010101000101010101010101010101010101010101010101010101010111111 +0100111111000000000000000000000000000000000000000000000000
Cheers Rolf
³) According to Wikipedia is "64-extended" only loosely defined as having 79+ bits
(addicted to the Perl Programming Language :)
see Wikisyntax for the Monastery
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^9: Introspection into floats/NV
by ikegami (Patriarch) on Jun 05, 2025 at 14:35 UTC | |
by LanX (Saint) on Jun 05, 2025 at 15:25 UTC |