c ------------------------------------------------ double complex function HPL3ar0(n1,n2,n3,x) implicit none integer n1,n2,n3,j,bcflag double complex x,ris,myi,llx double precision pi, zeta2, zeta3,ll2,xre pi=3.1415926535897932385D0 zeta3=1.20205690315959428539973816151d0 zeta2=pi**2/6d0 myi = dcmplx(0d0,1d0) ll2 = dlog(2d0) bcflag = 0 j=1+(n3+1)*1+(n2+1)*3+(n1+1)*9 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-1 ris = (x**3)/6d0 - (x**4)/4d0 + (7d0*x**5)/ & 24d0 - (5d0*x**6)/16d0 + (29d0*x**7)/90d0 - (469d0*x**8 & )/1440d0 + (29531d0*x**9)/90720d0 - (1303d0*x**10)/4032 & d0 case(2) !-1-10 llx = log(x) ris = -((3d0*x**2)/4d0) + (7d0*x**3)/12d0 - & (131d0*x**4)/288d0 + (53d0*x**5)/144d0 - (2213d0*x**6) & /7200d0 + (947d0*x**7)/3600d0 - (647707d0*x**8)/2822400 & d0 + (1290829d0*x**9)/6350400d0 - (11574649d0*x**10)/63 & 504000d0 + (x**2*llx)/2d0 - (x**3*llx)/2d0 + (11d0*x**4 & *llx)/24d0 - (5d0*x**5*llx)/12d0 + (137d0*x**6*llx)/360 & d0 - (7d0*x**7*llx)/20d0 + (363d0*x**8*llx)/1120d0 - (7 & 61d0*x**9*llx)/2520d0 + (7129d0*x**10*llx)/25200d0 case(3) !-1-11 ris = (x**3)/6d0 - (x**4)/6d0 + (7d0*x**5)/ & 40d0 - (119d0*x**6)/720d0 + (101d0*x**7)/630d0 - (305d0 & *x**8)/2016d0 + (13157d0*x**9)/90720d0 - (41603d0*x**10 & )/302400d0 case(4) !-10-1 ris = (x**2)/2d0 - (5d0*x**3)/12d0 + (49d0* & x**4)/144d0 - (41d0*x**5)/144d0 + (5269d0*x**6)/21600d0 & - (767d0*x**7)/3600d0 + (266681d0*x**8)/1411200d0 - (1 & 077749d0*x**9)/6350400d0 + (9778141d0*x**10)/63504000d0 case(5) !-100 llx = log(x) ris = x - (x**2)/8d0 + (x**3)/27d0 - (x**4) & /64d0 + (x**5)/125d0 - (x**6)/216d0 + (x**7)/343d0 - (x & **8)/512d0 + (x**9)/729d0 - (x**10)/1000d0 - x*llx + (x & **2*llx)/4d0 - (x**3*llx)/9d0 + (x**4*llx)/16d0 - (x**5 & *llx)/25d0 + (x**6*llx)/36d0 - (x**7*llx)/49d0 + (x**8* & llx)/64d0 - (x**9*llx)/81d0 + (x**10*llx)/100d0 + (x*ll & x**2)/2d0 - (x**2*llx**2)/4d0 + (x**3*llx**2)/6d0 - (x* & *4*llx**2)/8d0 + (x**5*llx**2)/10d0 - (x**6*llx**2)/12d & 0 + (x**7*llx**2)/14d0 - (x**8*llx**2)/16d0 + (x**9*llx & **2)/18d0 - (x**10*llx**2)/20d0 case(6) !-101 ris = (x**2)/2d0 - (x**3)/4d0 + (31d0*x**4) & /144d0 - (23d0*x**5)/144d0 + (3019d0*x**6)/21600d0 - (1 & 39d0*x**7)/1200d0 + (48877d0*x**8)/470400d0 - (191833d0 & *x**9)/2116800d0 + (5257891d0*x**10)/63504000d0 case(7) !-11-1 ris = (x**3)/6d0 - (x**4)/12d0 + (13d0*x**5 & )/120d0 - (17d0*x**6)/240d0 + (5d0*x**7)/63d0 - (589d0* & x**8)/10080d0 + (5669d0*x**9)/90720d0 - (85d0*x**10)/17 & 28d0 case(8) !-110 llx = log(x) ris = -((3d0*x**2)/4d0) + (11d0*x**3)/36d0 & - (77d0*x**4)/288d0 + (659d0*x**5)/3600d0 - (1163d0*x** & 6)/7200d0 + (2517d0*x**7)/19600d0 - (108919d0*x**8)/940 & 800d0 + (1875737d0*x**9)/19051200d0 - (5731399d0*x**10) & /63504000d0 + (x**2*llx)/2d0 - (x**3*llx)/6d0 + (5d0*x* & *4*llx)/24d0 - (7d0*x**5*llx)/60d0 + (47d0*x**6*llx)/36 & 0d0 - (37d0*x**7*llx)/420d0 + (319d0*x**8*llx)/3360d0 - & (533d0*x**9*llx)/7560d0 + (1879d0*x**10*llx)/25200d0 case(9) !-111 ris = (x**3)/6d0 + (11d0*x**5)/120d0 - (x** & 6)/144d0 + (19d0*x**7)/315d0 - (13d0*x**8)/1440d0 + (79 & 9d0*x**9)/18144d0 - (317d0*x**10)/33600d0 case(10) !0-1-1 ris = (x**2)/4d0 - (x**3)/6d0 + (11d0*x**4) & /96d0 - (x**5)/12d0 + (137d0*x**6)/2160d0 - (x**7)/20d0 & + (363d0*x**8)/8960d0 - (761d0*x**9)/22680d0 + (7129d0 & *x**10)/252000d0 case(11) !0-10 llx = log(x) ris = -2*x + (x**2)/4d0 - (2d0*x**3)/27d0 + & (x**4)/32d0 - (2d0*x**5)/125d0 + (x**6)/108d0 - (2d0*x & **7)/343d0 + (x**8)/256d0 - (2d0*x**9)/729d0 + (x**10)/ & 500d0 + x*llx - (x**2*llx)/4d0 + (x**3*llx)/9d0 - (x**4 & *llx)/16d0 + (x**5*llx)/25d0 - (x**6*llx)/36d0 + (x**7* & llx)/49d0 - (x**8*llx)/64d0 + (x**9*llx)/81d0 - (x**10* & llx)/100d0 case(12) !0-11 ris = (x**2)/4d0 - (x**3)/18d0 + (5d0*x**4) & /96d0 - (7d0*x**5)/300d0 + (47d0*x**6)/2160d0 - (37d0*x & **7)/2940d0 + (319d0*x**8)/26880d0 - (533d0*x**9)/68040 & d0 + (1879d0*x**10)/252000d0 case(13) !00-1 ris = x - (x**2)/8d0 + (x**3)/27d0 - (x**4) & /64d0 + (x**5)/125d0 - (x**6)/216d0 + (x**7)/343d0 - (x & **8)/512d0 + (x**9)/729d0 - (x**10)/1000d0 case(14) !000 llx = log(x) ris = (llx**3)/6d0 case(15) !001 ris = x + (x**2)/8d0 + (x**3)/27d0 + (x**4) & /64d0 + (x**5)/125d0 + (x**6)/216d0 + (x**7)/343d0 + (x & **8)/512d0 + (x**9)/729d0 + (x**10)/1000d0 case(16) !01-1 ris = (x**2)/4d0 + (x**3)/18d0 + (5d0*x**4) & /96d0 + (7d0*x**5)/300d0 + (47d0*x**6)/2160d0 + (37d0*x & **7)/2940d0 + (319d0*x**8)/26880d0 + (533d0*x**9)/68040 & d0 + (1879d0*x**10)/252000d0 case(17) !010 llx = log(x) ris = -2*x - (x**2)/4d0 - (2d0*x**3)/27d0 - & (x**4)/32d0 - (2d0*x**5)/125d0 - (x**6)/108d0 - (2d0*x & **7)/343d0 - (x**8)/256d0 - (2d0*x**9)/729d0 - (x**10)/ & 500d0 + x*llx + (x**2*llx)/4d0 + (x**3*llx)/9d0 + (x**4 & *llx)/16d0 + (x**5*llx)/25d0 + (x**6*llx)/36d0 + (x**7* & llx)/49d0 + (x**8*llx)/64d0 + (x**9*llx)/81d0 + (x**10* & llx)/100d0 case(18) !011 ris = (x**2)/4d0 + (x**3)/6d0 + (11d0*x**4) & /96d0 + (x**5)/12d0 + (137d0*x**6)/2160d0 + (x**7)/20d0 & + (363d0*x**8)/8960d0 + (761d0*x**9)/22680d0 + (7129d0 & *x**10)/252000d0 case(19) !1-1-1 ris = (x**3)/6d0 + (11d0*x**5)/120d0 + (x** & 6)/144d0 + (19d0*x**7)/315d0 + (13d0*x**8)/1440d0 + (79 & 9d0*x**9)/18144d0 + (317d0*x**10)/33600d0 case(20) !1-10 llx = log(x) ris = -((3d0*x**2)/4d0) - (11d0*x**3)/36d0 & - (77d0*x**4)/288d0 - (659d0*x**5)/3600d0 - (1163d0*x** & 6)/7200d0 - (2517d0*x**7)/19600d0 - (108919d0*x**8)/940 & 800d0 - (1875737d0*x**9)/19051200d0 - (5731399d0*x**10) & /63504000d0 + (x**2*llx)/2d0 + (x**3*llx)/6d0 + (5d0*x* & *4*llx)/24d0 + (7d0*x**5*llx)/60d0 + (47d0*x**6*llx)/36 & 0d0 + (37d0*x**7*llx)/420d0 + (319d0*x**8*llx)/3360d0 + & (533d0*x**9*llx)/7560d0 + (1879d0*x**10*llx)/25200d0 case(21) !1-11 ris = (x**3)/6d0 + (x**4)/12d0 + (13d0*x**5 & )/120d0 + (17d0*x**6)/240d0 + (5d0*x**7)/63d0 + (589d0* & x**8)/10080d0 + (5669d0*x**9)/90720d0 + (85d0*x**10)/17 & 28d0 case(22) !10-1 ris = (x**2)/2d0 + (x**3)/4d0 + (31d0*x**4) & /144d0 + (23d0*x**5)/144d0 + (3019d0*x**6)/21600d0 + (1 & 39d0*x**7)/1200d0 + (48877d0*x**8)/470400d0 + (191833d0 & *x**9)/2116800d0 + (5257891d0*x**10)/63504000d0 case(23) !100 llx = log(x) ris = x + (x**2)/8d0 + (x**3)/27d0 + (x**4) & /64d0 + (x**5)/125d0 + (x**6)/216d0 + (x**7)/343d0 + (x & **8)/512d0 + (x**9)/729d0 + (x**10)/1000d0 - x*llx - (x & **2*llx)/4d0 - (x**3*llx)/9d0 - (x**4*llx)/16d0 - (x**5 & *llx)/25d0 - (x**6*llx)/36d0 - (x**7*llx)/49d0 - (x**8* & llx)/64d0 - (x**9*llx)/81d0 - (x**10*llx)/100d0 + (x*ll & x**2)/2d0 + (x**2*llx**2)/4d0 + (x**3*llx**2)/6d0 + (x* & *4*llx**2)/8d0 + (x**5*llx**2)/10d0 + (x**6*llx**2)/12d & 0 + (x**7*llx**2)/14d0 + (x**8*llx**2)/16d0 + (x**9*llx & **2)/18d0 + (x**10*llx**2)/20d0 case(24) !101 ris = (x**2)/2d0 + (5d0*x**3)/12d0 + (49d0* & x**4)/144d0 + (41d0*x**5)/144d0 + (5269d0*x**6)/21600d0 & + (767d0*x**7)/3600d0 + (266681d0*x**8)/1411200d0 + (1 & 077749d0*x**9)/6350400d0 + (9778141d0*x**10)/63504000d0 case(25) !11-1 ris = (x**3)/6d0 + (x**4)/6d0 + (7d0*x**5)/ & 40d0 + (119d0*x**6)/720d0 + (101d0*x**7)/630d0 + (305d0 & *x**8)/2016d0 + (13157d0*x**9)/90720d0 + (41603d0*x**10 & )/302400d0 case(26) !110 llx = log(x) ris = -((3d0*x**2)/4d0) - (7d0*x**3)/12d0 - & (131d0*x**4)/288d0 - (53d0*x**5)/144d0 - (2213d0*x**6) & /7200d0 - (947d0*x**7)/3600d0 - (647707d0*x**8)/2822400 & d0 - (1290829d0*x**9)/6350400d0 - (11574649d0*x**10)/63 & 504000d0 + (x**2*llx)/2d0 + (x**3*llx)/2d0 + (11d0*x**4 & *llx)/24d0 + (5d0*x**5*llx)/12d0 + (137d0*x**6*llx)/360 & d0 + (7d0*x**7*llx)/20d0 + (363d0*x**8*llx)/1120d0 + (7 & 61d0*x**9*llx)/2520d0 + (7129d0*x**10*llx)/25200d0 case(27) !111 ris = (x**3)/6d0 + (x**4)/4d0 + (7d0*x**5)/ & 24d0 + (5d0*x**6)/16d0 + (29d0*x**7)/90d0 + (469d0*x**8 & )/1440d0 + (29531d0*x**9)/90720d0 + (1303d0*x**10)/4032 & d0 c End of expansions around x = 0 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 (n3.eq.0.and.xre.gt.0d0) then if (xre.lt.1d0) then ris = dcmplx(dreal(ris),0d0) endif c else if (n3.eq.1.and.xre.lt.1d0) then if (n1.ne.-1.and.n2.ne.-1) then ris = dcmplx(dreal(ris),0d0) else if (xre.gt.-1d0) then ris = dcmplx(dreal(ris),0d0) endif c else if (n3.eq.-1.and.xre.gt.-1d0) then if (n1.ne.1.and.n2.ne.1) then ris = dcmplx(dreal(ris),0d0) else if (xre.lt.1d0) then ris = dcmplx(dreal(ris),0d0) endif endif endif HPL3ar0=ris return end function