home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / eispack-1.0-src.tgz / tar.out / contrib / eispack / tests / rg.f < prev    next >
Text File  |  1996-09-28  |  3KB  |  78 lines

  1.       SUBROUTINE RG(NM,N,A,WR,WI,MATZ,Z,IV1,FV1,IERR)
  2. C
  3.       INTEGER N,NM,IS1,IS2,IERR,MATZ
  4.       DOUBLE PRECISION A(NM,N),WR(N),WI(N),Z(NM,N),FV1(N)
  5.       INTEGER IV1(N)
  6. C
  7. C     THIS SUBROUTINE CALLS THE RECOMMENDED SEQUENCE OF
  8. C     SUBROUTINES FROM THE EIGENSYSTEM SUBROUTINE PACKAGE (EISPACK)
  9. C     TO FIND THE EIGENVALUES AND EIGENVECTORS (IF DESIRED)
  10. C     OF A REAL GENERAL MATRIX.
  11. C
  12. C     ON INPUT
  13. C
  14. C        NM  MUST BE SET TO THE ROW DIMENSION OF THE TWO-DIMENSIONAL
  15. C        ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
  16. C        DIMENSION STATEMENT.
  17. C
  18. C        N  IS THE ORDER OF THE MATRIX  A.
  19. C
  20. C        A  CONTAINS THE REAL GENERAL MATRIX.
  21. C
  22. C        MATZ  IS AN INTEGER VARIABLE SET EQUAL TO ZERO IF
  23. C        ONLY EIGENVALUES ARE DESIRED.  OTHERWISE IT IS SET TO
  24. C        ANY NON-ZERO INTEGER FOR BOTH EIGENVALUES AND EIGENVECTORS.
  25. C
  26. C     ON OUTPUT
  27. C
  28. C        WR  AND  WI  CONTAIN THE REAL AND IMAGINARY PARTS,
  29. C        RESPECTIVELY, OF THE EIGENVALUES.  COMPLEX CONJUGATE
  30. C        PAIRS OF EIGENVALUES APPEAR CONSECUTIVELY WITH THE
  31. C        EIGENVALUE HAVING THE POSITIVE IMAGINARY PART FIRST.
  32. C
  33. C        Z  CONTAINS THE REAL AND IMAGINARY PARTS OF THE EIGENVECTORS
  34. C        IF MATZ IS NOT ZERO.  IF THE J-TH EIGENVALUE IS REAL, THE
  35. C        J-TH COLUMN OF  Z  CONTAINS ITS EIGENVECTOR.  IF THE J-TH
  36. C        EIGENVALUE IS COMPLEX WITH POSITIVE IMAGINARY PART, THE
  37. C        J-TH AND (J+1)-TH COLUMNS OF  Z  CONTAIN THE REAL AND
  38. C        IMAGINARY PARTS OF ITS EIGENVECTOR.  THE CONJUGATE OF THIS
  39. C        VECTOR IS THE EIGENVECTOR FOR THE CONJUGATE EIGENVALUE.
  40. C
  41. C        IERR  IS AN INTEGER OUTPUT VARIABLE SET EQUAL TO AN
  42. C        ERROR COMPLETION CODE DESCRIBED IN SECTION 2B OF THE
  43. C        DOCUMENTATION.  THE NORMAL COMPLETION CODE IS ZERO.
  44. C
  45. C        IV1  AND  FV1  ARE TEMPORARY STORAGE ARRAYS.
  46. C
  47. C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO B. S. GARBOW,
  48. C     APPLIED MATHEMATICS DIVISION, ARGONNE NATIONAL LABORATORY
  49. C
  50. C     ------------------------------------------------------------------
  51. C
  52.       write(6,*)' in rg'
  53.       IF (N .LE. NM) GO TO 10
  54.       IERR = 10 * N
  55.       GO TO 50
  56. C
  57.    10 continue
  58.       write(6,*)' call balanc'
  59.       CALL  BALANC(NM,N,A,IS1,IS2,FV1)
  60.       write(6,*)'call elmhes'
  61.       CALL  ELMHES(NM,N,IS1,IS2,A,IV1)
  62.       IF (MATZ .NE. 0) GO TO 20
  63. C     .......... FIND EIGENVALUES ONLY ..........
  64.       write(6,*)' call hqr'
  65.       CALL  HQR(NM,N,IS1,IS2,A,WR,WI,IERR)
  66.       GO TO 50
  67. C     .......... FIND BOTH EIGENVALUES AND EIGENVECTORS ..........
  68.    20 continue
  69.       write(6,*)'call eltran'
  70.       CALL  ELTRAN(NM,N,IS1,IS2,A,IV1,Z)
  71.       write(6,*)' call hqr2'
  72.       CALL  HQR2(NM,N,IS1,IS2,A,WR,WI,Z,IERR)
  73.       IF (IERR .NE. 0) GO TO 50
  74.       write(6,*)' call balbak'
  75.       CALL  BALBAK(NM,N,IS1,IS2,FV1,N,Z)
  76.    50 RETURN
  77.       END
  78.