123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- *DECK DAWS
- FUNCTION DAWS (X)
- C***BEGIN PROLOGUE DAWS
- C***PURPOSE Compute Dawson's function.
- C***LIBRARY SLATEC (FNLIB)
- C***CATEGORY C8C
- C***TYPE SINGLE PRECISION (DAWS-S, DDAWS-D)
- C***KEYWORDS DAWSON'S FUNCTION, FNLIB, SPECIAL FUNCTIONS
- C***AUTHOR Fullerton, W., (LANL)
- C***DESCRIPTION
- C
- C DAWS(X) calculates Dawson's integral for real argument X.
- C
- C Series for DAW on the interval 0. to 1.00000D+00
- C with weighted error 3.83E-17
- C log weighted error 16.42
- C significant figures required 15.78
- C decimal places required 16.97
- C
- C Series for DAW2 on the interval 0. to 1.60000D+01
- C with weighted error 5.17E-17
- C log weighted error 16.29
- C significant figures required 15.90
- C decimal places required 17.02
- C
- C Series for DAWA on the interval 0. to 6.25000D-02
- C with weighted error 2.24E-17
- C log weighted error 16.65
- C significant figures required 14.73
- C decimal places required 17.36
- C
- C***REFERENCES (NONE)
- C***ROUTINES CALLED CSEVL, INITS, R1MACH, XERMSG
- C***REVISION HISTORY (YYMMDD)
- C 780401 DATE WRITTEN
- C 890531 Changed all specific intrinsics to generic. (WRB)
- C 890531 REVISION DATE from Version 3.2
- C 891214 Prologue converted to Version 4.0 format. (BAB)
- C 900315 CALLs to XERROR changed to CALLs to XERMSG. (THJ)
- C 920618 Removed space from variable names. (RWC, WRB)
- C***END PROLOGUE DAWS
- DIMENSION DAWCS(13), DAW2CS(29), DAWACS(26)
- LOGICAL FIRST
- SAVE DAWCS, DAW2CS, DAWACS, NTDAW, NTDAW2, NTDAWA,
- 1 XSML, XBIG, XMAX, FIRST
- DATA DAWCS( 1) / -.0063517343 75145949E0 /
- DATA DAWCS( 2) / -.2294071479 6773869E0 /
- DATA DAWCS( 3) / .0221305009 39084764E0 /
- DATA DAWCS( 4) / -.0015492654 53892985E0 /
- DATA DAWCS( 5) / .0000849732 77156849E0 /
- DATA DAWCS( 6) / -.0000038282 66270972E0 /
- DATA DAWCS( 7) / .0000001462 85480625E0 /
- DATA DAWCS( 8) / -.0000000048 51982381E0 /
- DATA DAWCS( 9) / .0000000001 42146357E0 /
- DATA DAWCS(10) / -.0000000000 03728836E0 /
- DATA DAWCS(11) / .0000000000 00088549E0 /
- DATA DAWCS(12) / -.0000000000 00001920E0 /
- DATA DAWCS(13) / .0000000000 00000038E0 /
- DATA DAW2CS( 1) / -.0568865441 05215527E0 /
- DATA DAW2CS( 2) / -.3181134699 6168131E0 /
- DATA DAW2CS( 3) / .2087384541 3642237E0 /
- DATA DAW2CS( 4) / -.1247540991 3779131E0 /
- DATA DAW2CS( 5) / .0678693051 86676777E0 /
- DATA DAW2CS( 6) / -.0336591448 95270940E0 /
- DATA DAW2CS( 7) / .0152607812 71987972E0 /
- DATA DAW2CS( 8) / -.0063483709 62596214E0 /
- DATA DAW2CS( 9) / .0024326740 92074852E0 /
- DATA DAW2CS(10) / -.0008621954 14910650E0 /
- DATA DAW2CS(11) / .0002837657 33363216E0 /
- DATA DAW2CS(12) / -.0000870575 49874170E0 /
- DATA DAW2CS(13) / .0000249868 49985481E0 /
- DATA DAW2CS(14) / -.0000067319 28676416E0 /
- DATA DAW2CS(15) / .0000017078 57878557E0 /
- DATA DAW2CS(16) / -.0000004091 75512264E0 /
- DATA DAW2CS(17) / .0000000928 28292216E0 /
- DATA DAW2CS(18) / -.0000000199 91403610E0 /
- DATA DAW2CS(19) / .0000000040 96349064E0 /
- DATA DAW2CS(20) / -.0000000008 00324095E0 /
- DATA DAW2CS(21) / .0000000001 49385031E0 /
- DATA DAW2CS(22) / -.0000000000 26687999E0 /
- DATA DAW2CS(23) / .0000000000 04571221E0 /
- DATA DAW2CS(24) / -.0000000000 00751873E0 /
- DATA DAW2CS(25) / .0000000000 00118931E0 /
- DATA DAW2CS(26) / -.0000000000 00018116E0 /
- DATA DAW2CS(27) / .0000000000 00002661E0 /
- DATA DAW2CS(28) / -.0000000000 00000377E0 /
- DATA DAW2CS(29) / .0000000000 00000051E0 /
- DATA DAWACS( 1) / .0169048563 7765704E0 /
- DATA DAWACS( 2) / .0086832522 7840695E0 /
- DATA DAWACS( 3) / .0002424864 0424177E0 /
- DATA DAWACS( 4) / .0000126118 2399572E0 /
- DATA DAWACS( 5) / .0000010664 5331463E0 /
- DATA DAWACS( 6) / .0000001358 1597947E0 /
- DATA DAWACS( 7) / .0000000217 1042356E0 /
- DATA DAWACS( 8) / .0000000028 6701050E0 /
- DATA DAWACS( 9) / -.0000000001 9013363E0 /
- DATA DAWACS(10) / -.0000000003 0977804E0 /
- DATA DAWACS(11) / -.0000000001 0294148E0 /
- DATA DAWACS(12) / -.0000000000 0626035E0 /
- DATA DAWACS(13) / .0000000000 0856313E0 /
- DATA DAWACS(14) / .0000000000 0303304E0 /
- DATA DAWACS(15) / -.0000000000 0025236E0 /
- DATA DAWACS(16) / -.0000000000 0042106E0 /
- DATA DAWACS(17) / -.0000000000 0004431E0 /
- DATA DAWACS(18) / .0000000000 0004911E0 /
- DATA DAWACS(19) / .0000000000 0001235E0 /
- DATA DAWACS(20) / -.0000000000 0000578E0 /
- DATA DAWACS(21) / -.0000000000 0000228E0 /
- DATA DAWACS(22) / .0000000000 0000076E0 /
- DATA DAWACS(23) / .0000000000 0000038E0 /
- DATA DAWACS(24) / -.0000000000 0000011E0 /
- DATA DAWACS(25) / -.0000000000 0000006E0 /
- DATA DAWACS(26) / .0000000000 0000002E0 /
- DATA FIRST /.TRUE./
- C***FIRST EXECUTABLE STATEMENT DAWS
- IF (FIRST) THEN
- EPS = R1MACH(3)
- NTDAW = INITS (DAWCS, 13, 0.1*EPS)
- NTDAW2 = INITS (DAW2CS, 29, 0.1*EPS)
- NTDAWA = INITS (DAWACS, 26, 0.1*EPS)
- C
- XSML = SQRT (1.5*EPS)
- XBIG = SQRT (0.5/EPS)
- XMAX = EXP (MIN (-LOG(2.*R1MACH(1)), LOG(R1MACH(2))) - 1.0)
- ENDIF
- FIRST = .FALSE.
- C
- Y = ABS(X)
- IF (Y.GT.1.0) GO TO 20
- C
- DAWS = X
- IF (Y.LE.XSML) RETURN
- C
- DAWS = X * (0.75 + CSEVL (2.0*Y*Y-1.0, DAWCS, NTDAW))
- RETURN
- C
- 20 IF (Y.GT.4.0) GO TO 30
- DAWS = X * (0.25 + CSEVL (0.125*Y*Y-1.0, DAW2CS, NTDAW2))
- RETURN
- C
- 30 IF (Y.GT.XMAX) GO TO 40
- DAWS = 0.5/X
- IF (Y.GT.XBIG) RETURN
- C
- DAWS = (0.5 + CSEVL (32.0/Y**2-1.0, DAWACS, NTDAWA)) / X
- RETURN
- C
- 40 CALL XERMSG ('SLATEC', 'DAWS', 'ABS(X) SO LARGE DAWS UNDERFLOWS',
- + 1, 1)
- DAWS = 0.0
- RETURN
- C
- END
|