[GHC] #7858: Fix definitions of abs/signum for Floats/Doubles
GHC
ghc-devs at haskell.org
Mon Aug 4 14:36:52 UTC 2014
#7858: Fix definitions of abs/signum for Floats/Doubles
-------------------------------------+-------------------------------------
Reporter: lerkok | Owner:
Type: bug | Status: patch
Priority: normal | Milestone: 7.10.1
Component: | Version: 7.6.3
libraries/base | Keywords: floating point
Resolution: | Architecture: Unknown/Multiple
Operating System: | Difficulty: Unknown
Unknown/Multiple | Blocked By:
Type of failure: | Related Tickets: #9238
None/Unknown |
Test Case: |
Blocking: |
Differential Revisions: |
-------------------------------------+-------------------------------------
Changes (by rwbarton):
* milestone: => 7.10.1
Comment:
We can replace the expensive `isNegativeZero x` test in `abs` with `x ==
0`, since `abs` of positive zero is also zero.
{{{
abs x
| x == 0 = 0
| x >= 0 = x
| otherwise = negate x
}}}
Of course this merits a comment on the first guard!
As for `signum`, I don't see off-hand a simple way to work around the bug
#9238, so I suggest we apply the `abs` patch, then mark this ticket as
blocked by #9238. If someone gets around to implementing efficient `abs`
and `signum` with fancy bit tricks before 7.10 then it will become moot
anyway.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/7858#comment:6>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list