SUBROUTINE banbks(a,n,m1,m2,np,mp,al,mpl,indx,b) INTEGER m1,m2,mp,mpl,n,np,indx(n) REAL a(np,mp),al(np,mpl),b(n) INTEGER i,k,l,mm REAL dum mm=m1+m2+1 if(mm.gt.mp.or.m1.gt.mpl.or.n.gt.np) pause 'bad args in banbks' l=m1 do 12 k=1,n i=indx(k) if(i.ne.k)then dum=b(k) b(k)=b(i) b(i)=dum endif if(l.lt.n)l=l+1 do 11 i=k+1,l b(i)=b(i)-al(k,i-k)*b(k) 11 continue 12 continue l=1 do 14 i=n,1,-1 dum=b(i) do 13 k=2,l dum=dum-a(i,k)*b(k+i-1) 13 continue b(i)=dum/a(i,1) if(l.lt.mm) l=l+1 14 continue return END C (C) Copr. 1986-92 Numerical Recipes Software .