
#8539: Data.Complex shouldn't use default implementation of (**) -------------------------------------+------------------------------------- Reporter: jjaredsimpson | Owner: Type: bug | Status: patch Priority: low | Milestone: Component: Prelude | Version: 7.6.3 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Unknown/Multiple Type of failure: Incorrect result | Difficulty: Easy (less than 1 at runtime | hour) Test Case: | Blocked By: Blocking: | Related Tickets: -------------------------------------+------------------------------------- Comment (by yalas): Other floating functions seems to be ok (or almost ok) with infinity: {{{ Prelude Data.Complex> sqrt $ 1/0 :+ 0 Infinity :+ 0.0 Prelude Data.Complex> sqrt $ 1/0 :+ 1/0 Infinity :+ NaN Prelude Data.Complex> sqrt $ (-1/0) :+ 0 0.0 :+ Infinity Prelude Data.Complex> sqrt $ (-1/0) :+ (-1/0) NaN :+ (-Infinity) Prelude Data.Complex> log $ 1/0 :+ 0 Infinity :+ 0.0 Prelude Data.Complex> log $ 1/0 :+ 1/0 Infinity :+ NaN Prelude Data.Complex> log $ (-1/0) :+ 0 Infinity :+ 3.141592653589793 Prelude Data.Complex> log $ 0 :+ 0 (-Infinity) :+ 0.0 Prelude Data.Complex> log $ (-1/0) :+ (-1/0) Infinity :+ NaN Prelude Data.Complex> exp $ 1/0 :+ 1 Infinity :+ Infinity Prelude Data.Complex> exp $ 1/0 :+ 0 Infinity :+ NaN Prelude Data.Complex> exp $ (-1/0) :+ 0 0.0 :+ 0.0 }}} But (!**) can not raise to infinity: {{{ Prelude Data.Complex> 2 ** (1/0 :+ 1) NaN :+ NaN Prelude Data.Complex> 2 ** (1/0 :+ 0) NaN :+ NaN Prelude Data.Complex> 2 ** ((-1/0) :+ 0) NaN :+ NaN }}} Is it need to be fixed too? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8539#comment:23 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler