
NaN!**0 :: Double equals 1 too. See [http://wikipedia.org/wiki/NaN#Signaling_NaN] for an exception to
The 2008 version of the IEEE 754 standard says that pow(1,qNaN) and
#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): Replying to [comment:21 Scott Turner]: that. The same Wikipedia article has interesting things to say about 0!**0 and infinity!**0 also. Interesting. It says: pow(qNaN,0) should both return 1 since they return 1 whatever else is used instead of quiet NaN. Should we add another definition? {{{ (1:+0) ** _ = 1:+0 }}} To fix this: {{{ Prelude Data.Complex> 1 ** (0/0) :: Double 1.0 Prelude Data.Complex> 1 ** (0/0) :: Complex Double NaN :+ NaN }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8539#comment:22 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler