Go to main content
Oracle Developer Studio 12.5 Man Pages

Exit Print View

Updated: June 2017
 
 

dgehd2 (3p)

Name

dgehd2 - reduce a general square matrix to upper Hessenberg form using an unblocked algorithm

Synopsis

SUBROUTINE DGEHD2(N, ILO, IHI, A, LDA, TAU, WORK, INFO)


INTEGER IHI, ILO, INFO, LDA, N

DOUBLE PRECISION A(LDA,*), TAU(*), WORK(*)


SUBROUTINE DGEHD2_64(N, ILO, IHI, A, LDA, TAU, WORK, INFO)


INTEGER*8 IHI, ILO, INFO, LDA, N

DOUBLE PRECISION A(LDA,*), TAU(*), WORK(*)


F95 INTERFACE
SUBROUTINE GEHD2(N, ILO, IHI, A, LDA, TAU, WORK, INFO)


INTEGER :: N, ILO, IHI, LDA, INFO

REAL(8), DIMENSION(:,:) :: A

REAL(8), DIMENSION(:) :: TAU, WORK


SUBROUTINE GEHD2_64(N, ILO, IHI, A, LDA, TAU, WORK, INFO)


INTEGER(8) :: N, ILO, IHI, LDA, INFO

REAL(8), DIMENSION(:,:) :: A

REAL(8), DIMENSION(:) :: TAU, WORK


C INTERFACE
#include <sunperf.h>

void dgehd2 (int n, int ilo, int ihi, double *a, int lda, double  *tau,
int *info);


void dgehd2_64 (long n, long ilo, long ihi, double *a, long lda, double
*tau, long *info);

Description

Oracle Solaris Studio Performance Library                           dgehd2(3P)



NAME
       dgehd2  - reduce a general square matrix to upper Hessenberg form using
       an unblocked algorithm


SYNOPSIS
       SUBROUTINE DGEHD2(N, ILO, IHI, A, LDA, TAU, WORK, INFO)


       INTEGER IHI, ILO, INFO, LDA, N

       DOUBLE PRECISION A(LDA,*), TAU(*), WORK(*)


       SUBROUTINE DGEHD2_64(N, ILO, IHI, A, LDA, TAU, WORK, INFO)


       INTEGER*8 IHI, ILO, INFO, LDA, N

       DOUBLE PRECISION A(LDA,*), TAU(*), WORK(*)


   F95 INTERFACE
       SUBROUTINE GEHD2(N, ILO, IHI, A, LDA, TAU, WORK, INFO)


       INTEGER :: N, ILO, IHI, LDA, INFO

       REAL(8), DIMENSION(:,:) :: A

       REAL(8), DIMENSION(:) :: TAU, WORK


       SUBROUTINE GEHD2_64(N, ILO, IHI, A, LDA, TAU, WORK, INFO)


       INTEGER(8) :: N, ILO, IHI, LDA, INFO

       REAL(8), DIMENSION(:,:) :: A

       REAL(8), DIMENSION(:) :: TAU, WORK


   C INTERFACE
       #include <sunperf.h>

       void dgehd2 (int n, int ilo, int ihi, double *a, int lda, double  *tau,
                 int *info);


       void dgehd2_64 (long n, long ilo, long ihi, double *a, long lda, double
                 *tau, long *info);


PURPOSE
       dgehd2 reduces a real general matrix A to upper Hessenberg form H by an
       orthogonal similarity transformation: Q**T*A*Q=H.


ARGUMENTS
       N (input)
                 N is INTEGER
                 The order of the matrix A. N >= 0.


       ILO (input)
                 ILO is INTEGER


       IHI (input)
                 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 DGEBAL; otherwise they should be set to 1
                 and N respectively. See Further Details.
                 1 <= ILO <= IHI <= max(1,N).


       A (input/output)
                 A is DOUBLE PRECISION 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 orthogonal matrix Q as a product of elementary
                 reflectors. See Further Details.


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


       TAU (output)
                 TAU is DOUBLE PRECISION array, dimension (N-1)
                 The scalar factors of the elementary reflectors (see  Further
                 Details).


       WORK (output)
                 WORK is DOUBLE PRECISION array, dimension (N)


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


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**T

       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).



                                  7 Nov 2015                        dgehd2(3P)