?sbtrd
?sbtrd
Reduces a real symmetric band matrix to tridiagonal form.
Syntax
lapack_int
LAPACKE_ssbtrd
(
int
matrix_layout
,
char
vect
,
char
uplo
,
lapack_int
n
,
lapack_int
kd
,
float
*
ab
,
lapack_int
ldab
,
float
*
d
,
float
*
e
,
float
*
q
,
lapack_int
ldq
);
lapack_int
LAPACKE_dsbtrd
(
int
matrix_layout
,
char
vect
,
char
uplo
,
lapack_int
n
,
lapack_int
kd
,
double
*
ab
,
lapack_int
ldab
,
double
*
d
,
double
*
e
,
double
*
q
,
lapack_int
ldq
);
Include Files
- mkl.h
Description
The routine reduces a real symmetric band matrix . The orthogonal matrix
A
to symmetric tridiagonal form T
by an orthogonal similarity transformation: A
= Q*T*Q
T
Q
is determined as a product of Givens rotations. If required, the routine can also form the matrix
Q
explicitly.Input Parameters
- matrix_layout
- Specifies whether matrix storage layout is row major (LAPACK_ROW_MAJOR) or column major (LAPACK_COL_MAJOR).
- vect
- Must be'V','N', or'U'.If, the routine returns the explicit matrixvect='V'Q.If, the routine does not returnvect='N'Q.If, the routine updates matrixvect='U'Xby formingX*Q.
- uplo
- Must be'U'or'L'.If,uplo='U'abstores the upper triangular part ofA.If,uplo='L'abstores the lower triangular part ofA.
- n
- The order of the matrixA().n≥0
- kd
- The number of super- or sub-diagonals inA().kd≥0
- ab,q
- ab(size at least max(1,is an array containing either upper or lower triangular part of the matrixldab*n) for column major layout and at least max(1,ldab*(kd+ 1)) for row major layout)A(as specified byuplo) in band storage format.q(size max(1,is an array.ldq*n))If, thevect='U'qarray must contain ann-by-nmatrixX.Iforvect='N', the'V'qparameter need not be set.
- ldab
- The leading dimension ofab; at leastkd+1for column major layout and.nfor row major layout
- ldq
- The leading dimension ofq. Constraints:ifldq≥max(1,n)orvect='V';'U'ifldq≥1.vect='N'
Output Parameters
- ab
- On exit, the diagonal elements of the arrayabare overwritten by the diagonal elements of the tridiagonal matrixT. Ifkd> 0, the elements on the first superdiagonal (if) or the first subdiagonal (ifuplo='U') are ovewritten by the off-diagonal elements ofuplo='L'T. The rest ofabis overwritten by values generated during the reduction.
- d,e,q
- Arrays:dcontains the diagonal elements of the matrixT.The size ofdmust be at least max(1,n).econtains the off-diagonal elements ofT.The size ofemust be at least max(1,n-1).qis not referenced if.vect='N'If,vect='V'qcontains then-by-nmatrixQ.If,vect='U'qcontains the productX*Q.
Return Values
This function returns a value
info
.If , the execution is successful.
info
=0If , the
info
= -i
i
-th parameter had an illegal value.Application Notes
The computed matrix , is a modestly increasing function of .
T
is exactly similar to a matrix A
+E
, where ||
E
||2
= c
(n
)*ε
*||A
||2
c
(n
)n
, and ε
is the machine precision. The computed matrix Q
differs from an exactly orthogonal matrix by a matrix E
such that ||
E
||2
= O
(ε
)The total number of floating-point operations is approximately , with .
6
if n
2
*kd
vect
= 'N'
3
additional operations if n
3
*(kd
-1)/kd
vect
= 'V'
The complex counterpart of this routine is hbtrd.