TBCI Numerical high perf. C++ Library  2.8.0
zairy.c
Go to the documentation of this file.
1 
4 /* zairy.f -- translated by f2c (version 19980516).
5  You must link the resulting object file with the libraries:
6  -lf2c -lm (in that order)
7 */
8 
9 /* $Id: zairy.c,v 1.2.2.5 2019/05/28 11:13:02 garloff Exp $ */
10 
11 #include "tbci/specfun/prototypes.h"
12 #include "tbci/specfun/prototypes2.h"
13 
14 /* Table of constant values */
15 
16 static integer c__4 = 4;
17 static integer c__15 = 15;
18 static integer c__16 = 16;
19 static integer c__5 = 5;
20 static integer c__14 = 14;
21 static integer c__9 = 9;
22 static integer c__1 = 1;
23 
24 int zexp_(const double*, const double*, double*, double*);
25 int zacai_(double*, double*, double*, const integer*,
26  integer*, integer*, double*, double*,
27  integer*, double*, double*,
28  double*, double*);
29 int zbknu_(double*, double*, double*, const integer*,
30  integer*, double*, double*,
31  integer*, double*, double*, double*);
32 int zsqrt_(const double*, const double*, double*, double*);
33 doublereal myzabs_(const double*, const double*);
34 
35 /* Subroutine */
36 /*
37  int zairy_(zr, zi, id, kode, air, aii, nz, ierr)
38  doublereal *zr, *zi;
39  integer *id, *kode;
40  doublereal *air, *aii;
41  integer *nz, *ierr;
42  */
43 int zairy_ (const doublereal * zr, const doublereal * zi,
44  const integer * id, const integer * kode,
45  doublereal * air, doublereal * aii, integer * nz, integer * ierr)
46 {
47  /* Initialized data */
48 
49  static doublereal tth = .666666666666666667;
50  static doublereal c1 = .35502805388781724;
51  static doublereal c2 = .258819403792806799;
52  static doublereal coef = .183776298473930683;
53  static doublereal zeror = 0.;
54  static doublereal zeroi = 0.;
55  static doublereal coner = 1.;
56  static doublereal conei = 0.;
57 
58  /* System generated locals */
59  integer i__1, i__2;
60  doublereal d__1;
61 
62  /* Builtin functions */
63 
64  /* Local variables */
65  static doublereal sfac, alim, elim, alaz, csqi, atrm, ztai, csqr, ztar;
66  static doublereal trm1i, trm2i, trm1r, trm2r;
67  static integer k, iflag;
68  static doublereal d1, d2;
69  static integer k1;
70  extern doublereal d1mach_(integer*);
71  static integer k2;
72  extern integer i1mach_(integer*);
73  static doublereal aa, bb, ad, cc, ak, bk, ck, dk, az;
74  static integer nn;
75  static doublereal rl;
76  static integer mr;
77  static doublereal s1i, az3, s2i, s1r, s2r, z3i, z3r, dig, fid, cyi[1],
78  r1m5, fnu, cyr[1], tol, sti, ptr, str;
79 
80 /* ***BEGIN PROLOGUE ZAIRY */
81 /* ***DATE WRITTEN 830501 (YYMMDD) */
82 /* ***REVISION DATE 890801 (YYMMDD) */
83 /* ***CATEGORY NO. B5K */
84 /* ***KEYWORDS AIRY FUNCTION,BESSEL FUNCTIONS OF ORDER ONE THIRD */
85 /* ***AUTHOR AMOS, DONALD E., SANDIA NATIONAL LABORATORIES */
86 /* ***PURPOSE TO COMPUTE AIRY FUNCTIONS AI(Z) AND DAI(Z) FOR COMPLEX Z */
87 /* ***DESCRIPTION */
88 
89 /* ***A DOUBLE PRECISION ROUTINE*** */
90 /* ON KODE=1, ZAIRY COMPUTES THE COMPLEX AIRY FUNCTION AI(Z) OR */
91 /* ITS DERIVATIVE DAI(Z)/DZ ON ID=0 OR ID=1 RESPECTIVELY. ON */
92 /* KODE=2, A SCALING OPTION CEXP(ZTA)*AI(Z) OR CEXP(ZTA)* */
93 /* DAI(Z)/DZ IS PROVIDED TO REMOVE THE EXPONENTIAL DECAY IN */
94 /* -PI/3.LT.ARG(Z).LT.PI/3 AND THE EXPONENTIAL GROWTH IN */
95 /* PI/3.LT.ABS(ARG(Z)).LT.PI WHERE ZTA=(2/3)*Z*CSQRT(Z). */
96 
97 /* WHILE THE AIRY FUNCTIONS AI(Z) AND DAI(Z)/DZ ARE ANALYTIC IN */
98 /* THE WHOLE Z PLANE, THE CORRESPONDING SCALED FUNCTIONS DEFINED */
99 /* FOR KODE=2 HAVE A CUT ALONG THE NEGATIVE REAL AXIS. */
100 /* DEFINTIONS AND NOTATION ARE FOUND IN THE NBS HANDBOOK OF */
101 /* MATHEMATICAL FUNCTIONS (REF. 1). */
102 
103 /* INPUT ZR,ZI ARE DOUBLE PRECISION */
104 /* ZR,ZI - Z=CMPLX(ZR,ZI) */
105 /* ID - ORDER OF DERIVATIVE, ID=0 OR ID=1 */
106 /* KODE - A PARAMETER TO INDICATE THE SCALING OPTION */
107 /* KODE= 1 RETURNS */
108 /* AI=AI(Z) ON ID=0 OR */
109 /* AI=DAI(Z)/DZ ON ID=1 */
110 /* = 2 RETURNS */
111 /* AI=CEXP(ZTA)*AI(Z) ON ID=0 OR */
112 /* AI=CEXP(ZTA)*DAI(Z)/DZ ON ID=1 WHERE */
113 /* ZTA=(2/3)*Z*CSQRT(Z) */
114 
115 /* OUTPUT AIR,AII ARE DOUBLE PRECISION */
116 /* AIR,AII- COMPLEX ANSWER DEPENDING ON THE CHOICES FOR ID AND */
117 /* KODE */
118 /* NZ - UNDERFLOW INDICATOR */
119 /* NZ= 0 , NORMAL RETURN */
120 /* NZ= 1 , AI=CMPLX(0.0D0,0.0D0) DUE TO UNDERFLOW IN */
121 /* -PI/3.LT.ARG(Z).LT.PI/3 ON KODE=1 */
122 /* IERR - ERROR FLAG */
123 /* IERR=0, NORMAL RETURN - COMPUTATION COMPLETED */
124 /* IERR=1, INPUT ERROR - NO COMPUTATION */
125 /* IERR=2, OVERFLOW - NO COMPUTATION, REAL(ZTA) */
126 /* TOO LARGE ON KODE=1 */
127 /* IERR=3, CABS(Z) LARGE - COMPUTATION COMPLETED */
128 /* LOSSES OF SIGNIFCANCE BY ARGUMENT REDUCTION */
129 /* PRODUCE LESS THAN HALF OF MACHINE ACCURACY */
130 /* IERR=4, CABS(Z) TOO LARGE - NO COMPUTATION */
131 /* COMPLETE LOSS OF ACCURACY BY ARGUMENT */
132 /* REDUCTION */
133 /* IERR=5, ERROR - NO COMPUTATION, */
134 /* ALGORITHM TERMINATION CONDITION NOT MET */
135 
136 /* ***LONG DESCRIPTION */
137 
138 /* AI AND DAI ARE COMPUTED FOR CABS(Z).GT.1.0 FROM THE K BESSEL */
139 /* FUNCTIONS BY */
140 
141 /* AI(Z)=C*SQRT(Z)*K(1/3,ZTA) , DAI(Z)=-C*Z*K(2/3,ZTA) */
142 /* C=1.0/(PI*SQRT(3.0)) */
143 /* ZTA=(2/3)*Z**(3/2) */
144 
145 /* WITH THE POWER SERIES FOR CABS(Z).LE.1.0. */
146 
147 /* IN MOST COMPLEX VARIABLE COMPUTATION, ONE MUST EVALUATE ELE- */
148 /* MENTARY FUNCTIONS. WHEN THE MAGNITUDE OF Z IS LARGE, LOSSES */
149 /* OF SIGNIFICANCE BY ARGUMENT REDUCTION OCCUR. CONSEQUENTLY, IF */
150 /* THE MAGNITUDE OF ZETA=(2/3)*Z**1.5 EXCEEDS U1=SQRT(0.5/UR), */
151 /* THEN LOSSES EXCEEDING HALF PRECISION ARE LIKELY AND AN ERROR */
152 /* FLAG IERR=3 IS TRIGGERED WHERE UR=DMAX1(D1MACH(4),1.0D-18) IS */
153 /* DOUBLE PRECISION UNIT ROUNDOFF LIMITED TO 18 DIGITS PRECISION. */
154 /* ALSO, IF THE MAGNITUDE OF ZETA IS LARGER THAN U2=0.5/UR, THEN */
155 /* ALL SIGNIFICANCE IS LOST AND IERR=4. IN ORDER TO USE THE INT */
156 /* FUNCTION, ZETA MUST BE FURTHER RESTRICTED NOT TO EXCEED THE */
157 /* LARGEST INTEGER, U3=I1MACH(9). THUS, THE MAGNITUDE OF ZETA */
158 /* MUST BE RESTRICTED BY MIN(U2,U3). ON 32 BIT MACHINES, U1,U2, */
159 /* AND U3 ARE APPROXIMATELY 2.0E+3, 4.2E+6, 2.1E+9 IN SINGLE */
160 /* PRECISION ARITHMETIC AND 1.3E+8, 1.8E+16, 2.1E+9 IN DOUBLE */
161 /* PRECISION ARITHMETIC RESPECTIVELY. THIS MAKES U2 AND U3 LIMIT- */
162 /* ING IN THEIR RESPECTIVE ARITHMETICS. THIS MEANS THAT THE MAG- */
163 /* NITUDE OF Z CANNOT EXCEED 3.1E+4 IN SINGLE AND 2.1E+6 IN */
164 /* DOUBLE PRECISION ARITHMETIC. THIS ALSO MEANS THAT ONE CAN */
165 /* EXPECT TO RETAIN, IN THE WORST CASES ON 32 BIT MACHINES, */
166 /* NO DIGITS IN SINGLE PRECISION AND ONLY 7 DIGITS IN DOUBLE */
167 /* PRECISION ARITHMETIC. SIMILAR CONSIDERATIONS HOLD FOR OTHER */
168 /* MACHINES. */
169 
170 /* THE APPROXIMATE RELATIVE ERROR IN THE MAGNITUDE OF A COMPLEX */
171 /* BESSEL FUNCTION CAN BE EXPRESSED BY P*10**S WHERE P=MAX(UNIT */
172 /* ROUNDOFF,1.0E-18) IS THE NOMINAL PRECISION AND 10**S REPRE- */
173 /* SENTS THE INCREASE IN ERROR DUE TO ARGUMENT REDUCTION IN THE */
174 /* ELEMENTARY FUNCTIONS. HERE, S=MAX(1,ABS(LOG10(CABS(Z))), */
175 /* ABS(LOG10(FNU))) APPROXIMATELY (I.E. S=MAX(1,ABS(EXPONENT OF */
176 /* CABS(Z),ABS(EXPONENT OF FNU)) ). HOWEVER, THE PHASE ANGLE MAY */
177 /* HAVE ONLY ABSOLUTE ACCURACY. THIS IS MOST LIKELY TO OCCUR WHEN */
178 /* ONE COMPONENT (IN ABSOLUTE VALUE) IS LARGER THAN THE OTHER BY */
179 /* SEVERAL ORDERS OF MAGNITUDE. IF ONE COMPONENT IS 10**K LARGER */
180 /* THAN THE OTHER, THEN ONE CAN EXPECT ONLY MAX(ABS(LOG10(P))-K, */
181 /* 0) SIGNIFICANT DIGITS; OR, STATED ANOTHER WAY, WHEN K EXCEEDS */
182 /* THE EXPONENT OF P, NO SIGNIFICANT DIGITS REMAIN IN THE SMALLER */
183 /* COMPONENT. HOWEVER, THE PHASE ANGLE RETAINS ABSOLUTE ACCURACY */
184 /* BECAUSE, IN COMPLEX ARITHMETIC WITH PRECISION P, THE SMALLER */
185 /* COMPONENT WILL NOT (AS A RULE) DECREASE BELOW P TIMES THE */
186 /* MAGNITUDE OF THE LARGER COMPONENT. IN THESE EXTREME CASES, */
187 /* THE PRINCIPAL PHASE ANGLE IS ON THE ORDER OF +P, -P, PI/2-P, */
188 /* OR -PI/2+P. */
189 
190 /* ***REFERENCES HANDBOOK OF MATHEMATICAL FUNCTIONS BY M. ABRAMOWITZ */
191 /* AND I. A. STEGUN, NBS AMS SERIES 55, U.S. DEPT. OF */
192 /* COMMERCE, 1955. */
193 
194 /* COMPUTATION OF BESSEL FUNCTIONS OF COMPLEX ARGUMENT */
195 /* AND LARGE ORDER BY D. E. AMOS, SAND83-0643, MAY, 1983 */
196 
197 /* A SUBROUTINE PACKAGE FOR BESSEL FUNCTIONS OF A COMPLEX */
198 /* ARGUMENT AND NONNEGATIVE ORDER BY D. E. AMOS, SAND85- */
199 /* 1018, MAY, 1985 */
200 
201 /* A PORTABLE PACKAGE FOR BESSEL FUNCTIONS OF A COMPLEX */
202 /* ARGUMENT AND NONNEGATIVE ORDER BY D. E. AMOS, TRANS. */
203 /* MATH. SOFTWARE, 1986 */
204 
205 /* ***ROUTINES CALLED ZACAI,ZBKNU,ZEXP,ZSQRT,I1MACH,D1MACH */
206 /* ***END PROLOGUE ZAIRY */
207 /* COMPLEX AI,CONE,CSQ,CY,S1,S2,TRM1,TRM2,Z,ZTA,Z3 */
208 /* ***FIRST EXECUTABLE STATEMENT ZAIRY */
209  *ierr = 0;
210  *nz = 0;
211  if (*id < 0 || *id > 1) {
212  *ierr = 1;
213  }
214  if (*kode < 1 || *kode > 2) {
215  *ierr = 1;
216  }
217  if (*ierr != 0) {
218  return 0;
219  }
220  az = myzabs_(zr, zi);
221 /* Computing MAX */
222  d__1 = d1mach_(&c__4);
223  tol = max(d__1,1e-18);
224  fid = (doublereal) ((real) (*id));
225  if (az > 1.) {
226  goto L70;
227  }
228 /* ----------------------------------------------------------------------- */
229 /* POWER SERIES FOR CABS(Z).LE.1. */
230 /* ----------------------------------------------------------------------- */
231  s1r = coner;
232  s1i = conei;
233  s2r = coner;
234  s2i = conei;
235  if (az < tol) {
236  goto L170;
237  }
238  aa = az * az;
239  if (aa < tol / az) {
240  goto L40;
241  }
242  trm1r = coner;
243  trm1i = conei;
244  trm2r = coner;
245  trm2i = conei;
246  atrm = 1.;
247  str = *zr * *zr - *zi * *zi;
248  sti = *zr * *zi + *zi * *zr;
249  z3r = str * *zr - sti * *zi;
250  z3i = str * *zi + sti * *zr;
251  az3 = az * aa;
252  ak = fid + 2.;
253  bk = 3. - fid - fid;
254  ck = 4. - fid;
255  dk = fid + 3. + fid;
256  d1 = ak * dk;
257  d2 = bk * ck;
258  ad = min(d1,d2);
259  ak = fid * 9. + 24.;
260  bk = 30. - fid * 9.;
261  for (k = 1; k <= 25; ++k) {
262  str = (trm1r * z3r - trm1i * z3i) / d1;
263  trm1i = (trm1r * z3i + trm1i * z3r) / d1;
264  trm1r = str;
265  s1r += trm1r;
266  s1i += trm1i;
267  str = (trm2r * z3r - trm2i * z3i) / d2;
268  trm2i = (trm2r * z3i + trm2i * z3r) / d2;
269  trm2r = str;
270  s2r += trm2r;
271  s2i += trm2i;
272  atrm = atrm * az3 / ad;
273  d1 += ak;
274  d2 += bk;
275  ad = min(d1,d2);
276  if (atrm < tol * ad) {
277  goto L40;
278  }
279  ak += 18.;
280  bk += 18.;
281 /* L30: */
282  }
283 L40:
284  if (*id == 1) {
285  goto L50;
286  }
287  *air = s1r * c1 - c2 * (*zr * s2r - *zi * s2i);
288  *aii = s1i * c1 - c2 * (*zr * s2i + *zi * s2r);
289  if (*kode == 1) {
290  return 0;
291  }
292  zsqrt_(zr, zi, &str, &sti);
293  ztar = tth * (*zr * str - *zi * sti);
294  ztai = tth * (*zr * sti + *zi * str);
295  zexp_(&ztar, &ztai, &str, &sti);
296  ptr = *air * str - *aii * sti;
297  *aii = *air * sti + *aii * str;
298  *air = ptr;
299  return 0;
300 L50:
301  *air = -s2r * c2;
302  *aii = -s2i * c2;
303  if (az <= tol) {
304  goto L60;
305  }
306  str = *zr * s1r - *zi * s1i;
307  sti = *zr * s1i + *zi * s1r;
308  cc = c1 / (fid + 1.);
309  *air += cc * (str * *zr - sti * *zi);
310  *aii += cc * (str * *zi + sti * *zr);
311 L60:
312  if (*kode == 1) {
313  return 0;
314  }
315  zsqrt_(zr, zi, &str, &sti);
316  ztar = tth * (*zr * str - *zi * sti);
317  ztai = tth * (*zr * sti + *zi * str);
318  zexp_(&ztar, &ztai, &str, &sti);
319  ptr = str * *air - sti * *aii;
320  *aii = str * *aii + sti * *air;
321  *air = ptr;
322  return 0;
323 /* ----------------------------------------------------------------------- */
324 /* CASE FOR CABS(Z).GT.1.0 */
325 /* ----------------------------------------------------------------------- */
326 L70:
327  fnu = (fid + 1.) / 3.;
328 /* ----------------------------------------------------------------------- */
329 /* SET PARAMETERS RELATED TO MACHINE CONSTANTS. */
330 /* TOL IS THE APPROXIMATE UNIT ROUNDOFF LIMITED TO 1.0D-18. */
331 /* ELIM IS THE APPROXIMATE EXPONENTIAL OVER- AND UNDERFLOW LIMIT. */
332 /* EXP(-ELIM).LT.EXP(-ALIM)=EXP(-ELIM)/TOL AND */
333 /* EXP(ELIM).GT.EXP(ALIM)=EXP(ELIM)*TOL ARE INTERVALS NEAR */
334 /* UNDERFLOW AND OVERFLOW LIMITS WHERE SCALED ARITHMETIC IS DONE. */
335 /* RL IS THE LOWER BOUNDARY OF THE ASYMPTOTIC EXPANSION FOR LARGE Z. */
336 /* DIG = NUMBER OF BASE 10 DIGITS IN TOL = 10**(-DIG). */
337 /* ----------------------------------------------------------------------- */
338  k1 = i1mach_(&c__15);
339  k2 = i1mach_(&c__16);
340  r1m5 = d1mach_(&c__5);
341 /* Computing MIN */
342  i__1 = abs(k1), i__2 = abs(k2);
343  k = min(i__1,i__2);
344  elim = ((doublereal) ((real) k) * r1m5 - 3.) * 2.303;
345  k1 = i1mach_(&c__14) - 1;
346  aa = r1m5 * (doublereal) ((real) k1);
347  dig = min(aa,18.);
348  aa *= 2.303;
349 /* Computing MAX */
350  d__1 = -aa;
351  alim = elim + max(d__1,-41.45);
352  rl = dig * 1.2 + 3.;
353  alaz = log(az);
354 /* -------------------------------------------------------------------------- */
355 /* TEST FOR PROPER RANGE */
356 /* ----------------------------------------------------------------------- */
357  aa = .5 / tol;
358  bb = (doublereal) ((real) i1mach_(&c__9)) * .5;
359  aa = min(aa,bb);
360  aa = pow_dd(&aa, &tth);
361  if (az > aa) {
362  goto L260;
363  }
364  aa = sqrt(aa);
365  if (az > aa) {
366  *ierr = 3;
367  }
368  zsqrt_(zr, zi, &csqr, &csqi);
369  ztar = tth * (*zr * csqr - *zi * csqi);
370  ztai = tth * (*zr * csqi + *zi * csqr);
371 /* ----------------------------------------------------------------------- */
372 /* RE(ZTA).LE.0 WHEN RE(Z).LT.0, ESPECIALLY WHEN IM(Z) IS SMALL */
373 /* ----------------------------------------------------------------------- */
374  iflag = 0;
375  sfac = 1.;
376  ak = ztai;
377  if (*zr >= 0.) {
378  goto L80;
379  }
380  bk = ztar;
381  ck = -abs(bk);
382  ztar = ck;
383  ztai = ak;
384 L80:
385  if (*zi != 0.) {
386  goto L90;
387  }
388  if (*zr > 0.) {
389  goto L90;
390  }
391  ztar = 0.;
392  ztai = ak;
393 L90:
394  aa = ztar;
395  if (aa >= 0. && *zr > 0.) {
396  goto L110;
397  }
398  if (*kode == 2) {
399  goto L100;
400  }
401 /* ----------------------------------------------------------------------- */
402 /* OVERFLOW TEST */
403 /* ----------------------------------------------------------------------- */
404  if (aa > -alim) {
405  goto L100;
406  }
407  aa = -aa + alaz * .25;
408  iflag = 1;
409  sfac = tol;
410  if (aa > elim) {
411  goto L270;
412  }
413 L100:
414 /* ----------------------------------------------------------------------- */
415 /* CBKNU AND CACON RETURN EXP(ZTA)*K(FNU,ZTA) ON KODE=2 */
416 /* ----------------------------------------------------------------------- */
417  mr = 1;
418  if (*zi < 0.) {
419  mr = -1;
420  }
421  zacai_(&ztar, &ztai, &fnu, kode, &mr, &c__1, cyr, cyi, &nn, &rl, &tol,
422  &elim, &alim);
423  if (nn < 0) {
424  goto L280;
425  }
426  *nz += nn;
427  goto L130;
428 L110:
429  if (*kode == 2) {
430  goto L120;
431  }
432 /* ----------------------------------------------------------------------- */
433 /* UNDERFLOW TEST */
434 /* ----------------------------------------------------------------------- */
435  if (aa < alim) {
436  goto L120;
437  }
438  aa = -aa - alaz * .25;
439  iflag = 2;
440  sfac = 1. / tol;
441  if (aa < -elim) {
442  goto L210;
443  }
444 L120:
445  zbknu_(&ztar, &ztai, &fnu, kode, &c__1, cyr, cyi, nz, &tol, &elim, &alim);
446 L130:
447  s1r = cyr[0] * coef;
448  s1i = cyi[0] * coef;
449  if (iflag != 0) {
450  goto L150;
451  }
452  if (*id == 1) {
453  goto L140;
454  }
455  *air = csqr * s1r - csqi * s1i;
456  *aii = csqr * s1i + csqi * s1r;
457  return 0;
458 L140:
459  *air = -(*zr * s1r - *zi * s1i);
460  *aii = -(*zr * s1i + *zi * s1r);
461  return 0;
462 L150:
463  s1r *= sfac;
464  s1i *= sfac;
465  if (*id == 1) {
466  goto L160;
467  }
468  str = s1r * csqr - s1i * csqi;
469  s1i = s1r * csqi + s1i * csqr;
470  s1r = str;
471  *air = s1r / sfac;
472  *aii = s1i / sfac;
473  return 0;
474 L160:
475  str = -(s1r * *zr - s1i * *zi);
476  s1i = -(s1r * *zi + s1i * *zr);
477  s1r = str;
478  *air = s1r / sfac;
479  *aii = s1i / sfac;
480  return 0;
481 L170:
482  aa = d1mach_(&c__1) * 1e3;
483  s1r = zeror;
484  s1i = zeroi;
485  if (*id == 1) {
486  goto L190;
487  }
488  if (az <= aa) {
489  goto L180;
490  }
491  s1r = c2 * *zr;
492  s1i = c2 * *zi;
493 L180:
494  *air = c1 - s1r;
495  *aii = -s1i;
496  return 0;
497 L190:
498  *air = -c2;
499  *aii = 0.;
500  aa = sqrt(aa);
501  if (az <= aa) {
502  goto L200;
503  }
504  s1r = (*zr * *zr - *zi * *zi) * .5;
505  s1i = *zr * *zi;
506 L200:
507  *air += c1 * s1r;
508  *aii += c1 * s1i;
509  return 0;
510 L210:
511  *nz = 1;
512  *air = zeror;
513  *aii = zeroi;
514  return 0;
515 L270:
516  *nz = 0;
517  *ierr = 2;
518  return 0;
519 L280:
520  if (nn == -1) {
521  goto L270;
522  }
523  *nz = 0;
524  *ierr = 5;
525  return 0;
526 L260:
527  *ierr = 4;
528  *nz = 0;
529  return 0;
530 } /* zairy_ */
531 
static integer c__15
Definition: zairy.c:17
static integer c__16
Definition: zairy.c:18
static integer c__5
Definition: zairy.c:19
static integer c__1
Definition: zairy.c:22
TBCI__ cplx< T > log(const TBCI__ cplx< T > &z)
Definition: cplx.h:771
int zacai_(double *, double *, double *, const integer *, integer *, integer *, double *, double *, integer *, double *, double *, double *, double *)
int zbknu_(double *, double *, double *, const integer *, integer *, double *, double *, integer *, double *, double *, double *)
int zsqrt_(const double *, const double *, double *, double *)
Definition: zbesh.c:4891
int zairy_(const doublereal *zr, const doublereal *zi, const integer *id, const integer *kode, doublereal *air, doublereal *aii, integer *nz, integer *ierr)
Definition: zairy.c:43
T max(const FS_Vector< dims, T > &fv)
Definition: fs_vector.h:594
doublereal myzabs_(const double *, const double *)
Definition: zbesh.c:1945
double sqrt(const int a)
Definition: basics.h:1216
static integer c__14
Definition: zairy.c:20
double doublereal
Definition: f2c.h:32
int integer
barf [ba:rf] 2.
Definition: f2c.h:27
int zexp_(const double *, const double *, double *, double *)
Definition: zbesh.c:3799
double pow_dd(const doublereal *, const doublereal *)
static integer c__9
Definition: zairy.c:21
#define abs(x)
Definition: f2c.h:178
float real
Definition: f2c.h:31
doublereal d1mach_(const integer *)
Definition: zbesh.c:576
static integer c__4
Definition: zairy.c:16
#define min(a, b)
Definition: f2c.h:180
integer i1mach_(const integer *)
Definition: zbesh.c:1206