dhsein man page on OpenIndiana

Man page or keyword search:  
man Server   20441 pages
apropos Keyword Search (all sections)
Output format
OpenIndiana logo
[printable version]

dhsein(3P)		    Sun Performance Library		    dhsein(3P)

NAME
       dhsein  -  use  inverse	iteration  to find specified right and/or left
       eigenvectors of a real upper Hessenberg matrix H

SYNOPSIS
       SUBROUTINE DHSEIN(SIDE, EIGSRC, INITV, SELECT, N, H, LDH, WR, WI, VL,
	     LDVL, VR, LDVR, MM, M, WORK, IFAILL, IFAILR, INFO)

       CHARACTER * 1 SIDE, EIGSRC, INITV
       INTEGER N, LDH, LDVL, LDVR, MM, M, INFO
       INTEGER IFAILL(*), IFAILR(*)
       LOGICAL SELECT(*)
       DOUBLE  PRECISION  H(LDH,*),  WR(*),  WI(*),  VL(LDVL,*),   VR(LDVR,*),
       WORK(*)

       SUBROUTINE DHSEIN_64(SIDE, EIGSRC, INITV, SELECT, N, H, LDH, WR, WI,
	     VL, LDVL, VR, LDVR, MM, M, WORK, IFAILL, IFAILR, INFO)

       CHARACTER * 1 SIDE, EIGSRC, INITV
       INTEGER*8 N, LDH, LDVL, LDVR, MM, M, INFO
       INTEGER*8 IFAILL(*), IFAILR(*)
       LOGICAL*8 SELECT(*)
       DOUBLE	PRECISION  H(LDH,*),  WR(*),  WI(*),  VL(LDVL,*),  VR(LDVR,*),
       WORK(*)

   F95 INTERFACE
       SUBROUTINE HSEIN(SIDE, EIGSRC, INITV, SELECT, [N], H, [LDH], WR, WI,
	      VL, [LDVL], VR, [LDVR], MM, M, [WORK], IFAILL, IFAILR, [INFO])

       CHARACTER(LEN=1) :: SIDE, EIGSRC, INITV
       INTEGER :: N, LDH, LDVL, LDVR, MM, M, INFO
       INTEGER, DIMENSION(:) :: IFAILL, IFAILR
       LOGICAL, DIMENSION(:) :: SELECT
       REAL(8), DIMENSION(:) :: WR, WI, WORK
       REAL(8), DIMENSION(:,:) :: H, VL, VR

       SUBROUTINE HSEIN_64(SIDE, EIGSRC, INITV, SELECT, [N], H, [LDH], WR,
	      WI, VL, [LDVL], VR, [LDVR], MM, M, [WORK], IFAILL, IFAILR, [INFO])

       CHARACTER(LEN=1) :: SIDE, EIGSRC, INITV
       INTEGER(8) :: N, LDH, LDVL, LDVR, MM, M, INFO
       INTEGER(8), DIMENSION(:) :: IFAILL, IFAILR
       LOGICAL(8), DIMENSION(:) :: SELECT
       REAL(8), DIMENSION(:) :: WR, WI, WORK
       REAL(8), DIMENSION(:,:) :: H, VL, VR

   C INTERFACE
       #include <sunperf.h>

       void dhsein(char side, char eigsrc, char initv,	int  *select,  int  n,
		 double	 *h,  int ldh, double *wr, double *wi, double *vl, int
		 ldvl, double *vr, int ldvr, int mm, int *m, int *ifaill,  int
		 *ifailr, int *info);

       void  dhsein_64(char  side, char eigsrc, char initv, long *select, long
		 n, double *h, long ldh, double *wr, double *wi,  double  *vl,
		 long  ldvl,  double  *vr,  long  ldvr, long mm, long *m, long
		 *ifaill, long *ifailr, long *info);

PURPOSE
       dhsein uses inverse iteration  to  find	specified  right  and/or  left
       eigenvectors of a real upper Hessenberg matrix H.

       The right eigenvector x and the left eigenvector y of the matrix H cor‐
       responding to an eigenvalue w are defined by:

		    H * x = w * x,     y**h * H = w * y**h

       where y**h denotes the conjugate transpose of the vector y.

