* * $Id: slv.F,v 1.1.1.1 1996/04/01 15:02:27 mclareni Exp $ * * $Log: slv.F,v $ * Revision 1.1.1.1 1996/04/01 15:02:27 mclareni * Mathlib gen * * #include "gen/pilot.h" SUBROUTINE SLV (M,N,QR,ALPHA,IPIVOT,R,Y,Z) DIMENSION QR(M,N),ALPHA(N),R(M),Y(N),IPIVOT(N),Z(N) C C USING THE VECTORS U, WHOSE NON-ZERO COMPONENTS ARE C STORED ON AND BELOW THE MAIN DIAGONAL OF QR(M,N), SLV C APPLIES THE N TRANSFORMATIONS (I - BETA UT) TO THE C RIGHT HAND SIDE R(M). FROM THE REDUCED MATRIX GIVEN IN C ALPHA(N) AND THE UPPER RIGHT TRIANGULAR PART OF QR, C SLV THEN COMPUTES BY BACK-SUBSTITUTION, AN APPROXIMATE C SOLUTION TO THE LINEAR SYSTEM. THE COMPONENTS OF THE C SOLUTION VECTOR ARE STORED IN Y(N) IN THE ORDER PRESCRIBED C BY IPIVOT(N). C DO 10 J=1,N GAMMA=PROD1(QR(1,J),R,J,M)/(ALPHA(J)*QR(J,J)) DO 5 I=J,M 5 R(I)=R(I)+GAMMA*QR(I,J) 10 CONTINUE Z(N)=R(N)/ALPHA(N) NIT=N-1 DO 15 I=1,NIT L=N-I LA=L+1 15 Z(L)=-PROD2(QR,Z,M,LA,N,L,-R(L))/ALPHA(L) DO 20 I=1,N JU=IPIVOT(I) 20 Y(JU)=Z(I) RETURN END