complex number arithmetic



On Thu, Apr 16, 2009 at 5:56 PM, Richard Fateman
<fateman at cs.berkeley.edu> wrote:
> You need to choose a principal value for multiple-valued roots.

Agreed, but this is orthogonal: Maxima already has conventions
(whether they are currently correct or not...) in rectform.

> Also try rectform((1+%i)^(1+%i)) for a fun time.

That is why I specified "whenever the result is correctly expressed in
numbers only", the simplest case of which is integral powers.

Barton Willis:
>> With large integer powers, maybe it's not clear what is best.

Well, we already expand large integer powers of rationals.  Why is the
expanded form of (2/3+%i)^100 any worse than (2/3)^100?  It's not even
very slow:
rectform((%i+2/3)^100000) takes only 0.02 secs.

>> Computations such as
>>> a : (2/3 + %i)^(10^9 + 1);
>>> b : (2/3 + %i)^(10^9);
>>> a/b ?--> (long number) / (long number) --> 2/3 + %i
>>> are somewhat embarrassing.

Embarrassing in what way?  That Maxima can't take advantage of the
shortcut?  Does it matter?  It is actually surprisingly fast for
reasonable-size exponents.

By the way, I noticed that Maxima, trying to be helpful, writes
rectform((2+%i)^1001) using sin(1001*atan(...)), which messes up
subsequent arithmetic quite badly....

             -s