221 lines
4.6 KiB
Racket
221 lines
4.6 KiB
Racket
#lang s-exp "../../lang/base.rkt"
|
|
|
|
|
|
(provide (all-defined-out))
|
|
|
|
;; #f means a symbol
|
|
;; X means fails (syntax forces it to be a number)
|
|
;; DBZ means fails because divide-by-zero
|
|
;; NOE means fails because no such exact
|
|
|
|
(define number-table
|
|
`((,(+ 1/2 +i) "1/2+i")
|
|
(100 "100")
|
|
(100 "#d100")
|
|
(0.1 ".1")
|
|
(0.1 "#d.1")
|
|
(1/20000 "#e1/2e-4")
|
|
(10.0 "1e1")
|
|
(10.0 "1E1")
|
|
(10.0 "1s1")
|
|
(10.0 "1S1")
|
|
(10.0 "1f1")
|
|
(10.0 "1F1")
|
|
(10.0 "1l1")
|
|
(10.0 "1L1")
|
|
(10.0 "1d1")
|
|
(10.0 "1D1")
|
|
(0.0 "0e13")
|
|
(0.0 "#i0")
|
|
(-0.0 "#i-0")
|
|
(+inf.0 ".3e2666666666")
|
|
(+inf.0 "+INF.0")
|
|
(+nan.0 "+NaN.0")
|
|
(+inf.0 "1e500") ; Check simple overflows
|
|
(-inf.0 "-1e500")
|
|
(0.0 "1e-500")
|
|
(-0.0 "-1e-500")
|
|
(+inf.0 "1#e500")
|
|
(-inf.0 "-1#e500")
|
|
(0.0 "1#e-500")
|
|
(-0.0 "-1#e-500")
|
|
(+inf.0 "1e10000000000000000000000000000000") ; Check avoidance of extreme computations
|
|
(-inf.0 "-1e10000000000000000000000000000000")
|
|
(+inf.0 "1#e10000000000000000000000000000000")
|
|
(-inf.0 "-1#e10000000000000000000000000000000")
|
|
(+0.0 "1e-10000000000000000000000000000000")
|
|
(-0.0 "-1e-10000000000000000000000000000000")
|
|
(+0.0 "1#e-10000000000000000000000000000000")
|
|
(-0.0 "-1#e-10000000000000000000000000000000")
|
|
(10.0 "1#")
|
|
(10.0 "1#e0")
|
|
(10.0 "1####e-3")
|
|
(10.0 "1#.e0")
|
|
(10.0 "10.#e0")
|
|
(10.0 "10.e0")
|
|
(10.0 "1#.e0")
|
|
(10.0 "10.0#e0")
|
|
(10.0 "1#.##e0")
|
|
(10 "#e1#")
|
|
(10 "#e1#e0")
|
|
(10 "#e1#.e0")
|
|
(5e-5 "1/2e-4")
|
|
(5e-5 "#i1/2e-4")
|
|
(0.5 "#i1/2")
|
|
(1/2 "#e1/2")
|
|
(0.5 "#i0.5")
|
|
(1/2 "#e0.5")
|
|
(1/20 "#e0.5e-1")
|
|
(1/20 "#e0.005e1")
|
|
(1.0+0.5i "1+0.5i")
|
|
(1/2 "1/2@0")
|
|
(-1/2 "-1/2@0")
|
|
(1/2 "1/2@-0")
|
|
(0 "#o#e0")
|
|
(8 "#o#e10")
|
|
(0 "#b#e0")
|
|
(0.0 "#b#i0")
|
|
(4.0 "#b1e10")
|
|
(4 "#b#e1e10")
|
|
(1/10+1/5i "#e0.1+0.2i")
|
|
(0.0+80.0i "#i+8#i")
|
|
(521976 "#x7f6f8")
|
|
(1+8i "#b#e1+1#e10i")
|
|
(1.125 "#x1.2")
|
|
(1.1640625 "#x1.2a")
|
|
(1.1640625 "#x1.2a####")
|
|
(10.0 "#xa.")
|
|
(10.25 "#xa.4")
|
|
(160.0 "#xa#.")
|
|
(416.0 "#x1a#.")
|
|
(2816.0 "#xb##.##")
|
|
(4e62 "#i4000000000000000000000000000000000000000000000000000000000000e2")
|
|
(-0.0 "#b-0.0")
|
|
(X "#b1000000000020e1")
|
|
(#f "1.0/3")
|
|
(#f "1/3.0")
|
|
(#i10/3 "1#/3")
|
|
(#i1/300 "1/3##")
|
|
(#f "1#/#3")
|
|
(#i10/3 "#d1#/3")
|
|
(X "#d1#/#3")
|
|
(+inf.0 "1/0#")
|
|
(-inf.0 "-1/0#")
|
|
(NOE "#e+inf.0")
|
|
(NOE "#e-inf.0")
|
|
(NOE "#e+nan.0")
|
|
(NOE "#e1/0#")
|
|
(500.0 "1/2#e4")
|
|
(5000.0 "1#/2#e4")
|
|
(500000000.0 "1/2#e10")
|
|
(500000000 "#e1/2#e10")
|
|
(16140901064495857664-50176i "#e#x+e#s+e@-e#l-e")
|
|
|
|
(#f "d")
|
|
(D "D")
|
|
(#f "i")
|
|
(I "I")
|
|
(#f "3i")
|
|
(3I "3I")
|
|
(#f "33i")
|
|
(33I "33I")
|
|
(#f "3.3i")
|
|
(3.3I "3.3I")
|
|
(#f "e")
|
|
(#f "e1")
|
|
(#f "e1")
|
|
(#f "-")
|
|
(#f "+")
|
|
(X "#e-")
|
|
(X "#e+")
|
|
(X "#i-")
|
|
(X "#i+")
|
|
(#f "+.")
|
|
(X "#e+.")
|
|
(#f "/")
|
|
(#f "+1+1")
|
|
(#f "+1/+1")
|
|
(#f "1//2")
|
|
(#f "mod//")
|
|
(#f "-1.0/2")
|
|
(#f "/2")
|
|
(#f "2..")
|
|
(#f ".2.")
|
|
(X "#e2..")
|
|
(X "#e.2.")
|
|
(#f "1#.0e4")
|
|
(#f "1#0e4")
|
|
(#f "1#0.e4")
|
|
(#f "1##.##0e4")
|
|
(#f "2i")
|
|
(#f "/2i")
|
|
(#f "2@2i")
|
|
(#f "2@@2")
|
|
(#f "-2@-+2")
|
|
(#f "1/1-e4")
|
|
(#f "1.-2")
|
|
(#f "--1")
|
|
(#f "-+1")
|
|
(#f "-1+3-4")
|
|
(#f "1\0002")
|
|
(X "#xg")
|
|
(X "#x")
|
|
(X "#xa#a")
|
|
(X "#i#j0")
|
|
(X "#x12.a#b")
|
|
(X "#e1.-2")
|
|
(X "#b#b0")
|
|
(X "#b#o0")
|
|
(X "#i#i0")
|
|
(X "#e#e0")
|
|
(X "#i8#i")
|
|
(X "#i4@#i5")
|
|
(X "#i4+#d6i")
|
|
(X "#i4+#d6")
|
|
(#f "4ef5")
|
|
(X "#e4ef5")
|
|
(X "#d1e")
|
|
(X "#b1e")
|
|
(X "#o1e")
|
|
(DBZ "1/0")
|
|
(DBZ "5+1/0i")
|
|
(DBZ "1/0+5i")
|
|
(DBZ "5@1/0")
|
|
(DBZ "1/0@5")
|
|
(DBZ "1/0e2")
|
|
(#f "1/0+hi")
|
|
(#f "x+1/0i")
|
|
(+nan.0+1i "+nan.0+1i")
|
|
(1+nan.0i "1+nan.0i")
|
|
(#f "1++nan.0i")
|
|
(0.5+nan.0i "1/2+nan.0i")
|
|
(1+inf.0i "1+inf.0i")
|
|
(1-inf.0i "1-inf.0i")
|
|
(+inf.0i "+inf.0i")
|
|
(-inf.0i "-inf.0i")
|
|
(+nan.0i "+nan.0i")
|
|
(-nan.0i "-nan.0i")
|
|
(+inf.0i "+INF.0i")
|
|
(-inf.0-nan.0i "-inf.0-nan.0i")
|
|
(#f "1++inf.0i")
|
|
(+nan.0@1 "+nan.0@1")
|
|
(+inf.0@1 "+inf.0@1")
|
|
(#f "+inf.0@1@1")
|
|
(1@+inf.0 "1@+inf.0")
|
|
(1@+inf.0 "1/1@+inf.0")
|
|
(+inf.0@1 "+inf.0@1/1")
|
|
(1.0+0.0i "1@0000.0")
|
|
(1.0 "0001.0@0")
|
|
(#f "+inf.0@3@0")
|
|
(#f "+inf.0@3+4i")
|
|
(#f "+ina.0")
|
|
(#f "1@3+4i")
|
|
(#f "@2")
|
|
(#f "+a@2")
|
|
(DBZ "1/0+inf.0i")
|
|
(DBZ "+inf.0+1/0i")
|
|
(DBZ "1/0@+inf.0")
|
|
(DBZ "+inf.0@1/0")
|
|
(#f "1e1/0")
|
|
(#f "011111122222222223333333333444444x")))
|