3 structure V
= Word8Vector
4 structure P
= PackRealBig
7 (I
.setRoundingMode mode
;
8 if I
.getRoundingMode () <> mode
9 then raise Fail
"setRM"
12 fun up() = setRM I
.TO_POSINF
13 fun down() = setRM I
.TO_NEGINF
14 fun near() = setRM I
.TO_NEAREST
15 fun zero() = setRM I
.TO_ZERO
19 61 digits
of 1 / 10 in Mathematica
21 In
[7]:= RealDigits
[1 / 10,2,61]
23 Out
[7]= {{1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0,
24 0, 1, 1, 0, 0, 1, 1, 0, 0, 1,
25 1, 0, 0, 1, 1, 0, 0, 1, 1, 0,
26 0, 1, 1, 0, 0, 1, 1, 0, 0, 1,
27 1, 0, 0, 1, 1, 0, 0, 1, 1, 0,
28 0, 1, 1, 0, 0, 1, 1, 0, 0, 1},-3}
33 val mtenth_lo
= (down();1.0 / 10.0)
34 val mtenth_hi
= (up();1.0 / 10.0)
35 val mtenth_near
= (near();1.0 / 10.0)
36 val mtenth_zero
= (zero();1.0 / 10.0)
38 fun word8vectorToString v
= V
.foldr (fn(w
,s
) => Word8.toString w ^ s
) "" v
40 val _
= print(word8vectorToString (P
.toBytes mtenth_lo
) ^
"\n")
41 val _
= print(word8vectorToString (P
.toBytes mtenth_hi
) ^
"\n")
42 val _
= print(word8vectorToString (P
.toBytes mtenth_near
) ^
"\n")
43 val _
= print(word8vectorToString (P
.toBytes mtenth_zero
) ^
"\n")