MB03KC

Reducing a 2-by-2 formal matrix product to periodic Hessenberg-triangular form

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

Purpose

  To reduce a 2-by-2 general, formal matrix product A of length K,

     A_K^s(K) * A_K-1^s(K-1) * ... * A_1^s(1),

  to the periodic Hessenberg-triangular form using a K-periodic
  sequence of elementary reflectors (Householder matrices). The
  matrices A_k, k = 1, ..., K, are stored in the N-by-N-by-K array A
  starting in the R-th row and column, and N can be 3 or 4.

  Each elementary reflector H_k is represented as

     H_k = I - tau_k * v_k * v_k',                               (1)

  where I is the 2-by-2 identity, tau_k is a real scalar, and v_k is
  a vector of length 2, k = 1,...,K, and it is constructed such that
  the following holds for k = 1,...,K:

         H_{k+1} * A_k * H_k = T_k, if s(k) = 1,
                                                                 (2)
         H_k * A_k * H_{k+1} = T_k, if s(k) = -1,

  with H_{K+1} = H_1 and all T_k upper triangular except for
  T_{khess} which is full. Clearly,

     T_K^s(K) *...* T_1^s(1) = H_1 * A_K^s(K) *...* A_1^s(1) * H_1.

  The reflectors are suitably applied to the whole, extended N-by-N
  matrices Ae_k, not only to the submatrices A_k, k = 1, ..., K.

Specification
      SUBROUTINE MB03KC( K, KHESS, N, R, S, A, LDA, V, TAU )
C     .. Scalar Arguments ..
      INTEGER            K, KHESS, LDA, N, R
C     .. Array Arguments ..
      INTEGER            S( * )
      DOUBLE PRECISION   A( * ), TAU( * ), V( * )

Arguments

Input/Output Parameters

  K       (input) INTEGER
          The number of matrices in the sequence A_k.  K >= 2.

  KHESS   (input) INTEGER
          The index for which the returned matrix A_khess should be
          in the Hessenberg form on output.  1 <= KHESS <= K.

  N       (input) INTEGER
          The order of the extended matrices.  N = 3 or N = 4.

  R       (input) INTEGER
          The starting row and column index for the
          2-by-2 submatrices.  R = 1, or R = N-1.

  S       (input) INTEGER array, dimension (K)
          The leading K elements of this array must contain the
          signatures of the factors. Each entry in S must be either
          1 or -1; the value S(k) = -1 corresponds to using the
          inverse of the factor A_k.

  A       (input/output) DOUBLE PRECISION array, dimension (*)
          On entry, this array must contain at position IXA(k) =
          (k-1)*N*LDA+1 the N-by-N matrix Ae_k stored with leading
          dimension LDA.
          On exit, this array contains at position IXA(k) the
          N-by-N matrix Te_k stored with leading dimension LDA.

  LDA     INTEGER
          Leading dimension of the matrices Ae_k and Te_k in the
          one-dimensional array A.  LDA >= N.

  V       (output) DOUBLE PRECISION array, dimension (2*K)
          On exit, this array contains the K vectors v_k,
          k = 1,...,K, defining the elementary reflectors H_k as
          in (1). The k-th reflector is stored in V(2*k-1:2*k).

  TAU     (output) DOUBLE PRECISION array, dimension (K)
          On exit, this array contains the K values of tau_k,
          k = 1,...,K, defining the elementary reflectors H_k
          as in (1).

Method
  A K-periodic sequence of elementary reflectors (Householder
  matrices) is used. The computations start for k = khess with the
  left reflector in (1), which is the identity matrix.

Numerical Aspects
  The implemented method is numerically backward stable.

Further Comments
  None
Example

Program Text

  None
Program Data
  None
Program Results
  None

Return to Supporting Routines index