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