Developer Reference

  • 2021.1
  • 12/04/2020
  • Public Content
Contents

?gbbrd

Reduces a general band matrix to bidiagonal form.

Syntax

lapack_int LAPACKE_sgbbrd
(
int
matrix_layout
,
char
vect
,
lapack_int
m
,
lapack_int
n
,
lapack_int
ncc
,
lapack_int
kl
,
lapack_int
ku
,
float*
ab
,
lapack_int
ldab
,
float*
d
,
float*
e
,
float*
q
,
lapack_int
ldq
,
float*
pt
,
lapack_int
ldpt
,
float*
c
,
lapack_int
ldc
);
lapack_int LAPACKE_dgbbrd
(
int
matrix_layout
,
char
vect
,
lapack_int
m
,
lapack_int
n
,
lapack_int
ncc
,
lapack_int
kl
,
lapack_int
ku
,
double*
ab
,
lapack_int
ldab
,
double*
d
,
double*
e
,
double*
q
,
lapack_int
ldq
,
double*
pt
,
lapack_int
ldpt
,
double*
c
,
lapack_int
ldc
);
lapack_int LAPACKE_cgbbrd
(
int
matrix_layout
,
char
vect
,
lapack_int
m
,
lapack_int
n
,
lapack_int
ncc
,
lapack_int
kl
,
lapack_int
ku
,
lapack_complex_float*
ab
,
lapack_int
ldab
,
float*
d
,
float*
e
,
lapack_complex_float*
q
,
lapack_int
ldq
,
lapack_complex_float*
pt
,
lapack_int
ldpt
,
lapack_complex_float*
c
,
lapack_int
ldc
);
lapack_int LAPACKE_zgbbrd
(
int
matrix_layout
,
char
vect
,
lapack_int
m
,
lapack_int
n
,
lapack_int
ncc
,
lapack_int
kl
,
lapack_int
ku
,
lapack_complex_double*
ab
,
lapack_int
ldab
,
double*
d
,
double*
e
,
lapack_complex_double*
q
,
lapack_int
ldq
,
lapack_complex_double*
pt
,
lapack_int
ldpt
,
lapack_complex_double*
c
,
lapack_int
ldc
);
Include Files
  • mkl.h
Description
The routine reduces an
m
-by-
n
band matrix
A
to upper bidiagonal matrix
B
:
A
=
Q*B*P
H
. 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
=
Q
H
*C
.
Input Parameters
matrix_layout
Specifies whether matrix storage layout is row major (
LAPACK_ROW_MAJOR
) or column major (
LAPACK_COL_MAJOR
).
vect
Must be
'N'
or
'Q'
or
'P'
or
'B'
.
If
vect
=
'N'
, neither
Q
nor
P
H
is generated.
If
vect
=
'Q'
, the routine generates the matrix
Q
.
If
vect
=
'P'
, the routine generates the matrix
P
H
.
If
vect
=
'B'
, the routine generates both
Q
and
P
H
.
m
The number of rows in the matrix
A
(
m
0
).
n
The number of columns in
A
(
n
0
).
ncc
The number of columns in
C
(
ncc
0
).
kl
The number of sub-diagonals within the band of
A
(
kl
0
).
ku
The number of super-diagonals within the band of
A
(
ku
0
).
ab
,
c
Arrays:
ab
(size max(1,
ldab
*
n
) for column major layout and max(1,
ldab
*
m
) for row major layout)
contains the matrix
A
in band storage (see Matrix Storage Schemes).
c
(size max(1,
ldc
*
ncc
) for column major layout and max(1,
ldc
*
m
) for row major layout)
contains an
m
-by-
ncc
matrix
C
.
If
ncc
= 0
, the array
c
is not referenced.
ldab
The leading dimension of the array
ab
(
ldab
kl
+
ku
+ 1
).
ldpt
The leading dimension of the output array
pt
.
ldpt
max(1,
n
)
if
vect
=
'P'
or
'B'
,
ldpt
1
otherwise.
ldc
The leading dimension of the array
c
.
ldc
max(1,
m
)
if
ncc
> 0
;
ldc
1
if
ncc
= 0
.
Output Parameters
ab
Overwritten by values generated during the reduction.
d
Array, size at least max(1, min(
m
,
n
)). Contains the diagonal elements of the matrix
B
.
e
Array, size at least
max(1, min(
m
,
n
) - 1)
.
Contains the off-diagonal elements of
B
.
q
,
pt
Arrays:
q
size max(1,
ldq
*
m
)
contains the output
m
-by-
m
matrix
Q
.
p
size max(1,
ldpt
*
n
)
contains the output
n
-by-
n
matrix
P
T
.
c
Overwritten by the product
Q
H
*
C
.
c
is not referenced if
ncc
= 0.
Return Values
This function returns a value
info
.
If
info
=0
, the execution is successful.
If
info
=
-i
, the
i
-th parameter had an illegal value.
Application Notes
The computed matrices
Q
,
B
, and
P
satisfy
Q*B*P
H
=
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*
n
2
*(
kl
+
ku
)
if
vect
=
'N'
and
ncc
= 0
,
3*
n
2
*
ncc
*(
kl
+
ku
- 1)/(
kl
+
ku
)
if
C
is updated, and
3*
n
3
*(
kl
+
ku
- 1)/(
kl
+
ku
)
if either
Q
or
P
H
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).

Product and Performance Information

1

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.