Doxygen Source Code Documentation
Main Page Alphabetical List Data Structures File List Data Fields Globals Search
eis_ch.c
Go to the documentation of this file.00001
00002
00003
00004
00005
00006 #include "f2c.h"
00007
00008 int ch_(integer *nm, integer *n, doublereal *ar, doublereal *
00009 ai, doublereal *w, integer *matz, doublereal *zr, doublereal *zi,
00010 doublereal *fv1, doublereal *fv2, doublereal *fm1, integer *ierr)
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;
00015
00016
00017 static integer i__, j;
00018 extern int htridi_(integer *, integer *, doublereal *,
00019 doublereal *, doublereal *, doublereal *, doublereal *,
00020 doublereal *), htribk_(integer *, integer *, doublereal *,
00021 doublereal *, doublereal *, integer *, doublereal *, doublereal *)
00022 , tqlrat_(integer *, doublereal *, doublereal *, integer *),
00023 tql2_(integer *, integer *, doublereal *, doublereal *,
00024 doublereal *, integer *);
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 fm1 -= 3;
00072 --fv2;
00073 --fv1;
00074 zi_dim1 = *nm;
00075 zi_offset = zi_dim1 + 1;
00076 zi -= zi_offset;
00077 zr_dim1 = *nm;
00078 zr_offset = zr_dim1 + 1;
00079 zr -= zr_offset;
00080 --w;
00081 ai_dim1 = *nm;
00082 ai_offset = ai_dim1 + 1;
00083 ai -= ai_offset;
00084 ar_dim1 = *nm;
00085 ar_offset = ar_dim1 + 1;
00086 ar -= ar_offset;
00087
00088
00089 if (*n <= *nm) {
00090 goto L10;
00091 }
00092 *ierr = *n * 10;
00093 goto L50;
00094
00095 L10:
00096 htridi_(nm, n, &ar[ar_offset], &ai[ai_offset], &w[1], &fv1[1], &fv2[1], &
00097 fm1[3]);
00098 if (*matz != 0) {
00099 goto L20;
00100 }
00101
00102 tqlrat_(n, &w[1], &fv2[1], ierr);
00103 goto L50;
00104
00105 L20:
00106 i__1 = *n;
00107 for (i__ = 1; i__ <= i__1; ++i__) {
00108
00109 i__2 = *n;
00110 for (j = 1; j <= i__2; ++j) {
00111 zr[j + i__ * zr_dim1] = 0.;
00112
00113 }
00114
00115 zr[i__ + i__ * zr_dim1] = 1.;
00116
00117 }
00118
00119 tql2_(nm, n, &w[1], &fv1[1], &zr[zr_offset], ierr);
00120 if (*ierr != 0) {
00121 goto L50;
00122 }
00123 htribk_(nm, n, &ar[ar_offset], &ai[ai_offset], &fm1[3], n, &zr[zr_offset],
00124 &zi[zi_offset]);
00125 L50:
00126 return 0;
00127 }
00128