+++ /dev/null
-*> \brief \b DLASSQ updates a sum of squares represented in scaled form.
-*
-* =========== DOCUMENTATION ===========
-*
-* Online html documentation available at
-* http://www.netlib.org/lapack/explore-html/
-*
-*> \htmlonly
-*> Download DLASSQ + dependencies
-*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dlassq.f">
-*> [TGZ]</a>
-*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dlassq.f">
-*> [ZIP]</a>
-*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dlassq.f">
-*> [TXT]</a>
-*> \endhtmlonly
-*
-* Definition:
-* ===========
-*
-* SUBROUTINE DLASSQ( N, X, INCX, SCALE, SUMSQ )
-*
-* .. Scalar Arguments ..
-* INTEGER INCX, N
-* DOUBLE PRECISION SCALE, SUMSQ
-* ..
-* .. Array Arguments ..
-* DOUBLE PRECISION X( * )
-* ..
-*
-*
-*> \par Purpose:
-* =============
-*>
-*> \verbatim
-*>
-*> DLASSQ returns the values scl and smsq such that
-*>
-*> ( scl**2 )*smsq = x( 1 )**2 +...+ x( n )**2 + ( scale**2 )*sumsq,
-*>
-*> where x( i ) = X( 1 + ( i - 1 )*INCX ). The value of sumsq is
-*> assumed to be non-negative and scl returns the value
-*>
-*> scl = max( scale, abs( x( i ) ) ).
-*>
-*> scale and sumsq must be supplied in SCALE and SUMSQ and
-*> scl and smsq are overwritten on SCALE and SUMSQ respectively.
-*>
-*> The routine makes only one pass through the vector x.
-*> \endverbatim
-*
-* Arguments:
-* ==========
-*
-*> \param[in] N
-*> \verbatim
-*> N is INTEGER
-*> The number of elements to be used from the vector X.
-*> \endverbatim
-*>
-*> \param[in] X
-*> \verbatim
-*> X is DOUBLE PRECISION array, dimension (N)
-*> The vector for which a scaled sum of squares is computed.
-*> x( i ) = X( 1 + ( i - 1 )*INCX ), 1 <= i <= n.
-*> \endverbatim
-*>
-*> \param[in] INCX
-*> \verbatim
-*> INCX is INTEGER
-*> The increment between successive values of the vector X.
-*> INCX > 0.
-*> \endverbatim
-*>
-*> \param[in,out] SCALE
-*> \verbatim
-*> SCALE is DOUBLE PRECISION
-*> On entry, the value scale in the equation above.
-*> On exit, SCALE is overwritten with scl , the scaling factor
-*> for the sum of squares.
-*> \endverbatim
-*>
-*> \param[in,out] SUMSQ
-*> \verbatim
-*> SUMSQ is DOUBLE PRECISION
-*> On entry, the value sumsq in the equation above.
-*> On exit, SUMSQ is overwritten with smsq , the basic sum of
-*> squares from which scl has been factored out.
-*> \endverbatim
-*
-* Authors:
-* ========
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date September 2012
-*
-*> \ingroup auxOTHERauxiliary
-*
-* =====================================================================
- SUBROUTINE DLASSQ( N, X, INCX, SCALE, SUMSQ )
-*
-* -- LAPACK auxiliary routine (version 3.4.2) --
-* -- LAPACK is a software package provided by Univ. of Tennessee, --
-* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
-* September 2012
-*
-* .. Scalar Arguments ..
- INTEGER INCX, N
- DOUBLE PRECISION SCALE, SUMSQ
-* ..
-* .. Array Arguments ..
- DOUBLE PRECISION X( * )
-* ..
-*
-* =====================================================================
-*
-* .. Parameters ..
- DOUBLE PRECISION ZERO
- PARAMETER ( ZERO = 0.0D+0 )
-* ..
-* .. Local Scalars ..
- INTEGER IX
- DOUBLE PRECISION ABSXI
-* ..
-* .. External Functions ..
- LOGICAL DISNAN
- EXTERNAL DISNAN
-* ..
-* .. Intrinsic Functions ..
- INTRINSIC ABS
-* ..
-* .. Executable Statements ..
-*
- IF( N.GT.0 ) THEN
- DO 10 IX = 1, 1 + ( N-1 )*INCX, INCX
- ABSXI = ABS( X( IX ) )
- IF( ABSXI.GT.ZERO.OR.DISNAN( ABSXI ) ) THEN
- IF( SCALE.LT.ABSXI ) THEN
- SUMSQ = 1 + SUMSQ*( SCALE / ABSXI )**2
- SCALE = ABSXI
- ELSE
- SUMSQ = SUMSQ + ( ABSXI / SCALE )**2
- END IF
- END IF
- 10 CONTINUE
- END IF
- RETURN
-*
-* End of DLASSQ
-*
- END