.TH "SRC/ssytrd_sy2sb.f" 3 "Version 3.12.0" "LAPACK" \" -*- nroff -*- .ad l .nh .SH NAME SRC/ssytrd_sy2sb.f .SH SYNOPSIS .br .PP .SS "Functions/Subroutines" .in +1c .ti -1c .RI "subroutine \fBssytrd_sy2sb\fP (uplo, n, kd, a, lda, ab, ldab, tau, work, lwork, info)" .br .RI "\fBSSYTRD_SY2SB\fP " .in -1c .SH "Function/Subroutine Documentation" .PP .SS "subroutine ssytrd_sy2sb (character uplo, integer n, integer kd, real, dimension( lda, * ) a, integer lda, real, dimension( ldab, * ) ab, integer ldab, real, dimension( * ) tau, real, dimension( * ) work, integer lwork, integer info)" .PP \fBSSYTRD_SY2SB\fP .PP \fBPurpose:\fP .RS 4 .PP .nf !> !> SSYTRD_SY2SB reduces a real symmetric matrix A to real symmetric !> band-diagonal form AB by a orthogonal similarity transformation: !> Q**T * A * Q = AB\&. !> .fi .PP .RE .PP \fBParameters\fP .RS 4 \fIUPLO\fP .PP .nf !> UPLO is CHARACTER*1 !> = 'U': Upper triangle of A is stored; !> = 'L': Lower triangle of A is stored\&. !> .fi .PP .br \fIN\fP .PP .nf !> N is INTEGER !> The order of the matrix A\&. N >= 0\&. !> .fi .PP .br \fIKD\fP .PP .nf !> KD is INTEGER !> The number of superdiagonals of the reduced matrix if UPLO = 'U', !> or the number of subdiagonals if UPLO = 'L'\&. KD >= 0\&. !> The reduced matrix is stored in the array AB\&. !> .fi .PP .br \fIA\fP .PP .nf !> A is REAL 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 UPLO = 'U', the diagonal and first superdiagonal !> of A are overwritten by the corresponding elements of the !> tridiagonal matrix T, and the elements above the first !> superdiagonal, with the array TAU, represent the orthogonal !> matrix Q as a product of elementary reflectors; if UPLO !> = 'L', the diagonal and first subdiagonal of A are over- !> written by the corresponding elements of the tridiagonal !> matrix T, and the elements below the first subdiagonal, with !> the array TAU, represent the orthogonal matrix Q as a product !> of elementary reflectors\&. See Further Details\&. !> .fi .PP .br \fILDA\fP .PP .nf !> LDA is INTEGER !> The leading dimension of the array A\&. LDA >= max(1,N)\&. !> .fi .PP .br \fIAB\fP .PP .nf !> AB is REAL array, dimension (LDAB,N) !> On exit, the upper or lower triangle of the symmetric band !> matrix A, stored in the first KD+1 rows of the array\&. The !> j-th column of A is stored in the j-th column of the array AB !> as follows: !> if UPLO = 'U', AB(kd+1+i-j,j) = A(i,j) for max(1,j-kd)<=i<=j; !> if UPLO = 'L', AB(1+i-j,j) = A(i,j) for j<=i<=min(n,j+kd)\&. !> .fi .PP .br \fILDAB\fP .PP .nf !> LDAB is INTEGER !> The leading dimension of the array AB\&. LDAB >= KD+1\&. !> .fi .PP .br \fITAU\fP .PP .nf !> TAU is REAL array, dimension (N-KD) !> The scalar factors of the elementary reflectors (see Further !> Details)\&. !> .fi .PP .br \fIWORK\fP .PP .nf !> WORK is REAL array, dimension (LWORK) !> On exit, if INFO = 0, or if LWORK = -1, !> WORK(1) returns the size of LWORK\&. !> .fi .PP .br \fILWORK\fP .PP .nf !> LWORK is INTEGER !> The dimension of the array WORK which should be calculated !> by a workspace query\&. !> If N <= KD+1, LWORK >= 1, else LWORK = MAX(1, LWORK_QUERY) !> !> If LWORK = -1, then a workspace query is assumed; the routine !> only calculates the optimal size of the WORK array, returns !> this value as the first entry of the WORK array, and no error !> message related to LWORK is issued by XERBLA\&. !> LWORK_QUERY = N*KD + N*max(KD,FACTOPTNB) + 2*KD*KD !> where FACTOPTNB is the blocking used by the QR or LQ !> algorithm, usually FACTOPTNB=128 is a good choice otherwise !> putting LWORK=-1 will provide the size of WORK\&. !> .fi .PP .br \fIINFO\fP .PP .nf !> INFO is INTEGER !> = 0: successful exit !> < 0: if INFO = -i, the i-th argument had an illegal value !> .fi .PP .RE .PP \fBAuthor\fP .RS 4 Univ\&. of Tennessee .PP Univ\&. of California Berkeley .PP Univ\&. of Colorado Denver .PP NAG Ltd\&. .RE .PP \fBFurther Details:\fP .RS 4 .PP .nf !> !> Implemented by Azzam Haidar\&. !> !> All details are available on technical report, SC11, SC13 papers\&. !> !> Azzam Haidar, Hatem Ltaief, and Jack Dongarra\&. !> Parallel reduction to condensed forms for symmetric eigenvalue problems !> using aggregated fine-grained and memory-aware kernels\&. In Proceedings !> of 2011 International Conference for High Performance Computing, !> Networking, Storage and Analysis (SC '11), New York, NY, USA, !> Article 8 , 11 pages\&. !> http://doi\&.acm\&.org/10\&.1145/2063384\&.2063394 !> !> A\&. Haidar, J\&. Kurzak, P\&. Luszczek, 2013\&. !> An improved parallel singular value algorithm and its implementation !> for multicore hardware, In Proceedings of 2013 International Conference !> for High Performance Computing, Networking, Storage and Analysis (SC '13)\&. !> Denver, Colorado, USA, 2013\&. !> Article 90, 12 pages\&. !> http://doi\&.acm\&.org/10\&.1145/2503210\&.2503292 !> !> A\&. Haidar, R\&. Solca, S\&. Tomov, T\&. Schulthess and J\&. Dongarra\&. !> A novel hybrid CPU-GPU generalized eigensolver for electronic structure !> calculations based on fine-grained memory aware tasks\&. !> International Journal of High Performance Computing Applications\&. !> Volume 28 Issue 2, Pages 196-209, May 2014\&. !> http://hpc\&.sagepub\&.com/content/28/2/196 !> !> .fi .PP .RE .PP .PP .nf !> !> If UPLO = 'U', the matrix Q is represented as a product of elementary !> reflectors !> !> Q = H(k)**T \&. \&. \&. H(2)**T H(1)**T, where k = n-kd\&. !> !> Each H(i) has the form !> !> H(i) = I - tau * v * v**T !> !> where tau is a real scalar, and v is a real vector with !> v(1:i+kd-1) = 0 and v(i+kd) = 1; conjg(v(i+kd+1:n)) is stored on exit in !> A(i,i+kd+1:n), and tau in TAU(i)\&. !> !> If UPLO = 'L', the matrix Q is represented as a product of elementary !> reflectors !> !> Q = H(1) H(2) \&. \&. \&. H(k), where k = n-kd\&. !> !> Each H(i) has the form !> !> H(i) = I - tau * v * v**T !> !> where tau is a real scalar, and v is a real vector with !> v(kd+1:i) = 0 and v(i+kd+1) = 1; v(i+kd+2:n) is stored on exit in !> A(i+kd+2:n,i), and tau in TAU(i)\&. !> !> The contents of A on exit are illustrated by the following examples !> with n = 5: !> !> if UPLO = 'U': if UPLO = 'L': !> !> ( ab ab/v1 v1 v1 v1 ) ( ab ) !> ( ab ab/v2 v2 v2 ) ( ab/v1 ab ) !> ( ab ab/v3 v3 ) ( v1 ab/v2 ab ) !> ( ab ab/v4 ) ( v1 v2 ab/v3 ab ) !> ( ab ) ( v1 v2 v3 ab/v4 ab ) !> !> where d and e denote diagonal and off-diagonal elements of T, and vi !> denotes an element of the vector defining H(i)\&. !> .fi .PP .PP Definition at line \fB243\fP of file \fBssytrd_sy2sb\&.f\fP\&. .SH "Author" .PP Generated automatically by Doxygen for LAPACK from the source code\&.