You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

156 lines
5.5 KiB

c ------------------------------------------------
double complex function HPL2arm1(n1,n2,x)
implicit none
integer n1,n2,j,bcflag,s,szp
double complex x,ris,myi,zp,llzp
double precision pi, zeta2,ll2,xre
pi=3.1415926535897932385D0
zeta2=pi**2/6d0
myi = dcmplx(0d0,1d0)
ll2 = dlog(2d0)
bcflag = 0
j=1+(n2+1)+(n1+1)*3
ris = dcmplx(0d0,0d0)
c--- +i*epsilon to get branch cuts right ---
if (dimag(x).eq.0d0) then
x = x + dcmplx(0d0,1d-60)
bcflag = 1
endif
c---
select case(j)
case(1) !-1-1
zp = x+1d0
llzp = log(zp)
ris = (llzp**2)/2d0
case(2) !-10
zp = x+1d0
llzp = log(zp)
szp = s(zp)
ris = (pi**2)/6d0 - zp - (zp**2)/4d0 - (zp*
& *3)/9d0 - (zp**4)/16d0 - (zp**5)/25d0 - (zp**6)/36d0 -
& (zp**7)/49d0 - (zp**8)/64d0 - (zp**9)/81d0 + myi*pi*szp
& *llzp
case(3) !-11
zp = x+1d0
llzp = log(zp)
ris = -((pi**2)/12d0) + (zp)/2d0 + (zp**2)/
& 16d0 + (zp**3)/72d0 + (zp**4)/256d0 + (zp**5)/800d0 + (
& zp**6)/2304d0 + (zp**7)/6272d0 + (zp**8)/16384d0 + (zp*
& *9)/41472d0 + (ll2**2)/2d0 - ll2*llzp
case(4) !0-1
zp = x+1d0
llzp = log(zp)
ris = -((pi**2)/6d0) + zp*(1 - llzp) + zp**
& 2*(1d0/4d0 - (llzp)/2d0) + zp**3*(1d0/9d0 - (llzp)/3d0)
& + zp**4*(1d0/16d0 - (llzp)/4d0) + zp**5*(1d0/25d0 - (l
& lzp)/5d0) + zp**6*(1d0/36d0 - (llzp)/6d0) + zp**7*(1d0/
& 49d0 - (llzp)/7d0) + zp**8*(1d0/64d0 - (llzp)/8d0) + zp
& **9*(1d0/81d0 - (llzp)/9d0)
case(5) !00
zp = x+1d0
szp = s(zp)
ris = -((pi**2)/2d0) - myi*pi*szp*zp + (1d0
& /2d0 - (myi*pi*szp)/2d0)*zp**2 + (1d0/2d0 - (myi*pi*szp
& )/3d0)*zp**3 + (11d0/24d0 - (myi*pi*szp)/4d0)*zp**4 + (
& 5d0/12d0 - (myi*pi*szp)/5d0)*zp**5 + (137d0/360d0 - (my
& i*pi*szp)/6d0)*zp**6 + (7d0/20d0 - (myi*pi*szp)/7d0)*zp
& **7 + (363d0/1120d0 - (myi*pi*szp)/8d0)*zp**8 + (761d0/
& 2520d0 - (myi*pi*szp)/9d0)*zp**9
case(6) !01
zp = x+1d0
ris = -((pi**2)/12d0) + zp*ll2 + zp**2*(-(1
& d0/4d0) + (ll2)/2d0) + zp**3*(-(5d0/24d0) + (ll2)/3d0)
& + zp**4*(-(1d0/6d0) + (ll2)/4d0) + zp**5*(-(131d0/960d0
& ) + (ll2)/5d0) + zp**6*(-(661d0/5760d0) + (ll2)/6d0) +
& zp**7*(-(1327d0/13440d0) + (ll2)/7d0) + zp**8*(-(1163d0
& /13440d0) + (ll2)/8d0) + zp**9*(-(148969d0/1935360d0) +
& (ll2)/9d0)
case(7) !1-1
zp = x+1d0
llzp = log(zp)
ris = (pi**2)/12d0 - (ll2**2)/2d0 + zp**5*(
& -(1d0/800d0) + (llzp)/160d0) + zp**8*(-(1d0/16384d0) +
& (llzp)/2048d0) + zp**3*(-(1d0/72d0) + (llzp)/24d0) + zp
& *(-(1d0/2d0) + (llzp)/2d0) + zp**6*(-(1d0/2304d0) + (ll
& zp)/384d0) + zp**9*(-(1d0/41472d0) + (llzp)/4608d0) + z
& p**4*(-(1d0/256d0) + (llzp)/64d0) + zp**7*(-(1d0/6272d0
& ) + (llzp)/896d0) + zp**2*(-(1d0/16d0) + (llzp)/8d0)
case(8) !10
zp = x+1d0
szp = s(zp)
ris = (pi**2)/12d0 + (myi*pi*szp*zp)/2d0 +
& (-(1d0/4d0) + (myi*pi*szp)/8d0)*zp**2 + (-(1d0/6d0) + (
& myi*pi*szp)/24d0)*zp**3 + (-(5d0/48d0) + (myi*pi*szp)/6
& 4d0)*zp**4 + (-(1d0/15d0) + (myi*pi*szp)/160d0)*zp**5 +
& (-(2d0/45d0) + (myi*pi*szp)/384d0)*zp**6 + (-(13d0/420
& d0) + (myi*pi*szp)/896d0)*zp**7 + (-(151d0/6720d0) + (m
& yi*pi*szp)/2048d0)*zp**8 + (-(16d0/945d0) + (myi*pi*szp
& )/4608d0)*zp**9 - myi*pi*szp*ll2
case(9) !11
zp = x+1d0
ris = -((zp*ll2)/2d0) + (ll2**2)/2d0 + zp**
& 5*(5d0/384d0 - (ll2)/160d0) + zp**8*(363d0/286720d0 - (
& ll2)/2048d0) + zp**3*(1d0/16d0 - (ll2)/24d0) + zp**6*(1
& 37d0/23040d0 - (ll2)/384d0) + zp**9*(761d0/1290240d0 -
& (ll2)/4608d0) + zp**4*(11d0/384d0 - (ll2)/64d0) + zp**7
& *(7d0/2560d0 - (ll2)/896d0) + zp**2*(1d0/8d0 - (ll2)/8d
& 0)
c End of expansions around x = -1
end select
c --- set the imaginary part back to zero if it has been modified to
c --- get the branch cuts right (and should be zero).
if (bcflag.eq.1) then
xre = dreal(x)
if (n2.eq.0.and.xre.gt.0d0) then
if (xre.lt.1d0) then
ris = dcmplx(dreal(ris),0d0)
endif
c
else if (n2.eq.1.and.xre.lt.1d0) then
if (n1.ne.-1) then
ris = dcmplx(dreal(ris),0d0)
else if (xre.gt.-1d0) then
ris = dcmplx(dreal(ris),0d0)
endif
c
else if (n2.eq.-1.and.xre.gt.-1d0) then
if (n1.ne.1) then
ris = dcmplx(dreal(ris),0d0)
else if (xre.lt.1d0) then
ris = dcmplx(dreal(ris),0d0)
endif
endif
endif
HPL2arm1=ris
return
end function