Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
Date 11/07/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

?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, 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 (ldabkl + 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).