ref: 44a043dac3da746d442ebb9c742b8ebc733b0c36
parent: eeac1a81c25a9c4cf9cee92bc4c988c07a15c6c9
author: Rewbert <krookr@chalmers.se>
date: Mon Sep 25 09:09:30 EDT 2023
now the support I added for doubles work again, time to rebase again
--- a/Makefile
+++ b/Makefile
@@ -46,10 +46,12 @@
$(GHCB) -c ghc/Primitives.hs
$(GHCB) -c ghc/Data/Bool_Type.hs
$(GHCB) -c ghc/Data/Ordering_Type.hs
+ $(GHCB) -c ghc/Data/Double.hs
$(GHCB) -c src/PrimTable.hs
$(GHCC) -c lib/Control/Error.hs
$(GHCC) -c lib/Data/Bool.hs
$(GHCC) -c lib/Data/Int.hs
+ $(GHCC) -c lib/Data/Double.hs
$(GHCC) -c lib/Data/Char.hs
$(GHCC) -c lib/Data/Either.hs
$(GHCC) -c lib/Data/Tuple.hs
--- a/comb/mhs.comb
+++ b/comb/mhs.comb
@@ -1,3 +1,3 @@
v3.5
-882
-(($A :0 _769) (($A :1 (($B _815) _0)) (($A :2 ((($S' _815) _0) $I)) (($A :3 _739) (($A :4 (_3 "undefined")) (($A :5 $I) (($A :6 ((($C' $B) _768) (($C _48) _5))) (($A :7 ((($C' _6) (_786 _45)) ((_48 _784) _44))) (($A :8 (($B (($S _815) _784)) _3)) (($A :9 $T) (($A :10 ($T $I)) (($A :11 (($B (_48 _159)) _10)) (($A :12 (($B ($B (_47 _9))) ((($C' $B) (($B $C) _10)) ($B _10)))) (($A :13 (($B ($B (_47 _9))) ((($C' $B) (($B $C) _10)) ($BK _10)))) (($A :14 (($B (_47 _9)) $P)) (($A :15 (($B ($B (_47 _9))) (($B (($C' $C) _10)) ($B $P)))) (($A :16 _15) (($A :17 (($B (_47 _9)) ($B ($P _709)))) (($A :18 (($B (_47 _9)) ($BK ($P _709)))) (($A :19 ((_47 _9) (($S $P) $I))) (($A :20 (($B (_47 _9)) (($C ($S' $P)) $I))) (($A :21 (($B $Y) (($B ($B ($P (_14 _88)))) ((($C' $B) (($B ($C' $B)) ($B _12))) ((($C' ($C' $B)) ($B _12)) (($B ($B _14)) _89)))))) (($A :22 (($B $Y) (($B ($B ($P (_14 _709)))) (($B ($C' $B)) ($B _13))))) (($A :23 _3) (($A :24 ($T (_14 _709))) (($A :25 (($C $C) _32)) (($A :26 ($T _31)) (($A :27 (($P _32) _31)) (($A :28 _32) (($A :29 (($C (($C $S') _27)) $I)) (($A :30 (($C $S) _27)) (($A :31 $K) (($A :32 $A) (($A :33 _744) (($A :34 _745) (($A :35 ((($S' _26) (_736 97)) (($C _736) 122))) (($A :36 ((($S' _26) (_736 65)) (($C _736) 90))) (($A :37 ((($S' _25) _35) _36)) (($A :38 ((($S' _26) (_736 48)) (($C _736) 57))) (($A :39 ((($S' _26) (_736 32)) (($C _736) 126))) (($A :40 _733) (($A :41 _734) (($A :42 _736) (($A :43 _735) (($A :44 (($B $BK) $T)) (($A :45 ($BK $T)) (($A :46 $P) (($A :47 $I) (($A :48 $B) (($A :49 $I) (($A :50 $K) (($A :51 $C) (($A :52 _740) (($A :53 (($C (($C $S') _159)) _160)) (($A :54 ((($C' ($S' ($C' $B))) $B) $I)) (($A :55 _710) (($A :56 _711) (($A :57 _712) (($A :58 _713) (($A :59 _714) (($A :60 _715) (($A :61 (_56 0)) (($A :62 _721) (($A :63 _722) (($A :64 _723) (($A :65 _724) (($A :66 _725) (($A :67 _726) (($A :68 _62) (($A :69 ($BK $K)) (($A :70 (($B $BK) (($B ($B $BK)) $P))) (($A :71 (($B ($B ($B $BK))) (($B ($B ($B $BK))) (($B ($B ($B $C))) (($B ($B $C)) $P))))) (($A :72 ((($S' $S) ((($S' ($S' $C)) ((($C' ($C' $S)) ((($C' $B) (($B ($S' $S')) ((($C' $B) (($B _25) (_65 0))) (_62 0)))) (($B ($B (($C' $P) (_60 1)))) _55))) ($C $P))) _58)) _59)) (($A :73 _69) (($A :74 ((($S' $C) (($B ($P _148)) ((($C' ($C' $B)) ((($C' $C) _62) _148)) _149))) (($B (($C' ($C' ($C' $C))) ((($C' ($C' ($C' $C))) ((($C' ($C' ($C' ($C' $S')))) (($B ($B ($B ($B $C)))) (($B (($C' ($C' ($C' $C))) (($B ($B ($B (($S' $S') (_62 0))))) (($B (($C' ($C' $C)) (($B ($B (($S' $S') (_62 1)))) (($B (($C' $C) (($B (($C' $S') (_62 2))) ($C _74)))) ($C _74))))) ($C _74))))) ($C _74)))) ($T $K))) ($T $A)))) (($C _72) 4)))) (($A :75 (_81 _50)) (($A :76 ((_96 (_53 _75)) _73)) (($A :77 (($C ((($C' $B) (($P _88) ((($C' ($C' $O)) $P) $K))) ((($S' ($C' ($C' ($C' $B)))) (($B ($B ($B ($B _78)))) ((($S' ($C' ($C' $B))) (($B ($B ($B _78))) ((($S' ($C' $B)) (($B ($B _78)) ((($C' $B) (($B _94) ($T 0))) _77))) ((($C' $B) (($B _94) ($T 1))) _77)))) ((($C' $B) (($B _94) ($T 2))) _77)))) ((($C' $B) (($B _94) ($T 3))) _77)))) (($B $T) (($B ($B $P)) (($C' _55) (_57 4)))))) (($A :78 (($S $S) (($B $BK) (($B $BK) ((($S' $S) $T) (($B $BK) (($B $BK) (($C ((($S' $C') $S) (($B ($B ($B ($S $B)))) (($B ($B ($B ($B ($B $BK))))) (($B (($S' ($C' $B)) (($B $B') $B'))) (($B ($B ($B ($B ($B ($S $B)))))) (($B ($B ($B ($B ($B ($B ($B $BK))))))) ((($C' $B) ($B' ($B' (($B ($C' ($C' ($C' $C)))) (($B (($C' $B) ($B' (($B $C) _64)))) (($B (($C' $B) _89)) _78)))))) (($B (($C' $B) _89)) ($C _78)))))))))) (((_708 "lib/Data/IntMap.hs") 3) 8))))))))) (($A :79 ((_48 (_94 _159)) _77)) (($A :80 ((($C' $C) ((($C' $C) ($C _74)) (_3 "Data.IntMap.!"))) $I)) (($A :81 (($B (($C' $B) $T)) (($B ($B $Y)) ((($C' ($C' ($S' ($S' $C)))) (($B (($S' $B) (($B ($S' $P)) ($C _70)))) (($B ($B (($C' ($S' $C)) (($B (($S' ($S' $S')) _62)) ((($C' ($C' $B)) (($B $B') ($B _47))) ((($C' ($C' _47)) _75) ((((_71 _69) _69) _69) _69))))))) ($B (($C' $B) _70))))) ((($C' $B) (($B ($C' ($C' ($C' $C)))) ((($C' ($C' ($C' ($C' $C)))) ((($C' ($C' ($C' ($C' ($C' $S'))))) (($B ($B ($B ($B ($B $C))))) ((($S' ($S' ($S' ($S' ($S' $C))
\ No newline at end of file
+916
+(($A :0 _802) (($A :1 (($B _848) _0)) (($A :2 ((($S' _848) _0) $I)) (($A :3 _772) (($A :4 (_3 "undefined")) (($A :5 $I) (($A :6 ((($C' $B) _801) (($C _68) _5))) (($A :7 ((($C' _6) (_819 _65)) ((_68 _817) _64))) (($A :8 (($B (($S _848) _817)) _3)) (($A :9 $T) (($A :10 ($T $I)) (($A :11 (($B (_68 _179)) _10)) (($A :12 (($B ($B (_67 _9))) ((($C' $B) (($B $C) _10)) ($B _10)))) (($A :13 (($B ($B (_67 _9))) ((($C' $B) (($B $C) _10)) ($BK _10)))) (($A :14 (($B (_67 _9)) $P)) (($A :15 (($B ($B (_67 _9))) (($B (($C' $C) _10)) ($B $P)))) (($A :16 _15) (($A :17 (($B (_67 _9)) ($B ($P _731)))) (($A :18 (($B (_67 _9)) ($BK ($P _731)))) (($A :19 ((_67 _9) (($S $P) $I))) (($A :20 (($B (_67 _9)) (($C ($S' $P)) $I))) (($A :21 (($B $Y) (($B ($B ($P (_14 _108)))) ((($C' $B) (($B ($C' $B)) ($B _12))) ((($C' ($C' $B)) ($B _12)) (($B ($B _14)) _109)))))) (($A :22 (($B $Y) (($B ($B ($P (_14 _731)))) (($B ($C' $B)) ($B _13))))) (($A :23 _3) (($A :24 ($T (_14 _731))) (($A :25 (($C $C) _32)) (($A :26 ($T _31)) (($A :27 (($P _32) _31)) (($A :28 _32) (($A :29 (($C (($C $S') _27)) $I)) (($A :30 (($C $S) _27)) (($A :31 $K) (($A :32 $A) (($A :33 _777) (($A :34 _778) (($A :35 ((($S' _26) (_769 97)) (($C _769) 122))) (($A :36 ((($S' _26) (_769 65)) (($C _769) 90))) (($A :37 ((($S' _25) _35) _36)) (($A :38 ((($S' _26) (_769 48)) (($C _769) 57))) (($A :39 ((($S' _26) (_769 32)) (($C _769) 126))) (($A :40 _766) (($A :41 _767) (($A :42 _769) (($A :43 _768) (($A :44 _738) (($A :45 _739) (($A :46 _740) (($A :47 (_45 f0.0)) (($A :48 _44) (($A :49 _45) (($A :50 _46) (($A :51 _741) (($A :52 _742) (($A :53 _51) (($A :54 _52) (($A :55 _743) (($A :56 _744) (($A :57 _745) (($A :58 _746) (($A :59 _55) (($A :60 _56) (($A :61 _57) (($A :62 _58) (($A :63 _747) (($A :64 (($B $BK) $T)) (($A :65 ($BK $T)) (($A :66 $P) (($A :67 $I) (($A :68 $B) (($A :69 $I) (($A :70 $K) (($A :71 $C) (($A :72 _773) (($A :73 (($C (($C $S') _179)) _180)) (($A :74 ((($C' ($S' ($C' $B))) $B) $I)) (($A :75 _732) (($A :76 _733) (($A :77 _734) (($A :78 _735) (($A :79 _736) (($A :80 _737) (($A :81 (_76 0)) (($A :82 _754) (($A :83 _755) (($A :84 _756) (($A :85 _757) (($A :86 _758) (($A :87 _759) (($A :88 _82) (($A :89 ($BK $K)) (($A :90 (($B $BK) (($B ($B $BK)) $P))) (($A :91 (($B ($B ($B $BK))) (($B ($B ($B $BK))) (($B ($B ($B $C))) (($B ($B $C)) $P))))) (($A :92 ((($S' $S) ((($S' ($S' $C)) ((($C' ($C' $S)) ((($C' $B) (($B ($S' $S')) ((($C' $B) (($B _25) (_85 0))) (_82 0)))) (($B ($B (($C' $P) (_80 1)))) _75))) ($C $P))) _78)) _79)) (($A :93 _89) (($A :94 ((($S' $C) (($B ($P _168)) ((($C' ($C' $B)) ((($C' $C) _82) _168)) _169))) (($B (($C' ($C' ($C' $C))) ((($C' ($C' ($C' $C))) ((($C' ($C' ($C' ($C' $S')))) (($B ($B ($B ($B $C)))) (($B (($C' ($C' ($C' $C))) (($B ($B ($B (($S' $S') (_82 0))))) (($B (($C' ($C' $C)) (($B ($B (($S' $S') (_82 1)))) (($B (($C' $C) (($B (($C' $S') (_82 2))) ($C _94)))) ($C _94))))) ($C _94))))) ($C _94)))) ($T $K))) ($T $A)))) (($C _92) 4)))) (($A :95 (_101 _70)) (($A :96 ((_116 (_73 _95)) _93)) (($A :97 (($C ((($C' $B) (($P _108) ((($C' ($C' $O)) $P) $K))) ((($S' ($C' ($C' ($C' $B)))) (($B ($B ($B ($B _98)))) ((($S' ($C' ($C' $B))) (($B ($B ($B _98))) ((($S' ($C' $B)) (($B ($B _98)) ((($C' $B) (($B _114) ($T 0))) _97))) ((($C' $B) (($B _114) ($T 1))) _97)))) ((($C' $B) (($B _114) ($T 2))) _97)))) ((($C' $B) (($B _114) ($T 3))) _97)))) (($B $T) (($B ($B $P)) (($C' _75) (_77 4)))))) (($A :98 (($S $S) (($B $BK) (($B $BK) ((($S' $S) $T) (($B $BK) (($B $BK) (($C ((($S' $C') $S) (($B ($B ($B ($S $B)))) (($B ($B ($B ($B ($B $BK))))) (($B (($S' ($C' $B)) (($B $B') $B'))) (($B ($B ($B ($B ($B ($S $B)))))) (($B ($B ($B ($B ($B ($B ($B $BK))))))) ((($C' $B) ($B' ($B' (($B ($C' ($C' ($C' $C)))) (($B (($C' $B) ($B' (($B $C) _84)))) (($B (($C' $B) _109)) _98)))))) (($B (($C' $B) _109)) ($C _98)))))))))) (((_730 "lib/Data/IntMap.hs") 3) 8))))))))) (($A :99 ((_68 (_114 _179)) _97)) (($A :100 ((($C' $C) ((($C' $C) ($C _94)) (_3 "Data.IntMap.!"))) $I)) (($A :101 (($B (($C' $B) $T)) (($B ($B $Y)) ((($C' ($C' ($S' ($S' $C)))) (($B (($S' $B) (($B ($S' $P)) ($C _90)))) (($B ($B (($C' ($S' $C)
\ No newline at end of file
--- /dev/null
+++ b/ghc/Data/Double.hs
@@ -1,0 +1,4 @@
+module Data.Double(Double, showDouble) where
+
+showDouble :: Double -> [Char]
+showDouble = show
\ No newline at end of file
--- a/ghc/Primitives.hs
+++ b/ghc/Primitives.hs
@@ -4,6 +4,7 @@
Char,
Handle,
Int,
+ Double,
IO,
Word,
NFData(..),
@@ -126,6 +127,39 @@
primWordGE :: Word -> Word -> Bool
primWordGE = (>=)
+
+primDoubleAdd :: Double -> Double -> Double
+primDoubleAdd = (+)
+
+primDoubleSub :: Double -> Double -> Double
+primDoubleSub = (-)
+
+primDoubleMul :: Double -> Double -> Double
+primDoubleMul = (*)
+
+primDoubleEQ :: Double -> Double -> Bool
+primDoubleEQ = (==)
+
+primDoubleNE :: Double -> Double -> Bool
+primDoubleNE = (/=)
+
+primDoubleLT :: Double -> Double -> Bool
+primDoubleLT = (<)
+
+primDoubleLE :: Double -> Double -> Bool
+primDoubleLE = (<=)
+
+primDoubleGT :: Double -> Double -> Bool
+primDoubleGT = (>)
+
+primDoubleGE :: Double -> Double -> Bool
+primDoubleGE = (>=)
+
+primDoubleShow :: Double -> [Char]
+primDoubleShow = show
+
+primDoubleRead :: [Char] -> Double
+primDoubleRead = read
------
--- a/lib/Data/Double.hs
+++ b/lib/Data/Double.hs
@@ -1,11 +1,11 @@
-- Copyright 2023 Lennart Augustsson
-- See LICENSE file for full license.
-module Data.Double(module Data.Double) where
+module Data.Double(module Data.Double, Double) where
import Primitives
import Data.Bool_Type
---Yinfixl 6 +,-
---Yinfixl 7 *
+infixl 6 +,-
+infixl 7 *
-- Arithmetic
(+) :: Double -> Double -> Double
@@ -27,7 +27,7 @@
--------------------------------
---Yinfix 4 ==,/=,<,<=,>,>=
+infix 4 ==,/=,<,<=,>,>=
-- Comparison
(==) :: Double -> Double -> Bool
--- a/lib/Primitives.hs
+++ b/lib/Primitives.hs
@@ -49,6 +49,8 @@
primDoubleGE = primitive "fge"
primDoubleShow :: Double -> [Char]
primDoubleShow = primitive "fshow"
+primDoubleRead :: [Char] -> Double
+primDoubleRead = primitive "fread"
primWordAdd :: Word -> Word -> Word
primWordAdd = primitive "+"
--- a/lib/Text/String.hs
+++ b/lib/Text/String.hs
@@ -52,6 +52,9 @@
rd = foldl (\ a c -> a * 10 + ord c - ord '0') 0
in if eqChar (head cs) '-' then 0 - rd (tail cs) else rd cs
+readDouble :: String -> Double
+readDouble = primDoubleRead
+
showBool :: Bool -> String
showBool arg =
case arg of
--- a/src/MicroHs/Desugar.hs
+++ b/src/MicroHs/Desugar.hs
@@ -154,7 +154,7 @@
n = length is
ev = Var v
one m i = letE i (mkTupleSel m n ev)
- bnds = foldr (.) id $ zipWith one [0..] is
+ bnds = foldr (.) id $ zipWith one [0 .. ] is
in letRecE v (bnds $ mkTuple es) $
bnds body
--- a/src/MicroHs/Expr.hs
+++ b/src/MicroHs/Expr.hs
@@ -34,6 +34,7 @@
import Data.List
import Data.Maybe
import MicroHs.Ident
+import qualified Data.Double as D
--Ximport Compat
--Ximport GHC.Stack
--Ximport Control.DeepSeq
@@ -131,7 +132,7 @@
data Lit
= LInt Int
- | LDouble Double
+ | LDouble D.Double
| LChar Char
| LStr String
| LPrim String
@@ -434,7 +435,7 @@
showLit l =
case l of
LInt i -> showInt i
- LDouble d -> case showDouble d of
+ LDouble d -> case D.showDouble d of
'-':xs -> '-':'f':xs
xs -> 'f':xs
LChar c -> showChar c
--- a/src/MicroHs/Graph.hs
+++ b/src/MicroHs/Graph.hs
@@ -103,7 +103,7 @@
max_v = length edges0 - 1
sorted_edges = sortLE lek edges0
- edges1 = zip [0..] sorted_edges
+ edges1 = zip [0 .. ] sorted_edges
key_map = IM.fromList [(v, k) | (v, (_, k, _ )) <- edges1]
--- a/src/MicroHs/Lex.hs
+++ b/src/MicroHs/Lex.hs
@@ -5,6 +5,7 @@
import Prelude --Xhiding(lex, showChar, showString)
import Data.Char
import Data.List
+import qualified Data.Double as D
--Ximport Compat
import MicroHs.Ident
@@ -13,7 +14,7 @@
| TString Loc String
| TChar Loc Char
| TInt Loc Int
- | TDouble Loc Double
+ | TDouble Loc D.Double
| TSpec Loc Char
| TError Loc String
| TBrace Loc
@@ -25,7 +26,7 @@
showToken (TString _ s) = showString s
showToken (TChar _ c) = showChar c
showToken (TInt _ i) = showInt i
-showToken (TDouble _ d) = showDouble d
+showToken (TDouble _ d) = D.showDouble d
showToken (TSpec _ c) = [c]
showToken (TError _ s) = "ERROR " ++ s
showToken (TBrace _) = "TBrace"
@@ -91,12 +92,12 @@
case span isDigit cs of
(ds, rs) | null rs || not (eqChar (head rs) '.') -> TInt loc (readInt ('-':d:ds)) : lex (addCol loc $ 2 + length ds) rs| otherwise -> case span isDigit (tail rs) of
- (ns, rs') -> TDouble loc (readDouble ('-':d:ds ++ '.':ns)) : lex (addCol loc $ 3 + length ds + length ns) rs'+ (ns, rs') -> TDouble loc (readDouble (('-':d:ds) ++ ('.':ns))) : lex (addCol loc $ 3 + length ds + length ns) rs'lex loc (d:cs) | isDigit d =
case span isDigit cs of
(ds, rs) | null rs || not (eqChar (head rs) '.') -> TInt loc (readInt (d:ds)) : lex (addCol loc $ 1 + length ds) rs
| otherwise -> case span isDigit (tail rs) of
- (ns, rs') -> TDouble loc (readDouble (d:ds ++ '.':ns)) : lex (addCol loc $ 2 + length ds + length ns) rs'
+ (ns, rs') -> TDouble loc (readDouble ((d:ds) ++ ('.':ns))) : lex (addCol loc $ 2 + length ds + length ns) rs' lex loc (d:cs) | isOperChar d =
case span isOperChar cs of
(ds, rs) -> TIdent loc [] (d:ds) : lex (addCol loc $ 1 + length ds) rs
--- a/src/runtime/eval.c
+++ b/src/runtime/eval.c
@@ -150,7 +150,7 @@
T_A, T_Y, T_SS, T_BB, T_CC, T_P, T_O, T_T, T_BK, T_ADD, T_SUB, T_MUL,
T_QUOT, T_REM, T_SUBR, T_UQUOT, T_UREM,
T_FADD, T_FSUB, T_FMUL,
- T_FEQ, T_FNE, T_FLT, T_FLE, T_FGT, T_FGE, T_FSHOW,
+ T_FEQ, T_FNE, T_FLT, T_FLE, T_FGT, T_FGE, T_FSHOW, T_FREAD,
T_EQ, T_NE, T_LT, T_LE, T_GT, T_GE, T_ULT, T_ULE, T_UGT, T_UGE,
T_ERROR, T_SEQ, T_EQUAL, T_COMPARE, T_RNF,
T_IO_BIND, T_IO_THEN, T_IO_RETURN, T_IO_GETCHAR, T_IO_PUTCHAR,
@@ -452,6 +452,7 @@
{"fgt", T_FGT}, {"fge", T_FGE}, {"fshow", T_FSHOW},+ {"fread", T_FREAD}, { "==", T_EQ }, { "/=", T_NE }, { "<", T_LT },@@ -1222,6 +1223,7 @@
case T_FGT: fprintf(f, "$fgt"); break;
case T_FGE: fprintf(f, "$fge"); break;
case T_FSHOW: fprintf(f, "$fshow"); break;
+ case T_FREAD: fprintf(f, "$fread"); break;
case T_EQ: fprintf(f, "$=="); break;
case T_NE: fprintf(f, "$/="); break;
case T_LT: fprintf(f, "$<"); break;
@@ -1672,6 +1674,17 @@
case T_FLE: CMPF(<=);
case T_FGT: CMPF(>);
case T_FGE: CMPF(>=);
+ case T_FREAD:
+ CHECK(1);
+ msg = evalstring(ARG(TOP(0)));
+ xd = strtod(msg, NULL);
+ free(msg);
+
+ POP(1);
+ n = TOP(-1);
+
+ GOIND(mkDouble(xd));
+
case T_FSHOW:
// check that the double exists
CHECK(1);
--- a/tests/FArith.hs
+++ b/tests/FArith.hs
@@ -1,7 +1,9 @@
module FArith(module FArith) where
-import Data.Double
import Prelude
+import Primitives
+import qualified Data.Double as D
+import Text.String
list1 :: [Double]
list1 = [-100.343241, -53.3248973, -0.0, 0.0, 1.0, 1.23453523, 3243534.34534, 999.999]
@@ -11,5 +13,8 @@
main :: IO ()
main = do
- putStrLn $ showList showDouble [ op x y | x <- list1, y <- list2, op <- [addDouble, subDouble, mulDouble] ]
- putStrLn $ showList showBool [ op x y | x <- list1, y <- list2, op <- [eqDouble, neqDouble, ltDouble, leDouble, gtDouble, geDouble] ]
\ No newline at end of file
+ putStrLn $ showList D.showDouble [ op x y | x <- list1, y <- list2, op <- [D.addDouble, D.subDouble, D.mulDouble] ]
+ putStrLn $ showList showBool [ op x y | x <- list1, y <- list2, op <- [D.eqDouble, D.neqDouble, D.ltDouble, D.leDouble, D.gtDouble, D.geDouble] ]
+ let str = readDouble "1.576"
+ putStrLn $ D.showDouble str
+ putStrLn $ D.showDouble $ D.addDouble 1.0 $ readDouble "2.5"
\ No newline at end of file
--- a/tests/FArith.ref
+++ b/tests/FArith.ref
@@ -1,2 +1,4 @@
[-200.686482,0.0,10068.766014,-153.668138,-47.018344,5350.793021,-100.343241,-100.343241,0.0,-100.343241,-100.343241,-0.0,-99.343241,-101.343241,-100.343241,-99.108706,-101.577776,-123.877266,3243434.002099,-3243634.688581,-325466748.506229,899.655759,-1100.342241,-100343.140657,-153.668138,47.018344,5350.793021,-106.649795,0.0,2843.544672,-53.324897,-53.324897,0.0,-53.324897,-53.324897,-0.0,-52.324897,-54.324897,-53.324897,-52.090362,-54.559433,-65.831464,3243481.020443,-3243587.670237,-172961135.854278,946.674103,-1053.323897,-53324.843975,-100.343241,100.343241,0.0,-53.324897,53.324897,0.0,-0.0,0.0,0.0,0.0,-0.0,-0.0,1.0,-1.0,-0.0,1.234535,-1.234535,-0.0,3243534.34534,-3243534.34534,-0.0,999.999,-999.999,-0.0,-100.343241,100.343241,-0.0,-53.324897,53.324897,-0.0,0.0,0.0,-0.0,0.0,0.0,0.0,1.0,-1.0,0.0,1.234535,-1.234535,0.0,3243534.34534,-3243534.34534,0.0,999.999,-999.999,0.0,-99.343241,101.343241,-100.343241,-52.324897,54.324897,-53.324897,1.0,1.0,-0.0,1.0,1.0,0.0,2.0,0.0,1.0,2.234535,-0.234535,1.234535,3243535.34534,-3243533.34534,3243534.34534,1000.999,-998.999,999.999,-99.108706,101.577776,-123.877266,-52.090362,54.559433,-65.831464,1.234535,1.234535,-0.0,1.234535,1.234535,0.0,2.234535,0.234535,1.234535,2.46907,0.0,1.524077,3243535.579875,-3243533.110805,4004257.419037,1001.233535,-998.764465,1234.533995,3243434.002099,3243634.688581,-325466748.506229,3243481.020443,3243587.670237,-172961135.854278,3243534.34534,3243534.34534,-0.0,3243534.34534,3243534.34534,0.0,3243535.34534,3243533.34534,3243534.34534,3243535.579875,3243533.110805,4004257.419037,6487068.69068,0.0,10520515049400.181641,3244534.34434,3242534.34634,3243531101.805655,899.655759,1100.342241,-100343.140657,946.674103,1053.323897,-53324.843975,999.999,999.999,-0.0,999.999,999.999,0.0,1000.999,998.999,999.999,1001.233535,998.764465,1234.533995,3244534.34434,-3242534.34634,3243531101.805655,1999.998,0.0,999998.000001]
[True,False,False,True,False,True,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,False,False,True,True,True,False,False,True,False,True,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,False,False,True,True,False,True,False,False,True,True,True,False,False,True,False,True,True,False,False,True,False,True,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,False,False,True,True,False,True,False,False,True,True,True,False,False,True,False,True,True,False,False,True,False,True,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,True,False,False,True,False,True,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,True,False,False,True,False,True,False,True,True,True,False,False,False,True,True,True,False,False,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,True,False,False,True,False,True,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,False,True,True,True,False,False,True,False,False,True,False,True]
+1.576
+3.5
--- a/tests/MutRec.hs
+++ b/tests/MutRec.hs
@@ -5,4 +5,4 @@
main = do
let even i = if i == 0 then True else odd (i - 1)
odd i = if i == 0 then False else even (i - 1)
- putStrLn $ showList showBool $ map even [1..5] ++ map odd [1..5]
+ putStrLn $ showList showBool $ map even [1 .. 5] ++ map odd [1 .. 5]
--
⑨