Re: [GHC] #1042: Floating point exception

#1042: Floating point exception -------------------------------------+------------------------------------- Reporter: dons | Owner: Type: merge | Status: new Priority: normal | Milestone: 6.6.1 Component: Compiler | Version: 6.6 Resolution: | Keywords: Operating System: | Architecture: x86 Unknown/Multiple | Difficulty: Unknown Type of failure: Incorrect | Blocked By: result at runtime | Related Tickets: #8695 Test Case: | Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Changes (by dfeuer): * owner: igloo => * status: closed => new * resolution: fixed => Comment: I'm sorry to reopen an 8 year old bug, but I tripped over this today while attempting (unsuccessfully, so far) to write a version of `divModInt` that plays nice with CSE: {{{#!hs divModInt :: Int -> Int -> (Int, Int) (I# x) `divModInt` (I# y) = case x `divModInt#` y of (# q, r #) -> (I# q, I# r) divModInt# :: Int# -> Int# -> (# Int#, Int# #) x# `divModInt#` y# = case x' `quotRemInt#` y# of (# q, r #) -> (# q +# qadj, r +# radj #) where (# x', qadj, radj #) = if | isTrue# (x# ># 0#) && isTrue# (y# <# 0#) -> (# x# -# 1#, -1#, y# +# 1# #) | isTrue# (x# <# 0#) && isTrue# (y# ># 0#) -> (# x# +# 1#, -1#, y# -# 1# #) | otherwise -> (# x#, 0#, 0# #) }}} When I test this with {{{#!hs main = print $ divModInt minBound (-1) }}} I get a floating point exception. `GHC.Base.divMod` does not trip over this, even though it seems to be doing exactly the same arithmetic. As far as I can tell, this is ''supposed'' to be handled by `quotRemInt#` -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/1042#comment:11 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC