3 C ..................................................................
8 C TO SOLVE A SYSTEM OF SIMULTANEOUS LINEAR EQUATIONS WITH
9 C SYMMETRIC COEFFICIENT MATRIX UPPER TRIANGULAR PART OF WHICH
10 C IS ASSUMED TO BE STORED COLUMNWISE.
13 C CALL GELS(R,A,M,N,EPS,IER,AUX)
15 C DESCRIPTION OF PARAMETERS
16 C R - M BY N RIGHT HAND SIDE MATRIX. (DESTROYED)
17 C ON RETURN R CONTAINS THE SOLUTION OF THE EQUATIONS.
18 C A - UPPER TRIANGULAR PART OF THE SYMMETRIC
19 C M BY M COEFFICIENT MATRIX. (DESTROYED)
20 C M - THE NUMBER OF EQUATIONS IN THE SYSTEM.
21 C N - THE NUMBER OF RIGHT HAND SIDE VECTORS.
22 C EPS - AN INPUT CONSTANT WHICH IS USED AS RELATIVE
23 C TOLERANCE FOR TEST ON LOSS OF SIGNIFICANCE.
24 C IER - RESULTING ERROR PARAMETER CODED AS FOLLOWS
26 C IER=-1 - NO RESULT BECAUSE OF M LESS THAN 1 OR
27 C PIVOT ELEMENT AT ANY ELIMINATION STEP
29 C IER=K - WARNING DUE TO POSSIBLE LOSS OF SIGNIFI-
30 C CANCE INDICATED AT ELIMINATION STEP K+1,
31 C WHERE PIVOT ELEMENT WAS LESS THAN OR
32 C EQUAL TO THE INTERNAL TOLERANCE EPS TIMES
33 C ABSOLUTELY GREATEST MAIN DIAGONAL
34 C ELEMENT OF MATRIX A.
35 C AUX - AN AUXILIARY STORAGE ARRAY WITH DIMENSION M-1.
38 C UPPER TRIANGULAR PART OF MATRIX A IS ASSUMED TO BE STORED
39 C COLUMNWISE IN M*(M+1)/2 SUCCESSIVE STORAGE LOCATIONS, RIGHT
40 C HAND SIDE MATRIX R COLUMNWISE IN N*M SUCCESSIVE STORAGE
41 C LOCATIONS. ON RETURN SOLUTION MATRIX R IS STORED COLUMNWISE
43 C THE PROCEDURE GIVES RESULTS IF THE NUMBER OF EQUATIONS M IS
44 C GREATER THAN 0 AND PIVOT ELEMENTS AT ALL ELIMINATION STEPS
45 C ARE DIFFERENT FROM 0. HOWEVER WARNING IER=K - IF GIVEN -
46 C INDICATES POSSIBLE LOSS OF SIGNIFICANCE. IN CASE OF A WELL
47 C SCALED MATRIX A AND APPROPRIATE TOLERANCE EPS, IER=K MAY BE
48 C INTERPRETED THAT MATRIX A HAS THE RANK K. NO WARNING IS
50 C ERROR PARAMETER IER=-1 DOES NOT NECESSARILY MEAN THAT
51 C MATRIX A IS SINGULAR, AS ONLY MAIN DIAGONAL ELEMENTS
52 C ARE USED AS PIVOT ELEMENTS. POSSIBLY SUBROUTINE GELG (WHICH
53 C WORKS WITH TOTAL PIVOTING) WOULD BE ABLE TO FIND A SOLUTION.
55 C SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
59 C SOLUTION IS DONE BY MEANS OF GAUSS-ELIMINATION WITH
60 C PIVOTING IN MAIN DIAGONAL, IN ORDER TO PRESERVE
61 C SYMMETRY IN REMAINING COEFFICIENT MATRICES.
63 C ..................................................................
68 extern double fabs ( double );
73 gels( A, R, M, EPS, AUX )
80 int II, LL, LLD, LR, LT, LST, LLST, LEND;
81 double tb, piv, tol, pivi;
89 /* SEARCH FOR GREATEST MAIN DIAGONAL ELEMENT */
91 /* Diagonal elements are at A(i,i) = 1, 3, 6, 10, ...
92 * A(i,j) = A( i(i-1)/2 + j )
111 C MAIN DIAGONAL ELEMENT A(I)=A(J,J) IS FIRST PIVOT ELEMENT.
112 C PIV CONTAINS THE ABSOLUTE VALUE OF A(I).
115 /* START ELIMINATION LOOP */
118 for( K=1; K<=M; K++ )
120 /* TEST ON USEFULNESS OF SYMMETRIC ALGORITHM */
133 /* PIVOT ROW REDUCTION AND ROW INTERCHANGE IN RIGHT HAND SIDE R */
140 /* IS ELIMINATION TERMINATED */
144 C ROW AND COLUMN INTERCHANGE AND PIVOT ROW REDUCTION IN MATRIX A.
145 C ELEMENTS OF PIVOT COLUMN ARE SAVED IN AUXILIARY VECTOR AUX.
147 LR = LST + (LT*(K+J-1))/2;
150 for( II=K; II<=LEND; II++ )
169 /* SAVE COLUMN INTERCHANGE INFORMATION */
171 /* ELEMENT REDUCTION AND SEARCH FOR NEXT PIVOT */
175 for( II=K; II<=LEND; II++ )
180 for( LLD=II; LLD<=LEND; LLD++ )
184 A[L-1] += pivi * A[LL-1];
197 R[LL-1] += pivi * R[LR-1];
200 /* END OF ELIMINATION LOOP */
202 /* BACK SUBSTITUTION AND BACK INTERCHANGE */
211 for( I=2; I<=M; I++ )
220 for( LT=II; LT<=LEND; LT++ )
224 tb -= A[K-1] * R[LL-1];