SUBROUTINE PROC (ND,BD,NM1,BM1,NM2,BM2,NA,AA,X,Y,M,A,B,C,D,W,U) C C PROC APPLIES A SEQUENCE OF MATRIX OPERATIONS TO THE VECTOR X AND C STORES THE RESULT IN Y C BD,BM1,BM2 ARE ARRAYS CONTAINING ROOTS OF CERTIAN B POLYNOMIALS C ND,NM1,NM2 ARE THE LENGTHS OF THE ARRAYS BD,BM1,BM2 RESPECTIVELY C AA ARRAY CONTAINING SCALAR MULTIPLIERS OF THE VECTOR X C NA IS THE LENGTH OF THE ARRAY AA C X,Y THE MATRIX OPERATIONS ARE APPLIED TO X AND THE RESULT IS Y C A,B,C ARE ARRAYS WHICH CONTAIN THE TRIDIAGONAL MATRIX C M IS THE ORDER OF THE MATRIX C D,W,U ARE WORKING ARRAYS C IS DETERMINES WHETHER OR NOT A CHANGE IN SIGN IS MADE C DIMENSION A(1) ,B(1) ,C(1) ,X(1) , 1 Y(1) ,D(1) ,W(1) ,BD(1) , 2 BM1(1) ,BM2(1) ,AA(1) ,U(1) COMPLEX X ,Y ,A ,B , 1 C ,D ,W ,U , 2 DEN DO 101 J=1,M W(J) = X(J) Y(J) = W(J) 101 CONTINUE MM = M-1 ID = ND IBR = 0 M1 = NM1 M2 = NM2 IA = NA 102 IF (IA) 105,105,103 103 RT = AA(IA) IF (ND .EQ. 0) RT = -RT IA = IA-1 C C SCALAR MULTIPLICATION C DO 104 J=1,M Y(J) = RT*W(J) 104 CONTINUE 105 IF (ID) 125,125,106 106 RT = BD(ID) ID = ID-1 IF (ID .EQ. 0) IBR = 1 C C BEGIN SOLUTION TO SYSTEM C D(M) = A(M)/(B(M)-RT) W(M) = Y(M)/(B(M)-RT) DO 107 J=2,MM K = M-J DEN = B(K+1)-RT-C(K+1)*D(K+2) D(K+1) = A(K+1)/DEN W(K+1) = (Y(K+1)-C(K+1)*W(K+2))/DEN 107 CONTINUE DEN = B(1)-RT-C(1)*D(2) W(1) = (1.,0.) IF (CABS(DEN)) 108,109,108 108 W(1) = (Y(1)-C(1)*W(2))/DEN 109 DO 110 J=2,M W(J) = W(J)-D(J)*W(J-1) 110 CONTINUE IF (NA) 113,113,102 111 DO 112 J=1,M Y(J) = W(J) 112 CONTINUE IBR = 1 GO TO 102 113 IF (M1) 114,114,115 114 IF (M2) 111,111,120 115 IF (M2) 117,117,116 116 IF (ABS(BM1(M1))-ABS(BM2(M2))) 120,120,117 117 IF (IBR) 118,118,119 118 IF (ABS(BM1(M1)-BD(ID))-ABS(BM1(M1)-RT)) 111,119,119 119 RT = RT-BM1(M1) M1 = M1-1 GO TO 123 120 IF (IBR) 121,121,122 121 IF (ABS(BM2(M2)-BD(ID))-ABS(BM2(M2)-RT)) 111,122,122 122 RT = RT-BM2(M2) M2 = M2-1 123 DO 124 J=1,M Y(J) = Y(J)+RT*W(J) 124 CONTINUE GO TO 102 125 RETURN END .