1*DECK SPENC 2 FUNCTION SPENC (X) 3C***BEGIN PROLOGUE SPENC 4C***PURPOSE Compute a form of Spence's integral due to K. Mitchell. 5C***LIBRARY SLATEC (FNLIB) 6C***CATEGORY C5 7C***TYPE SINGLE PRECISION (SPENC-S, DSPENC-D) 8C***KEYWORDS FNLIB, SPECIAL FUNCTIONS, SPENCE'S INTEGRAL 9C***AUTHOR Fullerton, W., (LANL) 10C***DESCRIPTION 11C 12C Evaluate a form of Spence's function defined by 13C integral from 0 to X of -LOG(1-Y)/Y DY. 14C For ABS(X) .LE. 1, the uniformly convergent expansion 15C SPENC = sum K=1,infinity X**K / K**2 is valid. 16C 17C Spence's function can be used to evaluate much more general integral 18C forms. For example, 19C integral from 0 to Z of LOG(A*X+B)/(C*X+D) DX = 20C LOG(ABS(B-A*D/C))*LOG(ABS(A*(C*X+D)/(A*D-B*C)))/C 21C - SPENC (A*(C*Z+D)/(A*D-B*C)) / C. 22C 23C Ref -- K. Mitchell, Philosophical Magazine, 40, p. 351 (1949). 24C Stegun and Abromowitz, AMS 55, p. 1004. 25C 26C 27C Series for SPEN on the interval 0. to 5.00000D-01 28C with weighted error 6.82E-17 29C log weighted error 16.17 30C significant figures required 15.22 31C decimal places required 16.81 32C 33C***REFERENCES (NONE) 34C***ROUTINES CALLED CSEVL, INITS, R1MACH 35C***REVISION HISTORY (YYMMDD) 36C 780201 DATE WRITTEN 37C 890531 Changed all specific intrinsics to generic. (WRB) 38C 890531 REVISION DATE from Version 3.2 39C 891214 Prologue converted to Version 4.0 format. (BAB) 40C***END PROLOGUE SPENC 41 DIMENSION SPENCS(19) 42 LOGICAL FIRST 43 SAVE SPENCS, PI26, NSPENC, XBIG, FIRST 44 DATA SPENCS( 1) / .1527365598 892406E0 / 45 DATA SPENCS( 2) / .0816965805 8051014E0 / 46 DATA SPENCS( 3) / .0058141571 4077873E0 / 47 DATA SPENCS( 4) / .0005371619 8145415E0 / 48 DATA SPENCS( 5) / .0000572470 4675185E0 / 49 DATA SPENCS( 6) / .0000066745 4612164E0 / 50 DATA SPENCS( 7) / .0000008276 4673397E0 / 51 DATA SPENCS( 8) / .0000001073 3156730E0 / 52 DATA SPENCS( 9) / .0000000144 0077294E0 / 53 DATA SPENCS(10) / .0000000019 8444202E0 / 54 DATA SPENCS(11) / .0000000002 7940058E0 / 55 DATA SPENCS(12) / .0000000000 4003991E0 / 56 DATA SPENCS(13) / .0000000000 0582346E0 / 57 DATA SPENCS(14) / .0000000000 0085767E0 / 58 DATA SPENCS(15) / .0000000000 0012768E0 / 59 DATA SPENCS(16) / .0000000000 0001918E0 / 60 DATA SPENCS(17) / .0000000000 0000290E0 / 61 DATA SPENCS(18) / .0000000000 0000044E0 / 62 DATA SPENCS(19) / .0000000000 0000006E0 / 63 DATA PI26 / 1.644934066 848226E0 / 64 DATA FIRST /.TRUE./ 65C***FIRST EXECUTABLE STATEMENT SPENC 66 IF (FIRST) THEN 67 NSPENC = INITS (SPENCS, 19, 0.1*R1MACH(3)) 68 XBIG = 1.0/R1MACH(3) 69 ENDIF 70 FIRST = .FALSE. 71C 72 IF (X.GT.2.0) GO TO 60 73 IF (X.GT.1.0) GO TO 50 74 IF (X.GT.0.5) GO TO 40 75 IF (X.GE.0.0) GO TO 30 76 IF (X.GT.(-1.)) GO TO 20 77C 78C HERE IF X .LE. -1.0 79C 80 ALN = LOG(1.0-X) 81 SPENC = -PI26 - 0.5*ALN*(2.0*LOG(-X)-ALN) 82 IF (X.GT.(-XBIG)) SPENC = SPENC 83 1 + (1.0 + CSEVL (4.0/(1.0-X)-1.0, SPENCS, NSPENC)) / (1.0-X) 84 RETURN 85C 86C -1.0 .LT. X .LT. 0.0 87C 88 20 SPENC = -0.5*LOG(1.0-X)**2 89 1 - X*(1.0 + CSEVL (4.0*X/(X-1.0)-1.0, SPENCS, NSPENC)) / (X-1.0) 90 RETURN 91C 92C 0.0 .LE. X .LE. 0.5 93C 94 30 SPENC = X*(1.0 + CSEVL (4.0*X-1.0, SPENCS, NSPENC)) 95 RETURN 96C 97C 0.5 .LT. X .LE. 1.0 98C 99 40 SPENC = PI26 100 IF (X.NE.1.0) SPENC = PI26 - LOG(X)*LOG(1.0-X) 101 1 - (1.0-X)*(1.0 + CSEVL (4.0*(1.0-X)-1.0, SPENCS, NSPENC)) 102 RETURN 103C 104C 1.0 .LT. X .LE. 2.0 105C 106 50 SPENC = PI26 - 0.5*LOG(X)*LOG((X-1.0)**2/X) 107 1 + (X-1.)*(1.0 + CSEVL (4.0*(X-1.)/X-1.0, SPENCS, NSPENC))/X 108 RETURN 109C 110C X .GT. 2.0 111C 112 60 SPENC = 2.0*PI26 - 0.5*LOG(X)**2 113 IF (X.LT.XBIG) SPENC = SPENC 114 1 - (1.0 + CSEVL (4.0/X-1.0, SPENCS, NSPENC))/X 115 RETURN 116C 117 END 118