Doxygen Source Code Documentation
Main Page Alphabetical List Data Structures File List Data Fields Globals Search
eis_rsp.c
Go to the documentation of this file.00001
00002
00003
00004
00005
00006 #include "f2c.h"
00007
00008 int rsp_(integer *nm, integer *n, integer *nv, doublereal *a,
00009 doublereal *w, integer *matz, doublereal *z__, doublereal *fv1,
00010 doublereal *fv2, integer *ierr)
00011 {
00012
00013 integer z_dim1, z_offset, i__1, i__2;
00014
00015
00016 extern int tred3_(integer *, integer *, doublereal *,
00017 doublereal *, doublereal *, doublereal *);
00018 static integer i__, j;
00019 extern int trbak3_(integer *, integer *, integer *,
00020 doublereal *, integer *, doublereal *), tqlrat_(integer *,
00021 doublereal *, doublereal *, integer *), tql2_(integer *, integer *
00022 , doublereal *, doublereal *, doublereal *, integer *);
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
00072
00073 --fv2;
00074 --fv1;
00075 z_dim1 = *nm;
00076 z_offset = z_dim1 + 1;
00077 z__ -= z_offset;
00078 --w;
00079 --a;
00080
00081
00082 if (*n <= *nm) {
00083 goto L5;
00084 }
00085 *ierr = *n * 10;
00086 goto L50;
00087 L5:
00088 if (*nv >= *n * (*n + 1) / 2) {
00089 goto L10;
00090 }
00091 *ierr = *n * 20;
00092 goto L50;
00093
00094 L10:
00095 tred3_(n, nv, &a[1], &w[1], &fv1[1], &fv2[1]);
00096 if (*matz != 0) {
00097 goto L20;
00098 }
00099
00100 tqlrat_(n, &w[1], &fv2[1], ierr);
00101 goto L50;
00102
00103 L20:
00104 i__1 = *n;
00105 for (i__ = 1; i__ <= i__1; ++i__) {
00106
00107 i__2 = *n;
00108 for (j = 1; j <= i__2; ++j) {
00109 z__[j + i__ * z_dim1] = 0.;
00110
00111 }
00112
00113 z__[i__ + i__ * z_dim1] = 1.;
00114
00115 }
00116
00117 tql2_(nm, n, &w[1], &fv1[1], &z__[z_offset], ierr);
00118 if (*ierr != 0) {
00119 goto L50;
00120 }
00121 trbak3_(nm, n, nv, &a[1], n, &z__[z_offset]);
00122 L50:
00123 return 0;
00124 }
00125