F06QWF transforms a real upper triangular matrix to an upper spiked matrix by applying a given sequence of plane rotations.
If
SIDE='L',
H has a row spike, with nonzero elements
h
k2,k
, for
k
=
k1
,
k1+1,
…,
k2-1
. The rotations are applied from the left:
where
P
=
Pk1
Pk1+1
⋯
Pk2-1
and
Pk is a rotation in the
k,k2 plane.
If
SIDE='R',
H has a column spike, with nonzero elements
h
k+1,
k1
, for
k=
k1,
k1+1,
…,
k2-1
. The rotations are applied from the right:
where
P
=
Pk2-1
⋯
Pk1+1
Pk1
and
Pk is a rotation in the
k1,k+1 plane.
None.
- 1: SIDE – CHARACTER(1)Input
On entry: specifies whether
U is operated on from the left or the right.
- SIDE='L'
- U is pre-multiplied from the left.
- SIDE='R'
- U is post-multiplied from the right.
Constraint:
SIDE='L' or 'R'.
- 2: N – INTEGERInput
On entry: n, the order of the matrices U and H.
Constraint:
N≥0.
- 3: K1 – INTEGERInput
- 4: K2 – INTEGERInput
On entry: the values
k1 and
k2.
If K1<1 or K2≤K1 or K2>N, an immediate return is effected.
- 5: C(*) – REAL (KIND=nag_wp) arrayInput
-
Note: the dimension of the array
C
must be at least
K2-K1.
On entry: Ck must hold ck, the cosine of the rotation Pk, for k=k1,…,k2-1.
- 6: S(*) – REAL (KIND=nag_wp) arrayInput/Output
-
Note: the dimension of the array
S
must be at least
K2-K1.
On entry: Sk must hold sk, the sine of the rotation Pk, for k=k1,…,k2-1.
On exit: Sk holds a nonzero element of the spike of H: hk2,k if SIDE='L', or hk+1,k1 if SIDE='R', for k=k1,…,k2-1.
- 7: A(LDA,*) – REAL (KIND=nag_wp) arrayInput/Output
-
Note: the second dimension of the array
A
must be at least
N.
On entry: the n by n upper triangular matrix U.
On exit: the upper triangular part of the upper spiked matrix H.
- 8: LDA – INTEGERInput
On entry: the first dimension of the array
A as declared in the (sub)program from which F06QWF is called.
Constraint:
LDA≥ max1,N .
None.
Not applicable.
None.
None.