3217
|
1 DOUBLE PRECISION FUNCTION XZABS(ZR, ZI) |
|
2 C***BEGIN PROLOGUE XZABS |
|
3 C***REFER TO ZBESH,ZBESI,ZBESJ,ZBESK,ZBESY,ZAIRY,ZBIRY |
|
4 C |
|
5 C XZABS COMPUTES THE ABSOLUTE VALUE OR MAGNITUDE OF A DOUBLE |
|
6 C PRECISION COMPLEX VARIABLE CMPLX(ZR,ZI) |
|
7 C |
|
8 C***ROUTINES CALLED (NONE) |
|
9 C***END PROLOGUE XZABS |
|
10 DOUBLE PRECISION ZR, ZI, U, V, Q, S |
|
11 U = DABS(ZR) |
|
12 V = DABS(ZI) |
|
13 S = U + V |
|
14 C----------------------------------------------------------------------- |
|
15 C S*1.0D0 MAKES AN UNNORMALIZED UNDERFLOW ON CDC MACHINES INTO A |
|
16 C TRUE FLOATING ZERO |
|
17 C----------------------------------------------------------------------- |
|
18 S = S*1.0D+0 |
|
19 IF (S.EQ.0.0D+0) GO TO 20 |
|
20 IF (U.GT.V) GO TO 10 |
|
21 Q = U/V |
|
22 XZABS = V*DSQRT(1.D+0+Q*Q) |
|
23 RETURN |
|
24 10 Q = V/U |
|
25 XZABS = U*DSQRT(1.D+0+Q*Q) |
|
26 RETURN |
|
27 20 XZABS = 0.0D+0 |
|
28 RETURN |
|
29 END |