LAPACK 3.3.0

dlapy3.f

Go to the documentation of this file.
00001       DOUBLE PRECISION FUNCTION DLAPY3( X, Y, Z )
00002 *
00003 *  -- LAPACK auxiliary routine (version 3.2) --
00004 *  -- LAPACK is a software package provided by Univ. of Tennessee,    --
00005 *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
00006 *     November 2006
00007 *
00008 *     .. Scalar Arguments ..
00009       DOUBLE PRECISION   X, Y, Z
00010 *     ..
00011 *
00012 *  Purpose
00013 *  =======
00014 *
00015 *  DLAPY3 returns sqrt(x**2+y**2+z**2), taking care not to cause
00016 *  unnecessary overflow.
00017 *
00018 *  Arguments
00019 *  =========
00020 *
00021 *  X       (input) DOUBLE PRECISION
00022 *  Y       (input) DOUBLE PRECISION
00023 *  Z       (input) DOUBLE PRECISION
00024 *          X, Y and Z specify the values x, y and z.
00025 *
00026 *  =====================================================================
00027 *
00028 *     .. Parameters ..
00029       DOUBLE PRECISION   ZERO
00030       PARAMETER          ( ZERO = 0.0D0 )
00031 *     ..
00032 *     .. Local Scalars ..
00033       DOUBLE PRECISION   W, XABS, YABS, ZABS
00034 *     ..
00035 *     .. Intrinsic Functions ..
00036       INTRINSIC          ABS, MAX, SQRT
00037 *     ..
00038 *     .. Executable Statements ..
00039 *
00040       XABS = ABS( X )
00041       YABS = ABS( Y )
00042       ZABS = ABS( Z )
00043       W = MAX( XABS, YABS, ZABS )
00044       IF( W.EQ.ZERO ) THEN
00045 *     W can be zero for max(0,nan,0)
00046 *     adding all three entries together will make sure
00047 *     NaN will not disappear.
00048          DLAPY3 =  XABS + YABS + ZABS
00049       ELSE
00050          DLAPY3 = W*SQRT( ( XABS / W )**2+( YABS / W )**2+
00051      $            ( ZABS / W )**2 )
00052       END IF
00053       RETURN
00054 *
00055 *     End of DLAPY3
00056 *
00057       END
 All Files Functions