* * $Id: dilog64.F,v 1.1.1.1 1996/04/01 15:02:05 mclareni Exp $ * * $Log: dilog64.F,v $ * Revision 1.1.1.1 1996/04/01 15:02:05 mclareni * Mathlib gen * * #include "gen/pilot.h" #if defined(CERNLIB_DOUBLE) FUNCTION DDILOG(X) #include "gen/imp64.inc" #endif #if !defined(CERNLIB_DOUBLE) FUNCTION RDILOG(X) #endif DIMENSION C(0:19) PARAMETER (Z1 = 1, HF = Z1/2) PARAMETER (PI = 3.14159 26535 89793 24D0) PARAMETER (PI3 = PI**2/3, PI6 = PI**2/6, PI12 = PI**2/12) DATA C( 0) / 0.42996 69356 08136 97D0/ DATA C( 1) / 0.40975 98753 30771 05D0/ DATA C( 2) /-0.01858 84366 50145 92D0/ DATA C( 3) / 0.00145 75108 40622 68D0/ DATA C( 4) /-0.00014 30418 44423 40D0/ DATA C( 5) / 0.00001 58841 55418 80D0/ DATA C( 6) /-0.00000 19078 49593 87D0/ DATA C( 7) / 0.00000 02419 51808 54D0/ DATA C( 8) /-0.00000 00319 33412 74D0/ DATA C( 9) / 0.00000 00043 45450 63D0/ DATA C(10) /-0.00000 00006 05784 80D0/ DATA C(11) / 0.00000 00000 86120 98D0/ DATA C(12) /-0.00000 00000 12443 32D0/ DATA C(13) / 0.00000 00000 01822 56D0/ DATA C(14) /-0.00000 00000 00270 07D0/ DATA C(15) / 0.00000 00000 00040 42D0/ DATA C(16) /-0.00000 00000 00006 10D0/ DATA C(17) / 0.00000 00000 00000 93D0/ DATA C(18) /-0.00000 00000 00000 14D0/ DATA C(19) /+0.00000 00000 00000 02D0/ IF(X .EQ. 1) THEN H=PI6 ELSEIF(X .EQ. -1) THEN H=-PI12 ELSE T=-X IF(T .LE. -2) THEN Y=-1/(1+T) S=1 A=-PI3+HF*(LOG(-T)**2-LOG(1+1/T)**2) ELSEIF(T .LT. -1) THEN Y=-1-T S=-1 A=LOG(-T) A=-PI6+A*(A+LOG(1+1/T)) ELSE IF(T .LE. -HF) THEN Y=-(1+T)/T S=1 A=LOG(-T) A=-PI6+A*(-HF*A+LOG(1+T)) ELSE IF(T .LT. 0) THEN Y=-T/(1+T) S=-1 A=HF*LOG(1+T)**2 ELSE IF(T .LE. 1) THEN Y=T S=1 A=0 ELSE Y=1/T S=-1 A=PI6+HF*LOG(T)**2 ENDIF H=Y+Y-1 ALFA=H+H B1=0 B2=0 DO 1 I = 19,0,-1 B0=C(I)+ALFA*B1-B2 B2=B1 1 B1=B0 H=-(S*(B0-H*B2)+A) ENDIF #if defined(CERNLIB_DOUBLE) DDILOG=H #endif #if !defined(CERNLIB_DOUBLE) DILOG=H #endif RETURN END