Developer Reference for Intel® oneAPI Math Kernel Library for Fortran
?gebd2
Reduces a general matrix to bidiagonal form using an unblocked algorithm.
Syntax
call sgebd2 ( m , n , a , lda , d , e , tauq , taup , work , info )
call dgebd2 ( m , n , a , lda , d , e , tauq , taup , work , info )
call cgebd2 ( m , n , a , lda , d , e , tauq , taup , work , info )
call zgebd2 ( m , n , a , lda , d , e , tauq , taup , work , info )
Include Files
mkl.fi
Description
sgebd2 dgebd2 cgebd2 zgebd2
The routine reduces a general m -by- n matrix A to upper or lower bidiagonal form B by an orthogonal (unitary) transformation: Q^{T}*A*P = B (for real flavors) or Q^{H}*A*P = B (for complex flavors).
If m≥n , B is upper bidiagonal; if m < n , B is lower bidiagonal.
The routine does not form the matrices Q and P explicitly, but represents them as products of elementary reflectors. if m≥n ,
Q = H(1)*H(2)*...*H(n) , and P = G(1)*G(2)*...*G(n-1)
if m < n ,
Q = H(1)*H(2)*...*H(m-1) , and P = G(1)*G(2)*...*G(m)
Each H(i) and G(i) has the form
H(i) = I - tauq*v*v^{T} and G(i) = I - taup*u*u^{T} for real flavors, or
H(i) = I - tauq*v*v^{H} and G(i) = I - taup*u*u^{H} for complex flavors
where tauq and taup are scalars (real for sgebd2 / dgebd2 , complex for cgebd2 / zgebd2 ), and v and u are vectors (real for sgebd2 / dgebd2 , complex for cgebd2 / zgebd2 ).
Input Parameters
- m
-
INTEGER . The number of rows in the matrix A ( m≥ 0 ).
- n
-
INTEGER . The number of columns in A ( n≥ 0 ).
- a , work
-
REAL for sgebd2 DOUBLE PRECISION for dgebd2 COMPLEX for cgebd2 DOUBLE COMPLEX for zgebd2 . Arrays: a(lda,*) contains the m -by- n general matrix A to be reduced. The second dimension of a must be at least max(1, n ). work ( * ) is a workspace array, the dimension of work must be at least max(1, m , n ).
- lda
-
INTEGER . The leading dimension of a ; at least max(1, m) .
Output Parameters
- a
-
if m≥n , the diagonal and first super-diagonal of a are overwritten with the upper bidiagonal matrix B . Elements below the diagonal, with the array tauq , represent the orthogonal/unitary matrix Q as a product of elementary reflectors, and elements above the first superdiagonal, with the array taup , represent the orthogonal/unitary matrix p as a product of elementary reflectors. if m < n , the diagonal and first sub-diagonal of a are overwritten by the lower bidiagonal matrix B . Elements below the first subdiagonal, with the array tauq , represent the orthogonal/unitary matrix Q as a product of elementary reflectors, and elements above the diagonal, with the array taup , represent the orthogonal/unitary matrix p as a product of elementary reflectors.
- d
-
REAL for single-precision flavors DOUBLE PRECISION for double-precision flavors. Array, DIMENSION at least max(1, min(m, n)) . Contains the diagonal elements of the bidiagonal matrix B : d(i) = a(i, i) .
- e
-
REAL for single-precision flavors DOUBLE PRECISION for double-precision flavors. Array, DIMENSION at least max(1, min( m , n ) - 1). Contains the off-diagonal elements of the bidiagonal matrix B : if m≥n , e(i) = a(i, i+1) for i = 1,2,..., n-1 ; if m < n , e(i) = a(i+1, i) for i = 1,2,..., m-1 .
- tauq , taup
-
REAL for sgebd2 DOUBLE PRECISION for dgebd2 COMPLEX for cgebd2 DOUBLE COMPLEX for zgebd2 . Arrays, DIMENSION at least max (1, min(m, n)) . Contain scalar factors of the elementary reflectors which represent orthogonal/unitary matrices Q and p , respectively.
info
INTEGER .
If info = 0 , the execution is successful.
If info = -i , the i th parameter had an illegal value.