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
16static integer c__4 = 4;
17static integer c__15 = 15;
18static integer c__16 = 16;
19static integer c__5 = 5;
20static integer c__14 = 14;
21static integer c__9 = 9;
22static integer c__1 = 1;
23
24int zexp_(const double*, const double*, double*, double*);
25int zacai_(double*, double*, double*, const integer*,
26 integer*, integer*, double*, double*,
27 integer*, double*, double*,
28 double*, double*);
29int zbknu_(double*, double*, double*, const integer*,
30 integer*, double*, double*,
31 integer*, double*, double*, double*);
32int zsqrt_(const double*, const double*, double*, double*);
33doublereal 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 */
43int 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 }
283L40:
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;
300L50:
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);
311L60:
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/* ----------------------------------------------------------------------- */
326L70:
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;
384L80:
385 if (*zi != 0.) {
386 goto L90;
387 }
388 if (*zr > 0.) {
389 goto L90;
390 }
391 ztar = 0.;
392 ztai = ak;
393L90:
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 }
413L100:
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;
428L110:
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 }
444L120:
445 zbknu_(&ztar, &ztai, &fnu, kode, &c__1, cyr, cyi, nz, &tol, &elim, &alim);
446L130:
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;
458L140:
459 *air = -(*zr * s1r - *zi * s1i);
460 *aii = -(*zr * s1i + *zi * s1r);
461 return 0;
462L150:
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;
474L160:
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;
481L170:
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;
493L180:
494 *air = c1 - s1r;
495 *aii = -s1i;
496 return 0;
497L190:
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;
506L200:
507 *air += c1 * s1r;
508 *aii += c1 * s1i;
509 return 0;
510L210:
511 *nz = 1;
512 *air = zeror;
513 *aii = zeroi;
514 return 0;
515L270:
516 *nz = 0;
517 *ierr = 2;
518 return 0;
519L280:
520 if (nn == -1) {
521 goto L270;
522 }
523 *nz = 0;
524 *ierr = 5;
525 return 0;
526L260:
527 *ierr = 4;
528 *nz = 0;
529 return 0;
530} /* zairy_ */
531
TBCI__ cplx< T > log(const TBCI__ cplx< T > &z)
Definition cplx.h:771
NAMESPACE_END NAMESPACE_CSTD TBCI__ cplx< T > sqrt(const TBCI__ cplx< T > &z)
Definition cplx.h:751
#define abs(x)
Definition f2c.h:178
#define min(a, b)
Definition f2c.h:180
#define max(a, b)
Definition f2c.h:181
#define doublereal
static long int c__1
#define integer
#define real
static long int c__9
double pow_dd(const doublereal *, const doublereal *)
doublereal myzabs_(const double *, const double *)
Definition zbesh.c:1945
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
static integer c__15
Definition zairy.c:17
int zexp_(const double *, const double *, double *, double *)
Definition zbesh.c:3799
static integer c__14
Definition zairy.c:20
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
static integer c__4
Definition zairy.c:16
static integer c__16
Definition zairy.c:18
static integer c__5
Definition zairy.c:19
int zacai_(double *, double *, double *, const integer *, integer *, integer *, double *, double *, integer *, double *, double *, double *, double *)
integer i1mach_(const integer *)
Definition zbesh.c:1206
doublereal d1mach_(const integer *)
Definition zbesh.c:576