Purpose
To apply the Householder transformations Pj stored in factored form into the columns of the array X, to the desired columns of the matrix U by premultiplication, and/or the Householder transformations Qj stored in factored form into the rows of the array X, to the desired columns of the matrix V by premultiplication. The Householder transformations Pj and Qj are stored as produced by LAPACK Library routine DGEBRD.Specification
SUBROUTINE MB04XY( JOBU, JOBV, M, N, X, LDX, TAUP, TAUQ, U,
$ LDU, V, LDV, INUL, INFO )
C .. Scalar Arguments ..
CHARACTER JOBU, JOBV
INTEGER INFO, LDU, LDV, LDX, M, N
C .. Array Arguments ..
LOGICAL INUL(*)
DOUBLE PRECISION TAUP(*), TAUQ(*), U(LDU,*), V(LDV,*),
$ X(LDX,*)
Arguments
Mode Parameters
JOBU CHARACTER*1
Specifies whether to transform the columns in U as
follows:
= 'N': Do not transform the columns in U;
= 'A': Transform the columns in U (U has M columns);
= 'S': Transform the columns in U (U has min(M,N)
columns).
JOBV CHARACTER*1
Specifies whether to transform the columns in V as
follows:
= 'N': Do not transform the columns in V;
= 'A': Transform the columns in V (V has N columns);
= 'S': Transform the columns in V (V has min(M,N)
columns).
Input/Output Parameters
M (input) INTEGER
The number of rows of the matrix X. M >= 0.
N (input) INTEGER
The number of columns of the matrix X. N >= 0.
X (input) DOUBLE PRECISION array, dimension (LDX,N)
The leading M-by-N part contains in the columns of its
lower triangle the Householder transformations Pj, and
in the rows of its upper triangle the Householder
transformations Qj in factored form.
X is modified by the routine but restored on exit.
LDX INTEGER
The leading dimension of the array X. LDX >= MAX(1,M).
TAUP (input) DOUBLE PRECISION array, dimension (MIN(M,N))
The scalar factors of the Householder transformations Pj.
TAUQ (input) DOUBLE PRECISION array, dimension (MIN(M,N))
The scalar factors of the Householder transformations Qj.
U (input/output) DOUBLE PRECISION array, dimension (LDU,*)
On entry, U contains the M-by-M (if JOBU = 'A') or
M-by-min(M,N) (if JOBU = 'S') matrix U.
On exit, the Householder transformations Pj have been
applied to each column i of U corresponding to a parameter
INUL(i) = .TRUE.
NOTE that U is not referenced if JOBU = 'N'.
LDU INTEGER
The leading dimension of the array U.
LDU >= MAX(1,M), if JOBU = 'A' or JOBU = 'S';
LDU >= 1, if JOBU = 'N'.
V (input/output) DOUBLE PRECISION array, dimension (LDV,*)
On entry, V contains the N-by-N (if JOBV = 'A') or
N-by-min(M,N) (if JOBV = 'S') matrix V.
On exit, the Householder transformations Qj have been
applied to each column i of V corresponding to a parameter
INUL(i) = .TRUE.
NOTE that V is not referenced if JOBV = 'N'.
LDV INTEGER
The leading dimension of the array V.
LDV >= MAX(1,M), if JOBV = 'A' or JOBV = 'S';
LDV >= 1, if JOBV = 'N'.
INUL (input) LOGICAL array, dimension (MAX(M,N))
INUL(i) = .TRUE. if the i-th column of U and/or V is to be
transformed, and INUL(i) = .FALSE., otherwise.
(1 <= i <= MAX(M,N)).
Error Indicator
INFO INTEGER
= 0: successful exit;
< 0: if INFO = -i, the i-th argument had an illegal
value.
Method
The Householder transformations Pj or Qj are applied to the columns of U or V indexed by I for which INUL(I) = .TRUE..Numerical Aspects
The algorithm is backward stable.Further Comments
NoneExample
Program Text
NoneProgram Data
NoneProgram Results
None