Doxygen Source Code Documentation
eis_rgg.c File Reference
#include "f2c.h"
Go to the source code of this file.
Functions | |
int | rgg_ (integer *nm, integer *n, doublereal *a, doublereal *b, doublereal *alfr, doublereal *alfi, doublereal *beta, integer *matz, doublereal *z__, integer *ierr) |
Variables | |
doublereal | c_b5 = 0. |
Function Documentation
|
Definition at line 12 of file eis_rgg.c. References a, c_b5, qzhes_(), qzit_(), qzval_(), and qzvec_().
00015 { 00016 /* System generated locals */ 00017 integer a_dim1, a_offset, b_dim1, b_offset, z_dim1, z_offset; 00018 00019 /* Local variables */ 00020 extern /* Subroutine */ int qzit_(integer *, integer *, doublereal *, 00021 doublereal *, doublereal *, logical *, doublereal *, integer *), 00022 qzvec_(integer *, integer *, doublereal *, doublereal *, 00023 doublereal *, doublereal *, doublereal *, doublereal *), qzhes_( 00024 integer *, integer *, doublereal *, doublereal *, logical *, 00025 doublereal *), qzval_(integer *, integer *, doublereal *, 00026 doublereal *, doublereal *, doublereal *, doublereal *, logical *, 00027 doublereal *); 00028 static logical tf; 00029 00030 00031 00032 /* THIS SUBROUTINE CALLS THE RECOMMENDED SEQUENCE OF */ 00033 /* SUBROUTINES FROM THE EIGENSYSTEM SUBROUTINE PACKAGE (EISPACK) */ 00034 /* TO FIND THE EIGENVALUES AND EIGENVECTORS (IF DESIRED) */ 00035 /* FOR THE REAL GENERAL GENERALIZED EIGENPROBLEM AX = (LAMBDA)BX. */ 00036 00037 /* ON INPUT */ 00038 00039 /* NM MUST BE SET TO THE ROW DIMENSION OF THE TWO-DIMENSIONAL */ 00040 /* ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM */ 00041 /* DIMENSION STATEMENT. */ 00042 00043 /* N IS THE ORDER OF THE MATRICES A AND B. */ 00044 00045 /* A CONTAINS A REAL GENERAL MATRIX. */ 00046 00047 /* B CONTAINS A REAL GENERAL MATRIX. */ 00048 00049 /* MATZ IS AN INTEGER VARIABLE SET EQUAL TO ZERO IF */ 00050 /* ONLY EIGENVALUES ARE DESIRED. OTHERWISE IT IS SET TO */ 00051 /* ANY NON-ZERO INTEGER FOR BOTH EIGENVALUES AND EIGENVECTORS. */ 00052 00053 /* ON OUTPUT */ 00054 00055 /* ALFR AND ALFI CONTAIN THE REAL AND IMAGINARY PARTS, */ 00056 /* RESPECTIVELY, OF THE NUMERATORS OF THE EIGENVALUES. */ 00057 00058 /* BETA CONTAINS THE DENOMINATORS OF THE EIGENVALUES, */ 00059 /* WHICH ARE THUS GIVEN BY THE RATIOS (ALFR+I*ALFI)/BETA. */ 00060 /* COMPLEX CONJUGATE PAIRS OF EIGENVALUES APPEAR CONSECUTIVELY */ 00061 /* WITH THE EIGENVALUE HAVING THE POSITIVE IMAGINARY PART FIRST. */ 00062 00063 /* Z CONTAINS THE REAL AND IMAGINARY PARTS OF THE EIGENVECTORS */ 00064 /* IF MATZ IS NOT ZERO. IF THE J-TH EIGENVALUE IS REAL, THE */ 00065 /* J-TH COLUMN OF Z CONTAINS ITS EIGENVECTOR. IF THE J-TH */ 00066 /* EIGENVALUE IS COMPLEX WITH POSITIVE IMAGINARY PART, THE */ 00067 /* J-TH AND (J+1)-TH COLUMNS OF Z CONTAIN THE REAL AND */ 00068 /* IMAGINARY PARTS OF ITS EIGENVECTOR. THE CONJUGATE OF THIS */ 00069 /* VECTOR IS THE EIGENVECTOR FOR THE CONJUGATE EIGENVALUE. */ 00070 00071 /* IERR IS AN INTEGER OUTPUT VARIABLE SET EQUAL TO AN ERROR */ 00072 /* COMPLETION CODE DESCRIBED IN THE DOCUMENTATION FOR QZIT. */ 00073 /* THE NORMAL COMPLETION CODE IS ZERO. */ 00074 00075 /* QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW, */ 00076 /* MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY 00077 */ 00078 00079 /* THIS VERSION DATED AUGUST 1983. */ 00080 00081 /* ------------------------------------------------------------------ 00082 */ 00083 00084 /* Parameter adjustments */ 00085 z_dim1 = *nm; 00086 z_offset = z_dim1 + 1; 00087 z__ -= z_offset; 00088 --beta; 00089 --alfi; 00090 --alfr; 00091 b_dim1 = *nm; 00092 b_offset = b_dim1 + 1; 00093 b -= b_offset; 00094 a_dim1 = *nm; 00095 a_offset = a_dim1 + 1; 00096 a -= a_offset; 00097 00098 /* Function Body */ 00099 if (*n <= *nm) { 00100 goto L10; 00101 } 00102 *ierr = *n * 10; 00103 goto L50; 00104 00105 L10: 00106 if (*matz != 0) { 00107 goto L20; 00108 } 00109 /* .......... FIND EIGENVALUES ONLY .......... */ 00110 tf = FALSE_; 00111 qzhes_(nm, n, &a[a_offset], &b[b_offset], &tf, &z__[z_offset]); 00112 qzit_(nm, n, &a[a_offset], &b[b_offset], &c_b5, &tf, &z__[z_offset], ierr) 00113 ; 00114 qzval_(nm, n, &a[a_offset], &b[b_offset], &alfr[1], &alfi[1], &beta[1], & 00115 tf, &z__[z_offset]); 00116 goto L50; 00117 /* .......... FIND BOTH EIGENVALUES AND EIGENVECTORS .......... */ 00118 L20: 00119 tf = TRUE_; 00120 qzhes_(nm, n, &a[a_offset], &b[b_offset], &tf, &z__[z_offset]); 00121 qzit_(nm, n, &a[a_offset], &b[b_offset], &c_b5, &tf, &z__[z_offset], ierr) 00122 ; 00123 qzval_(nm, n, &a[a_offset], &b[b_offset], &alfr[1], &alfi[1], &beta[1], & 00124 tf, &z__[z_offset]); 00125 if (*ierr != 0) { 00126 goto L50; 00127 } 00128 qzvec_(nm, n, &a[a_offset], &b[b_offset], &alfr[1], &alfi[1], &beta[1], & 00129 z__[z_offset]); 00130 L50: 00131 return 0; 00132 } /* rgg_ */ |
Variable Documentation
|
Definition at line 10 of file eis_rgg.c. Referenced by rgg_(). |