[MLton-devel] cvs commit: Real and IEEEReal improvements
Stephen Weeks
sweeks@users.sourceforge.net
Sat, 31 May 2003 17:31:35 -0700
sweeks 03/05/31 17:31:34
Modified: basis-library/misc C.sig C.sml primitive.sml
basis-library/posix primitive.sml
basis-library/real IEEE-real.sig IEEE-real.sml real.sig
real.sml
doc changelog
doc/license README
doc/user-guide basis.tex credits.tex
mlton/main main.sml
regression real.fromLargeInt.ok real.maxFinite.ok real.sml
real.toLargeInt.ok real4.ok real5.ok real6.ok
real7.ok real8.ok time3.ok
runtime .cvsignore Makefile libmlton.c
Added: doc/license gdtoa-LICENSE
regression real.conv.ok real.conv.sml real.toDecimal.ok
real.toDecimal.sml
runtime gdtoa.tgz
runtime/basis/Real class.c const.S gdtoa.c isFinite.c
isNan.c isNormal.c nextAfter.c qequal.c real.c
round.c signBit.c strtod.c
Removed: runtime/basis Real.c Real_const.S
Log:
Used David Gay's gdtoa library to make real<->decimal conversions
correct.
Implemented Real.toDecimal using gdtoa.
Fixed Real.fmt to use gdtoa. Also added support for StringCvt.EXACT
case.
Implemented IEEEReal.scan.
Implemented Real.fromDecimal using gdtoa's strtod.
Fixed Real.{fromString, scan} to match the basis library spec,
implemented them on top of IEEEReal.scan and Real.fromDecimal.
Changed real.sml regression to reflect correct behavior (as I see it)
of StringCvt.GEN, which is to not display ".0".
Now, for a few questions/comments on the basis library spec.
1. In MLton Real.scan stops after "inf" since scan is looking for a
prefix. There is no need to ever look for "infinity".
2. What should Real.scan do for 1.2E345? It could scan a valid real,
1.2E34 from a prefix of the string, or it could scan as posInf. I
guess it is required to look at the longest prefix, and so should get
posInf.
3. For Real.fmt GEN, are reals required to have at least one digit
after the decimal point? MLton says no.
4. For Real.fmt, are exponents required to be at least two digits?
The documentation reads as if there are exactly two, but that can't be
right, since reals can be larger than 9E99. I've noticed that
implementations differ on whether to add a leading 0 on exponents. I
decided in MLton to never add it.
Here are the results of some tests that I ran on various calls to
Real.fmt on all the implementations. "MLton" means the one with the
changes of this checkin.
ML Kit MLton Moscow ML Poly/ML SML/NJ
FIX (SOME 0) 0.0 0 0 0 0 0
FIX (SOME 0) 1.0 1 1 1 1 1
FIX (SOME 1) 0.0 0.0 0.0 0.0 0.0 0.0
FIX (SOME 1) 1.0 1.0 1.0 1.0 1.0 1.0
GEN (SOME 1) 0.0 0.0 0 0.0 0.0 0.0
GEN (SOME 1) 1.0 1.0 1 1.0 1.0 1.0
GEN (SOME 1) 13.0 1E01 10 1E1 1E1 1E01
GEN (SOME 2) 0.0 0.0 0 0.0 0.0 0.0
GEN (SOME 2) 1.0 1.0 1 1.0 1.0 1.0
GEN (SOME 2) 13.0 13.0 13 13.0 13.0 13.0
GEN (SOME 2) 13.4 13.0 13 13.0 13.0 13.0
GEN (SOME 2) 13.6 14.0 14 14.0 14.0 14.0
GEN (SOME 3) 13.0 13.0 13 13.0 13.0 13.0
GEN (SOME 3) 13.4 13.4 13.4 13.4 13.4 13.4
GEN (SOME 3) 13.6 13.6 13.6 13.6 13.6 13.6
GEN (SOME 4) 13.0 13.0 13 13.0 13.0 13.0
GEN (SOME 4) 13.6 13.6 13.6 13.6 13.6 13.6
SCI (SOME 0) 0.0 0E00 0E0 0E0 0E0 0E0
SCI (SOME 0) 1.0 1E00 1E0 1E0 1E0 1E0
SCI (SOME 0) 13.0 1E01 1E1 1E1 1E1 1E1
SCI (SOME 1) 0.0 0.0E00 0.0E0 0.0E0 0.0E0 0.0E0
SCI (SOME 1) 1.0 1.0E00 1.0E0 1.0E0 1.0E0 1.0E0
SCI (SOME 1) 13.0 1.3E01 1.3E1 1.3E1 1.3E1 1.3E1
Revision Changes Path
1.3 +15 -20 mlton/basis-library/misc/C.sig
Index: C.sig
===================================================================
RCS file: /cvsroot/mlton/mlton/basis-library/misc/C.sig,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- C.sig 10 Apr 2002 07:02:17 -0000 1.2
+++ C.sig 1 Jun 2003 00:31:29 -0000 1.3
@@ -10,35 +10,30 @@
(* C char* *)
structure CS :
sig
- type cs
+ type t
- val update: cs * int * char -> unit
-
+ (* string must be terminated by char *)
+ val extractToChar: t * char -> string
(* string must be null terminated *)
- val length: cs -> int
-
+ val length: t -> int
+ val sub: t * int -> char
+ val toCharArrayOfLength: t * int -> char array
(* string must be null terminated *)
- val toString: cs -> string
-
- (* string must be terminated by char *)
- val extractToChar: cs * char -> string
-
+ val toString: t -> string
(* extract first n characters of string *)
- val toStringOfLength: cs * int -> string
- val toCharArrayOfLength: cs * int -> char array
- val toWord8ArrayOfLength: cs * int -> word8 array
+ val toStringOfLength: t * int -> string
+ val toWord8ArrayOfLength: t * int -> word8 array
+ val update: t * int * char -> unit
end
(* NULL terminated char** *)
- structure CSS :
+ structure CSS:
sig
- type css
-
- val toList: css -> string list
-
- (* extract first n strings from array *)
- val toArrayOfLength: css * int -> string array
+ type t
val fromList: string list -> string array
+ (* extract first n strings from array *)
+ val toArrayOfLength: t * int -> string array
+ val toList: t -> string list
end
end
1.3 +1 -1 mlton/basis-library/misc/C.sml
Index: C.sml
===================================================================
RCS file: /cvsroot/mlton/mlton/basis-library/misc/C.sml,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- C.sml 10 Apr 2002 07:02:17 -0000 1.2
+++ C.sml 1 Jun 2003 00:31:29 -0000 1.3
@@ -48,7 +48,7 @@
fun toString cs = toStringOfLength (cs, length cs)
- fun extractToChar (s: cs, c: char): string =
+ fun extractToChar (s: t, c: char): string =
toStringOfLength (s, makeLength (sub, fn c' => c = c') s)
end
1.53 +10 -7 mlton/basis-library/misc/primitive.sml
Index: primitive.sml
===================================================================
RCS file: /cvsroot/mlton/mlton/basis-library/misc/primitive.sml,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -r1.52 -r1.53
--- primitive.sml 26 May 2003 02:10:34 -0000 1.52
+++ primitive.sml 1 Jun 2003 00:31:29 -0000 1.53
@@ -84,11 +84,11 @@
(* char* *)
structure CS =
struct
- type cs = pointer
+ type t = pointer
- val sub = _ffi "C_CS_sub": cs * int -> char;
+ val sub = _ffi "C_CS_sub": t * int -> char;
val update =
- _ffi "C_CS_update": cs * int * char -> unit; (* primitive *)
+ _ffi "C_CS_update": t * int * char -> unit; (* primitive *)
val charArrayToWord8Array =
_prim "C_CS_charArrayToWord8Array":
char array -> word8 array;
@@ -97,13 +97,14 @@
(* char** *)
structure CSS =
struct
- type css = pointer
- val sub = _ffi "C_CSS_sub": css * int -> CS.cs;
+ type t = pointer
+
+ val sub = _ffi "C_CSS_sub": t * int -> CS.t;
end
end
- type cstring = C.CS.cs
- type cstringArray = C.CSS.css
+ type cstring = C.CS.t
+ type cstringArray = C.CSS.t
type nullString = string
structure Char =
@@ -557,6 +558,7 @@
val class = _ffi "Real_class": real -> int;
val copySign = _prim "Real_copysign": real * real -> real;
val frexp = _prim "Real_frexp": real * int ref -> real;
+ val gdtoa = _ffi "Real_gdtoa": real * int * int * int ref -> cstring;
val fromInt = _prim "Real_fromInt": int -> real;
val isFinite = _ffi "Real_isFinite": real -> bool;
val isNan = _ffi "Real_isNan": real -> bool;
@@ -569,6 +571,7 @@
val nextAfter = _ffi "Real_nextAfter": real * real -> real;
val round = _prim "Real_round": real -> real;
val signBit = _ffi "Real_signBit": real -> bool;
+ val strtod = _ffi "Real_strtod": nullString -> real;
val toInt = _prim "Real_toInt": real -> int;
val ~ = _prim "Real_neg": real -> real;
end
1.14 +2 -2 mlton/basis-library/posix/primitive.sml
Index: primitive.sml
===================================================================
RCS file: /cvsroot/mlton/mlton/basis-library/posix/primitive.sml,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- primitive.sml 20 May 2003 16:22:53 -0000 1.13
+++ primitive.sml 1 Jun 2003 00:31:29 -0000 1.14
@@ -8,8 +8,8 @@
structure PosixPrimitive =
struct
type nullString = string
- type cstring = Primitive.C.CS.cs
- type cstringArray = Primitive.C.CSS.css
+ type cstring = Primitive.C.CS.t
+ type cstringArray = Primitive.C.CSS.t
type fd = int
type pid = int
1.5 +2 -2 mlton/basis-library/real/IEEE-real.sig
Index: IEEE-real.sig
===================================================================
RCS file: /cvsroot/mlton/mlton/basis-library/real/IEEE-real.sig,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- IEEE-real.sig 24 Nov 2002 01:19:39 -0000 1.4
+++ IEEE-real.sig 1 Jun 2003 00:31:30 -0000 1.5
@@ -21,9 +21,9 @@
val getRoundingMode: unit -> rounding_mode
type decimal_approx = {class: float_class,
- sign: bool,
digits: int list,
- exp: int}
+ exp: int,
+ sign: bool}
val toString: decimal_approx -> string
val scan: (char, 'a) StringCvt.reader
1.6 +230 -13 mlton/basis-library/real/IEEE-real.sml
Index: IEEE-real.sml
===================================================================
RCS file: /cvsroot/mlton/mlton/basis-library/real/IEEE-real.sml,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- IEEE-real.sml 24 Nov 2002 01:19:39 -0000 1.5
+++ IEEE-real.sml 1 Jun 2003 00:31:30 -0000 1.6
@@ -7,15 +7,19 @@
*)
structure IEEEReal: IEEE_REAL =
struct
+ val op + = Int.+
+ val op - = Int.-
+ val op * = Int.*
+
exception Unordered
datatype real_order = LESS | EQUAL | GREATER | UNORDERED
datatype float_class =
- NAN
- | INF
- | ZERO
+ INF
+ | NAN
| NORMAL
| SUBNORMAL
+ | ZERO
datatype rounding_mode =
TO_NEAREST
@@ -42,32 +46,245 @@
val getRoundingMode = intToRounding_mode o Prim.getRoundingMode
type decimal_approx = {class: float_class,
- sign: bool,
digits: int list,
- exp: int}
+ exp: int,
+ sign: bool}
+
+ fun 'a scan reader (state: 'a) =
+ let
+ val state = StringCvt.skipWS reader state
+ fun readc (c, state, f) =
+ case reader state of
+ NONE => NONE
+ | SOME (c', state') =>
+ if c = Char.toLower c'
+ then f state'
+ else NONE
+ fun charToDigit c = Char.ord c - Char.ord #"0"
+ fun digitStar (ds: int list, state) =
+ let
+ fun done () = (rev ds, state)
+ in
+ case reader state of
+ NONE => done ()
+ | SOME (c, state) =>
+ if Char.isDigit c
+ then digitStar (charToDigit c :: ds, state)
+ else done ()
+ end
+ fun digitPlus (state, failure, success) =
+ case reader state of
+ NONE => failure ()
+ | SOME (c, state) =>
+ if Char.isDigit c
+ then success (digitStar ([charToDigit c], state))
+ else failure ()
+ (* The exponent may be too large to represent as an Int.int, in
+ * which case the computation of the exponent from the digits will
+ * overflow. In that case, the right answer is INF.
+ *)
+ exception Inf of 'a
+ fun digitsToInt ds = List.foldl (fn (d, n) => n * 10 + d) 0 ds
+ (* [+~-]?[0-9]+ *)
+ fun afterE (state: 'a, failure, success) =
+ case reader state of
+ NONE => failure ()
+ | SOME (c, state) =>
+ let
+ fun neg () =
+ digitPlus (state, failure,
+ fn (ds, state) =>
+ let
+ val exp =
+ Int.~ (digitsToInt ds)
+ handle Overflow =>
+ raise Inf state
+ in
+ success (exp, state)
+ end)
+ in
+ case c of
+ #"+" => digitPlus (state, failure,
+ fn (ds, state) =>
+ let
+ val exp =
+ digitsToInt ds
+ handle Overflow =>
+ raise Inf state
+ in
+ success (exp, state)
+ end)
+ | #"~" => neg ()
+ | #"-" => neg ()
+ | _ =>
+ if Char.isDigit c
+ then
+ let
+ val (ds, state) =
+ digitStar ([charToDigit c], state)
+ val exp =
+ digitsToInt ds
+ handle Overflow => raise Inf state
+ in
+ success (exp, state)
+ end
+ else failure ()
+ end
+ (* e[+~-]?[0-9]+)? *)
+ fun exp (state: 'a, failure, success) =
+ case reader state of
+ NONE => failure ()
+ | SOME (c, state) =>
+ case Char.toLower c of
+ #"e" => afterE (state, failure, success)
+ | _ => failure ()
+ (* (\.[0-9]+)(e[+~-]?[0-9]+)? *)
+ fun afterDot (state, failure, success) =
+ digitPlus (state, failure,
+ fn (frac, state) =>
+ exp (state,
+ fn () => success (frac, 0, state),
+ fn (e, state) => success (frac, e, state)))
+ fun stripLeadingZeros (ds: int list): int * int list =
+ let
+ fun loop (i, ds) =
+ case ds of
+ [] => (i, [])
+ | d :: ds' =>
+ if d = 0
+ then loop (i + 1, ds')
+ else (i, ds)
+ in
+ loop (0, ds)
+ end
+ fun stripTrailingZeros ds =
+ rev (#2 (stripLeadingZeros (rev ds)))
+ fun done (whole: int list, frac: int list, exp: int, state) =
+ let
+ val (_, il) = stripLeadingZeros whole
+ val fl = stripTrailingZeros frac
+ val da =
+ case il of
+ [] =>
+ (case fl of
+ [] => {class = ZERO,
+ digits = [],
+ exp = 0,
+ sign = false}
+ | _ =>
+ let
+ val (m, fl) = stripLeadingZeros fl
+ in
+ {class = NORMAL,
+ digits = fl,
+ exp = exp - m,
+ sign = false}
+ end)
+ | _ => {class = NORMAL,
+ digits = stripTrailingZeros (il @ fl),
+ exp = exp + length il,
+ sign = false}
+ in
+ SOME (da, state)
+ end
+ fun normal' (c, state) =
+ case Char.toLower c of
+ #"i" => readc (#"n", state, fn state =>
+ readc (#"f", state, fn state =>
+ SOME ({class = INF,
+ digits = [],
+ exp = 0,
+ sign = false},
+ state)))
+ | #"n" => readc (#"a", state, fn state =>
+ readc (#"n", state, fn state =>
+ SOME ({class = NAN,
+ digits = [],
+ exp = 0,
+ sign = false},
+ state)))
+ (* (([0-9]+(\.[0-9]+)?)|(\.[0-9]+))(e[+~-]?[0-9]+)? *)
+ | #"." => afterDot (state,
+ fn () => NONE,
+ fn (frac, exp, state) =>
+ done ([], frac, exp, state))
+ | _ =>
+ if Char.isDigit c
+ then
+ (* ([0-9]+(\.[0-9]+)?)(e[+~-]?[0-9]+)? *)
+ let
+ val (whole, state) =
+ digitStar ([charToDigit c], state)
+ fun no () = done (whole, [], 0, state)
+ in
+ case reader state of
+ NONE => no ()
+ | SOME (c, state) =>
+ case Char.toLower c of
+ #"." =>
+ afterDot (state, no,
+ fn (frac, e, state) =>
+ done (whole, frac, e, state))
+ | #"e" =>
+ afterE (state, no,
+ fn (e, state) =>
+ done (whole, [], e, state))
+ | _ => no ()
+ end
+ else NONE
+ val normal' =
+ fn z =>
+ normal' z
+ handle Inf state => SOME ({class = INF,
+ digits = [],
+ exp = 0,
+ sign = false},
+ state)
+ fun normal state =
+ case reader state of
+ NONE => NONE
+ | SOME z => normal' z
+ fun negate state =
+ case normal state of
+ NONE => NONE
+ | SOME ({class, digits, exp, sign}, state) =>
+ SOME ({class = class,
+ digits = digits,
+ exp = exp,
+ sign = true},
+ state)
+ in
+ case reader state of
+ NONE => NONE
+ | SOME (c, state) =>
+ case c of
+ #"~" => negate state
+ | #"-" => negate state
+ | #"+" => normal state
+ | _ => normal' (c, state)
+ end
+
+ fun fromString s = StringCvt.scanString scan s
fun toString {class, sign, digits, exp}: string =
let
- fun digitStr() = implode(map StringCvt.digitToChar digits)
- fun norm() =
+ fun digitStr () = implode (map StringCvt.digitToChar digits)
+ fun norm () =
let val num = "0." ^ digitStr()
in if exp = 0
then num
- else concat[num, "E", Int.toString exp]
+ else concat [num, "E", Int.toString exp]
end
val num =
case class of
ZERO => "0.0"
- | NORMAL => norm()
- | SUBNORMAL => norm()
+ | NORMAL => norm ()
+ | SUBNORMAL => norm ()
| INF => "inf"
| NAN => "nan"
in if sign
then "~" ^ num
else num
end
-
- val scan = fn _ => raise (Fail "<IEEEReal.scan not implemented>")
- fun fromString s = StringCvt.scanString scan s
end
1.6 +41 -41 mlton/basis-library/real/real.sig
Index: real.sig
===================================================================
RCS file: /cvsroot/mlton/mlton/basis-library/real/real.sig,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- real.sig 24 Nov 2002 01:19:39 -0000 1.5
+++ real.sig 1 Jun 2003 00:31:30 -0000 1.6
@@ -23,61 +23,61 @@
sig
include REAL_GLOBAL
- val radix: int
- val precision: int
- val maxFinite: real
- val minPos: real
- val minNormalPos: real
- val posInf: real
- val negInf: real
- val + : real * real -> real
- val - : real * real -> real
+ val != : real * real -> bool
val * : real * real -> real
- val / : real * real -> real
- val rem: real * real -> real
val *+ : real * real * real -> real
val *- : real * real * real -> real
- val ~ : real -> real
- val abs: real -> real
- val min: real * real -> real
- val max: real * real -> real
- val sign: real -> int
- val signBit: real -> bool
- val sameSign: real * real -> bool
- val copySign: real * real -> real
- val compare: real * real -> order
- val compareReal: real * real -> IEEEReal.real_order
+ val + : real * real -> real
+ val - : real * real -> real
+ val / : real * real -> real
val < : real * real -> bool
val <= : real * real -> bool
+ val == : real * real -> bool
val > : real * real -> bool
val >= : real * real -> bool
- val == : real * real -> bool
- val != : real * real -> bool
val ?= : real * real -> bool
- val unordered: real * real -> bool
- val isFinite: real -> bool
- val isNan: real -> bool
- val isNormal: real -> bool
+ val ~ : real -> real
+ val abs: real -> real
+ val checkFloat: real -> real
val class: real -> IEEEReal.float_class
+ val compare: real * real -> order
+ val compareReal: real * real -> IEEEReal.real_order
+ val copySign: real * real -> real
val fmt: StringCvt.realfmt -> real -> string
- val toString: real -> string
- val scan: (char, 'a) StringCvt.reader -> (real, 'a) StringCvt.reader
- val fromString: string -> real option
- val toManExp: real -> {man: real, exp: int}
+ val fromDecimal: IEEEReal.decimal_approx -> real option
+ val fromInt: int -> real
+ val fromLarge: IEEEReal.rounding_mode -> LargeReal.real -> real
+ val fromLargeInt: LargeInt.int -> real
val fromManExp: {man: real, exp: int} -> real
- val split: real -> {whole: real, frac: real}
- val realMod: real -> real
+ val fromString: string -> real option
+ val isFinite: real -> bool
+ val isNan: real -> bool
+ val isNormal: real -> bool
+ val max: real * real -> real
+ val maxFinite: real
+ val min: real * real -> real
+ val minNormalPos: real
+ val minPos: real
+ val negInf: real
val nextAfter: real * real -> real
- val checkFloat: real -> real
- val realFloor: real -> real
+ val posInf: real
+ val precision: int
+ val radix: int
val realCeil: real -> real
+ val realFloor: real -> real
+ val realMod: real -> real
val realTrunc: real -> real
+ val rem: real * real -> real
+ val sameSign: real * real -> bool
+ val scan: (char, 'a) StringCvt.reader -> (real, 'a) StringCvt.reader
+ val sign: real -> int
+ val signBit: real -> bool
+ val split: real -> {whole: real, frac: real}
+ val toDecimal: real -> IEEEReal.decimal_approx
val toInt: IEEEReal.rounding_mode -> real -> int
- val toLargeInt: IEEEReal.rounding_mode -> real -> LargeInt.int
- val fromInt: int -> real
- val fromLargeInt: LargeInt.int -> real
val toLarge: real -> LargeReal.real
- val fromLarge: IEEEReal.rounding_mode -> LargeReal.real -> real
- val toDecimal: real -> IEEEReal.decimal_approx
- val fromDecimal: IEEEReal.decimal_approx -> real option
+ val toLargeInt: IEEEReal.rounding_mode -> real -> LargeInt.int
+ val toManExp: real -> {man: real, exp: int}
+ val toString: real -> string
+ val unordered: real * real -> bool
end
1.19 +271 -174 mlton/basis-library/real/real.sml
Index: real.sml
===================================================================
RCS file: /cvsroot/mlton/mlton/basis-library/real/real.sml,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- real.sml 26 May 2003 02:10:34 -0000 1.18
+++ real.sml 1 Jun 2003 00:31:30 -0000 1.19
@@ -9,10 +9,45 @@
structure Real64: REAL =
struct
- structure Real = Primitive.Real
- open Real IEEEReal
+ structure Prim = Primitive.Real
+ local
+ open IEEEReal
+ in
+ datatype z = datatype float_class
+ datatype z = datatype rounding_mode
+ end
infix 4 == != ?=
type real = real
+
+ local
+ open Prim
+ in
+ val *+ = *+
+ val *- = *-
+ val abs = abs
+ val copySign = copySign
+ val fromInt = fromInt
+ val isFinite = isFinite
+ val isNan = isNan
+ val isNormal = isNormal
+ val maxFinite = maxFinite
+ val minNormalPos = minNormalPos
+ val minPos = minPos
+ val nextAfter = nextAfter
+ val op * = op *
+ val op + = op +
+ val op - = op -
+ val op / = op /
+ val op / = op /
+ val op < = op <
+ val op <= = op <=
+ val op == = op ==
+ val op > = op >
+ val op >= = op >=
+ val op ?= = op ?=
+ val signBit = signBit
+ val ~ = ~
+ end
val radix: int = 2
@@ -25,7 +60,7 @@
structure Math =
struct
- open Math
+ open Prim.Math
structure MLton = Primitive.MLton
structure Platform = MLton.Platform
@@ -67,25 +102,25 @@
else if x < 0.0 then ~1
else 0
- fun sameSign (x, y) = signBit x = signBit y
+ fun sameSign (x, y) = Prim.signBit x = Prim.signBit y
fun compare (x, y) =
- if x<y then General.LESS
- else if x>y then General.GREATER
- else if x == y then General.EQUAL
- else raise Unordered
+ if x < y then General.LESS
+ else if x > y then General.GREATER
+ else if x == y then General.EQUAL
+ else raise IEEEReal.Unordered
fun compareReal (x, y) =
- if x < y then LESS
- else if x > y then GREATER
- else if x == y then EQUAL
- else UNORDERED
+ if x < y then IEEEReal.LESS
+ else if x > y then IEEEReal.GREATER
+ else if x == y then IEEEReal.EQUAL
+ else IEEEReal.UNORDERED
fun unordered (x, y) = isNan x orelse isNan y
(* See runtime/basis/Real.c for the integers returned by class. *)
fun class x =
- case Real.class x of
+ case Prim.class x of
0 => NAN (* QUIET *)
| 1 => NAN (* SIGNALLING *)
| 2 => INF
@@ -102,20 +137,20 @@
then {exp = 0, man = 0.0}
else
let
- val man = frexp (x, r)
+ val man = Prim.frexp (x, r)
in
{man = man * 2.0, exp = Int.- (!r, 1)}
end
end
- fun fromManExp {man, exp} = ldexp (man, exp)
+ fun fromManExp {man, exp} = Prim.ldexp (man, exp)
local
val int = ref 0.0
in
fun split x =
let
- val frac = modf (x, int)
+ val frac = Prim.modf (x, int)
in
{frac = frac,
whole = ! int}
@@ -133,10 +168,10 @@
fun withRoundingMode (m, th) =
let
- val m' = getRoundingMode ()
- val _ = setRoundingMode m
+ val m' = IEEEReal.getRoundingMode ()
+ val _ = IEEEReal.setRoundingMode m
val res = th ()
- val _ = setRoundingMode m'
+ val _ = IEEEReal.setRoundingMode m'
in
res
end
@@ -147,7 +182,7 @@
fun toInt mode x =
let
fun doit () = withRoundingMode (mode, fn () =>
- Real.toInt (Real.round x))
+ Prim.toInt (Prim.round x))
in
case class x of
NAN => raise Domain
@@ -195,29 +230,192 @@
case class x of
NAN => x
| INF => x
- | _ => withRoundingMode (mode, fn () => Real.round x)
+ | _ => withRoundingMode (mode, fn () => Prim.round x)
in
val realFloor = round TO_NEGINF
val realCeil = round TO_POSINF
val realTrunc = round TO_ZERO
end
+ (* fromDecimal, scan, fromString: decimal -> binary conversions *)
+ exception Bad
+ fun fromDecimal ({class, digits, exp, sign}: IEEEReal.decimal_approx) =
+ let
+ fun doit () =
+ let
+ val exp =
+ if Int.< (exp, 0)
+ then concat ["-", Int.toString (Int.~ exp)]
+ else Int.toString exp
+ val x =
+ concat ["0.",
+ implode (List.map
+ (fn d =>
+ if Int.< (d, 0) orelse Int.> (d, 9)
+ then raise Bad
+ else Char.chr (Int.+ (d, Char.ord #"0")))
+ digits),
+ "E", exp, "\000"]
+ val x = Prim.strtod x
+ in
+ if sign
+ then ~ x
+ else x
+ end
+ in
+ SOME (case class of
+ INF => if sign then negInf else posInf
+ | NAN => nan
+ | NORMAL => doit ()
+ | SUBNORMAL => doit ()
+ | ZERO => 0.0)
+ handle Bad => NONE
+ end
+
+ fun scan reader state =
+ case IEEEReal.scan reader state of
+ NONE => NONE
+ | SOME (da, state) => SOME (valOf (fromDecimal da), state)
+
+ val fromString = StringCvt.scanString scan
+
+ (* toDecimal, fmt, toString: binary -> decimal conversions. *)
+ datatype mode = Fix | Gen | Sci
+ local
+ val decpt: int ref = ref 0
+ in
+ fun gdtoa (x: real, mode: mode, ndig: int) =
+ let
+ val mode =
+ case mode of
+ Fix => 3
+ | Gen => 0
+ | Sci => 2
+ val cs = Prim.gdtoa (x, mode, ndig, decpt)
+ in
+ (cs, !decpt)
+ end
+ end
+
+ fun toDecimal (x: real): IEEEReal.decimal_approx =
+ case class x of
+ NAN => {class = NAN,
+ digits = [],
+ exp = 0,
+ sign = false}
+ | INF => {class = INF,
+ digits = [],
+ exp = 0,
+ sign = x < 0.0}
+ | ZERO => {class = ZERO,
+ digits = [],
+ exp = 0,
+ sign = false}
+ | c =>
+ let
+ val (cs, decpt) = gdtoa (x, Gen, 0)
+ fun loop (i, ac) =
+ if Int.< (i, 0)
+ then ac
+ else loop (Int.- (i, 1),
+ (Int.- (Char.ord (C.CS.sub (cs, i)),
+ Char.ord #"0"))
+ :: ac)
+ val digits = loop (Int.- (C.CS.length cs, 1), [])
+ val exp = decpt
+ in
+ {class = NORMAL,
+ digits = digits,
+ exp = exp,
+ sign = x < 0.0}
+ end
+
datatype realfmt = datatype StringCvt.realfmt
+ fun add1 n = Int.+ (n, 1)
+
local
- fun makeBuffer n = Primitive.Array.array n
- (* Large enough for most cases *)
- val normalSize: int = 500
- val buffer = makeBuffer normalSize
- val sciExtra: int = 10
- val fixExtra: int = 400
- val genExtra: int = 10
+ fun fix (sign: string, cs: C.CS.t, decpt: int, ndig: int): string =
+ let
+ val length = C.CS.length cs
+ in
+ if Int.< (decpt, 0)
+ then
+ concat [sign,
+ "0.",
+ String.new (Int.~ decpt, #"0"),
+ C.CS.toString cs,
+ String.new (Int.+ (Int.- (ndig, length),
+ decpt),
+ #"0")]
+ else
+ let
+ val whole =
+ if decpt = 0
+ then "0"
+ else
+ String.tabulate (decpt, fn i =>
+ if Int.< (i, length)
+ then C.CS.sub (cs, i)
+ else #"0")
+ in
+ if 0 = ndig
+ then concat [sign, whole]
+ else
+ let
+ val frac =
+ String.tabulate
+ (ndig, fn i =>
+ let
+ val j = Int.+ (i, decpt)
+ in
+ if Int.< (j, length)
+ then C.CS.sub (cs, j)
+ else #"0"
+ end)
+ in
+ concat [sign, whole, ".", frac]
+ end
+ end
+ end
+ fun sci (sign: string, cs: C.CS.t, decpt: int, ndig: int): string =
+ let
+ val length = C.CS.length cs
+ val whole = String.tabulate (1, fn _ => C.CS.sub (cs, 0))
+ val frac =
+ if 0 = ndig
+ then ""
+ else concat [".",
+ String.tabulate
+ (ndig, fn i =>
+ let
+ val j = Int.+ (i, 1)
+ in
+ if Int.< (j, length)
+ then C.CS.sub (cs, j)
+ else #"0"
+ end)]
+ val exp = Int.- (decpt, 1)
+ val exp =
+ let
+ val (exp, sign) =
+ if Int.< (exp, 0)
+ then (Int.~ exp, "~")
+ else (exp, "")
+ in
+ concat [sign, Int.toString exp]
+ end
+ in
+ concat [sign, whole, frac, "E", exp]
+ end
+
in
fun fmt spec =
let
- val (formatString, bufSize) =
+ val doit =
case spec of
- SCI opt =>
+ EXACT => IEEEReal.toString o toDecimal
+ | FIX opt =>
let
val n =
case opt of
@@ -226,166 +424,69 @@
if Primitive.safe andalso Int.< (n, 0)
then raise Size
else n
- in (concat ["%.", Int.toString n, "e"],
- Int.+ (n, sciExtra))
+ in
+ fn x =>
+ let
+ val sign = if x < 0.0 then "~" else ""
+ val (cs, decpt) = gdtoa (x, Fix, n)
+ in
+ fix (sign, cs, decpt, n)
+ end
end
- | FIX opt =>
+ | GEN opt =>
let
val n =
case opt of
- NONE => 6
+ NONE => 12
| SOME n =>
- if Primitive.safe andalso Int.< (n, 0)
+ if Primitive.safe andalso Int.< (n, 1)
then raise Size
else n
- in (concat ["%.", Int.toString n, "f"],
- Int.+ (n, fixExtra))
+ in
+ fn x =>
+ let
+ val sign = if x < 0.0 then "~" else ""
+ val (cs, decpt) = gdtoa (x, Sci, n)
+ val length = C.CS.length cs
+ in
+ if Int.<= (decpt, ~4)
+ orelse Int.> (decpt, Int.+ (5, length))
+ then sci (sign, cs, decpt, Int.- (length, 1))
+ else fix (sign, cs, decpt,
+ if Int.< (length, decpt)
+ then 0
+ else Int.- (length, decpt))
+ end
end
- | GEN opt =>
+ | SCI opt =>
let
val n =
case opt of
- NONE => 12
+ NONE => 6
| SOME n =>
- if Primitive.safe andalso Int.< (n, 1)
+ if Primitive.safe andalso Int.< (n, 0)
then raise Size
else n
- in (concat ["%.", Int.toString n, "g"],
- Int.+ (n, genExtra))
+ in
+ fn x =>
+ let
+ val sign = if x < 0.0 then "~" else ""
+ val (cs, decpt) = gdtoa (x, Sci, add1 n)
+ in
+ sci (sign, cs, decpt, n)
+ end
end
- | EXACT => raise Fail "Real.fmt EXACT unimplemented"
- in fn x =>
+ in
+ fn x =>
case class x of
NAN => "nan"
| INF => if x > 0.0 then "inf" else "~inf"
- | ZERO => "0.0"
- | _ =>
- let
- val buffer =
- if Int.> (bufSize, normalSize)
- then makeBuffer bufSize
- else buffer
- val len =
- Primitive.Stdio.sprintf
- (buffer, String.nullTerm formatString, x)
- val res =
- String.translate
- (fn #"-" => "~" | c => str c)
- (Array.extract (buffer, 0, SOME len))
- in res
- end
+ | _ => doit x
end
end
val toString = fmt (StringCvt.GEN NONE)
- (* Copied from MLKitV3 basislib/real.sml *)
- val real = fromInt
- fun scan getc source =
- let fun decval c = Int.- (Char.ord c, 48)
- fun pow10 0 = 1.0
- | pow10 n =
- if Int.mod (n, 2) = 0 then
- let val x = pow10 (Int.div (n, 2)) in x * x end
- else 10.0 * pow10 (Int.- (n, 1))
- fun pointsym src =
- case getc src of
- NONE => (false, src)
- | SOME (c, rest) => if c = #"." then (true, rest)
- else (false, src)
- fun esym src =
- case getc src of
- NONE => (false, src)
- | SOME (c, rest) =>
- if c = #"e" orelse c = #"E" then
- (true, rest)
- else (false, src)
- fun scandigs first next final source =
- let fun digs state src =
- case getc src of
- NONE => (SOME (final state), src)
- | SOME (c, rest) =>
- if Char.isDigit c then
- digs (next (state, decval c)) rest
- else
- (SOME (final state), src)
- in
- case getc source of
- NONE => (NONE, source)
- | SOME (c, rest) =>
- if Char.isDigit c then digs (first (decval c)) rest
- else (NONE, source)
- end
-
- fun ident x = x
- val getint =
- scandigs real (fn (res, cval) => 10.0 * res + real cval) ident
- val getfrac =
- scandigs (fn cval => (1, real cval))
- (fn ((decs, frac), cval) => (Int.+ (decs, 1), 10.0*frac+real cval))
- (fn (decs, frac) => frac / pow10 decs)
- val getexp =
- scandigs ident (fn (res, cval) => Int.+ (Int.* (10, res), cval)) ident
-
- fun sign src =
- case getc src of
- SOME (#"+", rest) => (true, rest)
- | SOME (#"-", rest) => (false, rest)
- | SOME (#"~", rest) => (false, rest)
- | _ => (true, src )
-
- fun sym src =
- case getc src of
- SOME (#"i", restA) =>
- (case Reader.reader2 getc restA of
- SOME ((#"n", #"f"), restB) =>
- SOME (posInf,
- case Reader.readerN (getc, 5) restB of
- SOME ([#"i", #"n", #"i", #"t", #"y"], restC) => restC
- | _ => restB)
- | _ => NONE)
- | SOME (#"n", restA) =>
- (case Reader.reader2 getc restA of
- SOME ((#"a", #"n"), restB) =>
- SOME (nan, restB)
- | _ => NONE)
- | _ => NONE
-
- val src = StringCvt.dropl Char.isSpace getc source
- val (manpos, src1) = sign src
- val (intg, src2) = getint src1
- val (decpt, src3) = pointsym src2
- val (frac, src4) = getfrac src3
-
- fun mkres v rest =
- SOME (if manpos then v else ~v, rest)
-
- fun expopt manval src =
- let val (esym, src1) = esym src
- val (exppos, src2) = sign src1
- val (expv, rest) = getexp src2
- in
- case (esym, expv) of
- (_, NONE) => mkres manval src
- | (true, SOME exp) =>
- if exppos then mkres (manval * pow10 exp) rest
- else mkres (manval / pow10 exp) rest
- | _ => NONE
- end
- in
- case (intg, decpt, frac) of
- (NONE, true, SOME fval) => expopt fval src4
- | (SOME ival, false, SOME _ ) => NONE
- | (SOME ival, true, NONE ) => mkres ival src2
- | (SOME ival, false, NONE ) => expopt ival src2
- | (SOME ival, _ , SOME fval) => expopt (ival+fval) src4
- | _ => (case sym src1 of
- SOME (v, rest) => mkres v rest
- | NONE => NONE)
- end
-
- fun fromString s = StringCvt.scanString scan s
-
local
fun negateMode m =
case m of
@@ -448,7 +549,7 @@
conv (q, Int.+ (half, shift))
+ conv (IntInf.+ (r, extra), shift)
end
- val mode = getRoundingMode ()
+ val mode = IEEEReal.getRoundingMode ()
in
case IntInf.compare (i, IntInf.fromInt 0) of
General.LESS => ~ (pos (IntInf.~ i, negateMode mode))
@@ -469,9 +570,9 @@
val {frac, whole} = split x
val extra =
if mode = TO_NEAREST
- andalso Real.== (frac, 0.5)
+ andalso 0.5 == frac
then
- if Real.== (0.5, realMod (whole / 2.0))
+ if 0.5 == realMod (whole / 2.0)
then 1
else 0
else IntInf.fromInt (toInt mode frac)
@@ -504,10 +605,6 @@
else IntInf.~ (pos (~ x, negateMode mode))
end)
end
-
- val toDecimal = fn _ => raise (Fail "<Real.toDecimal not implemented>")
- val fromDecimal = fn _ => raise (Fail "<Real.fromDecimal not implemented>")
- val nextAfter = Real.nextAfter
end
structure Real = Real64
1.38 +8 -0 mlton/doc/changelog
Index: changelog
===================================================================
RCS file: /cvsroot/mlton/mlton/doc/changelog,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -r1.37 -r1.38
--- changelog 26 May 2003 02:10:34 -0000 1.37
+++ changelog 1 Jun 2003 00:31:31 -0000 1.38
@@ -1,5 +1,13 @@
Here are the changes since version 20030312.
+At this point, the only missing basis library function is "use".
+
+* 2003-05-31
+ - Fixed Real.{fmt,fromString,scan,toString} to match the basis
+ library spec.
+ - Added IEEEReal.{fromString,scan}.
+ - Added Real.{from,to}Decimal.
+
* 2003-05-25
- Added Real.nextAfter.
- Added OS.Path.{from,to}UnixPath, which are the identity function
1.2 +3 -1 mlton/doc/license/README
Index: README
===================================================================
RCS file: /cvsroot/mlton/mlton/doc/license/README,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- README 20 Jul 2001 17:01:38 -0000 1.1
+++ README 1 Jun 2003 00:31:31 -0000 1.2
@@ -11,5 +11,7 @@
ML Kit MLKit-LICENSE basis library: Real, Path, Time, Date
(GPL)
-gmp doc/gmp-LICENSE IntInf
+gdtoa gdtoa-LICENSE Real.{fmt,toDecimal,toString}
+
+gmp gmp-LICENSE IntInf
(LGPL)
1.1 mlton/doc/license/gdtoa-LICENSE
Index: gdtoa-LICENSE
===================================================================
/****************************************************************
The author of this software is David M. Gay.
Copyright (C) 1998 by Lucent Technologies
All Rights Reserved
Permission to use, copy, modify, and distribute this software and
its documentation for any purpose and without fee is hereby
granted, provided that the above copyright notice appear in all
copies and that both that the copyright notice and this
permission notice and warranty disclaimer appear in supporting
documentation, and that the name of Lucent or any of its entities
not be used in advertising or publicity pertaining to
distribution of the software without specific, written prior
permission.
LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
THIS SOFTWARE.
****************************************************************/
1.18 +0 -3 mlton/doc/user-guide/basis.tex
Index: basis.tex
===================================================================
RCS file: /cvsroot/mlton/mlton/doc/user-guide/basis.tex,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- basis.tex 26 May 2003 01:38:24 -0000 1.17
+++ basis.tex 1 Jun 2003 00:31:31 -0000 1.18
@@ -91,9 +91,6 @@
\fullmodule{Position}{INTEGER}
\fullmodule{Posix}{POSIX}
\module{Real}{REAL}
- {Missing: {\tt nextAfter}, {\tt toDecimal}, {\tt fromDecimal}.}
-\extra{Do not match spec: {\tt scan}, {\tt fmt}, {\tt toString}, {\tt
- fromString}.}
\fullmodule{RealArray}{MONO\_ARRAY}
\fullmodule{RealArraySlice}{MONO\_ARRAY\_SLICE}
\fullmodule{RealVector}{MONO\_VECTOR}
1.25 +8 -2 mlton/doc/user-guide/credits.tex
Index: credits.tex
===================================================================
RCS file: /cvsroot/mlton/mlton/doc/user-guide/credits.tex,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- credits.tex 21 May 2003 01:04:15 -0000 1.24
+++ credits.tex 1 Jun 2003 00:31:31 -0000 1.25
@@ -102,6 +102,13 @@
{\mlton} uses the {\smlnj} library implementation of splay trees.
\item
+The {\mlton} basis library implementation of {\tt Real.fmt},
+{\tt Real.toDecimal}, and {\tt Real.toString} uses David Gay's
+\htmladdnormallink{gdtoa}
+ {http://www.netlib.org/fp/}
+library.
+
+\item
The {\mlton} basis library implementation uses modified versions of
portions of the the {\smlnj} basis library modules {\tt Real}, {\tt
IO}, {\tt Unix}, {\tt Process}, and {\tt Option}.
@@ -111,8 +118,7 @@
portions of the
\htmladdnormallink{ML Kit Version 3}
{http://www.it.edu/research/mlkit/kit3/readme.html}
-basis library modules {\tt Real}, {\tt Path}, {\tt Time}, and
-{\tt Date}.
+basis library modules {\tt Path}, {\tt Time}, and {\tt Date}.
\item
Many of the benchmarks come from the {\smlnj} benchmark suite.
1.136 +2 -1 mlton/mlton/main/main.sml
Index: main.sml
===================================================================
RCS file: /cvsroot/mlton/mlton/mlton/main/main.sml,v
retrieving revision 1.135
retrieving revision 1.136
diff -u -r1.135 -r1.136
--- main.sml 13 May 2003 23:50:02 -0000 1.135
+++ main.sml 1 Jun 2003 00:31:31 -0000 1.136
@@ -456,11 +456,12 @@
"-mcpu=ultrasparc",
(* Emit exit code inline at every function exit. *)
"-mno-epilogue"]
- val sparcLinkLibs = ["dl", "m", "nsl", "socket"]
+ val sparcLinkLibs = ["dl", "nsl", "socket"]
val (cFlags, defaultLibs) =
case !hostArch of
X86 => (x86CFlags, x86LinkLibs)
| Sparc => (sparcCFlags, sparcLinkLibs)
+ val defaultLibs = ["gdtoa", "m"]
val ccOpts =
List.fold
(!ccOpts, cFlags, fn (ccOpt, ac) =>
1.3 +309 -309 mlton/regression/real.fromLargeInt.ok
Index: real.fromLargeInt.ok
===================================================================
RCS file: /cvsroot/mlton/mlton/regression/real.fromLargeInt.ok,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- real.fromLargeInt.ok 2 Nov 2002 03:37:41 -0000 1.2
+++ real.fromLargeInt.ok 1 Jun 2003 00:31:32 -0000 1.3
@@ -1,310 +1,310 @@
-1 = 1.0000000000e+00
-10 = 1.0000000000e+01
-100 = 1.0000000000e+02
-1000 = 1.0000000000e+03
-10000 = 1.0000000000e+04
-100000 = 1.0000000000e+05
-1000000 = 1.0000000000e+06
-10000000 = 1.0000000000e+07
-100000000 = 1.0000000000e+08
-1000000000 = 1.0000000000e+09
-10000000000 = 1.0000000000e+10
-100000000000 = 1.0000000000e+11
-1000000000000 = 1.0000000000e+12
-10000000000000 = 1.0000000000e+13
-100000000000000 = 1.0000000000e+14
-1000000000000000 = 1.0000000000e+15
-10000000000000000 = 1.0000000000e+16
-100000000000000000 = 1.0000000000e+17
-1000000000000000000 = 1.0000000000e+18
-10000000000000000000 = 1.0000000000e+19
-100000000000000000000 = 1.0000000000e+20
-1000000000000000000000 = 1.0000000000e+21
-10000000000000000000000 = 1.0000000000e+22
-100000000000000000000000 = 1.0000000000e+23
-1000000000000000000000000 = 1.0000000000e+24
-10000000000000000000000000 = 1.0000000000e+25
-100000000000000000000000000 = 1.0000000000e+26
-1000000000000000000000000000 = 1.0000000000e+27
-10000000000000000000000000000 = 1.0000000000e+28
-100000000000000000000000000000 = 1.0000000000e+29
-1000000000000000000000000000000 = 1.0000000000e+30
-10000000000000000000000000000000 = 1.0000000000e+31
-100000000000000000000000000000000 = 1.0000000000e+32
-1000000000000000000000000000000000 = 1.0000000000e+33
-10000000000000000000000000000000000 = 1.0000000000e+34
-100000000000000000000000000000000000 = 1.0000000000e+35
-1000000000000000000000000000000000000 = 1.0000000000e+36
-10000000000000000000000000000000000000 = 1.0000000000e+37
-100000000000000000000000000000000000000 = 1.0000000000e+38
-1000000000000000000000000000000000000000 = 1.0000000000e+39
-10000000000000000000000000000000000000000 = 1.0000000000e+40
-100000000000000000000000000000000000000000 = 1.0000000000e+41
-1000000000000000000000000000000000000000000 = 1.0000000000e+42
-10000000000000000000000000000000000000000000 = 1.0000000000e+43
-100000000000000000000000000000000000000000000 = 1.0000000000e+44
-1000000000000000000000000000000000000000000000 = 1.0000000000e+45
-10000000000000000000000000000000000000000000000 = 1.0000000000e+46
-100000000000000000000000000000000000000000000000 = 1.0000000000e+47
-1000000000000000000000000000000000000000000000000 = 1.0000000000e+48
-10000000000000000000000000000000000000000000000000 = 1.0000000000e+49
-100000000000000000000000000000000000000000000000000 = 1.0000000000e+50
-1000000000000000000000000000000000000000000000000000 = 1.0000000000e+51
-10000000000000000000000000000000000000000000000000000 = 1.0000000000e+52
-100000000000000000000000000000000000000000000000000000 = 1.0000000000e+53
-1000000000000000000000000000000000000000000000000000000 = 1.0000000000e+54
-10000000000000000000000000000000000000000000000000000000 = 1.0000000000e+55
-100000000000000000000000000000000000000000000000000000000 = 1.0000000000e+56
-1000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+57
-10000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+58
-100000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+59
-1000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+60
-10000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+61
-100000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+62
-1000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+63
-10000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+64
-100000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+65
-1000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+66
-10000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+67
-100000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+68
-1000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+69
-10000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+70
-100000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+71
-1000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+72
-10000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+73
-100000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+74
-1000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+75
-10000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+76
-100000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+77
-1000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+78
-10000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+79
-100000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+80
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+81
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+82
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+83
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+84
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+85
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+86
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+87
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+88
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+89
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+90
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+91
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+92
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+93
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+94
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+95
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+96
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+97
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+98
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+99
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+100
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+101
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+102
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+103
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+104
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+105
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+106
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+107
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+108
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+109
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+110
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+111
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+112
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+113
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+114
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+115
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+116
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+117
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+118
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+119
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+120
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+121
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+122
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+123
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+124
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+125
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+126
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+127
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+128
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+129
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+130
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+131
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+132
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+133
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+134
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+135
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+136
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+137
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+138
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+139
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+140
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+141
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+142
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+143
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+144
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+145
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+146
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+147
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+148
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+149
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+150
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+151
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+152
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+153
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+154
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+155
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+156
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+157
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+158
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+159
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+160
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+161
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+162
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+163
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+164
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+165
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+166
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+167
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+168
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+169
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+170
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+171
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+172
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+173
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+174
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+175
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+176
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+177
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+178
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+179
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+180
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+181
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+182
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+183
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+184
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+185
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+186
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+187
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+188
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+189
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+190
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+191
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+192
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+193
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+194
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+195
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+196
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+197
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+198
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+199
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+200
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+201
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+202
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+203
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+204
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+205
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+206
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+207
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+208
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+209
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+210
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+211
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+212
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+213
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+214
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+215
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+216
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+217
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+218
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+219
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+220
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+221
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+222
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+223
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+224
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+225
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+226
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+227
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+228
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+229
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+230
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+231
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+232
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+233
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+234
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+235
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+236
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+237
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+238
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+239
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+240
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+241
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+242
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+243
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+244
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+245
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+246
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+247
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+248
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+249
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+250
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+251
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+252
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+253
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+254
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+255
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+256
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+257
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+258
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+259
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+260
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+261
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+262
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+263
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+264
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+265
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+266
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+267
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+268
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+269
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+270
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+271
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+272
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+273
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+274
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+275
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+276
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+277
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+278
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+279
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+280
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+281
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+282
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+283
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+284
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+285
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+286
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+287
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+288
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+289
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+290
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+291
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+292
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+293
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+294
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+295
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+296
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+297
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+298
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+299
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+300
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+301
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+302
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+303
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+304
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+305
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+306
-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+307
-100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000e+308
+1 = 1.0000000000E0
+10 = 1.0000000000E1
+100 = 1.0000000000E2
+1000 = 1.0000000000E3
+10000 = 1.0000000000E4
+100000 = 1.0000000000E5
+1000000 = 1.0000000000E6
+10000000 = 1.0000000000E7
+100000000 = 1.0000000000E8
+1000000000 = 1.0000000000E9
+10000000000 = 1.0000000000E10
+100000000000 = 1.0000000000E11
+1000000000000 = 1.0000000000E12
+10000000000000 = 1.0000000000E13
+100000000000000 = 1.0000000000E14
+1000000000000000 = 1.0000000000E15
+10000000000000000 = 1.0000000000E16
+100000000000000000 = 1.0000000000E17
+1000000000000000000 = 1.0000000000E18
+10000000000000000000 = 1.0000000000E19
+100000000000000000000 = 1.0000000000E20
+1000000000000000000000 = 1.0000000000E21
+10000000000000000000000 = 1.0000000000E22
+100000000000000000000000 = 1.0000000000E23
+1000000000000000000000000 = 1.0000000000E24
+10000000000000000000000000 = 1.0000000000E25
+100000000000000000000000000 = 1.0000000000E26
+1000000000000000000000000000 = 1.0000000000E27
+10000000000000000000000000000 = 1.0000000000E28
+100000000000000000000000000000 = 1.0000000000E29
+1000000000000000000000000000000 = 1.0000000000E30
+10000000000000000000000000000000 = 1.0000000000E31
+100000000000000000000000000000000 = 1.0000000000E32
+1000000000000000000000000000000000 = 1.0000000000E33
+10000000000000000000000000000000000 = 1.0000000000E34
+100000000000000000000000000000000000 = 1.0000000000E35
+1000000000000000000000000000000000000 = 1.0000000000E36
+10000000000000000000000000000000000000 = 1.0000000000E37
+100000000000000000000000000000000000000 = 1.0000000000E38
+1000000000000000000000000000000000000000 = 1.0000000000E39
+10000000000000000000000000000000000000000 = 1.0000000000E40
+100000000000000000000000000000000000000000 = 1.0000000000E41
+1000000000000000000000000000000000000000000 = 1.0000000000E42
+10000000000000000000000000000000000000000000 = 1.0000000000E43
+100000000000000000000000000000000000000000000 = 1.0000000000E44
+1000000000000000000000000000000000000000000000 = 1.0000000000E45
+10000000000000000000000000000000000000000000000 = 1.0000000000E46
+100000000000000000000000000000000000000000000000 = 1.0000000000E47
+1000000000000000000000000000000000000000000000000 = 1.0000000000E48
+10000000000000000000000000000000000000000000000000 = 1.0000000000E49
+100000000000000000000000000000000000000000000000000 = 1.0000000000E50
+1000000000000000000000000000000000000000000000000000 = 1.0000000000E51
+10000000000000000000000000000000000000000000000000000 = 1.0000000000E52
+100000000000000000000000000000000000000000000000000000 = 1.0000000000E53
+1000000000000000000000000000000000000000000000000000000 = 1.0000000000E54
+10000000000000000000000000000000000000000000000000000000 = 1.0000000000E55
+100000000000000000000000000000000000000000000000000000000 = 1.0000000000E56
+1000000000000000000000000000000000000000000000000000000000 = 1.0000000000E57
+10000000000000000000000000000000000000000000000000000000000 = 1.0000000000E58
+100000000000000000000000000000000000000000000000000000000000 = 1.0000000000E59
+1000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E60
+10000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E61
+100000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E62
+1000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E63
+10000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E64
+100000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E65
+1000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E66
+10000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E67
+100000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E68
+1000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E69
+10000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E70
+100000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E71
+1000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E72
+10000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E73
+100000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E74
+1000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E75
+10000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E76
+100000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E77
+1000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E78
+10000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E79
+100000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E80
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E81
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E82
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E83
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E84
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E85
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E86
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E87
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E88
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E89
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E90
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E91
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E92
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E93
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E94
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E95
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E96
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E97
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E98
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E99
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E100
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E101
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E102
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E103
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E104
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E105
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E106
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E107
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E108
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E109
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E110
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E111
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E112
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E113
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E114
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E115
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E116
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E117
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E118
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E119
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E120
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E121
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E122
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E123
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E124
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E125
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E126
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E127
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E128
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E129
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E130
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E131
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E132
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E133
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E134
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E135
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E136
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E137
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E138
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E139
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E140
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E141
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E142
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E143
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E144
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E145
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E146
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E147
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E148
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E149
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E150
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E151
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E152
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E153
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E154
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E155
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E156
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E157
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E158
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E159
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E160
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E161
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E162
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E163
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E164
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E165
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E166
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E167
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E168
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E169
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E170
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E171
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E172
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E173
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E174
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E175
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E176
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E177
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E178
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E179
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E180
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E181
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E182
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E183
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E184
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E185
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E186
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E187
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E188
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E189
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E190
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E191
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E192
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E193
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E194
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E195
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E196
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E197
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E198
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E199
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E200
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E201
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E202
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E203
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E204
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E205
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E206
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E207
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E208
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E209
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E210
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E211
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E212
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E213
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E214
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E215
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E216
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E217
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E218
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E219
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E220
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E221
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E222
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E223
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E224
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E225
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E226
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E227
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E228
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E229
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E230
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E231
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E232
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E233
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E234
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E235
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E236
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E237
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E238
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E239
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E240
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E241
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E242
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E243
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E244
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E245
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E246
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E247
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E248
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E249
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E250
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E251
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E252
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E253
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E254
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E255
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E256
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E257
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E258
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E259
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E260
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E261
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E262
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E263
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E264
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E265
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E266
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E267
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E268
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E269
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E270
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E271
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E272
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E273
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E274
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E275
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E276
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E277
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E278
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E279
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E280
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E281
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E282
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E283
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E284
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E285
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E286
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E287
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E288
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E289
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E290
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E291
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E292
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E293
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E294
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E295
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E296
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E297
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E298
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E299
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E300
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E301
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E302
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E303
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E304
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E305
+1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E306
+10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E307
+100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = 1.0000000000E308
1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 = inf
1.2 +1 -1 mlton/regression/real.maxFinite.ok
Index: real.maxFinite.ok
===================================================================
RCS file: /cvsroot/mlton/mlton/regression/real.maxFinite.ok,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- real.maxFinite.ok 2 Oct 2001 01:55:35 -0000 1.1
+++ real.maxFinite.ok 1 Jun 2003 00:31:32 -0000 1.2
@@ -1 +1 @@
-1.79769313486e+308
+1.79769313486E308
1.2 +16 -18 mlton/regression/real.sml
Index: real.sml
===================================================================
RCS file: /cvsroot/mlton/mlton/regression/real.sml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- real.sml 18 Jul 2001 05:51:07 -0000 1.1
+++ real.sml 1 Jun 2003 00:31:32 -0000 1.2
@@ -319,15 +319,14 @@
val test12c =
tst' "test12c" (fn _ =>
List.all chkSCI'
- [(0.0, "0E00", "0.0E00", "0.00E00", "0.000000E00"),
- (0.0012345678, "1E~03", "1.2E~03", "1.23E~03", "1.234568E~03"),
- (1.0, "1E00", "1.0E00", "1.00E00", "1.000000E00"),
- (1.4, "1E00", "1.4E00", "1.40E00", "1.400000E00"),
- (1.5, "2E00", "1.5E00", "1.50E00", "1.500000E00"),
-(* dubious (2.5, "2E00", "2.5E00", "2.50E00", "2.500000E00"), *)
- (1.6, "2E00", "1.6E00", "1.60E00", "1.600000E00"),
- (1.45, "1E00", "1.4E00", "1.45E00", "1.450000E00"),
- (3.141592653589, "3E00", "3.1E00", "3.14E00", "3.141593E00"),
+ [(0.0, "0E0", "0.0E0", "0.00E0", "0.000000E0"),
+ (0.0012345678, "1E~3", "1.2E~3", "1.23E~3", "1.234568E~3"),
+ (1.0, "1E0", "1.0E0", "1.00E0", "1.000000E0"),
+ (1.4, "1E0", "1.4E0", "1.40E0", "1.400000E0"),
+ (1.5, "2E0", "1.5E0", "1.50E0", "1.500000E0"),
+ (1.6, "2E0", "1.6E0", "1.60E0", "1.600000E0"),
+ (1.45, "1E0", "1.4E0", "1.45E0", "1.450000E0"),
+ (3.141592653589, "3E0", "3.1E0", "3.14E0", "3.141593E0"),
(91827364509182.0, "9E13", "9.2E13", "9.18E13", "9.182736E13")]);
val test13a =
@@ -356,18 +355,17 @@
val test13c =
tst' "test13c" (fn _ =>
List.all chkGEN'
- [(0.0, "0.0", "0.0", "0.0", "0.0"),
+ [(0.0, "0", "0", "0", "0"),
(0.0012345678, "0.001", "0.0012", "0.00123457",
"0.0012345678"),
- (1.0, "1.0", "1.0", "1.0", "1.0"),
- (1.4, "1.0", "1.4", "1.4", "1.4"),
- (1.5, "2.0", "1.5", "1.5", "1.5"),
-(* dubious (2.5, "2.0", "2.5", "2.5", "2.5"), *)
- (1.6, "2.0", "1.6", "1.6", "1.6"),
- (1.45, "1.0", "1.4", "1.45", "1.45"),
- (3.141592653589, "3.0", "3.1", "3.14159", "3.14159265359"),
+ (1.0, "1", "1", "1", "1"),
+ (1.4, "1", "1.4", "1.4", "1.4"),
+ (1.5, "2", "1.5", "1.5", "1.5"),
+ (1.6, "2", "1.6", "1.6", "1.6"),
+ (1.45, "1", "1.4", "1.45", "1.45"),
+ (3.141592653589, "3", "3.1", "3.14159", "3.14159265359"),
(91827364509182.0, "9E13", "9.2E13", "9.18274E13",
- "9.18273645092E13")]);
+ "91827364509200")]);
end
(*
1.3 +8 -8 mlton/regression/real.toLargeInt.ok
Index: real.toLargeInt.ok
===================================================================
RCS file: /cvsroot/mlton/mlton/regression/real.toLargeInt.ok,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- real.toLargeInt.ok 2 Nov 2002 03:37:41 -0000 1.2
+++ real.toLargeInt.ok 1 Jun 2003 00:31:32 -0000 1.3
@@ -1,5 +1,5 @@
-nearest 0.0 0
-nearest 0.0 0
+nearest 0.00 0
+nearest 0.00 0
nearest 1000000000000.00 1000000000000
nearest ~1000000000000.00 ~1000000000000
nearest 0.25 0
@@ -42,8 +42,8 @@
nearest ~3.00 ~3
nearest 1000000000003.00 1000000000003
nearest ~999999999997.00 ~999999999997
-neginf 0.0 0
-neginf 0.0 0
+neginf 0.00 0
+neginf 0.00 0
neginf 1000000000000.00 1000000000000
neginf ~1000000000000.00 ~1000000000000
neginf 0.25 0
@@ -86,8 +86,8 @@
neginf ~3.00 ~3
neginf 1000000000003.00 1000000000003
neginf ~999999999997.00 ~999999999997
-posinf 0.0 0
-posinf 0.0 0
+posinf 0.00 0
+posinf 0.00 0
posinf 1000000000000.00 1000000000000
posinf ~1000000000000.00 ~1000000000000
posinf 0.25 1
@@ -130,8 +130,8 @@
posinf ~3.00 ~3
posinf 1000000000003.00 1000000000003
posinf ~999999999997.00 ~999999999997
-zero 0.0 0
-zero 0.0 0
+zero 0.00 0
+zero 0.00 0
zero 1000000000000.00 1000000000000
zero ~1000000000000.00 ~1000000000000
zero 0.25 0
1.2 +224 -224 mlton/regression/real4.ok
Index: real4.ok
===================================================================
RCS file: /cvsroot/mlton/mlton/regression/real4.ok,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- real4.ok 18 Jul 2001 05:51:07 -0000 1.1
+++ real4.ok 1 Jun 2003 00:31:32 -0000 1.2
@@ -26,20 +26,20 @@
Real.==(nan,~1) = false
Real.!=(nan,~1) = true
Real.?=(nan,~1) = true
-Real.<(nan,0.0) = false
-Real.<=(nan,0.0) = false
-Real.>(nan,0.0) = false
-Real.>=(nan,0.0) = false
-Real.==(nan,0.0) = false
-Real.!=(nan,0.0) = true
-Real.?=(nan,0.0) = true
-Real.<(nan,0.0) = false
-Real.<=(nan,0.0) = false
-Real.>(nan,0.0) = false
-Real.>=(nan,0.0) = false
-Real.==(nan,0.0) = false
-Real.!=(nan,0.0) = true
-Real.?=(nan,0.0) = true
+Real.<(nan,0) = false
+Real.<=(nan,0) = false
+Real.>(nan,0) = false
+Real.>=(nan,0) = false
+Real.==(nan,0) = false
+Real.!=(nan,0) = true
+Real.?=(nan,0) = true
+Real.<(nan,0) = false
+Real.<=(nan,0) = false
+Real.>(nan,0) = false
+Real.>=(nan,0) = false
+Real.==(nan,0) = false
+Real.!=(nan,0) = true
+Real.?=(nan,0) = true
Real.<(nan,1) = false
Real.<=(nan,1) = false
Real.>(nan,1) = false
@@ -89,20 +89,20 @@
Real.==(~inf,~1) = false
Real.!=(~inf,~1) = true
Real.?=(~inf,~1) = false
-Real.<(~inf,0.0) = true
-Real.<=(~inf,0.0) = true
-Real.>(~inf,0.0) = false
-Real.>=(~inf,0.0) = false
-Real.==(~inf,0.0) = false
-Real.!=(~inf,0.0) = true
-Real.?=(~inf,0.0) = false
-Real.<(~inf,0.0) = true
-Real.<=(~inf,0.0) = true
-Real.>(~inf,0.0) = false
-Real.>=(~inf,0.0) = false
-Real.==(~inf,0.0) = false
-Real.!=(~inf,0.0) = true
-Real.?=(~inf,0.0) = false
+Real.<(~inf,0) = true
+Real.<=(~inf,0) = true
+Real.>(~inf,0) = false
+Real.>=(~inf,0) = false
+Real.==(~inf,0) = false
+Real.!=(~inf,0) = true
+Real.?=(~inf,0) = false
+Real.<(~inf,0) = true
+Real.<=(~inf,0) = true
+Real.>(~inf,0) = false
+Real.>=(~inf,0) = false
+Real.==(~inf,0) = false
+Real.!=(~inf,0) = true
+Real.?=(~inf,0) = false
Real.<(~inf,1) = true
Real.<=(~inf,1) = true
Real.>(~inf,1) = false
@@ -152,20 +152,20 @@
Real.==(~2,~1) = false
Real.!=(~2,~1) = true
Real.?=(~2,~1) = false
-Real.<(~2,0.0) = true
-Real.<=(~2,0.0) = true
-Real.>(~2,0.0) = false
-Real.>=(~2,0.0) = false
-Real.==(~2,0.0) = false
-Real.!=(~2,0.0) = true
-Real.?=(~2,0.0) = false
-Real.<(~2,0.0) = true
-Real.<=(~2,0.0) = true
-Real.>(~2,0.0) = false
-Real.>=(~2,0.0) = false
-Real.==(~2,0.0) = false
-Real.!=(~2,0.0) = true
-Real.?=(~2,0.0) = false
+Real.<(~2,0) = true
+Real.<=(~2,0) = true
+Real.>(~2,0) = false
+Real.>=(~2,0) = false
+Real.==(~2,0) = false
+Real.!=(~2,0) = true
+Real.?=(~2,0) = false
+Real.<(~2,0) = true
+Real.<=(~2,0) = true
+Real.>(~2,0) = false
+Real.>=(~2,0) = false
+Real.==(~2,0) = false
+Real.!=(~2,0) = true
+Real.?=(~2,0) = false
Real.<(~2,1) = true
Real.<=(~2,1) = true
Real.>(~2,1) = false
@@ -215,20 +215,20 @@
Real.==(~1,~1) = true
Real.!=(~1,~1) = false
Real.?=(~1,~1) = true
-Real.<(~1,0.0) = true
-Real.<=(~1,0.0) = true
-Real.>(~1,0.0) = false
-Real.>=(~1,0.0) = false
-Real.==(~1,0.0) = false
-Real.!=(~1,0.0) = true
-Real.?=(~1,0.0) = false
-Real.<(~1,0.0) = true
-Real.<=(~1,0.0) = true
-Real.>(~1,0.0) = false
-Real.>=(~1,0.0) = false
-Real.==(~1,0.0) = false
-Real.!=(~1,0.0) = true
-Real.?=(~1,0.0) = false
+Real.<(~1,0) = true
+Real.<=(~1,0) = true
+Real.>(~1,0) = false
+Real.>=(~1,0) = false
+Real.==(~1,0) = false
+Real.!=(~1,0) = true
+Real.?=(~1,0) = false
+Real.<(~1,0) = true
+Real.<=(~1,0) = true
+Real.>(~1,0) = false
+Real.>=(~1,0) = false
+Real.==(~1,0) = false
+Real.!=(~1,0) = true
+Real.?=(~1,0) = false
Real.<(~1,1) = true
Real.<=(~1,1) = true
Real.>(~1,1) = false
@@ -250,132 +250,132 @@
Real.==(~1,inf) = false
Real.!=(~1,inf) = true
Real.?=(~1,inf) = false
-Real.<(0.0,nan) = false
-Real.<=(0.0,nan) = false
-Real.>(0.0,nan) = false
-Real.>=(0.0,nan) = false
-Real.==(0.0,nan) = false
-Real.!=(0.0,nan) = true
-Real.?=(0.0,nan) = true
-Real.<(0.0,~inf) = false
-Real.<=(0.0,~inf) = false
-Real.>(0.0,~inf) = true
-Real.>=(0.0,~inf) = true
-Real.==(0.0,~inf) = false
-Real.!=(0.0,~inf) = true
-Real.?=(0.0,~inf) = false
-Real.<(0.0,~2) = false
-Real.<=(0.0,~2) = false
-Real.>(0.0,~2) = true
-Real.>=(0.0,~2) = true
-Real.==(0.0,~2) = false
-Real.!=(0.0,~2) = true
-Real.?=(0.0,~2) = false
-Real.<(0.0,~1) = false
-Real.<=(0.0,~1) = false
-Real.>(0.0,~1) = true
-Real.>=(0.0,~1) = true
-Real.==(0.0,~1) = false
-Real.!=(0.0,~1) = true
-Real.?=(0.0,~1) = false
-Real.<(0.0,0.0) = false
-Real.<=(0.0,0.0) = true
-Real.>(0.0,0.0) = false
-Real.>=(0.0,0.0) = true
-Real.==(0.0,0.0) = true
-Real.!=(0.0,0.0) = false
-Real.?=(0.0,0.0) = true
-Real.<(0.0,0.0) = false
-Real.<=(0.0,0.0) = true
-Real.>(0.0,0.0) = false
-Real.>=(0.0,0.0) = true
-Real.==(0.0,0.0) = true
-Real.!=(0.0,0.0) = false
-Real.?=(0.0,0.0) = true
-Real.<(0.0,1) = true
-Real.<=(0.0,1) = true
-Real.>(0.0,1) = false
-Real.>=(0.0,1) = false
-Real.==(0.0,1) = false
-Real.!=(0.0,1) = true
-Real.?=(0.0,1) = false
-Real.<(0.0,2) = true
-Real.<=(0.0,2) = true
-Real.>(0.0,2) = false
-Real.>=(0.0,2) = false
-Real.==(0.0,2) = false
-Real.!=(0.0,2) = true
-Real.?=(0.0,2) = false
-Real.<(0.0,inf) = true
-Real.<=(0.0,inf) = true
-Real.>(0.0,inf) = false
-Real.>=(0.0,inf) = false
-Real.==(0.0,inf) = false
-Real.!=(0.0,inf) = true
-Real.?=(0.0,inf) = false
-Real.<(0.0,nan) = false
-Real.<=(0.0,nan) = false
-Real.>(0.0,nan) = false
-Real.>=(0.0,nan) = false
-Real.==(0.0,nan) = false
-Real.!=(0.0,nan) = true
-Real.?=(0.0,nan) = true
-Real.<(0.0,~inf) = false
-Real.<=(0.0,~inf) = false
-Real.>(0.0,~inf) = true
-Real.>=(0.0,~inf) = true
-Real.==(0.0,~inf) = false
-Real.!=(0.0,~inf) = true
-Real.?=(0.0,~inf) = false
-Real.<(0.0,~2) = false
-Real.<=(0.0,~2) = false
-Real.>(0.0,~2) = true
-Real.>=(0.0,~2) = true
-Real.==(0.0,~2) = false
-Real.!=(0.0,~2) = true
-Real.?=(0.0,~2) = false
-Real.<(0.0,~1) = false
-Real.<=(0.0,~1) = false
-Real.>(0.0,~1) = true
-Real.>=(0.0,~1) = true
-Real.==(0.0,~1) = false
-Real.!=(0.0,~1) = true
-Real.?=(0.0,~1) = false
-Real.<(0.0,0.0) = false
-Real.<=(0.0,0.0) = true
-Real.>(0.0,0.0) = false
-Real.>=(0.0,0.0) = true
-Real.==(0.0,0.0) = true
-Real.!=(0.0,0.0) = false
-Real.?=(0.0,0.0) = true
-Real.<(0.0,0.0) = false
-Real.<=(0.0,0.0) = true
-Real.>(0.0,0.0) = false
-Real.>=(0.0,0.0) = true
-Real.==(0.0,0.0) = true
-Real.!=(0.0,0.0) = false
-Real.?=(0.0,0.0) = true
-Real.<(0.0,1) = true
-Real.<=(0.0,1) = true
-Real.>(0.0,1) = false
-Real.>=(0.0,1) = false
-Real.==(0.0,1) = false
-Real.!=(0.0,1) = true
-Real.?=(0.0,1) = false
-Real.<(0.0,2) = true
-Real.<=(0.0,2) = true
-Real.>(0.0,2) = false
-Real.>=(0.0,2) = false
-Real.==(0.0,2) = false
-Real.!=(0.0,2) = true
-Real.?=(0.0,2) = false
-Real.<(0.0,inf) = true
-Real.<=(0.0,inf) = true
-Real.>(0.0,inf) = false
-Real.>=(0.0,inf) = false
-Real.==(0.0,inf) = false
-Real.!=(0.0,inf) = true
-Real.?=(0.0,inf) = false
+Real.<(0,nan) = false
+Real.<=(0,nan) = false
+Real.>(0,nan) = false
+Real.>=(0,nan) = false
+Real.==(0,nan) = false
+Real.!=(0,nan) = true
+Real.?=(0,nan) = true
+Real.<(0,~inf) = false
+Real.<=(0,~inf) = false
+Real.>(0,~inf) = true
+Real.>=(0,~inf) = true
+Real.==(0,~inf) = false
+Real.!=(0,~inf) = true
+Real.?=(0,~inf) = false
+Real.<(0,~2) = false
+Real.<=(0,~2) = false
+Real.>(0,~2) = true
+Real.>=(0,~2) = true
+Real.==(0,~2) = false
+Real.!=(0,~2) = true
+Real.?=(0,~2) = false
+Real.<(0,~1) = false
+Real.<=(0,~1) = false
+Real.>(0,~1) = true
+Real.>=(0,~1) = true
+Real.==(0,~1) = false
+Real.!=(0,~1) = true
+Real.?=(0,~1) = false
+Real.<(0,0) = false
+Real.<=(0,0) = true
+Real.>(0,0) = false
+Real.>=(0,0) = true
+Real.==(0,0) = true
+Real.!=(0,0) = false
+Real.?=(0,0) = true
+Real.<(0,0) = false
+Real.<=(0,0) = true
+Real.>(0,0) = false
+Real.>=(0,0) = true
+Real.==(0,0) = true
+Real.!=(0,0) = false
+Real.?=(0,0) = true
+Real.<(0,1) = true
+Real.<=(0,1) = true
+Real.>(0,1) = false
+Real.>=(0,1) = false
+Real.==(0,1) = false
+Real.!=(0,1) = true
+Real.?=(0,1) = false
+Real.<(0,2) = true
+Real.<=(0,2) = true
+Real.>(0,2) = false
+Real.>=(0,2) = false
+Real.==(0,2) = false
+Real.!=(0,2) = true
+Real.?=(0,2) = false
+Real.<(0,inf) = true
+Real.<=(0,inf) = true
+Real.>(0,inf) = false
+Real.>=(0,inf) = false
+Real.==(0,inf) = false
+Real.!=(0,inf) = true
+Real.?=(0,inf) = false
+Real.<(0,nan) = false
+Real.<=(0,nan) = false
+Real.>(0,nan) = false
+Real.>=(0,nan) = false
+Real.==(0,nan) = false
+Real.!=(0,nan) = true
+Real.?=(0,nan) = true
+Real.<(0,~inf) = false
+Real.<=(0,~inf) = false
+Real.>(0,~inf) = true
+Real.>=(0,~inf) = true
+Real.==(0,~inf) = false
+Real.!=(0,~inf) = true
+Real.?=(0,~inf) = false
+Real.<(0,~2) = false
+Real.<=(0,~2) = false
+Real.>(0,~2) = true
+Real.>=(0,~2) = true
+Real.==(0,~2) = false
+Real.!=(0,~2) = true
+Real.?=(0,~2) = false
+Real.<(0,~1) = false
+Real.<=(0,~1) = false
+Real.>(0,~1) = true
+Real.>=(0,~1) = true
+Real.==(0,~1) = false
+Real.!=(0,~1) = true
+Real.?=(0,~1) = false
+Real.<(0,0) = false
+Real.<=(0,0) = true
+Real.>(0,0) = false
+Real.>=(0,0) = true
+Real.==(0,0) = true
+Real.!=(0,0) = false
+Real.?=(0,0) = true
+Real.<(0,0) = false
+Real.<=(0,0) = true
+Real.>(0,0) = false
+Real.>=(0,0) = true
+Real.==(0,0) = true
+Real.!=(0,0) = false
+Real.?=(0,0) = true
+Real.<(0,1) = true
+Real.<=(0,1) = true
+Real.>(0,1) = false
+Real.>=(0,1) = false
+Real.==(0,1) = false
+Real.!=(0,1) = true
+Real.?=(0,1) = false
+Real.<(0,2) = true
+Real.<=(0,2) = true
+Real.>(0,2) = false
+Real.>=(0,2) = false
+Real.==(0,2) = false
+Real.!=(0,2) = true
+Real.?=(0,2) = false
+Real.<(0,inf) = true
+Real.<=(0,inf) = true
+Real.>(0,inf) = false
+Real.>=(0,inf) = false
+Real.==(0,inf) = false
+Real.!=(0,inf) = true
+Real.?=(0,inf) = false
Real.<(1,nan) = false
Real.<=(1,nan) = false
Real.>(1,nan) = false
@@ -404,20 +404,20 @@
Real.==(1,~1) = false
Real.!=(1,~1) = true
Real.?=(1,~1) = false
-Real.<(1,0.0) = false
-Real.<=(1,0.0) = false
-Real.>(1,0.0) = true
-Real.>=(1,0.0) = true
-Real.==(1,0.0) = false
-Real.!=(1,0.0) = true
-Real.?=(1,0.0) = false
-Real.<(1,0.0) = false
-Real.<=(1,0.0) = false
-Real.>(1,0.0) = true
-Real.>=(1,0.0) = true
-Real.==(1,0.0) = false
-Real.!=(1,0.0) = true
-Real.?=(1,0.0) = false
+Real.<(1,0) = false
+Real.<=(1,0) = false
+Real.>(1,0) = true
+Real.>=(1,0) = true
+Real.==(1,0) = false
+Real.!=(1,0) = true
+Real.?=(1,0) = false
+Real.<(1,0) = false
+Real.<=(1,0) = false
+Real.>(1,0) = true
+Real.>=(1,0) = true
+Real.==(1,0) = false
+Real.!=(1,0) = true
+Real.?=(1,0) = false
Real.<(1,1) = false
Real.<=(1,1) = true
Real.>(1,1) = false
@@ -467,20 +467,20 @@
Real.==(2,~1) = false
Real.!=(2,~1) = true
Real.?=(2,~1) = false
-Real.<(2,0.0) = false
-Real.<=(2,0.0) = false
-Real.>(2,0.0) = true
-Real.>=(2,0.0) = true
-Real.==(2,0.0) = false
-Real.!=(2,0.0) = true
-Real.?=(2,0.0) = false
-Real.<(2,0.0) = false
-Real.<=(2,0.0) = false
-Real.>(2,0.0) = true
-Real.>=(2,0.0) = true
-Real.==(2,0.0) = false
-Real.!=(2,0.0) = true
-Real.?=(2,0.0) = false
+Real.<(2,0) = false
+Real.<=(2,0) = false
+Real.>(2,0) = true
+Real.>=(2,0) = true
+Real.==(2,0) = false
+Real.!=(2,0) = true
+Real.?=(2,0) = false
+Real.<(2,0) = false
+Real.<=(2,0) = false
+Real.>(2,0) = true
+Real.>=(2,0) = true
+Real.==(2,0) = false
+Real.!=(2,0) = true
+Real.?=(2,0) = false
Real.<(2,1) = false
Real.<=(2,1) = false
Real.>(2,1) = true
@@ -530,20 +530,20 @@
Real.==(inf,~1) = false
Real.!=(inf,~1) = true
Real.?=(inf,~1) = false
-Real.<(inf,0.0) = false
-Real.<=(inf,0.0) = false
-Real.>(inf,0.0) = true
-Real.>=(inf,0.0) = true
-Real.==(inf,0.0) = false
-Real.!=(inf,0.0) = true
-Real.?=(inf,0.0) = false
-Real.<(inf,0.0) = false
-Real.<=(inf,0.0) = false
-Real.>(inf,0.0) = true
-Real.>=(inf,0.0) = true
-Real.==(inf,0.0) = false
-Real.!=(inf,0.0) = true
-Real.?=(inf,0.0) = false
+Real.<(inf,0) = false
+Real.<=(inf,0) = false
+Real.>(inf,0) = true
+Real.>=(inf,0) = true
+Real.==(inf,0) = false
+Real.!=(inf,0) = true
+Real.?=(inf,0) = false
+Real.<(inf,0) = false
+Real.<=(inf,0) = false
+Real.>(inf,0) = true
+Real.>=(inf,0) = true
+Real.==(inf,0) = false
+Real.!=(inf,0) = true
+Real.?=(inf,0) = false
Real.<(inf,1) = false
Real.<=(inf,1) = false
Real.>(inf,1) = true
1.4 +2 -2 mlton/regression/real5.ok
Index: real5.ok
===================================================================
RCS file: /cvsroot/mlton/mlton/regression/real5.ok,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- real5.ok 8 Apr 2003 22:36:20 -0000 1.3
+++ real5.ok 1 Jun 2003 00:31:32 -0000 1.4
@@ -1,7 +1,7 @@
2
52
179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368
-4.94065645841246544177e~324
-2.22507385850720138309e~308
+4.94065645841246544177E~324
+2.22507385850720138309E~308
inf
~inf
1.5 +22 -22 mlton/regression/real6.ok
Index: real6.ok
===================================================================
RCS file: /cvsroot/mlton/mlton/regression/real6.ok,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- real6.ok 24 Nov 2002 01:19:44 -0000 1.4
+++ real6.ok 1 Jun 2003 00:31:32 -0000 1.5
@@ -1,63 +1,63 @@
-~1.234000e+00
-0.0
-1.234568e+03
-1.000000e+21
+~1.234000E0
+0.000000E0
+1.234568E3
+1.000000E21
inf
nan
~inf
~1.234000
-0.0
+0.000000
1234.567800
1000000000000000000000.000000
inf
nan
~inf
~1.234
-0.0
+0
1234.5678
-1e+21
+1E21
inf
nan
~inf
-~1e+00
-0.0
-1e+03
-1e+21
+~1E0
+0E0
+1E3
+1E21
inf
nan
~inf
~1
-0.0
+0
1235
1000000000000000000000
inf
nan
~inf
~1
-0.0
-1e+03
-1e+21
+0
+1000
+1E21
inf
nan
~inf
-~1.2340000000e+00
-0.0
-1.2345678000e+03
-1.0000000000e+21
+~1.2340000000E0
+0.0000000000E0
+1.2345678000E3
+1.0000000000E21
inf
nan
~inf
~1.2340000000
-0.0
+0.0000000000
1234.5678000000
1000000000000000000000.0000000000
inf
nan
~inf
~1.234
-0.0
+0
1234.5678
-1e+21
+1E21
inf
nan
~inf
1.2 +6 -6 mlton/regression/real7.ok
Index: real7.ok
===================================================================
RCS file: /cvsroot/mlton/mlton/regression/real7.ok,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- real7.ok 5 Oct 2001 12:30:35 -0000 1.1
+++ real7.ok 1 Jun 2003 00:31:32 -0000 1.2
@@ -1,9 +1,9 @@
-1.79769313486e+308
-1.79769313486e+308
+1.79769313486E308
+1.79769313486E308
true
-4.94065645841e~324
-4.94065645841e~324
+4.94065645841E~324
+4.94065645841E~324
true
-2.22507385851e~308
-2.22507385851e~308
+2.22507385851E~308
+2.22507385851E~308
true
1.3 +18 -18 mlton/regression/real8.ok
Index: real8.ok
===================================================================
RCS file: /cvsroot/mlton/mlton/regression/real8.ok,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- real8.ok 2 Nov 2002 03:37:41 -0000 1.2
+++ real8.ok 1 Jun 2003 00:31:32 -0000 1.3
@@ -1,18 +1,18 @@
-0.0 = 0.0 * 2^0
- = 0.0
-5.00000000000000000000e~01 = 1.00000000000000000000e+00 * 2^~1
- = 5.00000000000000000000e~01
-1.00000000000000000000e+00 = 1.00000000000000000000e+00 * 2^0
- = 1.00000000000000000000e+00
-1.50000000000000000000e+00 = 1.50000000000000000000e+00 * 2^0
- = 1.50000000000000000000e+00
-2.00000000000000000000e+00 = 1.00000000000000000000e+00 * 2^1
- = 2.00000000000000000000e+00
-2.50000000000000000000e+00 = 1.25000000000000000000e+00 * 2^1
- = 2.50000000000000000000e+00
-4.00000000000000000000e+00 = 1.00000000000000000000e+00 * 2^2
- = 4.00000000000000000000e+00
-1.00000000000000000000e+01 = 1.25000000000000000000e+00 * 2^3
- = 1.00000000000000000000e+01
-1.79769313486231570815e+308 = 1.99999999999999977796e+00 * 2^1023
- = 1.79769313486231570815e+308
+0.00000000000000000000E0 = 0.00000000000000000000E0 * 2^0
+ = 0.00000000000000000000E0
+5.00000000000000000000E~1 = 1.00000000000000000000E0 * 2^~1
+ = 5.00000000000000000000E~1
+1.00000000000000000000E0 = 1.00000000000000000000E0 * 2^0
+ = 1.00000000000000000000E0
+1.50000000000000000000E0 = 1.50000000000000000000E0 * 2^0
+ = 1.50000000000000000000E0
+2.00000000000000000000E0 = 1.00000000000000000000E0 * 2^1
+ = 2.00000000000000000000E0
+2.50000000000000000000E0 = 1.25000000000000000000E0 * 2^1
+ = 2.50000000000000000000E0
+4.00000000000000000000E0 = 1.00000000000000000000E0 * 2^2
+ = 4.00000000000000000000E0
+1.00000000000000000000E1 = 1.25000000000000000000E0 * 2^3
+ = 1.00000000000000000000E1
+1.79769313486231570815E308 = 1.99999999999999977796E0 * 2^1023
+ = 1.79769313486231570815E308
1.3 +1 -1 mlton/regression/time3.ok
Index: time3.ok
===================================================================
RCS file: /cvsroot/mlton/mlton/regression/time3.ok,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- time3.ok 2 Oct 2001 16:37:34 -0000 1.2
+++ time3.ok 1 Jun 2003 00:31:32 -0000 1.3
@@ -1,4 +1,4 @@
-0.0
+0.000
123.457
123
123
1.1 mlton/regression/real.conv.ok
Index: real.conv.ok
===================================================================
inf inf true
inf inf true
~inf ~inf true
~inf ~inf true
inf inf true
inf inf true
~inf ~inf true
~inf ~inf true
nan nan true
nan nan true
~nan nan false
~nan nan false
0.0 0.0 true
0.0 0.0 true
0.0 0.0 true
~0.0 0.0 false
0.15E2 0.15E2 true
0.15E1 0.15E1 true
~0.15E2 ~0.15E2 true
0.15E2 0.15E2 true
0.15E~2 0.15E~2 true
0.15E~2 0.15E~2 true
0.15E~2 0.15E~2 true
0.12E1000 inf false
~0.12E1000 ~inf false
0.1E~998 0.0 false
~0.1E~998 0.0 false
inf inf true
1.1 mlton/regression/real.conv.sml
Index: real.conv.sml
===================================================================
val _ =
List.app (fn r =>
let
val da = valOf (IEEEReal.fromString r)
val s1 = IEEEReal.toString da
val x = valOf (Real.fromDecimal da)
val s2 = Real.fmt StringCvt.EXACT x
val da' = Real.toDecimal x
val b = Bool.toString (da = da')
in
print (concat [s1, " ", s2, " ", b, "\n"])
end)
["inf", "+inF", "~iNf", "-Inf",
"infinity", "+infinity", "~infinity", "-infinity",
"nan", "+naN", "~nAn", "-Nan",
"0", "0.0", "0.0E0", "~0",
"15",
"1.5",
"~1.5e+1",
"15.0",
".15e~2",
".15e-2",
"000.0015e0",
"1.2E999",
"~1.2E999",
"1E~999",
"~1E~999",
"1E12345678901234567890"]
1.1 mlton/regression/real.toDecimal.ok
Index: real.toDecimal.ok
===================================================================
NORMAL 0.1234567E4
1.1 mlton/regression/real.toDecimal.sml
Index: real.toDecimal.sml
===================================================================
val {class, digits, exp, sign} = Real.toDecimal 1234.567
datatype z = datatype IEEEReal.float_class
val class =
case class of
NAN => "NAN"
| INF => "INF"
| ZERO => "ZERO"
| NORMAL => "NORMAL"
| SUBNORMAL => "SUBNORMAL"
val digits = concat (List.map Int.toString digits)
val exp = Int.toString exp
val sign = if sign then "~" else ""
val _ = print (concat [class, " ", sign, "0.", digits, "E", exp, "\n"])
1.9 +1 -1 mlton/runtime/.cvsignore
Index: .cvsignore
===================================================================
RCS file: /cvsroot/mlton/mlton/runtime/.cvsignore,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- .cvsignore 16 Jan 2003 17:13:55 -0000 1.8
+++ .cvsignore 1 Jun 2003 00:31:33 -0000 1.9
@@ -1 +1 @@
-
+gdtoa
1.59 +45 -8 mlton/runtime/Makefile
Index: Makefile
===================================================================
RCS file: /cvsroot/mlton/mlton/runtime/Makefile,v
retrieving revision 1.58
retrieving revision 1.59
diff -u -r1.58 -r1.59
--- Makefile 15 May 2003 17:40:57 -0000 1.58
+++ Makefile 1 Jun 2003 00:31:33 -0000 1.59
@@ -18,7 +18,7 @@
ARCHFLAGS += -Wa,-xarch=v8plusa -fcall-used-g5 -fcall-used-g7 -funroll-all-loops -m32 -mv8 -mcpu=ultrasparc
endif
-CC = gcc -Wall -I. -D_LARGEFILE64_SOURCE $(ARCHFLAGS) $(HOSTFLAGS)
+CC = gcc -Wall -I. -Igdtoa -D_LARGEFILE64_SOURCE $(ARCHFLAGS) $(HOSTFLAGS)
CFLAGS = -O2
DEBUGFLAGS = -gstabs+ -g2
@@ -76,8 +76,18 @@
basis/PackReal/update.o \
basis/Ptrace/ptrace2.o \
basis/Ptrace/ptrace4.o \
- basis/Real.o \
- basis/Real_const.o \
+ basis/Real/class.o \
+ basis/Real/const.o \
+ basis/Real/gdtoa.o \
+ basis/Real/isFinite.o \
+ basis/Real/isNan.o \
+ basis/Real/isNormal.o \
+ basis/Real/nextAfter.o \
+ basis/Real/qequal.o \
+ basis/Real/real.o \
+ basis/Real/round.o \
+ basis/Real/signBit.o \
+ basis/Real/strtod.o \
basis/Stdio.o \
basis/Thread.o \
basis/Time.o \
@@ -236,8 +246,18 @@
basis/PackReal/update-gdb.o \
basis/Ptrace/ptrace2-gdb.o \
basis/Ptrace/ptrace4-gdb.o \
- basis/Real-gdb.o \
- basis/Real_const-gdb.o \
+ basis/Real/class-gdb.o \
+ basis/Real/const-gdb.o \
+ basis/Real/gdtoa-gdb.o \
+ basis/Real/isFinite-gdb.o \
+ basis/Real/isNan-gdb.o \
+ basis/Real/isNormal-gdb.o \
+ basis/Real/nextAfter-gdb.o \
+ basis/Real/qequal-gdb.o \
+ basis/Real/real-gdb.o \
+ basis/Real/round-gdb.o \
+ basis/Real/signBit-gdb.o \
+ basis/Real/strtod-gdb.o \
basis/Stdio-gdb.o \
basis/Thread-gdb.o \
basis/Time-gdb.o \
@@ -342,7 +362,16 @@
libmlton-gdb.o \
my-lib-gdb.o
-all: libmlton.a libmlton-gdb.a
+all: libgdtoa.a libmlton.a libmlton-gdb.a
+
+libgdtoa.a: gdtoa/gdtoa.a
+ cp gdtoa/gdtoa.a libgdtoa.a
+
+gdtoa/gdtoa.a: gdtoa
+ $(MAKE) -C gdtoa 'CC=gcc' 'CFLAGS=-g -DINFNAN_CHECK $(HOSTFLAGS)'
+
+gdtoa:
+ zcat gdtoa.tgz | tar xf -
libmlton.a: $(OBJS)
$(AR) libmlton.a $(OBJS)
@@ -350,8 +379,8 @@
libmlton-gdb.a: $(DEBUG_OBJS)
$(AR) libmlton-gdb.a $(DEBUG_OBJS)
-# gcc 3.2 is buggy when compiling Real.c with -O2
-basis/Real.o: basis/Real.c
+# gcc 3.2 is buggy when compiling class.c with -O2
+basis/Real/class.o: basis/Real/class.c
$(CC) $(CFLAGS) -O1 -c -o $@ $<
%-gdb.o: %.c
@@ -373,3 +402,11 @@
.PHONY: depend
depend:
makedepend -f- -- $(CFLAGS) -- $(SRCS)
+
+.PHONY: gdtoa-patch
+gdtoa-patch:
+ mv gdtoa gdtoa-new
+ zcat gdtoa.tgz | tar xf -
+ (cd gdtoa && diff -c -r . ../gdtoa-new) >gdtoa-patch || exit 0
+ rm -rf gdtoa
+ mv gdtoa-new gdtoa
1.9 +0 -1 mlton/runtime/libmlton.c
Index: libmlton.c
===================================================================
RCS file: /cvsroot/mlton/mlton/runtime/libmlton.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- libmlton.c 27 Jul 2002 20:52:05 -0000 1.8
+++ libmlton.c 1 Jun 2003 00:31:33 -0000 1.9
@@ -29,7 +29,6 @@
int start;
Posix_ProcEnv_environ = (CstringArray)environ;
- Real_posInf = HUGE_VAL;
start = GC_init (s, argc, argv);
/* Setup argv and argc that SML sees. */
/* start is now the index of the first real arg. */
1.1 mlton/runtime/gdtoa.tgz
<<Binary file>>
1.1 mlton/runtime/basis/Real/class.c
Index: class.c
===================================================================
#include <math.h>
#include "mlton-basis.h"
#include "my-lib.h"
enum {
DEBUG = FALSE,
};
/* All this code assumes IEEE 754/854 and little endian.
*
* In memory, the 64 bits of a double are layed out as follows.
*
* d[0] bits 7-0 of mantissa
* d[1] bits 15-8 of mantissa
* d[2] bits 23-16 of mantissa
* d[3] bits 31-24 of mantissa
* d[4] bits 39-32 of mantissa
* d[5] bits 47-40 of mantissa
* d[6] bits 3-0 of exponent
* bits 51-48 of mantissa
* d[7] sign bit
* bits 10-4 of exponent
*/
#define Real_Class_nanQuiet 0
#define Real_Class_nanSignalling 1
#define Real_Class_inf 2
#define Real_Class_zero 3
#define Real_Class_normal 4
#define Real_Class_subnormal 5
#if (defined __i386__)
/* masks for word 1 */
#define EXPONENT_MASK 0x7FF00000
#define MANTISSA_MASK 0x000FFFFF
#define SIGNBIT_MASK 0x80000000
#define MANTISSA_HIGHBIT_MASK 0x00080000
Int Real_class (Double d) {
Word word0, word1;
Int res;
word0 = ((Word *)&d)[0];
word1 = ((Word *)&d)[1];
if ((word1 & EXPONENT_MASK) == EXPONENT_MASK) {
/* NAN_QUIET, NAN_SIGNALLING, or INF */
if (word0 or (word1 & MANTISSA_MASK)) {
/* NAN_QUIET or NAN_SIGNALLING -- look at the highest bit of mantissa */
if (word1 & MANTISSA_HIGHBIT_MASK)
res = Real_Class_nanQuiet;
else
res = Real_Class_nanSignalling;
} else
res = Real_Class_inf;
} else {
/* ZERO, NORMAL, or SUBNORMAL */
if (word1 & EXPONENT_MASK)
res = Real_Class_normal;
else if (word0 or (word1 & MANTISSA_MASK))
res = Real_Class_subnormal;
else
res = Real_Class_zero;
}
if (DEBUG)
fprintf (stderr, "%d = Real_class (%g)\n", res, d);
return res;
}
#elif (defined __sparc__)
#include <ieeefp.h>
Int Real_class (Double d) {
fpclass_t c;
c = fpclass (d);
switch (c) {
case FP_SNAN: return Real_Class_nanSignalling;
case FP_QNAN: return Real_Class_nanQuiet;
case FP_NINF: return Real_Class_inf;
case FP_PINF: return Real_Class_inf;
case FP_NDENORM: return Real_Class_subnormal;
case FP_PDENORM: return Real_Class_subnormal;
case FP_NZERO: return Real_Class_zero;
case FP_PZERO: return Real_Class_zero;
case FP_NNORM: return Real_Class_normal;
case FP_PNORM: return Real_Class_normal;
default:
die ("Real_class error: invalid class %d\n", c);
}
}
#else
#error Real_class not defined
#endif
1.1 mlton/runtime/basis/Real/const.S
Index: const.S
===================================================================
.file "Real_const.S"
#if (defined (__CYGWIN__))
.data
.globl _Real_maxFinite
.align 8
.def _Real_maxFinite
.scl 2 # external
.size 8
.endef
_Real_maxFinite:
.long 0xFFFFFFFF
.long 0x7FEFFFFF
.globl _Real_minNormalPos
.align 8
.def _Real_minNormalPos
.scl 2 # external
.size 8
.endef
_Real_minNormalPos:
.long 0x00000000
.long 0x00100000
.globl _Real_minPos
.align 8
.def _Real_minPos
.scl 2 # external
.size 8
.endef
_Real_minPos:
.long 0x00000001
.long 0x00000000
#elif (defined (__linux__) || defined (__FreeBSD__))
.data
.globl Real_maxFinite
.align 8
.type Real_maxFinite,@object
.size Real_maxFinite, 8
Real_maxFinite:
.long 0xFFFFFFFF
.long 0x7FEFFFFF
.globl Real_minNormalPos
.type Real_minNormalPos,@object
.size Real_minNormalPos,8
Real_minNormalPos:
.long 0x00000000
.long 0x00100000
.globl Real_minPos
.align 8
.type Real_minPos,@object
.size Real_minPos,8
Real_minPos:
.long 0x00000001
.long 0x00000000
#elif (defined (__sun__))
// Don't need to do anything, since Real.c defines these constants.
#else
#error Real_ constants not defined
#endif
1.1 mlton/runtime/basis/Real/gdtoa.c
Index: gdtoa.c
===================================================================
#include <stdio.h>
#include <gc.h>
#include "gdtoa.h"
#include "mlton-basis.h"
#include "my-lib.h"
enum {
DEBUG = FALSE,
};
#if (defined (__i386__))
#define _0 1
#define _1 0
#elif (defined (__sparc__))
#define _0 0
#define _1 1
#else
#error unknown endianness
#endif
/* This code is patterned on g_dfmt from the gdtoa sources. */
char * Real_gdtoa (double d, int mode, int ndig, int *decpt) {
ULong bits[2];
int ex;
static FPI fpi = { 53, 1-1023-53+1, 2046-1023-53+1, 1, 0 };
int i;
ULong *L;
char *result;
ULong sign;
L = (ULong*)&d;
sign = L[_0] & 0x80000000L;
bits[0] = L[_1];
bits[1] = L[_0] & 0xfffff;
if ( (ex = (L[_0] >> 20) & 0x7ff) !=0)
bits[1] |= 0x100000;
else
ex = 1;
ex -= 0x3ff + 52;
i = STRTOG_Normal;
result = gdtoa (&fpi, ex, bits, &i, mode, ndig, decpt, NULL);
if (DEBUG)
fprintf (stderr, "%s = gdtoa (%g, %d, %d) decpt = %d\n",
result, d, mode, ndig, *decpt);
return result;
}
1.1 mlton/runtime/basis/Real/isFinite.c
Index: isFinite.c
===================================================================
#include <math.h>
#include "mlton-basis.h"
Int Real_isFinite (Double d) {
return finite (d); /* finite is from math.h */
}
1.1 mlton/runtime/basis/Real/isNan.c
Index: isNan.c
===================================================================
#include <math.h>
#include "mlton-basis.h"
#if (defined (__i386__))
Int Real_isNan (Double d) {
return isnan (d); /* isnan is from math.h */
}
#elif (defined __sparc__)
Int Real_isNan (Double d) {
fpclass_t c;
c = fpclass (d);
return c == FP_SNAN || c == FP_QNAN;
}
#else
#error Real_isNan not defined
#endif
1.1 mlton/runtime/basis/Real/isNormal.c
Index: isNormal.c
===================================================================
#include <math.h>
#include "mlton-basis.h"
#include "my-lib.h"
#if (defined (__i386__))
#define EXPONENT_MASK 0x7FF00000
Int Real_isNormal (Double d) {
Word word1, exponent;
word1 = ((Word *)&d)[1];
exponent = word1 & EXPONENT_MASK;
return not (exponent == 0 or exponent == EXPONENT_MASK);
}
#elif (defined __sparc__)
Int Real_isNormal (Double d) {
fpclass_t c;
c = fpclass (d);
return c == FP_NNORM || c == FP_PNORM || c == FP_NZERO || c == FP_PZERO;
}
#else
#error Real_isNormal not defined
#endif
1.1 mlton/runtime/basis/Real/nextAfter.c
Index: nextAfter.c
===================================================================
#include <math.h>
#include "mlton-basis.h"
Double Real_nextAfter (Double x1, Double x2) {
return nextafter (x1, x2);
}
1.1 mlton/runtime/basis/Real/qequal.c
Index: qequal.c
===================================================================
#include <math.h>
#include "mlton-basis.h"
Int Real_qequal (Double x1, Double x2) {
return Real_isNan (x1) || Real_isNan (x2) || x1 == x2;
}
1.1 mlton/runtime/basis/Real/real.c
Index: real.c
===================================================================
#include <math.h>
#include "basis-constants.h"
#include "mlton-basis.h"
Double Real_Math_pi = M_PI;
Double Real_Math_e = M_E;
#if (defined __sparc__)
double Real_maxFinite = 1.7976931348623157e308;
double Real_minPos = 4.94065645841246544e-324;
double Real_minNormalPos = 2.22507385850720140e-308;
#endif
1.1 mlton/runtime/basis/Real/round.c
Index: round.c
===================================================================
#include <math.h>
#include "mlton-basis.h"
#if (defined (__i386__))
Double Real_round (Double d) {
register double f0;
f0 = d;
__asm__ __volatile__ ("frndint"
: "=t" (f0)
: "0" (f0));
return f0;
}
#elif (defined __sparc__)
Double Real_round (Double d) {
return rint (d);
}
#else
#error Real_round not defined
#endif
1.1 mlton/runtime/basis/Real/signBit.c
Index: signBit.c
===================================================================
#include "mlton-basis.h"
Int Real_signBit (Double d) {
return (((unsigned char *)&d)[7] & 0x80) >> 7;
}
1.1 mlton/runtime/basis/Real/strtod.c
Index: strtod.c
===================================================================
#include <stdio.h>
#include <gc.h>
#include "gdtoa.h"
#include "mlton-basis.h"
#include "my-lib.h"
Double Real_strtod (char *s) {
char *endptr;
Double res;
res = strtod (s, &endptr);
assert (NULL != endptr);
return res;
}
-------------------------------------------------------
This SF.net email is sponsored by: eBay
Get office equipment for less on eBay!
http://adfarm.mediaplex.com/ad/ck/711-11697-6916-5
_______________________________________________
MLton-devel mailing list
MLton-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mlton-devel