Doxygen Source Code Documentation
Main Page Alphabetical List Data Structures File List Data Fields Globals Search
eis_combak.c
Go to the documentation of this file.00001
00002
00003
00004
00005
00006 #include "f2c.h"
00007
00008 int combak_(integer *nm, integer *low, integer *igh,
00009 doublereal *ar, doublereal *ai, integer *int__, integer *m,
00010 doublereal *zr, doublereal *zi)
00011 {
00012
00013 integer ar_dim1, ar_offset, ai_dim1, ai_offset, zr_dim1, zr_offset,
00014 zi_dim1, zi_offset, i__1, i__2, i__3;
00015
00016
00017 static integer i__, j, la, mm, mp;
00018 static doublereal xi, xr;
00019 static integer kp1, mp1;
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
00066
00067
00068
00069
00070
00071 --int__;
00072 ai_dim1 = *nm;
00073 ai_offset = ai_dim1 + 1;
00074 ai -= ai_offset;
00075 ar_dim1 = *nm;
00076 ar_offset = ar_dim1 + 1;
00077 ar -= ar_offset;
00078 zi_dim1 = *nm;
00079 zi_offset = zi_dim1 + 1;
00080 zi -= zi_offset;
00081 zr_dim1 = *nm;
00082 zr_offset = zr_dim1 + 1;
00083 zr -= zr_offset;
00084
00085
00086 if (*m == 0) {
00087 goto L200;
00088 }
00089 la = *igh - 1;
00090 kp1 = *low + 1;
00091 if (la < kp1) {
00092 goto L200;
00093 }
00094
00095 i__1 = la;
00096 for (mm = kp1; mm <= i__1; ++mm) {
00097 mp = *low + *igh - mm;
00098 mp1 = mp + 1;
00099
00100 i__2 = *igh;
00101 for (i__ = mp1; i__ <= i__2; ++i__) {
00102 xr = ar[i__ + (mp - 1) * ar_dim1];
00103 xi = ai[i__ + (mp - 1) * ai_dim1];
00104 if (xr == 0. && xi == 0.) {
00105 goto L110;
00106 }
00107
00108 i__3 = *m;
00109 for (j = 1; j <= i__3; ++j) {
00110 zr[i__ + j * zr_dim1] = zr[i__ + j * zr_dim1] + xr * zr[mp +
00111 j * zr_dim1] - xi * zi[mp + j * zi_dim1];
00112 zi[i__ + j * zi_dim1] = zi[i__ + j * zi_dim1] + xr * zi[mp +
00113 j * zi_dim1] + xi * zr[mp + j * zr_dim1];
00114
00115 }
00116
00117 L110:
00118 ;
00119 }
00120
00121 i__ = int__[mp];
00122 if (i__ == mp) {
00123 goto L140;
00124 }
00125
00126 i__2 = *m;
00127 for (j = 1; j <= i__2; ++j) {
00128 xr = zr[i__ + j * zr_dim1];
00129 zr[i__ + j * zr_dim1] = zr[mp + j * zr_dim1];
00130 zr[mp + j * zr_dim1] = xr;
00131 xi = zi[i__ + j * zi_dim1];
00132 zi[i__ + j * zi_dim1] = zi[mp + j * zi_dim1];
00133 zi[mp + j * zi_dim1] = xi;
00134
00135 }
00136
00137 L140:
00138 ;
00139 }
00140
00141 L200:
00142 return 0;
00143 }
00144