Purpose
=======
DGEBRD reduces a general real M-by-N matrix A to upper or lower
bidiagonal form B by an orthogonal transformation: Q**T * A * P = B.
If m .GE. n, B is upper bidiagonal; if m .LT. n, B is lower bidiagonal.
Namespace: DotNumerics.LinearAlgebra.CSLapackAssembly: DWSIM.MathOps.DotNumerics (in DWSIM.MathOps.DotNumerics.dll) Version: 1.0.0.0 (1.0.0.0)
Syntax public void Run(
int M,
int N,
ref double[] A,
int offset_a,
int LDA,
ref double[] D,
int offset_d,
ref double[] E,
int offset_e,
ref double[] TAUQ,
int offset_tauq,
ref double[] TAUP,
int offset_taup,
ref double[] WORK,
int offset_work,
int LWORK,
ref int INFO
)
Public Sub Run (
M As Integer,
N As Integer,
ByRef A As Double(),
offset_a As Integer,
LDA As Integer,
ByRef D As Double(),
offset_d As Integer,
ByRef E As Double(),
offset_e As Integer,
ByRef TAUQ As Double(),
offset_tauq As Integer,
ByRef TAUP As Double(),
offset_taup As Integer,
ByRef WORK As Double(),
offset_work As Integer,
LWORK As Integer,
ByRef INFO As Integer
)
Request Example
View SourceParameters
- M Int32
-
(input) INTEGER
The number of rows in the matrix A. M .GE. 0.
- N Int32
-
(input) INTEGER
The number of columns in the matrix A. N .GE. 0.
- A Double
-
(input/output) DOUBLE PRECISION array, dimension (LDA,N)
On entry, the M-by-N general matrix to be reduced.
On exit,
if m .GE. n, the diagonal and the first superdiagonal are
overwritten with the upper bidiagonal matrix B; the
elements below the diagonal, with the array TAUQ, represent
the orthogonal matrix Q as a product of elementary
reflectors, and the elements above the first superdiagonal,
with the array TAUP, represent the orthogonal matrix P as
a product of elementary reflectors;
if m .LT. n, the diagonal and the first subdiagonal are
overwritten with the lower bidiagonal matrix B; the
elements below the first subdiagonal, with the array TAUQ,
represent the orthogonal matrix Q as a product of
elementary reflectors, and the elements above the diagonal,
with the array TAUP, represent the orthogonal matrix P as
a product of elementary reflectors.
See Further Details.
- offset_a Int32
-
- LDA Int32
-
(input) INTEGER
The leading dimension of the array A. LDA .GE. max(1,M).
- D Double
-
(output) DOUBLE PRECISION array, dimension (min(M,N))
The diagonal elements of the bidiagonal matrix B:
D(i) = A(i,i).
- offset_d Int32
-
- E Double
-
(output) DOUBLE PRECISION array, dimension (min(M,N)-1)
The off-diagonal elements of the bidiagonal matrix B:
if m .GE. n, E(i) = A(i,i+1) for i = 1,2,...,n-1;
if m .LT. n, E(i) = A(i+1,i) for i = 1,2,...,m-1.
- offset_e Int32
-
- TAUQ Double
-
(output) DOUBLE PRECISION array dimension (min(M,N))
The scalar factors of the elementary reflectors which
represent the orthogonal matrix Q. See Further Details.
- offset_tauq Int32
-
- TAUP Double
-
(output) DOUBLE PRECISION array, dimension (min(M,N))
The scalar factors of the elementary reflectors which
represent the orthogonal matrix P. See Further Details.
- offset_taup Int32
-
- WORK Double
-
(workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
- offset_work Int32
-
- LWORK Int32
-
(input) INTEGER
The length of the array WORK. LWORK .GE. max(1,M,N).
For optimum performance LWORK .GE. (M+N)*NB, where NB
is the optimal blocksize.
If LWORK = -1, then a workspace query is assumed; the routine
only calculates the optimal size of the WORK array, returns
this value as the first entry of the WORK array, and no error
message related to LWORK is issued by XERBLA.
- INFO Int32
-
(output) INTEGER
= 0: successful exit
.LT. 0: if INFO = -i, the i-th argument had an illegal value.
See Also