GNU Octave 10.1.0
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
 
Loading...
Searching...
No Matches
zunhj.f
Go to the documentation of this file.
1 SUBROUTINE zunhj(ZR, ZI, FNU, IPMTR, TOL, PHIR, PHII, ARGR, ARGI,
2 * ZETA1R, ZETA1I, ZETA2R, ZETA2I, ASUMR, ASUMI, BSUMR, BSUMI)
3C***BEGIN PROLOGUE ZUNHJ
4C***REFER TO ZBESI,ZBESK
5C
6C REFERENCES
7C HANDBOOK OF MATHEMATICAL FUNCTIONS BY M. ABRAMOWITZ AND I.A.
8C STEGUN, AMS55, NATIONAL BUREAU OF STANDARDS, 1965, CHAPTER 9.
9C
10C ASYMPTOTICS AND SPECIAL FUNCTIONS BY F.W.J. OLVER, ACADEMIC
11C PRESS, N.Y., 1974, PAGE 420
12C
13C ABSTRACT
14C ZUNHJ COMPUTES PARAMETERS FOR BESSEL FUNCTIONS C(FNU,Z) =
15C J(FNU,Z), Y(FNU,Z) OR H(I,FNU,Z) I=1,2 FOR LARGE ORDERS FNU
16C BY MEANS OF THE UNIFORM ASYMPTOTIC EXPANSION
17C
18C C(FNU,Z)=C1*PHI*( ASUM*AIRY(ARG) + C2*BSUM*DAIRY(ARG) )
19C
20C FOR PROPER CHOICES OF C1, C2, AIRY AND DAIRY WHERE AIRY IS
21C AN AIRY FUNCTION AND DAIRY IS ITS DERIVATIVE.
22C
23C (2/3)*FNU*ZETA**1.5 = ZETA1-ZETA2,
24C
25C ZETA1=0.5*FNU*CLOG((1+W)/(1-W)), ZETA2=FNU*W FOR SCALING
26C PURPOSES IN AIRY FUNCTIONS FROM CAIRY OR CBIRY.
27C
28C MCONJ=SIGN OF AIMAG(Z), BUT IS AMBIGUOUS WHEN Z IS REAL AND
29C MUST BE SPECIFIED. IPMTR=0 RETURNS ALL PARAMETERS. IPMTR=
30C 1 COMPUTES ALL EXCEPT ASUM AND BSUM.
31C
32C***ROUTINES CALLED XZABS,ZDIV,XZLOG,XZSQRT,D1MACH
33C***END PROLOGUE ZUNHJ
34C COMPLEX ARG,ASUM,BSUM,CFNU,CONE,CR,CZERO,DR,P,PHI,PRZTH,PTFN,
35C *RFN13,RTZTA,RZTH,SUMA,SUMB,TFN,T2,UP,W,W2,Z,ZA,ZB,ZC,ZETA,ZETA1,
36C *ZETA2,ZTH
37 DOUBLE PRECISION ALFA, ANG, AP, AR, ARGI, ARGR, ASUMI, ASUMR,
38 * atol, aw2, azth, beta, br, bsumi, bsumr, btol, c, conei, coner,
39 * cri, crr, dri, drr, ex1, ex2, fnu, fn13, fn23, gama, gpi, hpi,
40 * phii, phir, pi, pp, pr, przthi, przthr, ptfni, ptfnr, raw, raw2,
41 * razth, rfnu, rfnu2, rfn13, rtzti, rtztr, rzthi, rzthr, sti, str,
42 * sumai, sumar, sumbi, sumbr, test, tfni, tfnr, thpi, tol, tzai,
43 * tzar, t2i, t2r, upi, upr, wi, wr, w2i, w2r, zai, zar, zbi, zbr,
44 * zci, zcr, zeroi, zeror, zetai, zetar, zeta1i, zeta1r, zeta2i,
45 * zeta2r, zi, zr, zthi, zthr, xzabs, ac, d1mach
46 INTEGER IAS, IBS, IPMTR, IS, J, JR, JU, K, KMAX, KP1, KS, L, LR,
47 * lrp1, l1, l2, m, idum
48 dimension ar(14), br(14), c(105), alfa(180), beta(210), gama(30),
49 * ap(30), pr(30), pi(30), upr(14), upi(14), crr(14), cri(14),
50 * drr(14), dri(14)
51 DATA ar(1), ar(2), ar(3), ar(4), ar(5), ar(6), ar(7), ar(8),
52 1 ar(9), ar(10), ar(11), ar(12), ar(13), ar(14)/
53 2 1.00000000000000000d+00, 1.04166666666666667d-01,
54 3 8.35503472222222222d-02, 1.28226574556327160d-01,
55 4 2.91849026464140464d-01, 8.81627267443757652d-01,
56 5 3.32140828186276754d+00, 1.49957629868625547d+01,
57 6 7.89230130115865181d+01, 4.74451538868264323d+02,
58 7 3.20749009089066193d+03, 2.40865496408740049d+04,
59 8 1.98923119169509794d+05, 1.79190200777534383d+06/
60 DATA br(1), br(2), br(3), br(4), br(5), br(6), br(7), br(8),
61 1 br(9), br(10), br(11), br(12), br(13), br(14)/
62 2 1.00000000000000000d+00, -1.45833333333333333d-01,
63 3 -9.87413194444444444d-02, -1.43312053915895062d-01,
64 4 -3.17227202678413548d-01, -9.42429147957120249d-01,
65 5 -3.51120304082635426d+00, -1.57272636203680451d+01,
66 6 -8.22814390971859444d+01, -4.92355370523670524d+02,
67 7 -3.31621856854797251d+03, -2.48276742452085896d+04,
68 8 -2.04526587315129788d+05, -1.83844491706820990d+06/
69 DATA c(1), c(2), c(3), c(4), c(5), c(6), c(7), c(8), c(9), c(10),
70 1 c(11), c(12), c(13), c(14), c(15), c(16), c(17), c(18),
71 2 c(19), c(20), c(21), c(22), c(23), c(24)/
72 3 1.00000000000000000d+00, -2.08333333333333333d-01,
73 4 1.25000000000000000d-01, 3.34201388888888889d-01,
74 5 -4.01041666666666667d-01, 7.03125000000000000d-02,
75 6 -1.02581259645061728d+00, 1.84646267361111111d+00,
76 7 -8.91210937500000000d-01, 7.32421875000000000d-02,
77 8 4.66958442342624743d+00, -1.12070026162229938d+01,
78 9 8.78912353515625000d+00, -2.36408691406250000d+00,
79 a 1.12152099609375000d-01, -2.82120725582002449d+01,
80 b 8.46362176746007346d+01, -9.18182415432400174d+01,
81 c 4.25349987453884549d+01, -7.36879435947963170d+00,
82 d 2.27108001708984375d-01, 2.12570130039217123d+02,
83 e -7.65252468141181642d+02, 1.05999045252799988d+03/
84 DATA c(25), c(26), c(27), c(28), c(29), c(30), c(31), c(32),
85 1 c(33), c(34), c(35), c(36), c(37), c(38), c(39), c(40),
86 2 c(41), c(42), c(43), c(44), c(45), c(46), c(47), c(48)/
87 3 -6.99579627376132541d+02, 2.18190511744211590d+02,
88 4 -2.64914304869515555d+01, 5.72501420974731445d-01,
89 5 -1.91945766231840700d+03, 8.06172218173730938d+03,
90 6 -1.35865500064341374d+04, 1.16553933368645332d+04,
91 7 -5.30564697861340311d+03, 1.20090291321635246d+03,
92 8 -1.08090919788394656d+02, 1.72772750258445740d+00,
93 9 2.02042913309661486d+04, -9.69805983886375135d+04,
94 a 1.92547001232531532d+05, -2.03400177280415534d+05,
95 b 1.22200464983017460d+05, -4.11926549688975513d+04,
96 c 7.10951430248936372d+03, -4.93915304773088012d+02,
97 d 6.07404200127348304d+00, -2.42919187900551333d+05,
98 e 1.31176361466297720d+06, -2.99801591853810675d+06/
99 DATA c(49), c(50), c(51), c(52), c(53), c(54), c(55), c(56),
100 1 c(57), c(58), c(59), c(60), c(61), c(62), c(63), c(64),
101 2 c(65), c(66), c(67), c(68), c(69), c(70), c(71), c(72)/
102 3 3.76327129765640400d+06, -2.81356322658653411d+06,
103 4 1.26836527332162478d+06, -3.31645172484563578d+05,
104 5 4.52187689813627263d+04, -2.49983048181120962d+03,
105 6 2.43805296995560639d+01, 3.28446985307203782d+06,
106 7 -1.97068191184322269d+07, 5.09526024926646422d+07,
107 8 -7.41051482115326577d+07, 6.63445122747290267d+07,
108 9 -3.75671766607633513d+07, 1.32887671664218183d+07,
109 a -2.78561812808645469d+06, 3.08186404612662398d+05,
110 b -1.38860897537170405d+04, 1.10017140269246738d+02,
111 c -4.93292536645099620d+07, 3.25573074185765749d+08,
112 d -9.39462359681578403d+08, 1.55359689957058006d+09,
113 e -1.62108055210833708d+09, 1.10684281682301447d+09/
114 DATA c(73), c(74), c(75), c(76), c(77), c(78), c(79), c(80),
115 1 c(81), c(82), c(83), c(84), c(85), c(86), c(87), c(88),
116 2 c(89), c(90), c(91), c(92), c(93), c(94), c(95), c(96)/
117 3 -4.95889784275030309d+08, 1.42062907797533095d+08,
118 4 -2.44740627257387285d+07, 2.24376817792244943d+06,
119 5 -8.40054336030240853d+04, 5.51335896122020586d+02,
120 6 8.14789096118312115d+08, -5.86648149205184723d+09,
121 7 1.86882075092958249d+10, -3.46320433881587779d+10,
122 8 4.12801855797539740d+10, -3.30265997498007231d+10,
123 9 1.79542137311556001d+10, -6.56329379261928433d+09,
124 a 1.55927986487925751d+09, -2.25105661889415278d+08,
125 b 1.73951075539781645d+07, -5.49842327572288687d+05,
126 c 3.03809051092238427d+03, -1.46792612476956167d+10,
127 d 1.14498237732025810d+11, -3.99096175224466498d+11,
128 e 8.19218669548577329d+11, -1.09837515608122331d+12/
129 DATA c(97), c(98), c(99), c(100), c(101), c(102), c(103), c(104),
130 1 c(105)/
131 2 1.00815810686538209d+12, -6.45364869245376503d+11,
132 3 2.87900649906150589d+11, -8.78670721780232657d+10,
133 4 1.76347306068349694d+10, -2.16716498322379509d+09,
134 5 1.43157876718888981d+08, -3.87183344257261262d+06,
135 6 1.82577554742931747d+04/
136 DATA alfa(1), alfa(2), alfa(3), alfa(4), alfa(5), alfa(6),
137 1 alfa(7), alfa(8), alfa(9), alfa(10), alfa(11), alfa(12),
138 2 alfa(13), alfa(14), alfa(15), alfa(16), alfa(17), alfa(18),
139 3 alfa(19), alfa(20), alfa(21), alfa(22)/
140 4 -4.44444444444444444d-03, -9.22077922077922078d-04,
141 5 -8.84892884892884893d-05, 1.65927687832449737d-04,
142 6 2.46691372741792910d-04, 2.65995589346254780d-04,
143 7 2.61824297061500945d-04, 2.48730437344655609d-04,
144 8 2.32721040083232098d-04, 2.16362485712365082d-04,
145 9 2.00738858762752355d-04, 1.86267636637545172d-04,
146 a 1.73060775917876493d-04, 1.61091705929015752d-04,
147 b 1.50274774160908134d-04, 1.40503497391269794d-04,
148 c 1.31668816545922806d-04, 1.23667445598253261d-04,
149 d 1.16405271474737902d-04, 1.09798298372713369d-04,
150 e 1.03772410422992823d-04, 9.82626078369363448d-05/
151 DATA alfa(23), alfa(24), alfa(25), alfa(26), alfa(27), alfa(28),
152 1 alfa(29), alfa(30), alfa(31), alfa(32), alfa(33), alfa(34),
153 2 alfa(35), alfa(36), alfa(37), alfa(38), alfa(39), alfa(40),
154 3 alfa(41), alfa(42), alfa(43), alfa(44)/
155 4 9.32120517249503256d-05, 8.85710852478711718d-05,
156 5 8.42963105715700223d-05, 8.03497548407791151d-05,
157 6 7.66981345359207388d-05, 7.33122157481777809d-05,
158 7 7.01662625163141333d-05, 6.72375633790160292d-05,
159 8 6.93735541354588974d-04, 2.32241745182921654d-04,
160 9 -1.41986273556691197d-05, -1.16444931672048640d-04,
161 a -1.50803558053048762d-04, -1.55121924918096223d-04,
162 b -1.46809756646465549d-04, -1.33815503867491367d-04,
163 c -1.19744975684254051d-04, -1.06184319207974020d-04,
164 d -9.37699549891194492d-05, -8.26923045588193274d-05,
165 e -7.29374348155221211d-05, -6.44042357721016283d-05/
166 DATA alfa(45), alfa(46), alfa(47), alfa(48), alfa(49), alfa(50),
167 1 alfa(51), alfa(52), alfa(53), alfa(54), alfa(55), alfa(56),
168 2 alfa(57), alfa(58), alfa(59), alfa(60), alfa(61), alfa(62),
169 3 alfa(63), alfa(64), alfa(65), alfa(66)/
170 4 -5.69611566009369048d-05, -5.04731044303561628d-05,
171 5 -4.48134868008882786d-05, -3.98688727717598864d-05,
172 6 -3.55400532972042498d-05, -3.17414256609022480d-05,
173 7 -2.83996793904174811d-05, -2.54522720634870566d-05,
174 8 -2.28459297164724555d-05, -2.05352753106480604d-05,
175 9 -1.84816217627666085d-05, -1.66519330021393806d-05,
176 a -1.50179412980119482d-05, -1.35554031379040526d-05,
177 b -1.22434746473858131d-05, -1.10641884811308169d-05,
178 c -3.54211971457743841d-04, -1.56161263945159416d-04,
179 d 3.04465503594936410d-05, 1.30198655773242693d-04,
180 e 1.67471106699712269d-04, 1.70222587683592569d-04/
181 DATA alfa(67), alfa(68), alfa(69), alfa(70), alfa(71), alfa(72),
182 1 alfa(73), alfa(74), alfa(75), alfa(76), alfa(77), alfa(78),
183 2 alfa(79), alfa(80), alfa(81), alfa(82), alfa(83), alfa(84),
184 3 alfa(85), alfa(86), alfa(87), alfa(88)/
185 4 1.56501427608594704d-04, 1.36339170977445120d-04,
186 5 1.14886692029825128d-04, 9.45869093034688111d-05,
187 6 7.64498419250898258d-05, 6.07570334965197354d-05,
188 7 4.74394299290508799d-05, 3.62757512005344297d-05,
189 8 2.69939714979224901d-05, 1.93210938247939253d-05,
190 9 1.30056674793963203d-05, 7.82620866744496661d-06,
191 a 3.59257485819351583d-06, 1.44040049814251817d-07,
192 b -2.65396769697939116d-06, -4.91346867098485910d-06,
193 c -6.72739296091248287d-06, -8.17269379678657923d-06,
194 d -9.31304715093561232d-06, -1.02011418798016441d-05,
195 e -1.08805962510592880d-05, -1.13875481509603555d-05/
196 DATA alfa(89), alfa(90), alfa(91), alfa(92), alfa(93), alfa(94),
197 1 alfa(95), alfa(96), alfa(97), alfa(98), alfa(99), alfa(100),
198 2 alfa(101), alfa(102), alfa(103), alfa(104), alfa(105),
199 3 alfa(106), alfa(107), alfa(108), alfa(109), alfa(110)/
200 4 -1.17519675674556414d-05, -1.19987364870944141d-05,
201 5 3.78194199201772914d-04, 2.02471952761816167d-04,
202 6 -6.37938506318862408d-05, -2.38598230603005903d-04,
203 7 -3.10916256027361568d-04, -3.13680115247576316d-04,
204 8 -2.78950273791323387d-04, -2.28564082619141374d-04,
205 9 -1.75245280340846749d-04, -1.25544063060690348d-04,
206 a -8.22982872820208365d-05, -4.62860730588116458d-05,
207 b -1.72334302366962267d-05, 5.60690482304602267d-06,
208 c 2.31395443148286800d-05, 3.62642745856793957d-05,
209 d 4.58006124490188752d-05, 5.24595294959114050d-05,
210 e 5.68396208545815266d-05, 5.94349820393104052d-05/
211 DATA alfa(111), alfa(112), alfa(113), alfa(114), alfa(115),
212 1 alfa(116), alfa(117), alfa(118), alfa(119), alfa(120),
213 2 alfa(121), alfa(122), alfa(123), alfa(124), alfa(125),
214 3 alfa(126), alfa(127), alfa(128), alfa(129), alfa(130)/
215 4 6.06478527578421742d-05, 6.08023907788436497d-05,
216 5 6.01577894539460388d-05, 5.89199657344698500d-05,
217 6 5.72515823777593053d-05, 5.52804375585852577d-05,
218 7 5.31063773802880170d-05, 5.08069302012325706d-05,
219 8 4.84418647620094842d-05, 4.60568581607475370d-05,
220 9 -6.91141397288294174d-04, -4.29976633058871912d-04,
221 a 1.83067735980039018d-04, 6.60088147542014144d-04,
222 b 8.75964969951185931d-04, 8.77335235958235514d-04,
223 c 7.49369585378990637d-04, 5.63832329756980918d-04,
224 d 3.68059319971443156d-04, 1.88464535514455599d-04/
225 DATA alfa(131), alfa(132), alfa(133), alfa(134), alfa(135),
226 1 alfa(136), alfa(137), alfa(138), alfa(139), alfa(140),
227 2 alfa(141), alfa(142), alfa(143), alfa(144), alfa(145),
228 3 alfa(146), alfa(147), alfa(148), alfa(149), alfa(150)/
229 4 3.70663057664904149d-05, -8.28520220232137023d-05,
230 5 -1.72751952869172998d-04, -2.36314873605872983d-04,
231 6 -2.77966150694906658d-04, -3.02079514155456919d-04,
232 7 -3.12594712643820127d-04, -3.12872558758067163d-04,
233 8 -3.05678038466324377d-04, -2.93226470614557331d-04,
234 9 -2.77255655582934777d-04, -2.59103928467031709d-04,
235 a -2.39784014396480342d-04, -2.20048260045422848d-04,
236 b -2.00443911094971498d-04, -1.81358692210970687d-04,
237 c -1.63057674478657464d-04, -1.45712672175205844d-04,
238 d -1.29425421983924587d-04, -1.14245691942445952d-04/
239 DATA alfa(151), alfa(152), alfa(153), alfa(154), alfa(155),
240 1 alfa(156), alfa(157), alfa(158), alfa(159), alfa(160),
241 2 alfa(161), alfa(162), alfa(163), alfa(164), alfa(165),
242 3 alfa(166), alfa(167), alfa(168), alfa(169), alfa(170)/
243 4 1.92821964248775885d-03, 1.35592576302022234d-03,
244 5 -7.17858090421302995d-04, -2.58084802575270346d-03,
245 6 -3.49271130826168475d-03, -3.46986299340960628d-03,
246 7 -2.82285233351310182d-03, -1.88103076404891354d-03,
247 8 -8.89531718383947600d-04, 3.87912102631035228d-06,
248 9 7.28688540119691412d-04, 1.26566373053457758d-03,
249 a 1.62518158372674427d-03, 1.83203153216373172d-03,
250 b 1.91588388990527909d-03, 1.90588846755546138d-03,
251 c 1.82798982421825727d-03, 1.70389506421121530d-03,
252 d 1.55097127171097686d-03, 1.38261421852276159d-03/
253 DATA alfa(171), alfa(172), alfa(173), alfa(174), alfa(175),
254 1 alfa(176), alfa(177), alfa(178), alfa(179), alfa(180)/
255 2 1.20881424230064774d-03, 1.03676532638344962d-03,
256 3 8.71437918068619115d-04, 7.16080155297701002d-04,
257 4 5.72637002558129372d-04, 4.42089819465802277d-04,
258 5 3.24724948503090564d-04, 2.20342042730246599d-04,
259 6 1.28412898401353882d-04, 4.82005924552095464d-05/
260 DATA beta(1), beta(2), beta(3), beta(4), beta(5), beta(6),
261 1 beta(7), beta(8), beta(9), beta(10), beta(11), beta(12),
262 2 beta(13), beta(14), beta(15), beta(16), beta(17), beta(18),
263 3 beta(19), beta(20), beta(21), beta(22)/
264 4 1.79988721413553309d-02, 5.59964911064388073d-03,
265 5 2.88501402231132779d-03, 1.80096606761053941d-03,
266 6 1.24753110589199202d-03, 9.22878876572938311d-04,
267 7 7.14430421727287357d-04, 5.71787281789704872d-04,
268 8 4.69431007606481533d-04, 3.93232835462916638d-04,
269 9 3.34818889318297664d-04, 2.88952148495751517d-04,
270 a 2.52211615549573284d-04, 2.22280580798883327d-04,
271 b 1.97541838033062524d-04, 1.76836855019718004d-04,
272 c 1.59316899661821081d-04, 1.44347930197333986d-04,
273 d 1.31448068119965379d-04, 1.20245444949302884d-04,
274 e 1.10449144504599392d-04, 1.01828770740567258d-04/
275 DATA beta(23), beta(24), beta(25), beta(26), beta(27), beta(28),
276 1 beta(29), beta(30), beta(31), beta(32), beta(33), beta(34),
277 2 beta(35), beta(36), beta(37), beta(38), beta(39), beta(40),
278 3 beta(41), beta(42), beta(43), beta(44)/
279 4 9.41998224204237509d-05, 8.74130545753834437d-05,
280 5 8.13466262162801467d-05, 7.59002269646219339d-05,
281 6 7.09906300634153481d-05, 6.65482874842468183d-05,
282 7 6.25146958969275078d-05, 5.88403394426251749d-05,
283 8 -1.49282953213429172d-03, -8.78204709546389328d-04,
284 9 -5.02916549572034614d-04, -2.94822138512746025d-04,
285 a -1.75463996970782828d-04, -1.04008550460816434d-04,
286 b -5.96141953046457895d-05, -3.12038929076098340d-05,
287 c -1.26089735980230047d-05, -2.42892608575730389d-07,
288 d 8.05996165414273571d-06, 1.36507009262147391d-05,
289 e 1.73964125472926261d-05, 1.98672978842133780d-05/
290 DATA beta(45), beta(46), beta(47), beta(48), beta(49), beta(50),
291 1 beta(51), beta(52), beta(53), beta(54), beta(55), beta(56),
292 2 beta(57), beta(58), beta(59), beta(60), beta(61), beta(62),
293 3 beta(63), beta(64), beta(65), beta(66)/
294 4 2.14463263790822639d-05, 2.23954659232456514d-05,
295 5 2.28967783814712629d-05, 2.30785389811177817d-05,
296 6 2.30321976080909144d-05, 2.28236073720348722d-05,
297 7 2.25005881105292418d-05, 2.20981015361991429d-05,
298 8 2.16418427448103905d-05, 2.11507649256220843d-05,
299 9 2.06388749782170737d-05, 2.01165241997081666d-05,
300 a 1.95913450141179244d-05, 1.90689367910436740d-05,
301 b 1.85533719641636667d-05, 1.80475722259674218d-05,
302 c 5.52213076721292790d-04, 4.47932581552384646d-04,
303 d 2.79520653992020589d-04, 1.52468156198446602d-04,
304 e 6.93271105657043598d-05, 1.76258683069991397d-05/
305 DATA beta(67), beta(68), beta(69), beta(70), beta(71), beta(72),
306 1 beta(73), beta(74), beta(75), beta(76), beta(77), beta(78),
307 2 beta(79), beta(80), beta(81), beta(82), beta(83), beta(84),
308 3 beta(85), beta(86), beta(87), beta(88)/
309 4 -1.35744996343269136d-05, -3.17972413350427135d-05,
310 5 -4.18861861696693365d-05, -4.69004889379141029d-05,
311 6 -4.87665447413787352d-05, -4.87010031186735069d-05,
312 7 -4.74755620890086638d-05, -4.55813058138628452d-05,
313 8 -4.33309644511266036d-05, -4.09230193157750364d-05,
314 9 -3.84822638603221274d-05, -3.60857167535410501d-05,
315 a -3.37793306123367417d-05, -3.15888560772109621d-05,
316 b -2.95269561750807315d-05, -2.75978914828335759d-05,
317 c -2.58006174666883713d-05, -2.41308356761280200d-05,
318 d -2.25823509518346033d-05, -2.11479656768912971d-05,
319 e -1.98200638885294927d-05, -1.85909870801065077d-05/
320 DATA beta(89), beta(90), beta(91), beta(92), beta(93), beta(94),
321 1 beta(95), beta(96), beta(97), beta(98), beta(99), beta(100),
322 2 beta(101), beta(102), beta(103), beta(104), beta(105),
323 3 beta(106), beta(107), beta(108), beta(109), beta(110)/
324 4 -1.74532699844210224d-05, -1.63997823854497997d-05,
325 5 -4.74617796559959808d-04, -4.77864567147321487d-04,
326 6 -3.20390228067037603d-04, -1.61105016119962282d-04,
327 7 -4.25778101285435204d-05, 3.44571294294967503d-05,
328 8 7.97092684075674924d-05, 1.03138236708272200d-04,
329 9 1.12466775262204158d-04, 1.13103642108481389d-04,
330 a 1.08651634848774268d-04, 1.01437951597661973d-04,
331 b 9.29298396593363896d-05, 8.40293133016089978d-05,
332 c 7.52727991349134062d-05, 6.69632521975730872d-05,
333 d 5.92564547323194704d-05, 5.22169308826975567d-05,
334 e 4.58539485165360646d-05, 4.01445513891486808d-05/
335 DATA beta(111), beta(112), beta(113), beta(114), beta(115),
336 1 beta(116), beta(117), beta(118), beta(119), beta(120),
337 2 beta(121), beta(122), beta(123), beta(124), beta(125),
338 3 beta(126), beta(127), beta(128), beta(129), beta(130)/
339 4 3.50481730031328081d-05, 3.05157995034346659d-05,
340 5 2.64956119950516039d-05, 2.29363633690998152d-05,
341 6 1.97893056664021636d-05, 1.70091984636412623d-05,
342 7 1.45547428261524004d-05, 1.23886640995878413d-05,
343 8 1.04775876076583236d-05, 8.79179954978479373d-06,
344 9 7.36465810572578444d-04, 8.72790805146193976d-04,
345 a 6.22614862573135066d-04, 2.85998154194304147d-04,
346 b 3.84737672879366102d-06, -1.87906003636971558d-04,
347 c -2.97603646594554535d-04, -3.45998126832656348d-04,
348 d -3.53382470916037712d-04, -3.35715635775048757d-04/
349 DATA beta(131), beta(132), beta(133), beta(134), beta(135),
350 1 beta(136), beta(137), beta(138), beta(139), beta(140),
351 2 beta(141), beta(142), beta(143), beta(144), beta(145),
352 3 beta(146), beta(147), beta(148), beta(149), beta(150)/
353 4 -3.04321124789039809d-04, -2.66722723047612821d-04,
354 5 -2.27654214122819527d-04, -1.89922611854562356d-04,
355 6 -1.55058918599093870d-04, -1.23778240761873630d-04,
356 7 -9.62926147717644187d-05, -7.25178327714425337d-05,
357 8 -5.22070028895633801d-05, -3.50347750511900522d-05,
358 9 -2.06489761035551757d-05, -8.70106096849767054d-06,
359 a 1.13698686675100290d-06, 9.16426474122778849d-06,
360 b 1.56477785428872620d-05, 2.08223629482466847d-05,
361 c 2.48923381004595156d-05, 2.80340509574146325d-05,
362 d 3.03987774629861915d-05, 3.21156731406700616d-05/
363 DATA beta(151), beta(152), beta(153), beta(154), beta(155),
364 1 beta(156), beta(157), beta(158), beta(159), beta(160),
365 2 beta(161), beta(162), beta(163), beta(164), beta(165),
366 3 beta(166), beta(167), beta(168), beta(169), beta(170)/
367 4 -1.80182191963885708d-03, -2.43402962938042533d-03,
368 5 -1.83422663549856802d-03, -7.62204596354009765d-04,
369 6 2.39079475256927218d-04, 9.49266117176881141d-04,
370 7 1.34467449701540359d-03, 1.48457495259449178d-03,
371 8 1.44732339830617591d-03, 1.30268261285657186d-03,
372 9 1.10351597375642682d-03, 8.86047440419791759d-04,
373 a 6.73073208165665473d-04, 4.77603872856582378d-04,
374 b 3.05991926358789362d-04, 1.60315694594721630d-04,
375 c 4.00749555270613286d-05, -5.66607461635251611d-05,
376 d -1.32506186772982638d-04, -1.90296187989614057d-04/
377 DATA beta(171), beta(172), beta(173), beta(174), beta(175),
378 1 beta(176), beta(177), beta(178), beta(179), beta(180),
379 2 beta(181), beta(182), beta(183), beta(184), beta(185),
380 3 beta(186), beta(187), beta(188), beta(189), beta(190)/
381 4 -2.32811450376937408d-04, -2.62628811464668841d-04,
382 5 -2.82050469867598672d-04, -2.93081563192861167d-04,
383 6 -2.97435962176316616d-04, -2.96557334239348078d-04,
384 7 -2.91647363312090861d-04, -2.83696203837734166d-04,
385 8 -2.73512317095673346d-04, -2.61750155806768580d-04,
386 9 6.38585891212050914d-03, 9.62374215806377941d-03,
387 a 7.61878061207001043d-03, 2.83219055545628054d-03,
388 b -2.09841352012720090d-03, -5.73826764216626498d-03,
389 c -7.70804244495414620d-03, -8.21011692264844401d-03,
390 d -7.65824520346905413d-03, -6.47209729391045177d-03/
391 DATA beta(191), beta(192), beta(193), beta(194), beta(195),
392 1 beta(196), beta(197), beta(198), beta(199), beta(200),
393 2 beta(201), beta(202), beta(203), beta(204), beta(205),
394 3 beta(206), beta(207), beta(208), beta(209), beta(210)/
395 4 -4.99132412004966473d-03, -3.45612289713133280d-03,
396 5 -2.01785580014170775d-03, -7.59430686781961401d-04,
397 6 2.84173631523859138d-04, 1.10891667586337403d-03,
398 7 1.72901493872728771d-03, 2.16812590802684701d-03,
399 8 2.45357710494539735d-03, 2.61281821058334862d-03,
400 9 2.67141039656276912d-03, 2.65203073395980430d-03,
401 a 2.57411652877287315d-03, 2.45389126236094427d-03,
402 b 2.30460058071795494d-03, 2.13684837686712662d-03,
403 c 1.95896528478870911d-03, 1.77737008679454412d-03,
404 d 1.59690280765839059d-03, 1.42111975664438546d-03/
405 DATA gama(1), gama(2), gama(3), gama(4), gama(5), gama(6),
406 1 gama(7), gama(8), gama(9), gama(10), gama(11), gama(12),
407 2 gama(13), gama(14), gama(15), gama(16), gama(17), gama(18),
408 3 gama(19), gama(20), gama(21), gama(22)/
409 4 6.29960524947436582d-01, 2.51984209978974633d-01,
410 5 1.54790300415655846d-01, 1.10713062416159013d-01,
411 6 8.57309395527394825d-02, 6.97161316958684292d-02,
412 7 5.86085671893713576d-02, 5.04698873536310685d-02,
413 8 4.42600580689154809d-02, 3.93720661543509966d-02,
414 9 3.54283195924455368d-02, 3.21818857502098231d-02,
415 a 2.94646240791157679d-02, 2.71581677112934479d-02,
416 b 2.51768272973861779d-02, 2.34570755306078891d-02,
417 c 2.19508390134907203d-02, 2.06210828235646240d-02,
418 d 1.94388240897880846d-02, 1.83810633800683158d-02,
419 e 1.74293213231963172d-02, 1.65685837786612353d-02/
420 DATA gama(23), gama(24), gama(25), gama(26), gama(27), gama(28),
421 1 gama(29), gama(30)/
422 2 1.57865285987918445d-02, 1.50729501494095594d-02,
423 3 1.44193250839954639d-02, 1.38184805735341786d-02,
424 4 1.32643378994276568d-02, 1.27517121970498651d-02,
425 5 1.22761545318762767d-02, 1.18338262398482403d-02/
426 DATA ex1, ex2, hpi, gpi, thpi /
427 1 3.33333333333333333d-01, 6.66666666666666667d-01,
428 2 1.57079632679489662d+00, 3.14159265358979324d+00,
429 3 4.71238898038468986d+00/
430 DATA zeror,zeroi,coner,conei / 0.0d0, 0.0d0, 1.0d0, 0.0d0 /
431C
432 rfnu = 1.0d0/fnu
433C-----------------------------------------------------------------------
434C OVERFLOW TEST (Z/FNU TOO SMALL)
435C-----------------------------------------------------------------------
436 test = d1mach(1)*1.0d+3
437 ac = fnu*test
438 IF (dabs(zr).GT.ac .OR. dabs(zi).GT.ac) GO TO 15
439 zeta1r = 2.0d0*dabs(dlog(test))+fnu
440 zeta1i = 0.0d0
441 zeta2r = fnu
442 zeta2i = 0.0d0
443 phir = 1.0d0
444 phii = 0.0d0
445 argr = 1.0d0
446 argi = 0.0d0
447 RETURN
448 15 CONTINUE
449 zbr = zr*rfnu
450 zbi = zi*rfnu
451 rfnu2 = rfnu*rfnu
452C-----------------------------------------------------------------------
453C COMPUTE IN THE FOURTH QUADRANT
454C-----------------------------------------------------------------------
455 fn13 = fnu**ex1
456 fn23 = fn13*fn13
457 rfn13 = 1.0d0/fn13
458 w2r = coner - zbr*zbr + zbi*zbi
459 w2i = conei - zbr*zbi - zbr*zbi
460 aw2 = xzabs(w2r,w2i)
461 IF (aw2.GT.0.25d0) GO TO 130
462C-----------------------------------------------------------------------
463C POWER SERIES FOR CABS(W2).LE.0.25D0
464C-----------------------------------------------------------------------
465 k = 1
466 pr(1) = coner
467 pi(1) = conei
468 sumar = gama(1)
469 sumai = zeroi
470 ap(1) = 1.0d0
471 IF (aw2.LT.tol) GO TO 20
472 DO 10 k=2,30
473 pr(k) = pr(k-1)*w2r - pi(k-1)*w2i
474 pi(k) = pr(k-1)*w2i + pi(k-1)*w2r
475 sumar = sumar + pr(k)*gama(k)
476 sumai = sumai + pi(k)*gama(k)
477 ap(k) = ap(k-1)*aw2
478 IF (ap(k).LT.tol) GO TO 20
479 10 CONTINUE
480 k = 30
481 20 CONTINUE
482 kmax = k
483 zetar = w2r*sumar - w2i*sumai
484 zetai = w2r*sumai + w2i*sumar
485 argr = zetar*fn23
486 argi = zetai*fn23
487 CALL xzsqrt(sumar, sumai, zar, zai)
488 CALL xzsqrt(w2r, w2i, str, sti)
489 zeta2r = str*fnu
490 zeta2i = sti*fnu
491 str = coner + ex2*(zetar*zar-zetai*zai)
492 sti = conei + ex2*(zetar*zai+zetai*zar)
493 zeta1r = str*zeta2r - sti*zeta2i
494 zeta1i = str*zeta2i + sti*zeta2r
495 zar = zar + zar
496 zai = zai + zai
497 CALL xzsqrt(zar, zai, str, sti)
498 phir = str*rfn13
499 phii = sti*rfn13
500 IF (ipmtr.EQ.1) GO TO 120
501C-----------------------------------------------------------------------
502C SUM SERIES FOR ASUM AND BSUM
503C-----------------------------------------------------------------------
504 sumbr = zeror
505 sumbi = zeroi
506 DO 30 k=1,kmax
507 sumbr = sumbr + pr(k)*beta(k)
508 sumbi = sumbi + pi(k)*beta(k)
509 30 CONTINUE
510 asumr = zeror
511 asumi = zeroi
512 bsumr = sumbr
513 bsumi = sumbi
514 l1 = 0
515 l2 = 30
516 btol = tol*(dabs(bsumr)+dabs(bsumi))
517 atol = tol
518 pp = 1.0d0
519 ias = 0
520 ibs = 0
521 IF (rfnu2.LT.tol) GO TO 110
522 DO 100 is=2,7
523 atol = atol/rfnu2
524 pp = pp*rfnu2
525 IF (ias.EQ.1) GO TO 60
526 sumar = zeror
527 sumai = zeroi
528 DO 40 k=1,kmax
529 m = l1 + k
530 sumar = sumar + pr(k)*alfa(m)
531 sumai = sumai + pi(k)*alfa(m)
532 IF (ap(k).LT.atol) GO TO 50
533 40 CONTINUE
534 50 CONTINUE
535 asumr = asumr + sumar*pp
536 asumi = asumi + sumai*pp
537 IF (pp.LT.tol) ias = 1
538 60 CONTINUE
539 IF (ibs.EQ.1) GO TO 90
540 sumbr = zeror
541 sumbi = zeroi
542 DO 70 k=1,kmax
543 m = l2 + k
544 sumbr = sumbr + pr(k)*beta(m)
545 sumbi = sumbi + pi(k)*beta(m)
546 IF (ap(k).LT.atol) GO TO 80
547 70 CONTINUE
548 80 CONTINUE
549 bsumr = bsumr + sumbr*pp
550 bsumi = bsumi + sumbi*pp
551 IF (pp.LT.btol) ibs = 1
552 90 CONTINUE
553 IF (ias.EQ.1 .AND. ibs.EQ.1) GO TO 110
554 l1 = l1 + 30
555 l2 = l2 + 30
556 100 CONTINUE
557 110 CONTINUE
558 asumr = asumr + coner
559 pp = rfnu*rfn13
560 bsumr = bsumr*pp
561 bsumi = bsumi*pp
562 120 CONTINUE
563 RETURN
564C-----------------------------------------------------------------------
565C CABS(W2).GT.0.25D0
566C-----------------------------------------------------------------------
567 130 CONTINUE
568 CALL xzsqrt(w2r, w2i, wr, wi)
569 IF (wr.LT.0.0d0) wr = 0.0d0
570 IF (wi.LT.0.0d0) wi = 0.0d0
571 str = coner + wr
572 sti = wi
573 CALL zdiv(str, sti, zbr, zbi, zar, zai)
574 CALL xzlog(zar, zai, zcr, zci, idum)
575 IF (zci.LT.0.0d0) zci = 0.0d0
576 IF (zci.GT.hpi) zci = hpi
577 IF (zcr.LT.0.0d0) zcr = 0.0d0
578 zthr = (zcr-wr)*1.5d0
579 zthi = (zci-wi)*1.5d0
580 zeta1r = zcr*fnu
581 zeta1i = zci*fnu
582 zeta2r = wr*fnu
583 zeta2i = wi*fnu
584 azth = xzabs(zthr,zthi)
585 ang = thpi
586 IF (zthr.GE.0.0d0 .AND. zthi.LT.0.0d0) GO TO 140
587 ang = hpi
588 IF (zthr.EQ.0.0d0) GO TO 140
589 ang = datan(zthi/zthr)
590 IF (zthr.LT.0.0d0) ang = ang + gpi
591 140 CONTINUE
592 pp = azth**ex2
593 ang = ang*ex2
594 zetar = pp*dcos(ang)
595 zetai = pp*dsin(ang)
596 IF (zetai.LT.0.0d0) zetai = 0.0d0
597 argr = zetar*fn23
598 argi = zetai*fn23
599 CALL zdiv(zthr, zthi, zetar, zetai, rtztr, rtzti)
600 CALL zdiv(rtztr, rtzti, wr, wi, zar, zai)
601 tzar = zar + zar
602 tzai = zai + zai
603 CALL xzsqrt(tzar, tzai, str, sti)
604 phir = str*rfn13
605 phii = sti*rfn13
606 IF (ipmtr.EQ.1) GO TO 120
607 raw = 1.0d0/dsqrt(aw2)
608 str = wr*raw
609 sti = -wi*raw
610 tfnr = str*rfnu*raw
611 tfni = sti*rfnu*raw
612 razth = 1.0d0/azth
613 str = zthr*razth
614 sti = -zthi*razth
615 rzthr = str*razth*rfnu
616 rzthi = sti*razth*rfnu
617 zcr = rzthr*ar(2)
618 zci = rzthi*ar(2)
619 raw2 = 1.0d0/aw2
620 str = w2r*raw2
621 sti = -w2i*raw2
622 t2r = str*raw2
623 t2i = sti*raw2
624 str = t2r*c(2) + c(3)
625 sti = t2i*c(2)
626 upr(2) = str*tfnr - sti*tfni
627 upi(2) = str*tfni + sti*tfnr
628 bsumr = upr(2) + zcr
629 bsumi = upi(2) + zci
630 asumr = zeror
631 asumi = zeroi
632 IF (rfnu.LT.tol) GO TO 220
633 przthr = rzthr
634 przthi = rzthi
635 ptfnr = tfnr
636 ptfni = tfni
637 upr(1) = coner
638 upi(1) = conei
639 pp = 1.0d0
640 btol = tol*(dabs(bsumr)+dabs(bsumi))
641 ks = 0
642 kp1 = 2
643 l = 3
644 ias = 0
645 ibs = 0
646 DO 210 lr=2,12,2
647 lrp1 = lr + 1
648C-----------------------------------------------------------------------
649C COMPUTE TWO ADDITIONAL CR, DR, AND UP FOR TWO MORE TERMS IN
650C NEXT SUMA AND SUMB
651C-----------------------------------------------------------------------
652 DO 160 k=lr,lrp1
653 ks = ks + 1
654 kp1 = kp1 + 1
655 l = l + 1
656 zar = c(l)
657 zai = zeroi
658 DO 150 j=2,kp1
659 l = l + 1
660 str = zar*t2r - t2i*zai + c(l)
661 zai = zar*t2i + zai*t2r
662 zar = str
663 150 CONTINUE
664 str = ptfnr*tfnr - ptfni*tfni
665 ptfni = ptfnr*tfni + ptfni*tfnr
666 ptfnr = str
667 upr(kp1) = ptfnr*zar - ptfni*zai
668 upi(kp1) = ptfni*zar + ptfnr*zai
669 crr(ks) = przthr*br(ks+1)
670 cri(ks) = przthi*br(ks+1)
671 str = przthr*rzthr - przthi*rzthi
672 przthi = przthr*rzthi + przthi*rzthr
673 przthr = str
674 drr(ks) = przthr*ar(ks+2)
675 dri(ks) = przthi*ar(ks+2)
676 160 CONTINUE
677 pp = pp*rfnu2
678 IF (ias.EQ.1) GO TO 180
679 sumar = upr(lrp1)
680 sumai = upi(lrp1)
681 ju = lrp1
682 DO 170 jr=1,lr
683 ju = ju - 1
684 sumar = sumar + crr(jr)*upr(ju) - cri(jr)*upi(ju)
685 sumai = sumai + crr(jr)*upi(ju) + cri(jr)*upr(ju)
686 170 CONTINUE
687 asumr = asumr + sumar
688 asumi = asumi + sumai
689 test = dabs(sumar) + dabs(sumai)
690 IF (pp.LT.tol .AND. test.LT.tol) ias = 1
691 180 CONTINUE
692 IF (ibs.EQ.1) GO TO 200
693 sumbr = upr(lr+2) + upr(lrp1)*zcr - upi(lrp1)*zci
694 sumbi = upi(lr+2) + upr(lrp1)*zci + upi(lrp1)*zcr
695 ju = lrp1
696 DO 190 jr=1,lr
697 ju = ju - 1
698 sumbr = sumbr + drr(jr)*upr(ju) - dri(jr)*upi(ju)
699 sumbi = sumbi + drr(jr)*upi(ju) + dri(jr)*upr(ju)
700 190 CONTINUE
701 bsumr = bsumr + sumbr
702 bsumi = bsumi + sumbi
703 test = dabs(sumbr) + dabs(sumbi)
704 IF (pp.LT.btol .AND. test.LT.btol) ibs = 1
705 200 CONTINUE
706 IF (ias.EQ.1 .AND. ibs.EQ.1) GO TO 220
707 210 CONTINUE
708 220 CONTINUE
709 asumr = asumr + coner
710 str = -bsumr*rfn13
711 sti = -bsumi*rfn13
712 CALL zdiv(str, sti, rtztr, rtzti, bsumr, bsumi)
713 GO TO 120
714 END
double precision function d1mach(i)
Definition d1mach.f:23
double precision function xzabs(zr, zi)
Definition xzabs.f:2
subroutine xzlog(ar, ai, br, bi, ierr)
Definition xzlog.f:2
subroutine xzsqrt(ar, ai, br, bi)
Definition xzsqrt.f:2
subroutine zdiv(ar, ai, br, bi, cr, ci)
Definition zdiv.f:2
subroutine zunhj(zr, zi, fnu, ipmtr, tol, phir, phii, argr, argi, zeta1r, zeta1i, zeta2r, zeta2i, asumr, asumi, bsumr, bsumi)
Definition zunhj.f:3