[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