Note: before using this routine, please read the Users' Note for your implementation to check the interpretation of bold italicised terms and other implementation-dependent details.
F06TVF transforms an by complex upper triangular matrix with real diagonal elements, to an upper Hessenberg matrix , by applying a given sequence of plane rotations from either the left or the right, in planes to ; has real nonzero subdiagonal elements , for only.
If , the rotations are applied from the left:
where .
If , the rotations are applied from the right:
where .
In either case, is a rotation in the plane.
The by plane rotation part of has the form
with real.
4 References
None.
5 Parameters
1: – CHARACTER(1)Input
On entry: specifies whether is operated on from the left or the right.
is pre-multiplied from the left.
is post-multiplied from the right.
Constraint:
or .
2: – INTEGERInput
On entry: , the order of the matrices and .
Constraint:
.
3: – INTEGERInput
4: – INTEGERInput
On entry: the values and .
If or or , an immediate return is effected.
5: – COMPLEX (KIND=nag_wp) arrayInput
Note: the dimension of the array C
must be at least
.
On entry: must hold , the cosine of the rotation , for .
6: – REAL (KIND=nag_wp) arrayInput/Output
Note: the dimension of the array S
must be at least
.
On entry: must hold , the sine of the rotation , for .
On exit: holds , the subdiagonal element of , for .
7: – COMPLEX (KIND=nag_wp) arrayInput/Output
Note: the second dimension of the array A
must be at least
.
On entry: the by upper triangular matrix . The imaginary parts of the diagonal elements must be zero.
On exit: the upper triangular part of the upper Hessenberg matrix .
8: – INTEGERInput
On entry: the first dimension of the array A as declared in the (sub)program from which F06TVF is called.