version 1.7, 2010/12/21 13:53:41
|
version 1.8, 2011/07/22 07:38:13
|
Line 2
|
Line 2
|
$ LDVR, S, SEP, MM, M, WORK, LDWORK, IWORK, |
$ LDVR, S, SEP, MM, M, WORK, LDWORK, IWORK, |
$ INFO ) |
$ INFO ) |
* |
* |
* -- LAPACK routine (version 3.2) -- |
* -- LAPACK routine (version 3.3.1) -- |
* -- 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..-- |
* November 2006 |
* -- April 2011 -- |
* |
* |
* Modified to call DLACN2 in place of DLACON, 5 Feb 03, SJH. |
* Modified to call DLACN2 in place of DLACON, 5 Feb 03, SJH. |
* |
* |
Line 140
|
Line 140
|
* The reciprocal of the condition number of an eigenvalue lambda is |
* The reciprocal of the condition number of an eigenvalue lambda is |
* defined as |
* defined as |
* |
* |
* S(lambda) = |v'*u| / (norm(u)*norm(v)) |
* S(lambda) = |v**T*u| / (norm(u)*norm(v)) |
* |
* |
* where u and v are the right and left eigenvectors of T corresponding |
* where u and v are the right and left eigenvectors of T corresponding |
* to lambda; v' denotes the conjugate-transpose of v, and norm(u) |
* to lambda; v**T denotes the transpose of v, and norm(u) |
* denotes the Euclidean norm. These reciprocal condition numbers always |
* denotes the Euclidean norm. These reciprocal condition numbers always |
* lie between zero (very badly conditioned) and one (very well |
* lie between zero (very badly conditioned) and one (very well |
* conditioned). If n = 1, S(lambda) is defined to be 1. |
* conditioned). If n = 1, S(lambda) is defined to be 1. |
Line 403
|
Line 403
|
* |
* |
* Form |
* Form |
* |
* |
* C' = WORK(2:N,2:N) + i*[rwork(1) ..... rwork(n-1) ] |
* C**T = WORK(2:N,2:N) + i*[rwork(1) ..... rwork(n-1) ] |
* [ mu ] |
* [ mu ] |
* [ .. ] |
* [ .. ] |
* [ .. ] |
* [ .. ] |
* [ mu ] |
* [ mu ] |
* where C' is conjugate transpose of complex matrix C, |
* where C**T is transpose of matrix C, |
* and RWORK is stored starting in the N+1-st column of |
* and RWORK is stored starting in the N+1-st column of |
* WORK. |
* WORK. |
* |
* |
Line 426
|
Line 426
|
NN = 2*( N-1 ) |
NN = 2*( N-1 ) |
END IF |
END IF |
* |
* |
* Estimate norm(inv(C')) |
* Estimate norm(inv(C**T)) |
* |
* |
EST = ZERO |
EST = ZERO |
KASE = 0 |
KASE = 0 |
Line 437
|
Line 437
|
IF( KASE.EQ.1 ) THEN |
IF( KASE.EQ.1 ) THEN |
IF( N2.EQ.1 ) THEN |
IF( N2.EQ.1 ) THEN |
* |
* |
* Real eigenvalue: solve C'*x = scale*c. |
* Real eigenvalue: solve C**T*x = scale*c. |
* |
* |
CALL DLAQTR( .TRUE., .TRUE., N-1, WORK( 2, 2 ), |
CALL DLAQTR( .TRUE., .TRUE., N-1, WORK( 2, 2 ), |
$ LDWORK, DUMMY, DUMM, SCALE, |
$ LDWORK, DUMMY, DUMM, SCALE, |
Line 446
|
Line 446
|
ELSE |
ELSE |
* |
* |
* Complex eigenvalue: solve |
* Complex eigenvalue: solve |
* C'*(p+iq) = scale*(c+id) in real arithmetic. |
* C**T*(p+iq) = scale*(c+id) in real arithmetic. |
* |
* |
CALL DLAQTR( .TRUE., .FALSE., N-1, WORK( 2, 2 ), |
CALL DLAQTR( .TRUE., .FALSE., N-1, WORK( 2, 2 ), |
$ LDWORK, WORK( 1, N+1 ), MU, SCALE, |
$ LDWORK, WORK( 1, N+1 ), MU, SCALE, |