projects
/
ghc-base.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
disable incorrect RULEs for Floats (#5178)
[ghc-base.git]
/
GHC
/
Base.lhs
diff --git
a/GHC/Base.lhs
b/GHC/Base.lhs
index
027191a
..
ba128bf
100644
(file)
--- a/
GHC/Base.lhs
+++ b/
GHC/Base.lhs
@@
-62,11
+62,20
@@
GHC.Float Classes: Floating, RealFloat
Other Prelude modules are much easier with fewer complex dependencies.
\begin{code}
Other Prelude modules are much easier with fewer complex dependencies.
\begin{code}
-{-# OPTIONS_GHC -XNoImplicitPrelude #-}
+{-# LANGUAGE CPP
+ , NoImplicitPrelude
+ , BangPatterns
+ , ExplicitForAll
+ , MagicHash
+ , UnboxedTuples
+ , ExistentialQuantification
+ , Rank2Types
+ #-}
-- -fno-warn-orphans is needed for things like:
-- Orphan rule: "x# -# x#" ALWAYS forall x# :: Int# -# x# x# = 0
{-# OPTIONS_GHC -fno-warn-orphans #-}
{-# OPTIONS_HADDOCK hide #-}
-- -fno-warn-orphans is needed for things like:
-- Orphan rule: "x# -# x#" ALWAYS forall x# :: Int# -# x# x# = 0
{-# OPTIONS_GHC -fno-warn-orphans #-}
{-# OPTIONS_HADDOCK hide #-}
+
-----------------------------------------------------------------------------
-- |
-- Module : GHC.Base
-----------------------------------------------------------------------------
-- |
-- Module : GHC.Base
@@
-87,7
+96,6
@@
Other Prelude modules are much easier with fewer complex dependencies.
module GHC.Base
(
module GHC.Base,
module GHC.Base
(
module GHC.Base,
- module GHC.Bool,
module GHC.Classes,
module GHC.Generics,
module GHC.Ordering,
module GHC.Classes,
module GHC.Generics,
module GHC.Ordering,
@@
-98,7
+106,6
@@
module GHC.Base
where
import GHC.Types
where
import GHC.Types
-import GHC.Bool
import GHC.Classes
import GHC.Generics
import GHC.Ordering
import GHC.Classes
import GHC.Generics
import GHC.Ordering
@@
-758,9
+765,6
@@
gtInt, geInt, eqInt, neInt, ltInt, leInt :: Int -> Int -> Bool
"plusFloat x 0.0" forall x#. plusFloat# x# 0.0# = x#
"plusFloat 0.0 x" forall x#. plusFloat# 0.0# x# = x#
"minusFloat x 0.0" forall x#. minusFloat# x# 0.0# = x#
"plusFloat x 0.0" forall x#. plusFloat# x# 0.0# = x#
"plusFloat 0.0 x" forall x#. plusFloat# 0.0# x# = x#
"minusFloat x 0.0" forall x#. minusFloat# x# 0.0# = x#
-"minusFloat x x" forall x#. minusFloat# x# x# = 0.0#
-"timesFloat x 0.0" forall x#. timesFloat# x# 0.0# = 0.0#
-"timesFloat0.0 x" forall x#. timesFloat# 0.0# x# = 0.0#
"timesFloat x 1.0" forall x#. timesFloat# x# 1.0# = x#
"timesFloat 1.0 x" forall x#. timesFloat# 1.0# x# = x#
"divideFloat x 1.0" forall x#. divideFloat# x# 1.0# = x#
"timesFloat x 1.0" forall x#. timesFloat# x# 1.0# = x#
"timesFloat 1.0 x" forall x#. timesFloat# 1.0# x# = x#
"divideFloat x 1.0" forall x#. divideFloat# x# 1.0# = x#
@@
-788,6
+792,12
@@
This gives wrong answer (0) for NaN * 0 (should be NaN):
"timesDouble x 0.0" forall x#. (*##) x# 0.0## = 0.0##
These are tested by num014.
"timesDouble x 0.0" forall x#. (*##) x# 0.0## = 0.0##
These are tested by num014.
+
+Similarly for Float (#5178):
+
+"minusFloat x x" forall x#. minusFloat# x# x# = 0.0#
+"timesFloat0.0 x" forall x#. timesFloat# 0.0# x# = 0.0#
+"timesFloat x 0.0" forall x#. timesFloat# x# 0.0# = 0.0#
-}
-- Wrappers for the shift operations. The uncheckedShift# family are
-}
-- Wrappers for the shift operations. The uncheckedShift# family are