-----Raymond Toy wrote: -----
> I've done some of this for the elliptic
> functions. One question: What should maxima
> do with sin(1 + 5.0*%i)? Leave it? Apply "numeric
> contagion" and pretend it was sin(1.0+5.0*%i) and
> evaluate numerically, even without the numer or float
> flags?
I suggest we adopt "numeric contagion." One argument
in favor of this is that, for example, expand(integer + float * %i)
evaluates to float + %i * float. There are also
mixed float and big float complex numbers; I suggest
that for evaluation of the exponential, log, and ...
functions, we pretend that:
integer + float * %i == float(integer) + float * %i,
float + integer * %i == float + float(integer) * %i,
bfloat + float * %i == bfloat + bfloat(float) * %i,
float + bfloat * %i == bfloat(float) + bfloat * %i,
bfloat + integer * %i == bfloat + bfloat(integer) * %i,
integer + bfloat * %i == bfloat(integer) + bfloat * %i.
Since 1.0 * %i --> %i, numeric contagion has a problem:
cos(1 + 1.0 * %i) --> cos(1 + %i), yet cos(1 + 1.0001 * %i) -->
complex double float. Sigh.
Notice that
(%i95) expand((1.2 + 5.0b0 * %i)^2);
(%o95) 1.2B1*%i-2.356B1
Thus my proposed rule float + bfloat * %i == bfloat(float) + bfloat * %i.
> Barton> (c) check for other branch cut inconsistencies.
>
>I think this is important and we should do that soon.
I'll work on this.
Barton