Purpose
To compute two Givens rotations (C1,S1) and (C2,S2) such that the
orthogonal matrix
[ Q 0 ] [ C1 S1 0 ] [ 1 0 0 ]
Z = [ ], Q := [ -S1 C1 0 ] * [ 0 C2 S2 ],
[ 0 I ] [ 0 0 1 ] [ 0 -S2 C2 ]
makes the first column of the real Wilkinson double shift
polynomial of the product of matrices in periodic upper Hessenberg
form, stored in the array A, parallel to the first unit vector.
Only the rotation defined by C1 and S1 is used for the real
Wilkinson single shift polynomial (see SLICOT Library routines
MB03BE or MB03BF).
Specification
SUBROUTINE MB03AF( SHFT, K, N, AMAP, S, SINV, A, LDA1, LDA2, C1,
$ S1, C2, S2 )
C .. Scalar Arguments ..
CHARACTER SHFT
INTEGER K, LDA1, LDA2, N, SINV
DOUBLE PRECISION C1, C2, S1, S2
C .. Array Arguments ..
INTEGER AMAP(*), S(*)
DOUBLE PRECISION A(LDA1,LDA2,*)
Arguments
Mode Parameters
SHFT CHARACTER*1
Specifies the number of shifts employed by the shift
polynomial, as follows:
= 'D': two real shifts;
= 'S': one real shift.
Input/Output Parameters
K (input) INTEGER
The number of factors. K >= 1.
N (input) INTEGER
The order of the factors in the array A.
N >= 2, for a single shift polynomial;
N >= 3, for a double shift polynomial.
AMAP (input) INTEGER array, dimension (K)
The map for accessing the factors, i.e., if AMAP(I) = J,
then the factor A_I is stored at the J-th position in A.
AMAP(K) is the pointer to the Hessenberg matrix.
S (input) INTEGER array, dimension (K)
The signature array. Each entry of S must be 1 or -1.
S(K) is not used, but assumed to be 1.
SINV (input) INTEGER
Signature multiplier. Entries of S are virtually
multiplied by SINV.
A (input) DOUBLE PRECISION array, dimension (LDA1,LDA2,K)
On entry, the leading N-by-N-by-K part of this array must
contain a n-by-n product (implicitly represented by its K
factors) in periodic upper Hessenberg form. The Hessenberg
matrix is assumed to be the last one in the product.
LDA1 INTEGER
The first leading dimension of the array A. LDA1 >= N.
LDA2 INTEGER
The second leading dimension of the array A. LDA2 >= N.
C1 (output) DOUBLE PRECISION
S1 (output) DOUBLE PRECISION
On exit, C1 and S1 contain the parameters for the first
Givens rotation.
C2 (output) DOUBLE PRECISION
S2 (output) DOUBLE PRECISION
On exit, if SHFT = 'D', C2 and S2 contain the parameters
for the second Givens rotation. Otherwise, C2 = 1, S2 = 0.
Method
Givens rotations are properly computed and applied.Further Comments
NoneExample
Program Text
NoneProgram Data
NoneProgram Results
None