# MeijerG gives the wrong result? (V10.2)

alpha = 6.39;
beta = 3.69;
a1 = (1 - alpha)/2;
a2 = (2 - alpha)/2;
a3 = (1 - beta)/2;
a4 = (2 - beta)/2;
a5 = 1;
b1 = 0;
b2 = 1/2;
SNR = 0;
SNR0 = 10^(SNR/10);
z = 2*(SNR0/(alpha*beta))^2;
p1 = 2^(alpha + beta - 3)/(Pi*Sqrt[Pi]*Gamma[alpha]*Gamma[beta]);
p2 = MeijerG[{{a1, a2, a3, a4}, {a5}}, {{b1, b2}, {}}, z, 1]


108.522

This was done in V10.2.

The result of p2 is expected to be 12.83559958, doubled checked in Maple and Matlab and confirmed from other research papers.

Syntax is expected to be correct too.

What is going on here?

Screenshot from Maple: • Mathematica v9 gives the same result Aug 5, 2015 at 21:18
• @belisarius I dont know anything about this as I am not a pure mathematician. I have never learnt this either. But is this answer correct? or equivalent to the Maple answer? I highly doubt it. Aug 5, 2015 at 21:31
• N[MeijerG[Rationalize[{{a1, a2, a3, a4}, {a5}}], {{b1, b2}, {}}, Rationalize[z, 0], 1], 20] gives 12.835599581687294282. This is using software rather than hardware arithmetic, that is to say, error estimates and refinement will be better. Offhand I do not know whether this also indicates deficiency in the machine number evaluation. Aug 5, 2015 at 21:57
• @DanielLichtblau I will forward your answer to the OP in the Chinese community. Is there any particular reason for the 20 in N[ ..,20], or is it just some precision it happen to be working (getting the correct answer) ? Aug 5, 2015 at 22:14
• I usually use 20 digits when I want a result using modest precision in software arithmetic. Aug 5, 2015 at 22:54

As Daniel Lichtblau showed in his comment, use exact numbers (or Rationalize) for input values

alpha = 639/100;
beta = 369/100;
a1 = (1 - alpha)/2;
a2 = (2 - alpha)/2;
a3 = (1 - beta)/2;
a4 = (2 - beta)/2;
a5 = 1;
b1 = 0;
b2 = 1/2;
SNR = 0;
SNR0 = 10^(SNR/10);
z = 2*(SNR0/(alpha*beta))^2;
p1 = 2^(alpha + beta - 3)/(Pi*Sqrt[Pi]*Gamma[alpha]*Gamma[beta]);


Then use arbitrary-precision of at least 10 digits rather than machine precision

{#, N[MeijerG[{{a1, a2, a3, a4}, {a5}}, {{b1, b2}, {}}, z], #]} & /@
Range[3, 20] // Grid 