Asked by Notae
on 13 Oct 2018

On the 'Prime Obsession' book, 20 to the power 1/2 + 14.134725i is −0.302303 − 4.46191i. Take the logarithmic integral—the Li function—of that to get the answer −0.105384 + 3.14749i.

I tried as belows, but failed.

>> a=20^(1/2+14.134725i)

a =

-0.3023 - 4.4619i % OK

>> logint(a)-logint(2)

ans =

0.9528 - 3.9138i % Wrong

Answer by David Goodmanson
on 15 Oct 2018

Edited by David Goodmanson
on 15 Oct 2018

Accepted Answer

Hi Notae,

The reason for this is something that Derbyshire relegated to a footnote several pages before (p. 335, 128). If you look at the logarithmic integral, its primary definition is

Li(z) = Ei(log(z))

(Abramowitz & Stegun 5.1.3) where Ei is a particular exponential integral which Matlab does have, although that fact is not so obvious and you need the symbolic toolbox. [there is a workaround for Ei, see below]. However, there is a 2pi ambiguity when taking the log, since for any integer n, log(z) and log(z)+2*pi*i*n are equally valid answers. That means that Ei(logz)) depends on n and you have to pin down the actual angle.

If z = Ae^(i*b) where b is restricted to the range -pi<b<=pi in the first place, then Li(z) and Ei(log(z)) give the same result.

b = logint(2+i)

c = ei(log(2+i))

b = 1.4113 + 1.2247i

c = 1.4113 + 1.2247i

In this case, though,

a = 20^(.5+14.134725i)

and you have to keep track of the number of times you go around the circle so as to remove ambiguity.

% a = 20^(.5+14.134725i)

loga = log(20)*(.5+14.134725i)

loga = 1.4979 +42.3439i % large angle, no 2pi ambiguity

format long

ei(loga)

ans = -0.105384042414102 + 3.147487521958689i

as advertised. That's what he did in footnote 128.

If you don't have the symbolic toolbox, since expint is available in basic Matlab you can use

function y = ei_alt(z)

y = -expint(-z) + (log(z)-log(1/z))/2 - log(-z);

end

Ei(logz)) can distinguish how many times you go around the circle, but Li(z) as defined on p.114 (and generalized so that the path of integration is a straight line from 0 to complex number z) cannot. To say as he did on p. 340 that he used the Li function is highly misleading, as you found out.

Notae
on 18 Oct 2018

Very thankful for your answer. I tried as below without reading your answer. >> c=log(20^a) c = 1.4979 - 1.6384i >> ei(c) ans = 1.9980 - 3.9138i

I saw it on the 'http://demonstrations.wolfram.com/HowTheZerosOfTheZetaFunctionPredictTheDistributionOfPrimes/' They say 'Ei(p*log(x), where p(rho) is the complex zero of the zeta function. In this formula, (Mathematica's built-in function ExpIntegralEi[z]) is the generalization of the logarithmic integral to complex numbers.' And I read logint(z)=ei(log(z)) by MATLAB doc. So I tried as abovee. But failed again. Anyway logint(z) works well if a input arg. is complex number. So ei(log(z)) doesn't neccessory.

Notae
on 19 Oct 2018

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 6 Comments

## Notae (view profile)

Direct link to this comment:https://www.mathworks.com/matlabcentral/answers/423785-does-logint-function-work-well-for-pnt#comment_621828

## KALYAN ACHARJYA (view profile)

Direct link to this comment:https://www.mathworks.com/matlabcentral/answers/423785-does-logint-function-work-well-for-pnt#comment_621836

## the cyclist (view profile)

Direct link to this comment:https://www.mathworks.com/matlabcentral/answers/423785-does-logint-function-work-well-for-pnt#comment_621919

## Notae (view profile)

Direct link to this comment:https://www.mathworks.com/matlabcentral/answers/423785-does-logint-function-work-well-for-pnt#comment_622123

## the cyclist (view profile)

Direct link to this comment:https://www.mathworks.com/matlabcentral/answers/423785-does-logint-function-work-well-for-pnt#comment_622405

## Notae (view profile)

Direct link to this comment:https://www.mathworks.com/matlabcentral/answers/423785-does-logint-function-work-well-for-pnt#comment_622482

Sign in to comment.