version 1.12, 2012/08/22 09:48:16
|
version 1.20, 2018/05/29 07:17:56
|
Line 1
|
Line 1
|
*> \brief \b DLAED6 |
*> \brief \b DLAED6 used by sstedc. Computes one Newton step in solution of the secular equation. |
* |
* |
* =========== 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 DLAED6 + dependencies |
*> Download DLAED6 + dependencies |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dlaed6.f"> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dlaed6.f"> |
*> [TGZ]</a> |
*> [TGZ]</a> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dlaed6.f"> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dlaed6.f"> |
*> [ZIP]</a> |
*> [ZIP]</a> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dlaed6.f"> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dlaed6.f"> |
*> [TXT]</a> |
*> [TXT]</a> |
*> \endhtmlonly |
*> \endhtmlonly |
* |
* |
* Definition: |
* Definition: |
* =========== |
* =========== |
* |
* |
* SUBROUTINE DLAED6( KNITER, ORGATI, RHO, D, Z, FINIT, TAU, INFO ) |
* SUBROUTINE DLAED6( KNITER, ORGATI, RHO, D, Z, FINIT, TAU, INFO ) |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
* LOGICAL ORGATI |
* LOGICAL ORGATI |
* INTEGER INFO, KNITER |
* INTEGER INFO, KNITER |
Line 28
|
Line 28
|
* .. Array Arguments .. |
* .. Array Arguments .. |
* DOUBLE PRECISION D( 3 ), Z( 3 ) |
* DOUBLE PRECISION D( 3 ), Z( 3 ) |
* .. |
* .. |
* |
* |
* |
* |
*> \par Purpose: |
*> \par Purpose: |
* ============= |
* ============= |
Line 110
|
Line 110
|
* 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 April 2012 |
*> \date December 2016 |
* |
* |
*> \ingroup auxOTHERcomputational |
*> \ingroup auxOTHERcomputational |
* |
* |
Line 140
|
Line 140
|
* ===================================================================== |
* ===================================================================== |
SUBROUTINE DLAED6( KNITER, ORGATI, RHO, D, Z, FINIT, TAU, INFO ) |
SUBROUTINE DLAED6( KNITER, ORGATI, RHO, D, Z, FINIT, TAU, INFO ) |
* |
* |
* -- LAPACK computational routine (version 3.4.1) -- |
* -- LAPACK computational routine (version 3.7.0) -- |
* -- 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..-- |
* April 2012 |
* December 2016 |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
LOGICAL ORGATI |
LOGICAL ORGATI |
Line 175
|
Line 175
|
INTEGER I, ITER, NITER |
INTEGER I, ITER, NITER |
DOUBLE PRECISION A, B, BASE, C, DDF, DF, EPS, ERRETM, ETA, F, |
DOUBLE PRECISION A, B, BASE, C, DDF, DF, EPS, ERRETM, ETA, F, |
$ FC, SCLFAC, SCLINV, SMALL1, SMALL2, SMINV1, |
$ FC, SCLFAC, SCLINV, SMALL1, SMALL2, SMINV1, |
$ SMINV2, TEMP, TEMP1, TEMP2, TEMP3, TEMP4, |
$ SMINV2, TEMP, TEMP1, TEMP2, TEMP3, TEMP4, |
$ LBD, UBD |
$ LBD, UBD |
* .. |
* .. |
* .. Intrinsic Functions .. |
* .. Intrinsic Functions .. |
Line 195
|
Line 195
|
IF( FINIT .LT. ZERO )THEN |
IF( FINIT .LT. ZERO )THEN |
LBD = ZERO |
LBD = ZERO |
ELSE |
ELSE |
UBD = ZERO |
UBD = ZERO |
END IF |
END IF |
* |
* |
NITER = 1 |
NITER = 1 |
Line 363
|
Line 363
|
* |
* |
TAU = TAU + ETA |
TAU = TAU + ETA |
IF( TAU .LT. LBD .OR. TAU .GT. UBD ) |
IF( TAU .LT. LBD .OR. TAU .GT. UBD ) |
$ TAU = ( LBD + UBD )/TWO |
$ TAU = ( LBD + UBD )/TWO |
* |
* |
FC = ZERO |
FC = ZERO |
ERRETM = ZERO |
ERRETM = ZERO |
Line 381
|
Line 381
|
DF = DF + TEMP2 |
DF = DF + TEMP2 |
DDF = DDF + TEMP3 |
DDF = DDF + TEMP3 |
ELSE |
ELSE |
GO TO 60 |
GO TO 60 |
END IF |
END IF |
40 CONTINUE |
40 CONTINUE |
F = FINIT + TAU*FC |
F = FINIT + TAU*FC |
ERRETM = EIGHT*( ABS( FINIT )+ABS( TAU )*ERRETM ) + |
ERRETM = EIGHT*( ABS( FINIT )+ABS( TAU )*ERRETM ) + |
$ ABS( TAU )*DF |
$ ABS( TAU )*DF |
IF( ABS( F ).LE.EPS*ERRETM ) |
IF( ( ABS( F ).LE.FOUR*EPS*ERRETM ) .OR. |
|
$ ( (UBD-LBD).LE.FOUR*EPS*ABS(TAU) ) ) |
$ GO TO 60 |
$ GO TO 60 |
IF( F .LE. ZERO )THEN |
IF( F .LE. ZERO )THEN |
LBD = TAU |
LBD = TAU |