SUBROUTINE CLATZM( SIDE, M, N, V, INCV, TAU, C1, C2, LDC, WORK) CHARACTER * 1 SIDE COMPLEX TAU COMPLEX V(*), C1(LDC,*), C2(LDC,*), WORK(*) INTEGER M, N, INCV, LDC SUBROUTINE CLATZM_64( SIDE, M, N, V, INCV, TAU, C1, C2, LDC, WORK) CHARACTER * 1 SIDE COMPLEX TAU COMPLEX V(*), C1(LDC,*), C2(LDC,*), WORK(*) INTEGER*8 M, N, INCV, LDC
SUBROUTINE LATZM( SIDE, [M], [N], V, [INCV], TAU, C1, C2, [LDC], * [WORK]) CHARACTER(LEN=1) :: SIDE COMPLEX :: TAU COMPLEX, DIMENSION(:) :: V, WORK COMPLEX, DIMENSION(:,:) :: C1, C2 INTEGER :: M, N, INCV, LDC SUBROUTINE LATZM_64( SIDE, [M], [N], V, [INCV], TAU, C1, C2, [LDC], * [WORK]) CHARACTER(LEN=1) :: SIDE COMPLEX :: TAU COMPLEX, DIMENSION(:) :: V, WORK COMPLEX, DIMENSION(:,:) :: C1, C2 INTEGER(8) :: M, N, INCV, LDC
void clatzm(char side, int m, int n, complex *v, int incv, complex tau, complex *c1, complex *c2, int ldc);
void clatzm_64(char side, long m, long n, complex *v, long incv, complex tau, complex *c1, complex *c2, long ldc);
CLATZM applies a Householder matrix generated by CTZRQF to a matrix.
Let P = I - tau*u*u', u = ( 1 ),
( v )
where v is an (m-1) vector if SIDE = 'L', or a (n-1) vector if SIDE = 'R'.
If SIDE equals 'L', let
C = [ C1 ] 1 [ C2 ] m-1 n
Then C is overwritten by P*C.
If SIDE equals 'R', let
C = [ C1, C2 ] m 1 n-1
Then C is overwritten by C*P.
On exit, the first row of P*C if SIDE = 'L', or the first column of C*P if SIDE = 'R'.
On exit, rows 2:m of P*C if SIDE = 'L', or columns 2:m of C*P if SIDE = 'R'.