File: real-str.sml

package info (click to toggle)
mlton 20130715-3
  • links: PTS
  • area: main
  • in suites: stretch
  • size: 60,900 kB
  • ctags: 69,386
  • sloc: xml: 34,418; ansic: 17,399; lisp: 2,879; makefile: 1,605; sh: 1,254; pascal: 256; python: 143; asm: 97
file content (38 lines) | stat: -rw-r--r-- 1,239 bytes parent folder | download | duplicates (7)
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
38
  structure I = IEEEReal
  structure R = Real
  structure V = Word8Vector
  structure P = PackRealBig

  fun down() = I.setRoundingMode I.TO_NEGINF
  fun up() = I.setRoundingMode I.TO_POSINF

  fun word8vectorToString v = V.foldr (fn(w,s) => Word8.toString w ^ s) "" v

  val _ = down()
  val x = ~1.0/10.0
  val _ = up()
  val y = ~1.0/10.0
  val _ = if R.<=(x,y) then print "YES\n" else print "NO\n"
  val _ = print(word8vectorToString (P.toBytes x) ^ "\n")
  val _ = print(word8vectorToString (P.toBytes y) ^ "\n")

  val s = "~0.1"
  val _ = down()
  val x = Option.valOf (Real.fromString s)
  val _ = up()
  val y = Option.valOf (Real.fromString s)
  val _ = if R.<=(x,y) then print "YES\n" else print "NO\n"
  val _ = print(word8vectorToString (P.toBytes x) ^ "\n")
  val _ = print(word8vectorToString (P.toBytes y) ^ "\n")

  val da = {class = IEEEReal.NORMAL,
            sign = false,
            digits = [1],
            exp = 0}
  val _ = down()
  val x = Option.valOf (Real.fromDecimal da)
  val _ = up()
  val y = Option.valOf (Real.fromDecimal da)
  val _ = if R.<=(x,y) then print "YES\n" else print "NO\n"
  val _ = print(word8vectorToString (P.toBytes x) ^ "\n")
  val _ = print(word8vectorToString (P.toBytes y) ^ "\n")