[GHC] #8539: Data.Complex shouldn't use default implementation of (**)

GHC ghc-devs at haskell.org
Tue Feb 10 08:34:55 UTC 2015


#8539: Data.Complex shouldn't use default implementation of (**)
-------------------------------------+-------------------------------------
        Reporter:  jjaredsimpson     |                   Owner:
            Type:  bug               |                  Status:  new
        Priority:  low               |               Milestone:  7.12.1
       Component:  Prelude           |                 Version:  7.6.3
      Resolution:                    |                Keywords:
Operating System:  Unknown/Multiple  |            Architecture:
 Type of failure:  Incorrect result  |  Unknown/Multiple
  at runtime                         |               Test Case:
      Blocked By:                    |                Blocking:
 Related Tickets:                    |  Differential Revisions:
-------------------------------------+-------------------------------------

Comment (by lukyanov):

 And we can simplify it a bit:
 {{{
     x ** y = case (x,y) of
       (_ , (0:+0))  -> 1 :+ 0
       ((0:+0), (exp_re:+_)) -> case compare exp_re 0 of
                  GT -> 0 :+ 0
                  LT -> inf :+ 0
                  EQ -> nan :+ nan
       ((re:+im), (exp_re:+_))
         | (isInfinite re || isInfinite im) -> case compare exp_re 0 of
                  GT -> inf :+ 0
                  LT -> 0 :+ 0
                  EQ -> nan :+ nan
         | otherwise -> exp (log x * y)
       where
         inf = 1/0
         nan = 0/0
 }}}

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


More information about the ghc-tickets mailing list