MB04XY

Applying the Householder transformations for bidiagonalization (stored in factored form) to specified one or two matrices, from the left

[Specification] [Arguments] [Method] [References] [Comments] [Example]

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
  None
Example

Program Text

  None
Program Data
  None
Program Results
  None

Return to Supporting Routines index