couple of questions about complex expressions



Unless, numer can evaluate a power expression to a binary64, I think numer should let the power be.   
In binary 64, for example

    1.0/3 = 6004799503160661/18014398509481984 

the expression  2.0*(-1)^0.33333333333333 doesn't have a real branch.   For a fixed number x,
the function z |--> x^z is a weird jumpy thing using the real branch rule. Using the principal
branch, it's better behaved.

The m1pbranch option tries to push all branch questions onto -1. I suppose the hope is the powers of -1\
will end the end all cancel.


________________________________________
From: Robert Dodier [robert.dodier at gmail.com]
Sent: Wednesday, September 26, 2012 15:17
To: Barton Willis
Cc: maxima at math.utexas.edu
Subject: Re: [Maxima] couple of questions about complex expressions

On Tue, Sep 25, 2012 at 4:38 AM, Barton Willis <willisb at unk.edu> wrote:

> It's a mess. I think domain : complex and  m1pbranch : true is supposed to
> give the principle branch,
> and domain : real and m1pbranch : false the real branch, I think.

I wonder if the default values for domain and m1pbranch ought
to be complex and true, respectively. That would be more generally
correct, right? (for some value of "correct")

> But sometimes numer matters

>   (%i9) block([domain : real, m1pbranch : false, numer : true], (-8)^(1/3));
>   (%o9) 2.0*(-1)^0.33333333333333

I think converting exponents to floats under the influence of
numer is unfortunate. Presumably the idea of numer is to cause
an expression to evaluate to a number. Sometimes it is sufficient
to simply replace any constant value by a float, and then the
simplification machinery does the rest. But that's not a general
strategy, right? There is at least one case of widespread interest
for which that's not the best strategy, namely, fractional exponents.

I don't have an alternative for the current implementation of numer,
but it seems to be worth the trouble to think it through.

best,

Robert Dodier