version 1.13, 2012/12/14 14:22:31
|
version 1.19, 2023/08/07 08:38:53
|
Line 2
|
Line 2
|
* |
* |
* =========== DOCUMENTATION =========== |
* =========== DOCUMENTATION =========== |
* |
* |
* Online html documentation available at |
* Online html documentation available at |
* http://www.netlib.org/lapack/explore-html/ |
* http://www.netlib.org/lapack/explore-html/ |
* |
* |
*> \htmlonly |
*> \htmlonly |
*> Download DLACN2 + dependencies |
*> Download DLACN2 + dependencies |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dlacn2.f"> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dlacn2.f"> |
*> [TGZ]</a> |
*> [TGZ]</a> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dlacn2.f"> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dlacn2.f"> |
*> [ZIP]</a> |
*> [ZIP]</a> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dlacn2.f"> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dlacn2.f"> |
*> [TXT]</a> |
*> [TXT]</a> |
*> \endhtmlonly |
*> \endhtmlonly |
* |
* |
* Definition: |
* Definition: |
* =========== |
* =========== |
* |
* |
* SUBROUTINE DLACN2( N, V, X, ISGN, EST, KASE, ISAVE ) |
* SUBROUTINE DLACN2( N, V, X, ISGN, EST, KASE, ISAVE ) |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
* INTEGER KASE, N |
* INTEGER KASE, N |
* DOUBLE PRECISION EST |
* DOUBLE PRECISION EST |
Line 28
|
Line 28
|
* INTEGER ISGN( * ), ISAVE( 3 ) |
* INTEGER ISGN( * ), ISAVE( 3 ) |
* DOUBLE PRECISION V( * ), X( * ) |
* DOUBLE PRECISION V( * ), X( * ) |
* .. |
* .. |
* |
* |
* |
* |
*> \par Purpose: |
*> \par Purpose: |
* ============= |
* ============= |
Line 75
|
Line 75
|
*> EST is DOUBLE PRECISION |
*> EST is DOUBLE PRECISION |
*> On entry with KASE = 1 or 2 and ISAVE(1) = 3, EST should be |
*> On entry with KASE = 1 or 2 and ISAVE(1) = 3, EST should be |
*> unchanged from the previous call to DLACN2. |
*> unchanged from the previous call to DLACN2. |
*> On exit, EST is an estimate (a lower bound) for norm(A). |
*> On exit, EST is an estimate (a lower bound) for norm(A). |
*> \endverbatim |
*> \endverbatim |
*> |
*> |
*> \param[in,out] KASE |
*> \param[in,out] KASE |
Line 96
|
Line 96
|
* Authors: |
* Authors: |
* ======== |
* ======== |
* |
* |
*> \author Univ. of Tennessee |
*> \author Univ. of Tennessee |
*> \author Univ. of California Berkeley |
*> \author Univ. of California Berkeley |
*> \author Univ. of Colorado Denver |
*> \author Univ. of Colorado Denver |
*> \author NAG Ltd. |
*> \author NAG Ltd. |
* |
|
*> \date September 2012 |
|
* |
* |
*> \ingroup doubleOTHERauxiliary |
*> \ingroup doubleOTHERauxiliary |
* |
* |
Line 136
|
Line 134
|
* ===================================================================== |
* ===================================================================== |
SUBROUTINE DLACN2( N, V, X, ISGN, EST, KASE, ISAVE ) |
SUBROUTINE DLACN2( N, V, X, ISGN, EST, KASE, ISAVE ) |
* |
* |
* -- LAPACK auxiliary routine (version 3.4.2) -- |
* -- LAPACK auxiliary routine -- |
* -- LAPACK is a software package provided by Univ. of Tennessee, -- |
* -- LAPACK is a software package provided by Univ. of Tennessee, -- |
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
* September 2012 |
|
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
INTEGER KASE, N |
INTEGER KASE, N |
Line 160
|
Line 157
|
* .. |
* .. |
* .. Local Scalars .. |
* .. Local Scalars .. |
INTEGER I, JLAST |
INTEGER I, JLAST |
DOUBLE PRECISION ALTSGN, ESTOLD, TEMP |
DOUBLE PRECISION ALTSGN, ESTOLD, TEMP, XS |
* .. |
* .. |
* .. External Functions .. |
* .. External Functions .. |
INTEGER IDAMAX |
INTEGER IDAMAX |
Line 171
|
Line 168
|
EXTERNAL DCOPY |
EXTERNAL DCOPY |
* .. |
* .. |
* .. Intrinsic Functions .. |
* .. Intrinsic Functions .. |
INTRINSIC ABS, DBLE, NINT, SIGN |
INTRINSIC ABS, DBLE, NINT |
* .. |
* .. |
* .. Executable Statements .. |
* .. Executable Statements .. |
* |
* |
Line 199
|
Line 196
|
EST = DASUM( N, X, 1 ) |
EST = DASUM( N, X, 1 ) |
* |
* |
DO 30 I = 1, N |
DO 30 I = 1, N |
X( I ) = SIGN( ONE, X( I ) ) |
IF( X(I).GE.ZERO ) THEN |
|
X(I) = ONE |
|
ELSE |
|
X(I) = -ONE |
|
END IF |
ISGN( I ) = NINT( X( I ) ) |
ISGN( I ) = NINT( X( I ) ) |
30 CONTINUE |
30 CONTINUE |
KASE = 2 |
KASE = 2 |
Line 232
|
Line 233
|
ESTOLD = EST |
ESTOLD = EST |
EST = DASUM( N, V, 1 ) |
EST = DASUM( N, V, 1 ) |
DO 80 I = 1, N |
DO 80 I = 1, N |
IF( NINT( SIGN( ONE, X( I ) ) ).NE.ISGN( I ) ) |
IF( X(I).GE.ZERO ) THEN |
|
XS = ONE |
|
ELSE |
|
XS = -ONE |
|
END IF |
|
IF( NINT( XS ).NE.ISGN( I ) ) |
$ GO TO 90 |
$ GO TO 90 |
80 CONTINUE |
80 CONTINUE |
* REPEATED SIGN VECTOR DETECTED, HENCE ALGORITHM HAS CONVERGED. |
* REPEATED SIGN VECTOR DETECTED, HENCE ALGORITHM HAS CONVERGED. |
Line 244
|
Line 250
|
$ GO TO 120 |
$ GO TO 120 |
* |
* |
DO 100 I = 1, N |
DO 100 I = 1, N |
X( I ) = SIGN( ONE, X( I ) ) |
IF( X(I).GE.ZERO ) THEN |
|
X(I) = ONE |
|
ELSE |
|
X(I) = -ONE |
|
END IF |
ISGN( I ) = NINT( X( I ) ) |
ISGN( I ) = NINT( X( I ) ) |
100 CONTINUE |
100 CONTINUE |
KASE = 2 |
KASE = 2 |