[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
Next annex Z interchange proposal
Basic layout:
{ Layout: sign [1] Exp [E(L)] Head [H(L)]
L -3 bits
1 sign bit
3 L bits -- indicate size of object
E(L) exp bits
F(L) significand bits
H(L) Head bits in first 32-bit Dword = 32 - 1 - 3 -
E(L)
T(L) Tail bits in remaining Dwords = F(L) - T(L)
}
Binary
L size Type E(L) F(L) H(L) T(L)
0 32 Num 15 13 13 0
1 64 Num 15 45 13 32
2 128 Num 15 109 13 96
3 256 Num 18 234 10 224
4 32*k Esc 32 size-64 0 size-64
5 32 Inf 0 28 28 0
6 32 qNaN 0 28 28 0
7 32 sNaN 0 28 28 0
} Decimal
L size Type E(L) F(L) H(L) T(L) Digits
0 32 Num 16 12 12 0 3
1 64 Num 16 44 12 32 11
2 128 Num 16 108 12 96 27
3 256 Num 20 232 8 224 58
4 32*k Esc 32 size-64 0 size-64 "0<= k <
2^(32-4); 0 <= size<= 32*(2^28-1) = 8,589,934,560"
5 32 Inf 0 28 12 16
6 32 qNaN 0 28 12 16
7 32 sNaN 0 28 12 16
Issues:
Extended representations of single/double/quad
Redundant Inf/NaN encodings? What to do with large exponents
Subnormals?
Pointers?
Decimal types unnormalized.
What if you know you want to exchange some basic type but don't agree on
computation format?