1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
  
     | 
    
      val one = valOf (Real.fromString "1.0")
val zero = valOf (Real.fromString "0.0")
val posInf = one / zero
val negInf = ~one / zero
val nan1 = posInf + negInf
fun cmp f = print ((Bool.toString (f (nan1, nan1))) ^ "\n")
local
   open Real
in
   val _ = cmp (op <)
   val _ = cmp (op <=)
   val _ = cmp (op >)
   val _ = cmp (op >=)
   val _ = cmp (op ==)
   val _ = cmp (op !=)
   val _ = cmp (op ?=)
end
val nan2 = valOf (Real.fromString "nan")
fun cmp f = print ((Bool.toString (f (nan1, nan2))) ^ "\n")
local
   open Real
in
   val _ = cmp (op <)
   val _ = cmp (op <=)
   val _ = cmp (op >)
   val _ = cmp (op >=)
   val _ = cmp (op ==)
   val _ = cmp (op !=)
   val _ = cmp (op ?=)
end
 
     |