#5165: GHC doesn't optimize FP excess precision properly
------------------------------------------+---------------------------------
  Reporter:  ezyang                       |          Owner:         
      Type:  bug                          |         Status:  closed 
  Priority:  low                          |      Milestone:  7.6.1  
 Component:  Compiler                     |        Version:  7.1    
Resolution:  duplicate                    |       Keywords:         
        Os:  Linux                        |   Architecture:  x86    
   Failure:  Incorrect result at runtime  |     Difficulty:  Unknown
  Testcase:                               |      Blockedby:         
  Blocking:                               |        Related:         
------------------------------------------+---------------------------------
Changes (by simonmar):

  * status:  new => closed
  * difficulty:  => Unknown
  * resolution:  => duplicate


Comment:

 Closing as a dup of #7069; we now document this as a known bug.

 Note that the particular example in this ticket also involves constant
 folding, which we have to be careful to do at the correct precision.  We
 do make an attempt to do this properly, although it's not clear to me that
 it really does the right thing, since we're relying on

 {{{
   toRational (fromRational (a `op` b))
 }}}

 being the same as

 {{{
   toRational (fromRational a `op` fromRational b)
 }}}

 which I rather doubt is the case.  Here's the code from `PrelRules`:

 {{{
 -- When excess precision is not requested, cut down the precision of the
 -- Rational value to that of Float/Double. We confuse host architecture
 -- and target architecture here, but it's convenient (and wrong :-).
 convFloating :: Literal -> Literal
 convFloating (MachFloat  f) | not opt_SimplExcessPrecision =
    MachFloat  (toRational ((fromRational f) :: Float ))
 convFloating (MachDouble d) | not opt_SimplExcessPrecision =
    MachDouble (toRational ((fromRational d) :: Double))
 convFloating l = l
 }}}

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/5165#comment:6>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler

_______________________________________________
Glasgow-haskell-bugs mailing list
Glasgow-haskell-bugs@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to