Precision checking [Re: Bug in Mathematica 6 - Integrate - 54 (Log, regression bug, invalid value)]



On Jul 17, 1:04 am, Vladimir Bondarenko <v...@xxxxxxxxxxxxxxx> wrote:
[...]
So our little demo continues... Hello again from the VM machine
which is still ignored by CAS manufacturers.

NIntegrate[Log[z^2 + z + 1]/(z^4 + 1), {z, 0, Infinity}]

0.820784
Okie. Compare:

(* If a single Mathematica version can calculate this? *)

N[Integrate[Log[z^2 + z + 1]/(z^4 + 1), {z, 0, Infinity}]]

(* Mathematica 6 returns this invalid asnwer *)

2.63082 + 6.01376 I
[...]

Version 6 of Mathematica can compute it.

In[1]:= $Version

Out[1]= 6.0 for Linux x86 (32-bit) (June 28, 2007)

In[2]:= InputForm[ii = Integrate[Log[z^2 + z + 1]/(z^4 + 1), {z, 0,
Infinity}]]

Out[2]//InputForm=
-((-1)^(1/4)*((20 + 4*I)*Pi^2 + 8*Pi*(Log[8] - I*Log[1 - (-1)^(1/12)]
-
Log[(-1)^(1/12)/(-1 + (-1)^(1/12))] +
Log[(-1)^(1/12)/(1 + (-1)^(1/12))] + I*Log[1 + (-1)^(1/12)] -
I*Log[1 - (-1)^(5/12)] - Log[(-1)^(5/12)/(-1 + (-1)^(5/12))] +
Log[(-1)^(5/12)/(1 + (-1)^(5/12))] + I*Log[1 + (-1)^(5/12)] +
(3*I)*Log[32 + 5*Sqrt[2] - 4*Sqrt[3] - 13*Sqrt[6]] -
(6*I)*Log[18 + 3*Sqrt[2] - 2*Sqrt[3] - 7*Sqrt[6]] +
(3*I)*Log[(3*I)*Sqrt[2] - (2 + 2*I)*Sqrt[3] - Sqrt[6]] -
(3*I)*Log[(4 + (1 - I)*Sqrt[2] - (1 + I)*Sqrt[6])/
(2*(-1 + (-1)^(5/12)))] + 3*Log[-2 + Sqrt[6]] -
3*Log[(3*I)*Sqrt[2] + (2 - 2*I)*Sqrt[3] + Sqrt[6]] -
3*Log[((1/2 + I/2)*(-1)^(1/12)*((-2 + 2*I) + Sqrt[2] +
(2 - I)*Sqrt[6]))/(-1 + (-1)^(1/12))] +
(3*I)*Log[-7 - Sqrt[2] + Sqrt[3] + 3*Sqrt[6]] +
3*Log[((1 + 3*I) - 4*(-1)^(1/12) + (1 + I)*Sqrt[3] +
2*(-1)^(1/12)*Sqrt[6])/(2*(-1 + (-1)^(1/12)))]) +
(3*I)*(4*Conjugate[Log[((3 + 3*I) - (1 - I)*Sqrt[3] - 2*Sqrt[6])/
(2 - 2*(-1)^(5/12))]]^2 - (3*I)*Log[2]^2 -
8*Conjugate[Log[((3 + 3*I) - (1 - I)*Sqrt[3] - 2*Sqrt[6])/
(2 - 2*(-1)^(5/12))]]*Log[-2 + Sqrt[6]] -
(4*I)*Log[2]*(2*Log[-1 - (1 + I)*Sqrt[2] - I*Sqrt[3]] -
2*Log[-1 + (1 + I)*Sqrt[2] - I*Sqrt[3]] -
2*Log[-1 + (1 + I)*Sqrt[2] + I*Sqrt[3]] -
Log[(-2*I)/((-2 + 2*I) + I*Sqrt[2] + Sqrt[6])]) +
4*(I*Log[-((-1)^(1/12)/(-1 + (-1)^(1/12)))]^2 + Log[-1 +
(-1)^(1/12)]^
2 - (2*I)*Log[-((-2 + (-1)^(3/4) + (1 + I)*Sqrt[3/2])/
(-1 + (-1)^(5/12)))]*Log[-Sqrt[3/2] + (3*I)/Sqrt[2] -
(1 + I)*Sqrt[3]] + 2*Log[((-1)^(1/12)*(-2 + (-1)^(1/4) +
(3 + I)*Sqrt[3/2]))/(-1 + (-1)^(1/12))]*
Log[-Sqrt[3/2] + (3*I)/Sqrt[2] - (1 + I)*Sqrt[3]] +
I*Log[-1 - (1 + I)*Sqrt[2] - I*Sqrt[3]]^2 -
I*Log[-1 + (1 + I)*Sqrt[2] - I*Sqrt[3]]^2 -
I*Log[-1 + (1 + I)*Sqrt[2] + I*Sqrt[3]]^2 -
Log[(2*I)/(-I + (1 + I)*Sqrt[2] + Sqrt[3])]^2 +
2*Log[((-1)^(5/12)*(-2 + (-1)^(1/4) + (3 + I)*Sqrt[3/2]))/
(1 + (-1)^(5/12))]*Log[Sqrt[3/2] + (3*I)/Sqrt[2] +
(1 - I)*Sqrt[3]] + (2*I)*Log[-Sqrt[3/2] + (3*I)/Sqrt[2] -
(1 + I)*Sqrt[3]]*Log[2/(32 + 5*Sqrt[2] - 4*Sqrt[3] -
13*Sqrt[6])] - 2*Log[Sqrt[3/2] + (3*I)/Sqrt[2] + (1 -
I)*Sqrt[3]]*
Log[2/(32 + 5*Sqrt[2] - 4*Sqrt[3] - 13*Sqrt[6])] -
Log[((3 + 3*I) - (1 - I)*Sqrt[3] - 2*Sqrt[6])/(2 -
2*(-1)^(5/12))]^
2 + (2*I)*Log[-((-2 + (-1)^(3/4) + (1 + I)*Sqrt[3/2])/
(-1 + (-1)^(5/12)))]*Log[-2 + Sqrt[6]] -
2*Log[((-1)^(1/12)*(-2 + (-1)^(1/4) + (3 + I)*Sqrt[3/2]))/
(-1 + (-1)^(1/12))]*Log[-2 + Sqrt[6]] -
2*Log[((-1)^(5/12)*(-2 + (-1)^(1/4) + (3 + I)*Sqrt[3/2]))/
(1 + (-1)^(5/12))]*Log[-2 + Sqrt[6]] +
(2*I)*Log[-Sqrt[3/2] + (3*I)/Sqrt[2] - (1 + I)*Sqrt[3]]*
Log[-2 + Sqrt[6]] - 2*Log[Sqrt[3/2] + (3*I)/Sqrt[2] +
(1 - I)*Sqrt[3]]*Log[-2 + Sqrt[6]] +
(2 - 2*I)*Log[2/(32 + 5*Sqrt[2] - 4*Sqrt[3] - 13*Sqrt[6])]*
Log[-2 + Sqrt[6]] + 2*Log[((3 + 3*I) - (1 - I)*Sqrt[3] -
2*Sqrt[6])/
(2 - 2*(-1)^(5/12))]*Log[-2 + Sqrt[6]] +
(2 - 2*I)*Log[-2 + Sqrt[6]]^2 + 2*Log[Sqrt[3/2] + (3*I)/
Sqrt[2] +
(1 - I)*Sqrt[3]]*Log[((1/2 - I/2)*(-1)^(5/12)*((-2 - 2*I) -
I*Sqrt[2] + Sqrt[6]))/(-1 + (-1)^(5/12))] -
2*Log[-2 + Sqrt[6]]*Log[((1/2 - I/2)*(-1)^(5/12)*((-2 - 2*I) -
I*Sqrt[2] + Sqrt[6]))/(-1 + (-1)^(5/12))] +
Log[((-1 - I)*(-I + Sqrt[3]))/((2 - 2*I) - I*Sqrt[2] +
Sqrt[6])]^2 +
I*Log[(-2*I)/((-2 + 2*I) + I*Sqrt[2] + Sqrt[6])]^2 +
Log[((-1/2 + I/2)*((-2 + 2*I) + I*Sqrt[2] + Sqrt[6]))/(I +
Sqrt[3])]^
2 - Log[(4*I - (1 + I)*Sqrt[2] + (1 - I)*Sqrt[6])/
(2*(-I + Sqrt[3]))]^2 + (2*I)*Log[-Sqrt[3/2] + (3*I)/
Sqrt[2] -
(1 + I)*Sqrt[3]]*Log[-7 - Sqrt[2] + Sqrt[3] + 3*Sqrt[6]] -
2*Log[Sqrt[3/2] + (3*I)/Sqrt[2] + (1 - I)*Sqrt[3]]*
Log[-7 - Sqrt[2] + Sqrt[3] + 3*Sqrt[6]] +
(2 - 2*I)*Log[-2 + Sqrt[6]]*Log[-7 - Sqrt[2] + Sqrt[3] +
3*Sqrt[6]] -
2*Log[-Sqrt[3/2] + (3*I)/Sqrt[2] - (1 + I)*Sqrt[3]]*
Log[(-4*(-1)^(1/12) + 2*(-1)^(1/3) + (3 +
I)*(-1)^(1/12)*Sqrt[6])/
(2*(-1 + (-1)^(1/12)))] + 2*Log[-2 + Sqrt[6]]*
Log[(-4*(-1)^(1/12) + 2*(-1)^(1/3) + (3 +
I)*(-1)^(1/12)*Sqrt[6])/
(2*(-1 + (-1)^(1/12)))] - 2*Log[Sqrt[3/2] + (3*I)/Sqrt[2] +
(1 - I)*Sqrt[3]]*Log[(-4*(-1)^(5/12) + 2*(-1)^(2/3) +
(3 + I)*(-1)^(5/12)*Sqrt[6])/(2*(1 + (-1)^(5/12)))] +
2*Log[-2 + Sqrt[6]]*Log[(-4*(-1)^(5/12) + 2*(-1)^(2/3) +
(3 + I)*(-1)^(5/12)*Sqrt[6])/(2*(1 + (-1)^(5/12)))] +
2*PolyLog[2, 1 - (-1)^(1/12)] +
2*PolyLog[2, (1 + (-1)^(1/12))^(-1)] +
(2*I)*PolyLog[2, (-1)^(1/12)/(1 + (-1)^(1/12))] +
2*PolyLog[2, (1 - (-1)^(5/12))^(-1)] +
(2*I)*PolyLog[2, (-1)^(5/12)/(-1 + (-1)^(5/12))] -
2*PolyLog[2, (1 + (-1)^(5/12))^(-1)] -
(2*I)*PolyLog[2, (-1)^(5/12)/(1 + (-1)^(5/12))] +
(2*I)*PolyLog[2, 1 + (-1)^(11/12)] -
2*PolyLog[2, ((-1 - I)*(-1 + (-1)^(5/12))*(-2 + Sqrt[6]))/
(-3*I + Sqrt[3] + (1 + I)*Sqrt[6])] +
2*PolyLog[2, ((-1 - I)*(-2 + Sqrt[6])*(-1 +
Conjugate[(-1)^(5/12)]))/
(-3 + I*Sqrt[3] + (1 + I)*Sqrt[6])]))))/96

First numeric check looks bad.

In[3]:= InputForm[N[ii]]
Out[3]//InputForm= -1.135684849569157 + 2.2472546449017576*I

So redo using bignum arithmetic. Looks much better.

In[4]:= InputForm[N[ii,25]]
Out[4]//InputForm=
0.82078378701431641554477010361568685504`25.09307130884641 +
0``25.23628622862146*I


Daniel Lichtblau
Wolfram Research

.