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

  1.       subroutine rgg(nm,n,a,b,alfr,alfi,beta,matz,z,ierr)
  2. c
  3.       integer n,nm,ierr,matz
  4.       double precision a(nm,n),b(nm,n),alfr(n),alfi(n),beta(n),z(nm,n)
  5.       logical tf
  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     for the real general generalized eigenproblem  ax = (lambda)bx.
  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 matrices  a  and  b.
  19. c
  20. c        a  contains a real general matrix.
  21. c
  22. c        b  contains a real general matrix.
  23. c
  24. c        matz  is an integer variable set equal to zero if
  25. c        only eigenvalues are desired.  otherwise it is set to
  26. c        any non-zero integer for both eigenvalues and eigenvectors.
  27. c
  28. c     on output
  29. c
  30. c        alfr  and  alfi  contain the real and imaginary parts,
  31. c        respectively, of the numerators of the eigenvalues.
  32. c
  33. c        beta  contains the denominators of the eigenvalues,
  34. c        which are thus given by the ratios  (alfr+i*alfi)/beta.
  35. c        complex conjugate pairs of eigenvalues appear consecutively
  36. c        with the eigenvalue having the positive imaginary part first.
  37. c
  38. c        z  contains the real and imaginary parts of the eigenvectors
  39. c        if matz is not zero.  if the j-th eigenvalue is real, the
  40. c        j-th column of  z  contains its eigenvector.  if the j-th
  41. c        eigenvalue is complex with positive imaginary part, the
  42. c        j-th and (j+1)-th columns of  z  contain the real and
  43. c        imaginary parts of its eigenvector.  the conjugate of this
  44. c        vector is the eigenvector for the conjugate eigenvalue.
  45. c
  46. c        ierr  is an integer output variable set equal to an error
  47. c           completion code described in the documentation for qzit.
  48. c           the normal completion code is zero.
  49. c
  50. c     questions and comments should be directed to burton s. garbow,
  51. c     mathematics and computer science div, argonne national laboratory
  52. c
  53. c     this version dated august 1983.
  54. c
  55. c     ------------------------------------------------------------------
  56. c
  57.       if (n .le. nm) go to 10
  58.       ierr = 10 * n
  59.       go to 50
  60. c
  61.    10 if (matz .ne. 0) go to 20
  62. c     .......... find eigenvalues only ..........
  63.       tf = .false.
  64.       call  qzhes(nm,n,a,b,tf,z)
  65.       call  qzit(nm,n,a,b,0.0d0,tf,z,ierr)
  66.       call  qzval(nm,n,a,b,alfr,alfi,beta,tf,z)
  67.       go to 50
  68. c     .......... find both eigenvalues and eigenvectors ..........
  69.    20 tf = .true.
  70.       call  qzhes(nm,n,a,b,tf,z)
  71.       call  qzit(nm,n,a,b,0.0d0,tf,z,ierr)
  72.       call  qzval(nm,n,a,b,alfr,alfi,beta,tf,z)
  73.       if (ierr .ne. 0) go to 50
  74.       call  qzvec(nm,n,a,b,alfr,alfi,beta,z)
  75.    50 return
  76.       end
  77.