Loading...
Searching...
No Matches

## cgehrd()

subroutine cgehrd | ( | integer | n,
|  | integer | ilo,
|  | integer | ihi,
|  | complex, dimension( lda, * ) | a,
|  | integer | lda,
|  | complex, dimension( * ) | tau,
|  | complex, dimension( * ) | work,
|  | integer | lwork,
|  | integer | info )

CGEHRD

Download CGEHRD + dependencies [TGZ] [ZIP] [TXT]

Purpose:

      !>
      !> CGEHRD reduces a complex general matrix A to upper Hessenberg form H by
      !> an unitary similarity transformation:  Q**H * A * Q = H .
      !>

Parameters

  [in]

  N

      !>          N is INTEGER
      !>          The order of the matrix A.  N >= 0.
      !>

  [in]

  ILO

      !>          ILO is INTEGER
      !>

  [in]

  IHI

      !>          IHI is INTEGER
      !>
      !>          It is assumed that A is already upper triangular in rows
      !>          and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally
      !>          set by a previous call to CGEBAL; otherwise they should be
      !>          set to 1 and N respectively. See Further Details.
      !>          1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0.
      !>

  [in,out]

  A

      !>          A is COMPLEX array, dimension (LDA,N)
      !>          On entry, the N-by-N general matrix to be reduced.
      !>          On exit, the upper triangle and the first subdiagonal of A
      !>          are overwritten with the upper Hessenberg matrix H, and the
      !>          elements below the first subdiagonal, with the array TAU,
      !>          represent the unitary matrix Q as a product of elementary
      !>          reflectors. See Further Details.
      !>

  [in]

  LDA

      !>          LDA is INTEGER
      !>          The leading dimension of the array A.  LDA >= max(1,N).
      !>

  [out]

  TAU

      !>          TAU is COMPLEX array, dimension (N-1)
      !>          The scalar factors of the elementary reflectors (see Further
      !>          Details). Elements 1:ILO-1 and IHI:N-1 of TAU are set to
      !>          zero.
      !>

  [out]

  WORK

      !>          WORK is COMPLEX array, dimension (MAX(1,LWORK))
      !>          On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
      !>

  [in]

  LWORK

      !>          LWORK is INTEGER
      !>          The length of the array WORK.  LWORK >= max(1,N).
      !>          For good performance, LWORK should generally be larger.
      !>
      !>          If LWORK = -1, then a workspace query is assumed; the routine
      !>          only calculates the optimal size of the WORK array, returns
      !>          this value as the first entry of the WORK array, and no error
      !>          message related to LWORK is issued by XERBLA.
      !>

  [out]

  INFO

      !>          INFO is INTEGER
      !>          = 0:  successful exit
      !>          < 0:  if INFO = -i, the i-th argument had an illegal value.
      !>

Author
  Univ. of Tennessee
  Univ. of California Berkeley
  Univ. of Colorado Denver
  NAG Ltd.

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**H
      !>
      !>  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).
      !>
      !>  This file is a slight modification of LAPACK-3.0's CGEHRD
      !>  subroutine incorporating improvements proposed by Quintana-Orti and
      !>  Van de Geijn (2006). (See CLAHR2.)
      !>