NAME

zgehrd - reduce a complex general matrix A to upper Hessenberg form H by a unitary similarity transformation


SYNOPSIS

  SUBROUTINE ZGEHRD( N, ILO, IHI, A, LDA, TAU, WORKIN, LWORKIN, INFO)
  DOUBLE COMPLEX A(LDA,*), TAU(*), WORKIN(*)
  INTEGER N, ILO, IHI, LDA, LWORKIN, INFO
  SUBROUTINE ZGEHRD_64( N, ILO, IHI, A, LDA, TAU, WORKIN, LWORKIN, 
 *      INFO)
  DOUBLE COMPLEX A(LDA,*), TAU(*), WORKIN(*)
  INTEGER*8 N, ILO, IHI, LDA, LWORKIN, INFO

F95 INTERFACE

  SUBROUTINE GEHRD( [N], ILO, IHI, A, [LDA], TAU, [WORKIN], [LWORKIN], 
 *       [INFO])
  COMPLEX(8), DIMENSION(:) :: TAU, WORKIN
  COMPLEX(8), DIMENSION(:,:) :: A
  INTEGER :: N, ILO, IHI, LDA, LWORKIN, INFO
  SUBROUTINE GEHRD_64( [N], ILO, IHI, A, [LDA], TAU, [WORKIN], 
 *       [LWORKIN], [INFO])
  COMPLEX(8), DIMENSION(:) :: TAU, WORKIN
  COMPLEX(8), DIMENSION(:,:) :: A
  INTEGER(8) :: N, ILO, IHI, LDA, LWORKIN, INFO

C INTERFACE

#include <sunperf.h>

void zgehrd(int n, int ilo, int ihi, doublecomplex *a, int lda, doublecomplex *tau, int *info);

void zgehrd_64(long n, long ilo, long ihi, doublecomplex *a, long lda, doublecomplex *tau, long *info);


PURPOSE

zgehrd reduces a complex general matrix A to upper Hessenberg form H by a unitary similarity transformation: Q' * A * Q = H .


ARGUMENTS


FURTHER DETAILS

The matrix Q is represented as a product of (ihi-ilo) elementary reflectors

   Q  = H(ilo) H(ilo+1) . . . H(ihi-1).

Each H(i) has the form

   H(i)  = I - tau * v * v'

where tau is a complex scalar, and v is a complex vector with v(1:i) = 0, v(i+1) = 1 and v(ihi+1:n) = 0; v(i+2:ihi) is stored on exit in A(i+2:ihi,i), and tau in TAU(i).

The contents of A are illustrated by the following example, with n = 7, ilo = 2 and ihi = 6:

on entry, on exit,

( a a a a a a a ) ( a a h h h h a ) ( a a a a a a ) ( a h h h h a ) ( a a a a a a ) ( h h h h h h ) ( a a a a a a ) ( v2 h h h h h ) ( a a a a a a ) ( v2 v3 h h h h ) ( a a a a a a ) ( v2 v3 v4 h h h ) ( a ) ( a )

where a denotes an element of the original matrix A, h denotes a modified element of the upper Hessenberg matrix H, and vi denotes an element of the vector defining H(i).