Doxygen Source Code Documentation
Main Page Alphabetical List Data Structures File List Data Fields Globals Search
eis_htribk.c
Go to the documentation of this file.00001
00002
00003
00004
00005
00006 #include "f2c.h"
00007
00008 int htribk_(integer *nm, integer *n, doublereal *ar,
00009 doublereal *ai, doublereal *tau, integer *m, doublereal *zr,
00010 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 doublereal h__;
00018 static integer i__, j, k, l;
00019 static doublereal s, si;
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 tau -= 3;
00071 ai_dim1 = *nm;
00072 ai_offset = ai_dim1 + 1;
00073 ai -= ai_offset;
00074 ar_dim1 = *nm;
00075 ar_offset = ar_dim1 + 1;
00076 ar -= ar_offset;
00077 zi_dim1 = *nm;
00078 zi_offset = zi_dim1 + 1;
00079 zi -= zi_offset;
00080 zr_dim1 = *nm;
00081 zr_offset = zr_dim1 + 1;
00082 zr -= zr_offset;
00083
00084
00085 if (*m == 0) {
00086 goto L200;
00087 }
00088
00089
00090
00091 i__1 = *n;
00092 for (k = 1; k <= i__1; ++k) {
00093
00094 i__2 = *m;
00095 for (j = 1; j <= i__2; ++j) {
00096 zi[k + j * zi_dim1] = -zr[k + j * zr_dim1] * tau[(k << 1) + 2];
00097 zr[k + j * zr_dim1] *= tau[(k << 1) + 1];
00098
00099 }
00100 }
00101
00102 if (*n == 1) {
00103 goto L200;
00104 }
00105
00106 i__2 = *n;
00107 for (i__ = 2; i__ <= i__2; ++i__) {
00108 l = i__ - 1;
00109 h__ = ai[i__ + i__ * ai_dim1];
00110 if (h__ == 0.) {
00111 goto L140;
00112 }
00113
00114 i__1 = *m;
00115 for (j = 1; j <= i__1; ++j) {
00116 s = 0.;
00117 si = 0.;
00118
00119 i__3 = l;
00120 for (k = 1; k <= i__3; ++k) {
00121 s = s + ar[i__ + k * ar_dim1] * zr[k + j * zr_dim1] - ai[i__
00122 + k * ai_dim1] * zi[k + j * zi_dim1];
00123 si = si + ar[i__ + k * ar_dim1] * zi[k + j * zi_dim1] + ai[
00124 i__ + k * ai_dim1] * zr[k + j * zr_dim1];
00125
00126 }
00127
00128
00129 s = s / h__ / h__;
00130 si = si / h__ / h__;
00131
00132 i__3 = l;
00133 for (k = 1; k <= i__3; ++k) {
00134 zr[k + j * zr_dim1] = zr[k + j * zr_dim1] - s * ar[i__ + k *
00135 ar_dim1] - si * ai[i__ + k * ai_dim1];
00136 zi[k + j * zi_dim1] = zi[k + j * zi_dim1] - si * ar[i__ + k *
00137 ar_dim1] + s * ai[i__ + k * ai_dim1];
00138
00139 }
00140
00141
00142 }
00143
00144 L140:
00145 ;
00146 }
00147
00148 L200:
00149 return 0;
00150 }
00151