Visible to Intel only — GUID: GUID-56A16635-89A1-4D37-AD19-359E09778CA5
Visible to Intel only — GUID: GUID-56A16635-89A1-4D37-AD19-359E09778CA5
?gbbrd
Reduces a general band matrix to bidiagonal form.
Syntax
call sgbbrd(vect, m, n, ncc, kl, ku, ab, ldab, d, e, q, ldq, pt, ldpt, c, ldc, work, info)
call dgbbrd(vect, m, n, ncc, kl, ku, ab, ldab, d, e, q, ldq, pt, ldpt, c, ldc, work, info)
call cgbbrd(vect, m, n, ncc, kl, ku, ab, ldab, d, e, q, ldq, pt, ldpt, c, ldc, work, rwork, info)
call zgbbrd(vect, m, n, ncc, kl, ku, ab, ldab, d, e, q, ldq, pt, ldpt, c, ldc, work, rwork, info)
call gbbrd(ab [, c] [,d] [,e] [,q] [,pt] [,kl] [,m] [,info])
Include Files
- mkl.fi, mkl_lapack.f90
Description
The routine reduces an m-by-n band matrix A to upper bidiagonal matrix B: A = Q*B*PH. Here the matrices Q and P are orthogonal (for real A) or unitary (for complex A). They are determined as products of Givens rotation matrices, and may be formed explicitly by the routine if required. The routine can also update a matrix C as follows: C = QH*C.
Input Parameters
- vect
-
CHARACTER*1. Must be 'N' or 'Q' or 'P' or 'B'.
If vect = 'N', neither Q nor PH is generated.
If vect = 'Q', the routine generates the matrix Q.
If vect = 'P', the routine generates the matrix PH.
If vect = 'B', the routine generates both Q and PH.
- m
-
INTEGER. The number of rows in the matrix A (m≥ 0).
- n
-
INTEGER. The number of columns in A (n≥ 0).
- ncc
-
INTEGER. The number of columns in C (ncc≥ 0).
- kl
-
INTEGER. The number of sub-diagonals within the band of A (kl≥ 0).
- ku
-
INTEGER. The number of super-diagonals within the band of A (ku≥ 0).
- ab, c, work
-
REAL for sgbbrd
DOUBLE PRECISION for dgbbrd
COMPLEX for cgbbrd
DOUBLE COMPLEX for zgbbrd.
Arrays:
ab(ldab,*) contains the matrix A in band storage (see Matrix Storage Schemes).
The second dimension of a must be at least max(1, n).
c(ldc,*) contains an m-by-ncc matrix C.
If ncc = 0, the array c is not referenced.
The second dimension of c must be at least max(1, ncc).
work(*) is a workspace array.
The dimension of work must be at least 2*max(m, n) for real flavors, or max(m, n) for complex flavors.
- ldab
-
INTEGER. The leading dimension of the array ab (ldab≥kl + ku + 1).
- ldq
-
INTEGER. The leading dimension of the output array q.
ldq≥ max(1, m) if vect = 'Q' or 'B', ldq≥ 1 otherwise.
- ldpt
-
INTEGER. The leading dimension of the output array pt.
ldpt≥ max(1, n) if vect = 'P' or 'B', ldpt≥ 1 otherwise.
- ldc
-
INTEGER. The leading dimension of the array c.
ldc≥ max(1, m) if ncc > 0; ldc≥ 1 if ncc = 0.
- rwork
-
REAL for cgbbrd DOUBLE PRECISION for zgbbrd.
A workspace array, size at least max(m, n).
Output Parameters
- ab
-
Overwritten by values generated during the reduction.
- d
-
REAL for single-precision flavors
DOUBLE PRECISION for double-precision flavors.
Array, size at least max(1, min(m, n)). Contains the diagonal elements of the matrix B.
- e
-
REAL for single-precision flavors
DOUBLE PRECISION for double-precision flavors.
Array, size at least max(1, min(m, n) - 1).
Contains the off-diagonal elements of B.
- q, pt
-
REAL for sgebrd
DOUBLE PRECISION for dgebrd
COMPLEX for cgebrd
DOUBLE COMPLEX for zgebrd.
Arrays:
q(ldq,*) contains the output m-by-m matrix Q.
The second dimension of q must be at least max(1, m).
p(ldpt,*) contains the output n-by-n matrix PT.
The second dimension of pt must be at least max(1, n).
- c
-
Overwritten by the product QH*C.
c is not referenced if ncc = 0.
- info
-
INTEGER.
If info = 0, the execution is successful.
If info = -i, the i-th parameter had an illegal value.
LAPACK 95 Interface Notes
Routines in Fortran 95 interface have fewer arguments in the calling sequence than their FORTRAN 77 counterparts. For general conventions applied to skip redundant or restorable arguments, see LAPACK 95 Interface Conventions.
Specific details for the routine gbbrd interface are the following:
- ab
-
Holds the array A of size (kl+ku+1,n).
- c
-
Holds the matrix C of size (m,ncc).
- d
-
Holds the vector with the number of elements min(m,n).
- e
-
Holds the vector with the number fo elements min(m,n)-1.
- q
-
Holds the matrix Q of size (m,m).
- pt
-
Holds the matrix PT of size (n,n).
- m
-
If omitted, assumed m = n.
- kl
-
If omitted, assumed kl = ku.
- ku
-
Restored as ku = lda-kl-1.
- vect
-
Restored based on the presence of arguments q and pt as follows:
vect = 'B', if both q and pt are present,
vect = 'Q', if q is present and pt omitted, vect = 'P',
if q is omitted and pt present, vect = 'N', if both q and pt are omitted.
Application Notes
The computed matrices Q, B, and P satisfy Q*B*PH = A + E, where ||E||2 = c(n)ε ||A||2, c(n) is a modestly increasing function of n, and ε is the machine precision.
If m = n, the total number of floating-point operations for real flavors is approximately the sum of:
6*n2*(kl + ku) if vect = 'N' and ncc = 0,
3*n2*ncc*(kl + ku - 1)/(kl + ku) if C is updated, and
3*n3*(kl + ku - 1)/(kl + ku) if either Q or PH is generated (double this if both).
To estimate the number of operations for complex flavors, use the same formulas with the coefficients 20 and 10 (instead of 6 and 3).