32 lines
749 B
Fortran
32 lines
749 B
Fortran
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
|