1
*> \brief \b SSYGS2 reduces a symmetric definite generalized eigenproblem to standard form, using the factorization results obtained from spotrf (unblocked algorithm).
3
* =========== DOCUMENTATION ===========
5
* Online html documentation available at
6
* http://www.netlib.org/lapack/explore-html/
9
*> Download SSYGS2 + dependencies
10
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/ssygs2.f">
12
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/ssygs2.f">
14
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/ssygs2.f">
21
* SUBROUTINE SSYGS2( ITYPE, UPLO, N, A, LDA, B, LDB, INFO )
23
* .. Scalar Arguments ..
25
* INTEGER INFO, ITYPE, LDA, LDB, N
27
* .. Array Arguments ..
28
* REAL A( LDA, * ), B( LDB, * )
37
*> SSYGS2 reduces a real symmetric-definite generalized eigenproblem
40
*> If ITYPE = 1, the problem is A*x = lambda*B*x,
41
*> and A is overwritten by inv(U**T)*A*inv(U) or inv(L)*A*inv(L**T)
43
*> If ITYPE = 2 or 3, the problem is A*B*x = lambda*x or
44
*> B*A*x = lambda*x, and A is overwritten by U*A*U**T or L**T *A*L.
46
*> B must have been previously factorized as U**T *U or L*L**T by SPOTRF.
55
*> = 1: compute inv(U**T)*A*inv(U) or inv(L)*A*inv(L**T);
56
*> = 2 or 3: compute U*A*U**T or L**T *A*L.
61
*> UPLO is CHARACTER*1
62
*> Specifies whether the upper or lower triangular part of the
63
*> symmetric matrix A is stored, and how B has been factorized.
64
*> = 'U': Upper triangular
65
*> = 'L': Lower triangular
71
*> The order of the matrices A and B. N >= 0.
76
*> A is REAL array, dimension (LDA,N)
77
*> On entry, the symmetric matrix A. If UPLO = 'U', the leading
78
*> n by n upper triangular part of A contains the upper
79
*> triangular part of the matrix A, and the strictly lower
80
*> triangular part of A is not referenced. If UPLO = 'L', the
81
*> leading n by n lower triangular part of A contains the lower
82
*> triangular part of the matrix A, and the strictly upper
83
*> triangular part of A is not referenced.
85
*> On exit, if INFO = 0, the transformed matrix, stored in the
92
*> The leading dimension of the array A. LDA >= max(1,N).
97
*> B is REAL array, dimension (LDB,N)
98
*> The triangular factor from the Cholesky factorization of B,
99
*> as returned by SPOTRF.
105
*> The leading dimension of the array B. LDB >= max(1,N).
111
*> = 0: successful exit.
112
*> < 0: if INFO = -i, the i-th argument had an illegal value.
118
*> \author Univ. of Tennessee
119
*> \author Univ. of California Berkeley
120
*> \author Univ. of Colorado Denver
123
*> \date September 2012
125
*> \ingroup realSYcomputational
127
* =====================================================================
1
128
SUBROUTINE SSYGS2( ITYPE, UPLO, N, A, LDA, B, LDB, INFO )
3
* -- LAPACK routine (version 2.0) --
4
* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
5
* Courant Institute, Argonne National Lab, and Rice University
130
* -- LAPACK computational routine (version 3.4.2) --
131
* -- LAPACK is a software package provided by Univ. of Tennessee, --
132
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
8
135
* .. Scalar Arguments ..
13
140
REAL A( LDA, * ), B( LDB, * )
17
* $Id: ssygs2.f 19697 2010-10-29 16:57:34Z d3y133 $
22
* SSYGS2 reduces a real symmetric-definite generalized eigenproblem
25
* If ITYPE = 1, the problem is A*x = lambda*B*x,
26
* and A is overwritten by inv(U')*A*inv(U) or inv(L)*A*inv(L')
28
* If ITYPE = 2 or 3, the problem is A*B*x = lambda*x or
29
* B*A*x = lambda*x, and A is overwritten by U*A*U` or L'*A*L.
31
* B must have been previously factorized as U'*U or L*L' by SPOTRF.
36
* ITYPE (input) INTEGER
37
* = 1: compute inv(U')*A*inv(U) or inv(L)*A*inv(L');
38
* = 2 or 3: compute U*A*U' or L'*A*L.
40
* UPLO (input) CHARACTER
41
* Specifies whether the upper or lower triangular part of the
42
* symmetric matrix A is stored, and how B has been factorized.
43
* = 'U': Upper triangular
44
* = 'L': Lower triangular
47
* The order of the matrices A and B. N >= 0.
49
* A (input/output) REAL array, dimension (LDA,N)
50
* On entry, the symmetric matrix A. If UPLO = 'U', the leading
51
* n by n upper triangular part of A contains the upper
52
* triangular part of the matrix A, and the strictly lower
53
* triangular part of A is not referenced. If UPLO = 'L', the
54
* leading n by n lower triangular part of A contains the lower
55
* triangular part of the matrix A, and the strictly upper
56
* triangular part of A is not referenced.
58
* On exit, if INFO = 0, the transformed matrix, stored in the
62
* The leading dimension of the array A. LDA >= max(1,N).
64
* B (input) REAL array, dimension (LDB,N)
65
* The triangular factor from the Cholesky factorization of B,
66
* as returned by SPOTRF.
69
* The leading dimension of the array B. LDB >= max(1,N).
71
* INFO (output) INTEGER
72
* = 0: successful exit.
73
* < 0: if INFO = -i, the i-th argument had an illegal value.
75
143
* =====================================================================
77
145
* .. Parameters ..