Doxygen Source Code Documentation
Main Page Alphabetical List Data Structures File List Data Fields Globals Search
eis_elmhes.c
Go to the documentation of this file.00001
00002
00003
00004
00005
00006 #include "f2c.h"
00007
00008 int elmhes_(integer *nm, integer *n, integer *low, integer *
00009 igh, doublereal *a, integer *int__)
00010 {
00011
00012 integer a_dim1, a_offset, i__1, i__2, i__3;
00013 doublereal d__1;
00014
00015
00016 static integer i__, j, m;
00017 static doublereal x, y;
00018 static integer la, mm1, kp1, mp1;
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065 a_dim1 = *nm;
00066 a_offset = a_dim1 + 1;
00067 a -= a_offset;
00068 --int__;
00069
00070
00071 la = *igh - 1;
00072 kp1 = *low + 1;
00073 if (la < kp1) {
00074 goto L200;
00075 }
00076
00077 i__1 = la;
00078 for (m = kp1; m <= i__1; ++m) {
00079 mm1 = m - 1;
00080 x = 0.;
00081 i__ = m;
00082
00083 i__2 = *igh;
00084 for (j = m; j <= i__2; ++j) {
00085 if ((d__1 = a[j + mm1 * a_dim1], abs(d__1)) <= abs(x)) {
00086 goto L100;
00087 }
00088 x = a[j + mm1 * a_dim1];
00089 i__ = j;
00090 L100:
00091 ;
00092 }
00093
00094 int__[m] = i__;
00095 if (i__ == m) {
00096 goto L130;
00097 }
00098
00099 i__2 = *n;
00100 for (j = mm1; j <= i__2; ++j) {
00101 y = a[i__ + j * a_dim1];
00102 a[i__ + j * a_dim1] = a[m + j * a_dim1];
00103 a[m + j * a_dim1] = y;
00104
00105 }
00106
00107 i__2 = *igh;
00108 for (j = 1; j <= i__2; ++j) {
00109 y = a[j + i__ * a_dim1];
00110 a[j + i__ * a_dim1] = a[j + m * a_dim1];
00111 a[j + m * a_dim1] = y;
00112
00113 }
00114
00115 L130:
00116 if (x == 0.) {
00117 goto L180;
00118 }
00119 mp1 = m + 1;
00120
00121 i__2 = *igh;
00122 for (i__ = mp1; i__ <= i__2; ++i__) {
00123 y = a[i__ + mm1 * a_dim1];
00124 if (y == 0.) {
00125 goto L160;
00126 }
00127 y /= x;
00128 a[i__ + mm1 * a_dim1] = y;
00129
00130 i__3 = *n;
00131 for (j = m; j <= i__3; ++j) {
00132
00133 a[i__ + j * a_dim1] -= y * a[m + j * a_dim1];
00134 }
00135
00136 i__3 = *igh;
00137 for (j = 1; j <= i__3; ++j) {
00138
00139 a[j + m * a_dim1] += y * a[j + i__ * a_dim1];
00140 }
00141
00142 L160:
00143 ;
00144 }
00145
00146 L180:
00147 ;
00148 }
00149
00150 L200:
00151 return 0;
00152 }
00153