version 1.7, 2010/12/21 13:53:57
|
version 1.8, 2011/07/22 07:38:21
|
Line 2
|
Line 2
|
$ LDD, E, LDE, F, LDF, SCALE, RDSUM, RDSCAL, |
$ LDD, E, LDE, F, LDF, SCALE, RDSUM, RDSCAL, |
$ INFO ) |
$ INFO ) |
* |
* |
* -- LAPACK auxiliary routine (version 3.2) -- |
* -- LAPACK auxiliary 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 -- |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
CHARACTER TRANS |
CHARACTER TRANS |
Line 22
|
Line 22
|
* |
* |
* ZTGSY2 solves the generalized Sylvester equation |
* ZTGSY2 solves the generalized Sylvester equation |
* |
* |
* A * R - L * B = scale * C (1) |
* A * R - L * B = scale * C (1) |
* D * R - L * E = scale * F |
* D * R - L * E = scale * F |
* |
* |
* using Level 1 and 2 BLAS, where R and L are unknown M-by-N matrices, |
* using Level 1 and 2 BLAS, where R and L are unknown M-by-N matrices, |
Line 36
|
Line 36
|
* In matrix notation solving equation (1) corresponds to solve |
* In matrix notation solving equation (1) corresponds to solve |
* Zx = scale * b, where Z is defined as |
* Zx = scale * b, where Z is defined as |
* |
* |
* Z = [ kron(In, A) -kron(B', Im) ] (2) |
* Z = [ kron(In, A) -kron(B**H, Im) ] (2) |
* [ kron(In, D) -kron(E', Im) ], |
* [ kron(In, D) -kron(E**H, Im) ], |
* |
* |
* Ik is the identity matrix of size k and X' is the transpose of X. |
* Ik is the identity matrix of size k and X**H is the conjuguate transpose of X. |
* kron(X, Y) is the Kronecker product between the matrices X and Y. |
* kron(X, Y) is the Kronecker product between the matrices X and Y. |
* |
* |
* If TRANS = 'C', y in the conjugate transposed system Z'y = scale*b |
* If TRANS = 'C', y in the conjugate transposed system Z**H*y = scale*b |
* is solved for, which is equivalent to solve for R and L in |
* is solved for, which is equivalent to solve for R and L in |
* |
* |
* A' * R + D' * L = scale * C (3) |
* A**H * R + D**H * L = scale * C (3) |
* R * B' + L * E' = scale * -F |
* R * B**H + L * E**H = scale * -F |
* |
* |
* This case is used to compute an estimate of Dif[(A, D), (B, E)] = |
* This case is used to compute an estimate of Dif[(A, D), (B, E)] = |
* = sigma_min(Z) using reverse communicaton with ZLACON. |
* = sigma_min(Z) using reverse communicaton with ZLACON. |
Line 298
|
Line 298
|
ELSE |
ELSE |
* |
* |
* Solve transposed (I, J) - system: |
* Solve transposed (I, J) - system: |
* A(I, I)' * R(I, J) + D(I, I)' * L(J, J) = C(I, J) |
* A(I, I)**H * R(I, J) + D(I, I)**H * L(J, J) = C(I, J) |
* R(I, I) * B(J, J) + L(I, J) * E(J, J) = -F(I, J) |
* R(I, I) * B(J, J) + L(I, J) * E(J, J) = -F(I, J) |
* for I = 1, 2, ..., M, J = N, N - 1, ..., 1 |
* for I = 1, 2, ..., M, J = N, N - 1, ..., 1 |
* |
* |
Line 307
|
Line 307
|
DO 80 I = 1, M |
DO 80 I = 1, M |
DO 70 J = N, 1, -1 |
DO 70 J = N, 1, -1 |
* |
* |
* Build 2 by 2 system Z' |
* Build 2 by 2 system Z**H |
* |
* |
Z( 1, 1 ) = DCONJG( A( I, I ) ) |
Z( 1, 1 ) = DCONJG( A( I, I ) ) |
Z( 2, 1 ) = -DCONJG( B( J, J ) ) |
Z( 2, 1 ) = -DCONJG( B( J, J ) ) |
Line 320
|
Line 320
|
RHS( 1 ) = C( I, J ) |
RHS( 1 ) = C( I, J ) |
RHS( 2 ) = F( I, J ) |
RHS( 2 ) = F( I, J ) |
* |
* |
* Solve Z' * x = RHS |
* Solve Z**H * x = RHS |
* |
* |
CALL ZGETC2( LDZ, Z, LDZ, IPIV, JPIV, IERR ) |
CALL ZGETC2( LDZ, Z, LDZ, IPIV, JPIV, IERR ) |
IF( IERR.GT.0 ) |
IF( IERR.GT.0 ) |