Doxygen Source Code Documentation
eis_rebak.c File Reference
#include "f2c.h"Go to the source code of this file.
Functions | |
| int | rebak_ (integer *nm, integer *n, doublereal *b, doublereal *dl, integer *m, doublereal *z__) |
Function Documentation
|
||||||||||||||||||||||||||||
|
Definition at line 8 of file eis_rebak.c. References i1. Referenced by rsg_(), and rsgab_().
00010 {
00011 /* System generated locals */
00012 integer b_dim1, b_offset, z_dim1, z_offset, i__1, i__2, i__3;
00013
00014 /* Local variables */
00015 static integer i__, j, k;
00016 static doublereal x;
00017 static integer i1, ii;
00018
00019
00020
00021 /* THIS SUBROUTINE IS A TRANSLATION OF THE ALGOL PROCEDURE REBAKA, */
00022 /* NUM. MATH. 11, 99-110(1968) BY MARTIN AND WILKINSON. */
00023 /* HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 303-314(1971). */
00024
00025 /* THIS SUBROUTINE FORMS THE EIGENVECTORS OF A GENERALIZED */
00026 /* SYMMETRIC EIGENSYSTEM BY BACK TRANSFORMING THOSE OF THE */
00027 /* DERIVED SYMMETRIC MATRIX DETERMINED BY REDUC. */
00028
00029 /* ON INPUT */
00030
00031 /* NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL */
00032 /* ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM */
00033 /* DIMENSION STATEMENT. */
00034
00035 /* N IS THE ORDER OF THE MATRIX SYSTEM. */
00036
00037 /* B CONTAINS INFORMATION ABOUT THE SIMILARITY TRANSFORMATION */
00038 /* (CHOLESKY DECOMPOSITION) USED IN THE REDUCTION BY REDUC */
00039 /* IN ITS STRICT LOWER TRIANGLE. */
00040
00041 /* DL CONTAINS FURTHER INFORMATION ABOUT THE TRANSFORMATION. */
00042
00043 /* M IS THE NUMBER OF EIGENVECTORS TO BE BACK TRANSFORMED. */
00044
00045 /* Z CONTAINS THE EIGENVECTORS TO BE BACK TRANSFORMED */
00046 /* IN ITS FIRST M COLUMNS. */
00047
00048 /* ON OUTPUT */
00049
00050 /* Z CONTAINS THE TRANSFORMED EIGENVECTORS */
00051 /* IN ITS FIRST M COLUMNS. */
00052
00053 /* QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW, */
00054 /* MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
00055 */
00056
00057 /* THIS VERSION DATED AUGUST 1983. */
00058
00059 /* ------------------------------------------------------------------
00060 */
00061
00062 /* Parameter adjustments */
00063 --dl;
00064 b_dim1 = *nm;
00065 b_offset = b_dim1 + 1;
00066 b -= b_offset;
00067 z_dim1 = *nm;
00068 z_offset = z_dim1 + 1;
00069 z__ -= z_offset;
00070
00071 /* Function Body */
00072 if (*m == 0) {
00073 goto L200;
00074 }
00075
00076 i__1 = *m;
00077 for (j = 1; j <= i__1; ++j) {
00078 /* .......... FOR I=N STEP -1 UNTIL 1 DO -- .......... */
00079 i__2 = *n;
00080 for (ii = 1; ii <= i__2; ++ii) {
00081 i__ = *n + 1 - ii;
00082 i1 = i__ + 1;
00083 x = z__[i__ + j * z_dim1];
00084 if (i__ == *n) {
00085 goto L80;
00086 }
00087
00088 i__3 = *n;
00089 for (k = i1; k <= i__3; ++k) {
00090 /* L60: */
00091 x -= b[k + i__ * b_dim1] * z__[k + j * z_dim1];
00092 }
00093
00094 L80:
00095 z__[i__ + j * z_dim1] = x / dl[i__];
00096 /* L100: */
00097 }
00098 }
00099
00100 L200:
00101 return 0;
00102 } /* rebak_ */
|