home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-07-03 | 4.6 KB | 170 lines | [TEXT/R*ch] |
- (* test/real.sml -- here we test only the `exotic' operations
- PS 1995-03-24 *)
-
- use "auxil.sml";
-
- local
- open Real
- in
-
- val test1 = check(sign ~57.0 = ~1 andalso sign 99.0 = 1 andalso sign 0.0 = 0);
- val test2 = check(sameSign(~255.0, ~256.0) andalso sameSign(255.0, 256.0)
- andalso sameSign(0.0, 0.0));
- val test3 = check(sign 1E~300 = 1 andalso sign ~1E~300 = ~1
- andalso sign 1E300 = 1 andalso sign ~1E300 = ~1);
-
- local
- val args = [0.0, 99.0, ~5.0, 1.1, ~1.1, 1.9, ~1.9, 2.5, ~2.5,
- 1000001.4999, ~1000001.4999];
- in
- val test4 = check(map ceil args
- = [0, 99, ~5, 2, ~1, 2, ~1, 3, ~2, 1000002, ~1000001]);
- val test5 = check(map floor args
- = [0, 99, ~5, 1, ~2, 1, ~2, 2, ~3, 1000001, ~1000002]);
- val test6 = check(map trunc args
- = [0, 99, ~5, 1, ~1, 1, ~1, 2, ~2, 1000001, ~1000001]);
- val test7 = check(map round args
- = [0, 99, ~5, 1, ~1, 2, ~2, 2, ~2, 1000001, ~1000001]);
- end
-
- val test8 = check(0.0 = real 0 andalso 2.0 = real 2 andalso ~2.0 = real ~2);
-
- fun chk(s, r) =
- let val eps = abs r * 1E~10
- in
- check'(fn _ =>
- case fromString s of
- SOME res => abs(res - r) <= eps
- | NONE => false)
- end
-
- val test9 =
- List.map chk[("0", 0.0),
- ("156", 156.0),
- ("+156", 156.0),
- ("~156", ~156.0),
- ("-156", ~156.0),
- ("156.25", 156.25),
- ("+156.25", 156.25),
- ("~156.25", ~156.25),
- ("-156.25", ~156.25),
-
- (".25", 0.25),
- ("+.25", 0.25),
- ("~.25", ~0.25),
- ("-.25", ~0.25),
-
- ("156E024", 156E024),
- ("+156E024", 156E024),
- ("~156E024", ~156E024),
- ("-156E024", ~156E024),
- ("156.25E024", 156.25E024),
- ("+156.25E024", 156.25E024),
- ("~156.25E024", ~156.25E024),
- ("-156.25E024", ~156.25E024),
- (".25E024", 0.25E024),
- ("+.25E024", 0.25E024),
- ("~.25E024", ~0.25E024),
- ("-.25E024", ~0.25E024),
-
- ("156E+024", 156E024),
- ("+156E+024", 156E024),
- ("~156E+024", ~156E024),
- ("-156E+024", ~156E024),
- ("156.25E+024", 156.25E024),
- ("+156.25E+024", 156.25E024),
- ("~156.25E+024", ~156.25E024),
- ("-156.25E+024", ~156.25E024),
- (".25E+024", 0.25E024),
- ("+.25E+024", 0.25E024),
- ("~.25E+024", ~0.25E024),
- ("-.25E+024", ~0.25E024),
-
- ("156E~024", 156E~024),
- ("+156E~024", 156E~024),
- ("~156E~024", ~156E~024),
- ("-156E~024", ~156E~024),
- ("156.25E~024", 156.25E~024),
- ("+156.25E~024", 156.25E~024),
- ("~156.25E~024", ~156.25E~024),
- ("-156.25E~024", ~156.25E~024),
- (".25E~024", 0.25E~024),
- ("+.25E~024", 0.25E~024),
- ("~.25E~024", ~0.25E~024),
- ("-.25E~024", ~0.25E~024),
-
- ("156E-024", 156E~024),
- ("+156E-024", 156E~024),
- ("~156E-024", ~156E~024),
- ("-156E-024", ~156E~024),
- ("156.25E-024", 156.25E~024),
- ("+156.25E-024", 156.25E~024),
- ("~156.25E-024", ~156.25E~024),
- ("-156.25E-024", ~156.25E~024),
- (".25E-024", 0.25E~024),
- ("+.25E-024", 0.25E~024),
- ("~.25E-024", ~0.25E~024),
- ("-.25E-024", ~0.25E~024),
-
- ("156e024", 156E024),
- ("+156e024", 156E024),
- ("~156e024", ~156E024),
- ("-156e024", ~156E024),
- ("156.25e024", 156.25E024),
- ("+156.25e024", 156.25E024),
- ("~156.25e024", ~156.25E024),
- ("-156.25e024", ~156.25E024),
- (".25e024", 0.25E024),
- ("+.25e024", 0.25E024),
- ("~.25e024", ~0.25E024),
- ("-.25e024", ~0.25E024),
-
- ("156e+024", 156E024),
- ("+156e+024", 156E024),
- ("~156e+024", ~156E024),
- ("-156e+024", ~156E024),
- ("156.25e+024", 156.25E024),
- ("+156.25e+024", 156.25E024),
- ("~156.25e+024", ~156.25E024),
- ("-156.25e+024", ~156.25E024),
- (".25e+024", 0.25E024),
- ("+.25e+024", 0.25E024),
- ("~.25e+024", ~0.25E024),
- ("-.25e+024", ~0.25E024),
-
- ("156e~024", 156E~024),
- ("+156e~024", 156E~024),
- ("~156e~024", ~156E~024),
- ("-156e~024", ~156E~024),
- ("156.25e~024", 156.25E~024),
- ("+156.25e~024", 156.25E~024),
- ("~156.25e~024", ~156.25E~024),
- ("-156.25e~024", ~156.25E~024),
- (".25e~024", 0.25E~024),
- ("+.25e~024", 0.25E~024),
- ("~.25e~024", ~0.25E~024),
- ("-.25e~024", ~0.25E~024),
-
- ("156e-024", 156E~024),
- ("+156e-024", 156E~024),
- ("~156e-024", ~156E~024),
- ("-156e-024", ~156E~024),
- ("156.25e-024", 156.25E~024),
- ("+156.25e-024", 156.25E~024),
- ("~156.25e-024", ~156.25E~024),
- ("-156.25e-024", ~156.25E~024),
- (".25e-024", 0.25E~024),
- ("+.25e-024", 0.25E~024),
- ("~.25e-024", ~0.25E~024),
- ("-.25e-024", ~0.25E~024)];
-
- val test10 =
- List.map (fn s => case fromString s of NONE => "OK" | _ => "WRONG")
- ["20.E",
- "e10", "E10",
- "+e10", "+E10",
- "~e10", "~E10",
- "-e10", "-E10"];
-
- end
-