123456789101112131415161718192021222324252627282930313233343536373839404142 |
- *DECK ZABS
- DOUBLE PRECISION FUNCTION ZABS (ZR, ZI)
- C***BEGIN PROLOGUE ZABS
- C***SUBSIDIARY
- C***PURPOSE Subsidiary to ZBESH, ZBESI, ZBESJ, ZBESK, ZBESY, ZAIRY and
- C ZBIRY
- C***LIBRARY SLATEC
- C***TYPE ALL (ZABS-A)
- C***AUTHOR Amos, D. E., (SNL)
- C***DESCRIPTION
- C
- C ZABS COMPUTES THE ABSOLUTE VALUE OR MAGNITUDE OF A DOUBLE
- C PRECISION COMPLEX VARIABLE CMPLX(ZR,ZI)
- C
- C***SEE ALSO ZAIRY, ZBESH, ZBESI, ZBESJ, ZBESK, ZBESY, ZBIRY
- C***ROUTINES CALLED (NONE)
- C***REVISION HISTORY (YYMMDD)
- C 830501 DATE WRITTEN
- C 910415 Prologue converted to Version 4.0 format. (BAB)
- C***END PROLOGUE ZABS
- DOUBLE PRECISION ZR, ZI, U, V, Q, S
- C***FIRST EXECUTABLE STATEMENT ZABS
- U = ABS(ZR)
- V = ABS(ZI)
- S = U + V
- C-----------------------------------------------------------------------
- C S*1.0D0 MAKES AN UNNORMALIZED UNDERFLOW ON CDC MACHINES INTO A
- C TRUE FLOATING ZERO
- C-----------------------------------------------------------------------
- S = S*1.0D+0
- IF (S.EQ.0.0D+0) GO TO 20
- IF (U.GT.V) GO TO 10
- Q = U/V
- ZABS = V*SQRT(1.D+0+Q*Q)
- RETURN
- 10 Q = V/U
- ZABS = U*SQRT(1.D+0+Q*Q)
- RETURN
- 20 ZABS = 0.0D+0
- RETURN
- END
|