
#8532: Hyperbolic arc cosine fails on (-1) :: Complex r. -------------------------------------+------------------------------------- Reporter: leftaroundabout | Owner: Type: bug | Status: new Priority: low | Milestone: Component: libraries/base | 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: acosh(-1) :: | Blocked By: Complex Double | Related Tickets: Blocking: | -------------------------------------+------------------------------------- Comment (by leftaroundabout): Replying to [comment:1 carter]:
does this behave as expected in the a small radius around -1? (worth at least plotting it out)
For real arguments, it sure enough works. {{{ GHCi, version 7.4.1: http://www.haskell.org/ghc/ :? for help Loading package ghc-prim ... linking ... done. Loading package integer-gmp ... linking ... done. Loading package base ... linking ... done. Prelude> :m +Data.Complex Prelude Data.Complex> :m +Graphics.Rendering.Chart.Simple Prelude Data.Complex Graphics.Rendering.Chart.Simple> :set prompt "> "
let re f = realPart . f . realToFrac let im f = imagPart . f . realToFrac plotPNG "acosh-on-reals.png" [-2, -1.99 .. 2] (re acosh) (im acosh) }}}
If you put in complex numbers, there's a problem anyway: the imaginary part jumps from {{{+π}}} to {{{-π}}} as {{{Im z}}} becomes negative. Still, ([http://www.wolframalpha.com/input/?i=acosh]) it's apparently convention that for {{{Im z = 0}}}, we always have {{{Im (acosh(z)) ≥ 0)}}}, including {{{z = -1}}}. At any rate, the real part is 0 there; but in the current implementation that is also {{{NaN}}}. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8532#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler