1 functor Test (R
: REAL
) =
6 val posZero
= minPos
- minPos
10 [(negZero
, negZero
, negZero
),
11 (negZero
, posZero
, posZero
),
12 (posZero
, negZero
, negZero
),
13 (posZero
, posZero
, posZero
),
14 (negZero
, posInf
, minPos
),
15 (negZero
, negInf
, ~minPos
),
16 (posZero
, posInf
, minPos
),
17 (posZero
, negInf
, ~minPos
),
18 (minPos
, posZero
, posZero
),
19 (minPos
, negZero
, posZero
),
20 (minPos
, negInf
, posZero
),
21 (~minPos
, posZero
, negZero
),
22 (~minPos
, negZero
, negZero
),
23 (~minPos
, posInf
, negZero
),
24 (minPos
, minPos
, minPos
),
25 (~minPos
, ~minPos
, ~minPos
),
26 (minPos
, posInf
, fromInt
2 * minPos
),
27 (~minPos
, negInf
, ~
(fromInt
2 * minPos
)),
28 (maxFinite
, posInf
, posInf
),
29 (~maxFinite
, negInf
, negInf
),
30 (nextAfter (minNormalPos
, negInf
), posInf
, minNormalPos
)]
36 val r2s
= fmt
StringCvt.EXACT
37 val z
' = nextAfter (x
, y
)
39 print (concat
["nextAfter (", r2s x
, ", ", r2s y
, ") = ", r2s z
', " ",
40 if == (z
, z
') then "OK" else concat
["<> ", r2s z
],
47 structure Z
= Test (Real32
)
48 structure Z
= Test (Real64
)