ARGUMENTS
       SIDE (input)
		 = 'R': compute right eigenvectors only;
		 = 'L': compute left eigenvectors only;
		 = 'B': compute both right and left eigenvectors.

       EIGSRC (input)
		 Specifies the source of eigenvalues supplied in (WR,WI):
		 = 'Q': the eigenvalues were found using DHSEQR;  thus,	 if  H
		 has  zero  subdiagonal	 elements, and so is block-triangular,
		 then the j-th eigenvalue can be assumed to be	an  eigenvalue
		 of  the  block containing the j-th row/column.	 This property
		 allows DHSEIN to perform inverse iteration on just one diago‐
		 nal  block.  = 'N': no assumptions are made on the correspon‐
		 dence between eigenvalues and diagonal blocks.	 In this case,
		 DHSEIN	 must always perform inverse iteration using the whole
		 matrix H.

       INITV (input)
		 = 'N': no initial vectors are supplied;
		 = 'U': user-supplied initial vectors are stored in the arrays
		 VL and/or VR.

       SELECT (input/output)
		 Specifies the eigenvectors to be computed. To select the real
		 eigenvector  corresponding  to	 a  real   eigenvalue	WR(j),
		 SELECT(j) must be set to .TRUE.. To select the complex eigen‐
		 vector corresponding to a complex  eigenvalue	(WR(j),WI(j)),
		 with complex conjugate (WR(j+1),WI(j+1)), either SELECT(j) or
		 SELECT(j+1) or both must be  set  to  .TRUE.;	then  on  exit
		 SELECT(j) is .TRUE. and SELECT(j+1) is .FALSE..

       N (input) The order of the matrix H.  N >= 0.

       H (input) The upper Hessenberg matrix H.

       LDH (input)
		 The leading dimension of the array H.	LDH >= max(1,N).

       WR (input/output)
		 On  entry, the real and imaginary parts of the eigenvalues of
		 H; a complex conjugate pair of eigenvalues must be stored  in
		 consecutive elements of WR and WI.  On exit, WR may have been
		 altered since close eigenvalues  are  perturbed  slightly  in
		 searching for independent eigenvectors.

       WI (input)
		 See the description of WR.

       VL (input/output)
		 On  entry, if INITV = 'U' and SIDE = 'L' or 'B', VL must con‐
		 tain starting vectors for the inverse iteration for the  left
		 eigenvectors;	the  starting vector for each eigenvector must
		 be in the same column(s) in which  the	 eigenvector  will  be
		 stored.  On exit, if SIDE = 'L' or 'B', the left eigenvectors
		 specified by SELECT will be stored consecutively in the  col‐
		 umns of VL, in the same order as their eigenvalues. A complex
		 eigenvector corresponding to a complex eigenvalue  is	stored
		 in  two  consecutive columns, the first holding the real part
		 and the second the imaginary part.  If SIDE = 'R', VL is  not
		 referenced.

       LDVL (input)
		 The  leading  dimension of the array VL.  LDVL >= max(1,N) if
		 SIDE = 'L' or 'B'; LDVL >= 1 otherwise.

       VR (input/output)
		 On entry, if INITV = 'U' and SIDE = 'R' or 'B', VR must  con‐
		 tain starting vectors for the inverse iteration for the right
		 eigenvectors; the starting vector for each  eigenvector  must
		 be  in	 the  same  column(s) in which the eigenvector will be
		 stored.  On exit, if SIDE = 'R' or 'B', the  right  eigenvec‐
		 tors  specified by SELECT will be stored consecutively in the
		 columns of VR, in the same order as their eigenvalues. A com‐
		 plex  eigenvector  corresponding  to  a complex eigenvalue is
		 stored in two consecutive columns, the first holding the real
		 part and the second the imaginary part.  If SIDE = 'L', VR is
		 not referenced.

       LDVR (input)
		 The leading dimension of the array VR.	 LDVR >=  max(1,N)  if
		 SIDE = 'R' or 'B'; LDVR >= 1 otherwise.

       MM (input)
		 The number of columns in the arrays VL and/or VR. MM >= M.

       M (output)
		 The  number of columns in the arrays VL and/or VR required to
		 store the eigenvectors; each selected real eigenvector	 occu‐
		 pies  one  column and each selected complex eigenvector occu‐
		 pies two columns.

       WORK (workspace)
		 dimension((N+2)*N)

       IFAILL (output) INTEGER array, dimension (MM)
		 If SIDE = 'L' or 'B', IFAILL(i) = j > 0 if the left eigenvec‐
		 tor in the i-th column of VL (corresponding to the eigenvalue
		 w(j)) failed to converge; IFAILL(i) = 0  if  the  eigenvector
		 converged  satisfactorily. If the i-th and (i+1)th columns of
		 VL hold a complex eigenvector, then IFAILL(i) and IFAILL(i+1)
		 are set to the same value.  If SIDE = 'R', IFAILL is not ref‐
		 erenced.

       IFAILR (output) INTEGER array, dimension (MM)
		 If SIDE = 'R' or 'B', IFAILR(i) = j > 0 if the	 right	eigen‐
		 vector	 in the i-th column of VR (corresponding to the eigen‐
		 value w(j)) failed to converge; IFAILR(i) = 0 if  the	eigen‐
		 vector converged satisfactorily. If the i-th and (i+1)th col‐
		 umns of VR hold a complex  eigenvector,  then	IFAILR(i)  and
		 IFAILR(i+1) are set to the same value.	 If SIDE = 'L', IFAILR
		 is not referenced.

       INFO (output)
		 = 0:  successful exit
		 < 0:  if INFO = -i, the i-th argument had an illegal value
		 > 0:  if INFO = i, i is  the  number  of  eigenvectors	 which
		 failed	 to  converge;	see  IFAILL  and  IFAILR  for  further
		 details.

FURTHER DETAILS
       Each eigenvector is normalized so that the element of largest magnitude
       has  magnitude 1; here the magnitude of a complex number (x,y) is taken
       to be |x|+|y|.

				  6 Mar 2009			    dhsein(3P)
[top]

List of man pages available for OpenIndiana

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net