disable incorrect RULEs for Floats (#5178)
[ghc-base.git] / GHC / Base.lhs
index 027191a..ba128bf 100644 (file)
@@ -62,11 +62,20 @@ GHC.Float       Classes: Floating, RealFloat
 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 #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- 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.Bool,
         module GHC.Classes,
         module GHC.Generics,
         module GHC.Ordering,
@@ -98,7 +106,6 @@ module GHC.Base
         where
 
 import GHC.Types
-import GHC.Bool
 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#
-"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#
@@ -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.
+
+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