SUBROUTINE banmul(a,m1,m2,x,b)
	USE nrtype; USE nrutil, ONLY : assert_eq,arth
	IMPLICIT NONE
	REAL(SP), DIMENSION(:,:), INTENT(IN) :: a
	INTEGER(I4B), INTENT(IN) :: m1,m2
	REAL(SP), DIMENSION(:), INTENT(IN) :: x
	REAL(SP), DIMENSION(:), INTENT(OUT) :: b
	INTEGER(I4B) :: m,n
	n=assert_eq(size(a,1),size(b),size(x),'banmul: n')
	m=assert_eq(size(a,2),m1+m2+1,'banmul: m')
	b=sum(a*eoshift(spread(x,dim=2,ncopies=m), &
		dim=1,shift=arth(-m1,1,m)),dim=2)
	END SUBROUTINE banmul