7.31 bug in ‘evalf/ellipticf‘, maplevr5, maple 6 and maple 7 (21.8.00)

7.31.1 Vlad Dyadichev

I think there is a bug in `evalf/EllipticF` function over the complex numbers (at least in MapleVR5). Consider the following input:

>Z:=int(sqrt(1+x^4)-x^2,x=a..b):
 

(The result is rather long expression with elliptic integral of the first kind functions; the second term was added to produce O(1) result for large (a-b)). Now consider, for example

>Digits:=30: 
>evalf(eval(Z,{a=0,b=100})); 
 
  1.23088423134039493019005903731 - 
 
        .0000892558644560151253063409319366 I
 

The error is obvious — the integral of real valued function along the real axis should be real. Moreover, when the ‘int‘ is invoked with real limits or symbols `assume`d to be real it gives manifestly real answer (probably correct).

7.31.2 Preben Alsholm (30.8.00)

Well, it gets more and more curious:

> restart; 
> assume(a<1,b>1); 
> int(sqrt(1+x^4)-x^2,x=a..b); 
> 
          3         3                     4                      4 
  - 1/3 b~  + 1/3 a~  + 1/3 b~ sqrt(1 + b~ ) - 1/3 a~ sqrt(1 + a~ )
 

a nice (but unfortunately wrong) result. Changing the assume-line to

>assume(a<1,b>1,a>-1);
 

seems to produce the correct result, as does also the explicit command

> int(sqrt(1+x^4)-x^2, x=0..100);