Blame view

fvn_fnlib/daws.f 5.53 KB
38581db0c   daniau   git-svn-id: https...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
        function daws (x)
  c may 1980 edition.  w. fullerton c3, los alamos scientific lab.
        dimension dawcs(13), daw2cs(29), dawacs(26)
        external  csevl, inits, r1mach
  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
        data daw cs( 1) /   -.0063517343 75145949e0 /
        data daw cs( 2) /   -.2294071479 6773869e0 /
        data daw cs( 3) /    .0221305009 39084764e0 /
        data daw cs( 4) /   -.0015492654 53892985e0 /
        data daw cs( 5) /    .0000849732 77156849e0 /
        data daw cs( 6) /   -.0000038282 66270972e0 /
        data daw cs( 7) /    .0000001462 85480625e0 /
        data daw cs( 8) /   -.0000000048 51982381e0 /
        data daw cs( 9) /    .0000000001 42146357e0 /
        data daw cs(10) /   -.0000000000 03728836e0 /
        data daw cs(11) /    .0000000000 00088549e0 /
        data daw cs(12) /   -.0000000000 00001920e0 /
        data daw cs(13) /    .0000000000 00000038e0 /
  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
        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 /
  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
        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 /
  c
        data ntdaw, ntdaw2, ntdawa, xsml, xbig, xmax / 3*0, 3*0.0 /
  c
        if (ntdaw.ne.0) go to 10
        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 (amin1 (-alog(2.*r1mach(1)), alog(r1mach(2))) - 0.01)
  c
   10   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 seteru (39hdaws    abs(x) so large daws underflows, 39, 1, 0)
        daws = 0.0
        return
  c
        end