new; cls; /* Calculates polynomial a x polynomial b in base NN */ a={1,2,3}; b={1,1,2}; NN=3; print/rz polymulb(a,b,NN); proc polymulb(a,b,NN); local ra,rb,c,i,j,x; ra=rows(a); rb=rows(b); c=zeros(ra+rb-1,1); i=0; do while i<=ra+rb-2; x=0; j=maxc(0|i-ra+1); do while j<=minc(rb-1|i); x=(x+a[i-j+1]*b[j+1])%NN; j=j+1; endo; c[i+1]=x; i=i+1; endo; retp(c); endp;