<br><br><div class="gmail_quote">On Sat, Aug 8, 2009 at 18:17, Henning Thielemann <span dir="ltr">&lt;<a href="mailto:lemming@henning-thielemann.de">lemming@henning-thielemann.de</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im"><br>
On Sat, 8 Aug 2009, Paul Sargent wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
First post to the cafe, so &quot;Hello everybody!&quot;.<br>
Hope this is reasonable subject matter and not too long.<br>
<br>
I&#39;ve been working on some algorithms that involved taking the n-th root of complex numbers.<br>
In my code I&#39;ve implemented this as raising the complex number (&#39;z&#39;) to 1/n using the (**)<br>
operator. Obviously, there are n roots, but I only need one of them so this is fine.<br>
</blockquote>
<br></div>
I have written something on that topic:<br>
  <a href="http://haskell.org/haskellwiki/Power_function" target="_blank">http://haskell.org/haskellwiki/Power_function</a><br>
<br>
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.<br>
</blockquote></div><br><div>Well, I&#39;m an engineer rather than a mathematician, so I&#39;m not 100% sure I followed everything on that page, but you seem to be saying that nth-root can&#39;t be done because we&#39;re using floating point, and floating point isn&#39;t accurate enough to represent 1/n.</div>
<div><br></div><div>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.</div><div><br></div><div>(To be honest I&#39;d expect any complex nth-root function to work with the polar form, there-by getting around some of the issues I think you&#39;re referring to.)</div>
<div><br></div>