### Reducing the first column of a real Wilkinson shift polynomial for a product of matrices to the first unit vector

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

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.

```
```  None
```
Example

Program Text

```  None
```
Program Data
```  None
```
Program Results
```  None
```