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.
62 lines
1.7 KiB
62 lines
1.7 KiB
|
|
FUNCTION XCDIL(Z)
|
|
c
|
|
c CALLED BY XSPENZ FOR THE CALCULATION OF THE EULER DILOG
|
|
c completely rewritten 13-06-2008
|
|
c evaluates Li_2(z) for complex z with |z|<1, Real(z)<1/2
|
|
c
|
|
implicit none
|
|
include 'types.f'
|
|
include 'constants.f'
|
|
COMPLEX(dp)::XCDIL
|
|
integer::j,Num
|
|
COMPLEX(dp)::Z,Z1,CLZ,XLI2
|
|
real(dp)::AAZ,REZ
|
|
|
|
real(dp),parameter::C2fac(20)=
|
|
& (/ -0.027777777777777777778e0_dp,
|
|
& 0.00027777777777777777778e0_dp,
|
|
& -4.7241118669690098262 e-6_dp,
|
|
& 9.1857730746619635509 e-8_dp,
|
|
& -1.8978869988970999072 e-9_dp,
|
|
& 4.0647616451442255268 e-11_dp,
|
|
& -8.9216910204564525552 e-13_dp,
|
|
& 1.9939295860721075687 e-14_dp,
|
|
& -4.5189800296199181917 e-16_dp,
|
|
& 1.0356517612181247014 e-17_dp,
|
|
& -2.3952186210261867457 e-19_dp,
|
|
& 5.5817858743250093363 e-21_dp,
|
|
& -1.3091507554183212858 e-22_dp,
|
|
& 3.0874198024267402932 e-24_dp,
|
|
& -7.3159756527022034204 e-26_dp,
|
|
& 1.740845657234000741 e-27_dp,
|
|
& -4.1576356446138997196 e-29_dp,
|
|
& 9.9621484882846221032 e-31_dp,
|
|
& -2.3940344248961653005 e-32_dp,
|
|
& 5.7683473553673900843 e-34_dp/)
|
|
c
|
|
c ... Num = number of terms in sum xcdil(z) for Li_2(z)
|
|
c Num=12 gives more then 12 safe digits
|
|
c
|
|
Num=12
|
|
c
|
|
|
|
AAZ=ABS(Z)
|
|
REZ=REAL(Z)
|
|
IF(AAZ-1.) 4,2,3
|
|
3 PRINT 1000
|
|
1000 FORMAT(3X,6 (15HERROR MODULUS Z) )
|
|
2 IF(REZ-.5) 4,4,3
|
|
4 CONTINUE
|
|
Z1=DCMPLX(1.D0,0.D0)-Z
|
|
CLZ=LOG(Z1)
|
|
xli2=-CLZ-.25*(CLZ)**2
|
|
do 13 j=1,Num
|
|
xli2 = xli2 + c2fac(j) * clz**(2*j+1)
|
|
13 continue
|
|
xcdil=xli2
|
|
RETURN
|
|
END
|
|
|
|
|
|
|