Purpose
To compute two Givens rotations (C1,S1) and (C2,S2) such that the orthogonal matrix [ C1 S1 0 ] [ 1 0 0 ] Q = [ -S1 C1 0 ] * [ 0 C2 S2 ] [ 0 0 1 ] [ 0 -S2 C2 ] makes the first column of the real Wilkinson single/double shift polynomial of the general product of matrices, stored in the array A, parallel to the first unit vector.Specification
SUBROUTINE MB03AD( 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, S1, C2, 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 >= 3. 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. S (input) INTEGER array, dimension (K) The signature array. Each entry of S must be 1 or -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 upper Hessenberg form. 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.Method
Two Givens rotations are properly computed and applied.Further Comments
NoneExample
Program Text
NoneProgram Data
NoneProgram Results
None