MB04WP

Generating an orthogonal symplectic matrix which performed the reduction in MB04PU

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

Purpose

  To generate an orthogonal symplectic matrix U, which is defined as
  a product of symplectic reflectors and Givens rotators

  U = diag( H(1),H(1) )      G(1)  diag( F(1),F(1) )
      diag( H(2),H(2) )      G(2)  diag( F(2),F(2) )
                             ....
      diag( H(n-1),H(n-1) ) G(n-1) diag( F(n-1),F(n-1) ).

  as returned by MB04PU. The matrix U is returned in terms of its
  first N rows

                   [  U1   U2 ]
               U = [          ].
                   [ -U2   U1 ]

Specification
      SUBROUTINE MB04WP( N, ILO, U1, LDU1, U2, LDU2, CS, TAU, DWORK,
     $                   LDWORK, INFO )
C     .. Scalar Arguments ..
      INTEGER           ILO, INFO, LDU1, LDU2, LDWORK, N
C     .. Array Arguments ..
      DOUBLE PRECISION  CS(*), DWORK(*), U1(LDU1,*), U2(LDU2,*), TAU(*)

Arguments

Input/Output Parameters

  N       (input) INTEGER
          The order of the matrices U1 and U2.  N >= 0.

  ILO     (input) INTEGER
          ILO must have the same value as in the previous call of
          MB04PU. U is equal to the unit matrix except in the
          submatrix
          U([ilo+1:n n+ilo+1:2*n], [ilo+1:n n+ilo+1:2*n]).
          1 <= ILO <= N, if N > 0; ILO = 1, if N = 0.

  U1      (input/output) DOUBLE PRECISION array, dimension (LDU1,N)
          On entry, the leading N-by-N part of this array must
          contain in its i-th column the vector which defines the
          elementary reflector F(i).
          On exit, the leading N-by-N part of this array contains
          the matrix U1.

  LDU1    INTEGER
          The leading dimension of the array U1.  LDU1 >= MAX(1,N).

  U2      (input/output) DOUBLE PRECISION array, dimension (LDU2,N)
          On entry, the leading N-by-N part of this array must
          contain in its i-th column the vector which defines the
          elementary reflector H(i) and, on the subdiagonal, the
          scalar factor of H(i).
          On exit, the leading N-by-N part of this array contains
          the matrix U2.

  LDU2    INTEGER
          The leading dimension of the array U2.  LDU2 >= MAX(1,N).

  CS      (input) DOUBLE PRECISION array, dimension (2N-2)
          On entry, the first 2N-2 elements of this array must
          contain the cosines and sines of the symplectic Givens
          rotators G(i).

  TAU     (input) DOUBLE PRECISION array, dimension (N-1)
          On entry, the first N-1 elements of this array must
          contain the scalar factors of the elementary reflectors
          F(i).

Workspace
  DWORK   DOUBLE PRECISION array, dimension (LDWORK)
          On exit, if INFO = 0,  DWORK(1)  returns the optimal
          value of LDWORK.
          On exit, if  INFO = -10,  DWORK(1)  returns the minimum
          value of LDWORK.

  LDWORK  INTEGER
          The length of the array DWORK. LDWORK >= MAX(1,2*(N-ILO)).
          For optimum performance LDWORK should be larger. (See
          SLICOT Library routine MB04WD).

Error Indicator
  INFO    INTEGER
          = 0:  successful exit;
          < 0:  if INFO = -i, the i-th argument had an illegal
                value.

Numerical Aspects
  The algorithm requires O(N**3) floating point operations and is
  strongly backward stable.

References
  [1] C. F. VAN LOAN:
      A symplectic method for approximating all the eigenvalues of
      a Hamiltonian matrix.
      Linear Algebra and its Applications, 61, pp. 233-251, 1984.

  [2] D. KRESSNER:
      Block algorithms for orthogonal symplectic factorizations.
      BIT, 43 (4), pp. 775-790, 2003.

Further Comments
  None
Example

Program Text

  None
Program Data
  None
Program Results
  None

Return to Supporting Routines index