Functions | |
| subroutine | claesy (a, b, c, rt1, rt2, evscal, cs1, sn1) |
| CLAESY computes the eigenvalues and eigenvectors of a 2-by-2 complex symmetric matrix. | |
| real function | clansy (norm, uplo, n, a, lda, work) |
| CLANSY returns the value of the 1-norm, or the Frobenius norm, or the infinity norm, or the element of largest absolute value of a complex symmetric matrix. | |
| subroutine | claqsy (uplo, n, a, lda, s, scond, amax, equed) |
| CLAQSY scales a symmetric/Hermitian matrix, using scaling factors computed by spoequ. | |
| subroutine | csymv (uplo, n, alpha, a, lda, x, incx, beta, y, incy) |
| CSYMV computes a matrix-vector product for a complex symmetric matrix. | |
| subroutine | csyr (uplo, n, alpha, x, incx, a, lda) |
| CSYR performs the symmetric rank-1 update of a complex symmetric matrix. | |
| subroutine | csyswapr (uplo, n, a, lda, i1, i2) |
| CSYSWAPR | |
| subroutine | ctgsy2 (trans, ijob, m, n, a, lda, b, ldb, c, ldc, d, ldd, e, lde, f, ldf, scale, rdsum, rdscal, info) |
| CTGSY2 solves the generalized Sylvester equation (unblocked algorithm). | |
This is the group of complex auxiliary functions for SY matrices
| subroutine claesy | ( | complex | a, |
| complex | b, | ||
| complex | c, | ||
| complex | rt1, | ||
| complex | rt2, | ||
| complex | evscal, | ||
| complex | cs1, | ||
| complex | sn1 ) |
CLAESY computes the eigenvalues and eigenvectors of a 2-by-2 complex symmetric matrix.
Download CLAESY + dependencies [TGZ] [ZIP] [TXT]
!> !> CLAESY computes the eigendecomposition of a 2-by-2 symmetric matrix !> ( ( A, B );( B, C ) ) !> provided the norm of the matrix of eigenvectors is larger than !> some threshold value. !> !> RT1 is the eigenvalue of larger absolute value, and RT2 of !> smaller absolute value. If the eigenvectors are computed, then !> on return ( CS1, SN1 ) is the unit eigenvector for RT1, hence !> !> [ CS1 SN1 ] . [ A B ] . [ CS1 -SN1 ] = [ RT1 0 ] !> [ -SN1 CS1 ] [ B C ] [ SN1 CS1 ] [ 0 RT2 ] !>
| [in] | A | !> A is COMPLEX !> The ( 1, 1 ) element of input matrix. !> |
| [in] | B | !> B is COMPLEX !> The ( 1, 2 ) element of input matrix. The ( 2, 1 ) element !> is also given by B, since the 2-by-2 matrix is symmetric. !> |
| [in] | C | !> C is COMPLEX !> The ( 2, 2 ) element of input matrix. !> |
| [out] | RT1 | !> RT1 is COMPLEX !> The eigenvalue of larger modulus. !> |
| [out] | RT2 | !> RT2 is COMPLEX !> The eigenvalue of smaller modulus. !> |
| [out] | EVSCAL | !> EVSCAL is COMPLEX !> The complex value by which the eigenvector matrix was scaled !> to make it orthonormal. If EVSCAL is zero, the eigenvectors !> were not computed. This means one of two things: the 2-by-2 !> matrix could not be diagonalized, or the norm of the matrix !> of eigenvectors before scaling was larger than the threshold !> value THRESH (set below). !> |
| [out] | CS1 | !> CS1 is COMPLEX !> |
| [out] | SN1 | !> SN1 is COMPLEX !> If EVSCAL .NE. 0, ( CS1, SN1 ) is the unit right eigenvector !> for RT1. !> |
Definition at line 114 of file claesy.f.
| real function clansy | ( | character | norm, |
| character | uplo, | ||
| integer | n, | ||
| complex, dimension( lda, * ) | a, | ||
| integer | lda, | ||
| real, dimension( * ) | work ) |
CLANSY returns the value of the 1-norm, or the Frobenius norm, or the infinity norm, or the element of largest absolute value of a complex symmetric matrix.
Download CLANSY + dependencies [TGZ] [ZIP] [TXT]
!> !> CLANSY returns the value of the one norm, or the Frobenius norm, or !> the infinity norm, or the element of largest absolute value of a !> complex symmetric matrix A. !>
!> !> CLANSY = ( max(abs(A(i,j))), NORM = 'M' or 'm' !> ( !> ( norm1(A), NORM = '1', 'O' or 'o' !> ( !> ( normI(A), NORM = 'I' or 'i' !> ( !> ( normF(A), NORM = 'F', 'f', 'E' or 'e' !> !> where norm1 denotes the one norm of a matrix (maximum column sum), !> normI denotes the infinity norm of a matrix (maximum row sum) and !> normF denotes the Frobenius norm of a matrix (square root of sum of !> squares). Note that max(abs(A(i,j))) is not a consistent matrix norm. !>
| [in] | NORM | !> NORM is CHARACTER*1 !> Specifies the value to be returned in CLANSY as described !> above. !> |
| [in] | UPLO | !> UPLO is CHARACTER*1 !> Specifies whether the upper or lower triangular part of the !> symmetric matrix A is to be referenced. !> = 'U': Upper triangular part of A is referenced !> = 'L': Lower triangular part of A is referenced !> |
| [in] | N | !> N is INTEGER !> The order of the matrix A. N >= 0. When N = 0, CLANSY is !> set to zero. !> |
| [in] | A | !> A is COMPLEX array, dimension (LDA,N) !> The symmetric matrix A. If UPLO = 'U', the leading n by n !> upper triangular part of A contains the upper triangular part !> of the matrix A, and the strictly lower triangular part of A !> is not referenced. If UPLO = 'L', the leading n by n lower !> triangular part of A contains the lower triangular part of !> the matrix A, and the strictly upper triangular part of A is !> not referenced. !> |
| [in] | LDA | !> LDA is INTEGER !> The leading dimension of the array A. LDA >= max(N,1). !> |
| [out] | WORK | !> WORK is REAL array, dimension (MAX(1,LWORK)), !> where LWORK >= N when NORM = 'I' or '1' or 'O'; otherwise, !> WORK is not referenced. !> |
Definition at line 122 of file clansy.f.
| subroutine claqsy | ( | character | uplo, |
| integer | n, | ||
| complex, dimension( lda, * ) | a, | ||
| integer | lda, | ||
| real, dimension( * ) | s, | ||
| real | scond, | ||
| real | amax, | ||
| character | equed ) |
CLAQSY scales a symmetric/Hermitian matrix, using scaling factors computed by spoequ.
Download CLAQSY + dependencies [TGZ] [ZIP] [TXT]
!> !> CLAQSY equilibrates a symmetric matrix A using the scaling factors !> in the vector S. !>
| [in] | UPLO | !> UPLO is CHARACTER*1 !> Specifies whether the upper or lower triangular part of the !> symmetric matrix A is stored. !> = 'U': Upper triangular !> = 'L': Lower triangular !> |
| [in] | N | !> N is INTEGER !> The order of the matrix A. N >= 0. !> |
| [in,out] | A | !> A is COMPLEX array, dimension (LDA,N) !> On entry, the symmetric matrix A. If UPLO = 'U', the leading !> n by n upper triangular part of A contains the upper !> triangular part of the matrix A, and the strictly lower !> triangular part of A is not referenced. If UPLO = 'L', the !> leading n by n lower triangular part of A contains the lower !> triangular part of the matrix A, and the strictly upper !> triangular part of A is not referenced. !> !> On exit, if EQUED = 'Y', the equilibrated matrix: !> diag(S) * A * diag(S). !> |
| [in] | LDA | !> LDA is INTEGER !> The leading dimension of the array A. LDA >= max(N,1). !> |
| [in] | S | !> S is REAL array, dimension (N) !> The scale factors for A. !> |
| [in] | SCOND | !> SCOND is REAL !> Ratio of the smallest S(i) to the largest S(i). !> |
| [in] | AMAX | !> AMAX is REAL !> Absolute value of largest matrix entry. !> |
| [out] | EQUED | !> EQUED is CHARACTER*1 !> Specifies whether or not equilibration was done. !> = 'N': No equilibration. !> = 'Y': Equilibration was done, i.e., A has been replaced by !> diag(S) * A * diag(S). !> |
!> THRESH is a threshold value used to decide if scaling should be done !> based on the ratio of the scaling factors. If SCOND < THRESH, !> scaling is done. !> !> LARGE and SMALL are threshold values used to decide if scaling should !> be done based on the absolute size of the largest matrix element. !> If AMAX > LARGE or AMAX < SMALL, scaling is done. !>
Definition at line 133 of file claqsy.f.
| subroutine csymv | ( | character | uplo, |
| integer | n, | ||
| complex | alpha, | ||
| complex, dimension( lda, * ) | a, | ||
| integer | lda, | ||
| complex, dimension( * ) | x, | ||
| integer | incx, | ||
| complex | beta, | ||
| complex, dimension( * ) | y, | ||
| integer | incy ) |
CSYMV computes a matrix-vector product for a complex symmetric matrix.
Download CSYMV + dependencies [TGZ] [ZIP] [TXT]
!> !> CSYMV performs the matrix-vector operation !> !> y := alpha*A*x + beta*y, !> !> where alpha and beta are scalars, x and y are n element vectors and !> A is an n by n symmetric matrix. !>
| [in] | UPLO | !> UPLO is CHARACTER*1 !> On entry, UPLO specifies whether the upper or lower !> triangular part of the array A is to be referenced as !> follows: !> !> UPLO = 'U' or 'u' Only the upper triangular part of A !> is to be referenced. !> !> UPLO = 'L' or 'l' Only the lower triangular part of A !> is to be referenced. !> !> Unchanged on exit. !> |
| [in] | N | !> N is INTEGER !> On entry, N specifies the order of the matrix A. !> N must be at least zero. !> Unchanged on exit. !> |
| [in] | ALPHA | !> ALPHA is COMPLEX !> On entry, ALPHA specifies the scalar alpha. !> Unchanged on exit. !> |
| [in] | A | !> A is COMPLEX array, dimension ( LDA, N ) !> Before entry, with UPLO = 'U' or 'u', the leading n by n !> upper triangular part of the array A must contain the upper !> triangular part of the symmetric matrix and the strictly !> lower triangular part of A is not referenced. !> Before entry, with UPLO = 'L' or 'l', the leading n by n !> lower triangular part of the array A must contain the lower !> triangular part of the symmetric matrix and the strictly !> upper triangular part of A is not referenced. !> Unchanged on exit. !> |
| [in] | LDA | !> LDA is INTEGER !> On entry, LDA specifies the first dimension of A as declared !> in the calling (sub) program. LDA must be at least !> max( 1, N ). !> Unchanged on exit. !> |
| [in] | X | !> X is COMPLEX array, dimension at least !> ( 1 + ( N - 1 )*abs( INCX ) ). !> Before entry, the incremented array X must contain the N- !> element vector x. !> Unchanged on exit. !> |
| [in] | INCX | !> INCX is INTEGER !> On entry, INCX specifies the increment for the elements of !> X. INCX must not be zero. !> Unchanged on exit. !> |
| [in] | BETA | !> BETA is COMPLEX !> On entry, BETA specifies the scalar beta. When BETA is !> supplied as zero then Y need not be set on input. !> Unchanged on exit. !> |
| [in,out] | Y | !> Y is COMPLEX array, dimension at least !> ( 1 + ( N - 1 )*abs( INCY ) ). !> Before entry, the incremented array Y must contain the n !> element vector y. On exit, Y is overwritten by the updated !> vector y. !> |
| [in] | INCY | !> INCY is INTEGER !> On entry, INCY specifies the increment for the elements of !> Y. INCY must not be zero. !> Unchanged on exit. !> |
Definition at line 156 of file csymv.f.
| subroutine csyr | ( | character | uplo, |
| integer | n, | ||
| complex | alpha, | ||
| complex, dimension( * ) | x, | ||
| integer | incx, | ||
| complex, dimension( lda, * ) | a, | ||
| integer | lda ) |
CSYR performs the symmetric rank-1 update of a complex symmetric matrix.
Download CSYR + dependencies [TGZ] [ZIP] [TXT]
!> !> CSYR performs the symmetric rank 1 operation !> !> A := alpha*x*x**H + A, !> !> where alpha is a complex scalar, x is an n element vector and A is an !> n by n symmetric matrix. !>
| [in] | UPLO | !> UPLO is CHARACTER*1 !> On entry, UPLO specifies whether the upper or lower !> triangular part of the array A is to be referenced as !> follows: !> !> UPLO = 'U' or 'u' Only the upper triangular part of A !> is to be referenced. !> !> UPLO = 'L' or 'l' Only the lower triangular part of A !> is to be referenced. !> !> Unchanged on exit. !> |
| [in] | N | !> N is INTEGER !> On entry, N specifies the order of the matrix A. !> N must be at least zero. !> Unchanged on exit. !> |
| [in] | ALPHA | !> ALPHA is COMPLEX !> On entry, ALPHA specifies the scalar alpha. !> Unchanged on exit. !> |
| [in] | X | !> X is COMPLEX array, dimension at least !> ( 1 + ( N - 1 )*abs( INCX ) ). !> Before entry, the incremented array X must contain the N- !> element vector x. !> Unchanged on exit. !> |
| [in] | INCX | !> INCX is INTEGER !> On entry, INCX specifies the increment for the elements of !> X. INCX must not be zero. !> Unchanged on exit. !> |
| [in,out] | A | !> A is COMPLEX array, dimension ( LDA, N ) !> Before entry, with UPLO = 'U' or 'u', the leading n by n !> upper triangular part of the array A must contain the upper !> triangular part of the symmetric matrix and the strictly !> lower triangular part of A is not referenced. On exit, the !> upper triangular part of the array A is overwritten by the !> upper triangular part of the updated matrix. !> Before entry, with UPLO = 'L' or 'l', the leading n by n !> lower triangular part of the array A must contain the lower !> triangular part of the symmetric matrix and the strictly !> upper triangular part of A is not referenced. On exit, the !> lower triangular part of the array A is overwritten by the !> lower triangular part of the updated matrix. !> |
| [in] | LDA | !> LDA is INTEGER !> On entry, LDA specifies the first dimension of A as declared !> in the calling (sub) program. LDA must be at least !> max( 1, N ). !> Unchanged on exit. !> |
Definition at line 134 of file csyr.f.
| subroutine csyswapr | ( | character | uplo, |
| integer | n, | ||
| complex, dimension( lda, n ) | a, | ||
| integer | lda, | ||
| integer | i1, | ||
| integer | i2 ) |
CSYSWAPR
Download CSYSWAPR + dependencies [TGZ] [ZIP] [TXT]
!> !> CSYSWAPR applies an elementary permutation on the rows and the columns of !> a symmetric matrix. !>
| [in] | UPLO | !> UPLO is CHARACTER*1 !> Specifies whether the details of the factorization are stored !> as an upper or lower triangular matrix. !> = 'U': Upper triangular, form is A = U*D*U**T; !> = 'L': Lower triangular, form is A = L*D*L**T. !> |
| [in] | N | !> N is INTEGER !> The order of the matrix A. N >= 0. !> |
| [in,out] | A | !> A is COMPLEX array, dimension (LDA,N) !> On entry, the NB diagonal matrix D and the multipliers !> used to obtain the factor U or L as computed by CSYTRF. !> !> On exit, if INFO = 0, the (symmetric) inverse of the original !> matrix. If UPLO = 'U', the upper triangular part of the !> inverse is formed and the part of A below the diagonal is not !> referenced; if UPLO = 'L' the lower triangular part of the !> inverse is formed and the part of A above the diagonal is !> not referenced. !> |
| [in] | LDA | !> LDA is INTEGER !> The leading dimension of the array A. LDA >= max(1,N). !> |
| [in] | I1 | !> I1 is INTEGER !> Index of the first row to swap !> |
| [in] | I2 | !> I2 is INTEGER !> Index of the second row to swap !> |
Definition at line 101 of file csyswapr.f.
| subroutine ctgsy2 | ( | character | trans, |
| integer | ijob, | ||
| integer | m, | ||
| integer | n, | ||
| complex, dimension( lda, * ) | a, | ||
| integer | lda, | ||
| complex, dimension( ldb, * ) | b, | ||
| integer | ldb, | ||
| complex, dimension( ldc, * ) | c, | ||
| integer | ldc, | ||
| complex, dimension( ldd, * ) | d, | ||
| integer | ldd, | ||
| complex, dimension( lde, * ) | e, | ||
| integer | lde, | ||
| complex, dimension( ldf, * ) | f, | ||
| integer | ldf, | ||
| real | scale, | ||
| real | rdsum, | ||
| real | rdscal, | ||
| integer | info ) |
CTGSY2 solves the generalized Sylvester equation (unblocked algorithm).
Download CTGSY2 + dependencies [TGZ] [ZIP] [TXT]
!> !> CTGSY2 solves the generalized Sylvester equation !> !> A * R - L * B = scale * C (1) !> D * R - L * E = scale * F !> !> using Level 1 and 2 BLAS, where R and L are unknown M-by-N matrices, !> (A, D), (B, E) and (C, F) are given matrix pairs of size M-by-M, !> N-by-N and M-by-N, respectively. A, B, D and E are upper triangular !> (i.e., (A,D) and (B,E) in generalized Schur form). !> !> The solution (R, L) overwrites (C, F). 0 <= SCALE <= 1 is an output !> scaling factor chosen to avoid overflow. !> !> In matrix notation solving equation (1) corresponds to solve !> Zx = scale * b, where Z is defined as !> !> Z = [ kron(In, A) -kron(B**H, Im) ] (2) !> [ kron(In, D) -kron(E**H, Im) ], !> !> Ik is the identity matrix of size k and X**H is the transpose of X. !> kron(X, Y) is the Kronecker product between the matrices X and Y. !> !> 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 !> !> A**H * R + D**H * L = scale * C (3) !> R * B**H + L * E**H = scale * -F !> !> This case is used to compute an estimate of Dif[(A, D), (B, E)] = !> = sigma_min(Z) using reverse communication with CLACON. !> !> CTGSY2 also (IJOB >= 1) contributes to the computation in CTGSYL !> of an upper bound on the separation between to matrix pairs. Then !> the input (A, D), (B, E) are sub-pencils of two matrix pairs in !> CTGSYL. !>
| [in] | TRANS | !> TRANS is CHARACTER*1 !> = 'N': solve the generalized Sylvester equation (1). !> = 'T': solve the 'transposed' system (3). !> |
| [in] | IJOB | !> IJOB is INTEGER !> Specifies what kind of functionality to be performed. !> = 0: solve (1) only. !> = 1: A contribution from this subsystem to a Frobenius !> norm-based estimate of the separation between two matrix !> pairs is computed. (look ahead strategy is used). !> = 2: A contribution from this subsystem to a Frobenius !> norm-based estimate of the separation between two matrix !> pairs is computed. (SGECON on sub-systems is used.) !> Not referenced if TRANS = 'T'. !> |
| [in] | M | !> M is INTEGER !> On entry, M specifies the order of A and D, and the row !> dimension of C, F, R and L. !> |
| [in] | N | !> N is INTEGER !> On entry, N specifies the order of B and E, and the column !> dimension of C, F, R and L. !> |
| [in] | A | !> A is COMPLEX array, dimension (LDA, M) !> On entry, A contains an upper triangular matrix. !> |
| [in] | LDA | !> LDA is INTEGER !> The leading dimension of the matrix A. LDA >= max(1, M). !> |
| [in] | B | !> B is COMPLEX array, dimension (LDB, N) !> On entry, B contains an upper triangular matrix. !> |
| [in] | LDB | !> LDB is INTEGER !> The leading dimension of the matrix B. LDB >= max(1, N). !> |
| [in,out] | C | !> C is COMPLEX array, dimension (LDC, N) !> On entry, C contains the right-hand-side of the first matrix !> equation in (1). !> On exit, if IJOB = 0, C has been overwritten by the solution !> R. !> |
| [in] | LDC | !> LDC is INTEGER !> The leading dimension of the matrix C. LDC >= max(1, M). !> |
| [in] | D | !> D is COMPLEX array, dimension (LDD, M) !> On entry, D contains an upper triangular matrix. !> |
| [in] | LDD | !> LDD is INTEGER !> The leading dimension of the matrix D. LDD >= max(1, M). !> |
| [in] | E | !> E is COMPLEX array, dimension (LDE, N) !> On entry, E contains an upper triangular matrix. !> |
| [in] | LDE | !> LDE is INTEGER !> The leading dimension of the matrix E. LDE >= max(1, N). !> |
| [in,out] | F | !> F is COMPLEX array, dimension (LDF, N) !> On entry, F contains the right-hand-side of the second matrix !> equation in (1). !> On exit, if IJOB = 0, F has been overwritten by the solution !> L. !> |
| [in] | LDF | !> LDF is INTEGER !> The leading dimension of the matrix F. LDF >= max(1, M). !> |
| [out] | SCALE | !> SCALE is REAL !> On exit, 0 <= SCALE <= 1. If 0 < SCALE < 1, the solutions !> R and L (C and F on entry) will hold the solutions to a !> slightly perturbed system but the input matrices A, B, D and !> E have not been changed. If SCALE = 0, R and L will hold the !> solutions to the homogeneous system with C = F = 0. !> Normally, SCALE = 1. !> |
| [in,out] | RDSUM | !> RDSUM is REAL !> On entry, the sum of squares of computed contributions to !> the Dif-estimate under computation by CTGSYL, where the !> scaling factor RDSCAL (see below) has been factored out. !> On exit, the corresponding sum of squares updated with the !> contributions from the current sub-system. !> If TRANS = 'T' RDSUM is not touched. !> NOTE: RDSUM only makes sense when CTGSY2 is called by !> CTGSYL. !> |
| [in,out] | RDSCAL | !> RDSCAL is REAL !> On entry, scaling factor used to prevent overflow in RDSUM. !> On exit, RDSCAL is updated w.r.t. the current contributions !> in RDSUM. !> If TRANS = 'T', RDSCAL is not touched. !> NOTE: RDSCAL only makes sense when CTGSY2 is called by !> CTGSYL. !> |
| [out] | INFO | !> INFO is INTEGER !> On exit, if INFO is set to !> =0: Successful exit !> <0: If INFO = -i, input argument number i is illegal. !> >0: The matrix pairs (A, D) and (B, E) have common or very !> close eigenvalues. !> |
Definition at line 256 of file ctgsy2.f.