SUBROUTINE LUdecompStep(ARRAY(*,-(2*nvars-1)..2*nvars-1) OF REAL A^,Ap^) IF NOT last THEN A(HI-nvars+1+(0..nvars-1))=Ap ELSE A(HI-nvars+1+(0..nvars-1))=0 REAL piv LOOP FOR i=A.HI1-nvars DOWN TO A.LO1 LOOP FOR k=MIN(A.HI2,A.HI1-i) DOWN TO 1 POINTER INTO A(i,*+k),A(i+k,*) j=0 piv=A(i,j+k) DO DEC j; A(i,j+k)=~-piv*A(i+k,j) FOR -A.LO2 TIMES REPEAT LOOP piv=1/A(i,0); A(i,0)=piv LOOP FOR j INTO A(i,A.LO2..-1): A(i,j)=~*piv REPEAT LOOP IF NOT first THEN Ap=A(LO+(0..nvars-1)) END LUdecompStep SUBROUTINE LeftLUDivStep1(ARRAY(*,-(2*nvars-1)..2*nvars-1) OF REAL A; ARRAY(*) OF REAL x^,xp^) IF NOT last THEN LOOP FOR i=x.HI DOWN TO x.HI-nvars+1 jmax=MIN(A.HI2,x.HI-i) POINTER INTO A(i,*),x(i+*) j=jmax REAL sum=x(i) LOOP FOR jmax TIMES: sum=~-A(i,j)*x(i+j); DEC j x(i+j)=sum*A(i,j) REPEAT LOOP DO x(HI-2*nvars+1+i)=~+xp(i) FOR i=0 TO 2*nvars-1 END IF LOOP FOR i=x.HI-nvars DOWN TO x.LO+nvars jmax=MIN(A.HI2,x.HI-i) POINTER INTO A(i,*),x(i+*) j=jmax REAL sum=x(i) LOOP FOR jmax TIMES: sum=~-A(i,j)*x(i+j); DEC j x(i+j)=sum*A(i,j) REPEAT LOOP IF NOT first THEN xp=x(LO+(0..2*nvars-1)) END LeftLUDivStep1 SUBROUTINE LeftLUDivStep2(ARRAY(*) OF REAL x^,xp^; ARRAY(*,-(2*nvars-1)..2*nvars-1) OF REAL A) IF NOT first THEN x(LO+(0..2*nvars-1))=xp LOOP FOR i=x.LO+(IF first THEN nvars ELSE 2*nvars) TO x.HI jmin=MAX(A.LO2,A.LO1-i) POINTER INTO A(i,*),x(i+*) j=jmin REAL sum=0 LOOP FOR -jmin TIMES: sum=~+A(i,j)*x(i+j); INC j x(i+j)=~-sum REPEAT LOOP IF NOT last THEN xp=x(HI-2*nvars+1+(0..2*nvars-1)) END LeftLUDivStep2