[Haskell-cafe] Complex numbers and (**)
psarge+haskell at gmail.com
Sun Aug 9 06:33:05 EDT 2009
On Sat, Aug 8, 2009 at 18:17, Henning Thielemann <
lemming at henning-thielemann.de> wrote:
> On Sat, 8 Aug 2009, Paul Sargent wrote:
> First post to the cafe, so "Hello everybody!".
>> Hope this is reasonable subject matter and not too long.
>> I've been working on some algorithms that involved taking the n-th root of
>> complex numbers.
>> In my code I've implemented this as raising the complex number ('z') to
>> 1/n using the (**)
>> operator. Obviously, there are n roots, but I only need one of them so
>> this is fine.
> I have written something on that topic:
> I think the problem cannot be fully solved, especially not within the
> Haskell 98 numeric type classes. There is no satisfying implementation of
> (**) even for Float and Double.
Well, I'm an engineer rather than a mathematician, so I'm not 100% sure I
followed everything on that page, but you seem to be saying that nth-root
can't be done because we're using floating point, and floating point isn't
accurate enough to represent 1/n.
I basically agree with this, which was why I asked about nth-root functions,
but for my uses (**) is good enough as long as complex zero works.
(To be honest I'd expect any complex nth-root function to work with the
polar form, there-by getting around some of the issues I think you're
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Haskell-Cafe