# CINJOF --- Convolution INternal with Jumps. Output and FILTER are conjugate. # subroutine cinjof( conj, add, jump, n1,n2,xx, nb1,nb2,bb, yy) integer conj, add, jump, n1,n2, nb1,nb2 # jump subsamples data real xx( n1,n2), bb( nb1,nb2), yy( n1,n2) integer y1,y2, x1,x2, b1, b2, ny1, ny2 call conjnull( conj, add, bb, nb1*nb2, yy, n1*n2) ny1 = n1 - (nb1-1) * jump; if( ny1<1 ) call erexit('cinjof: ny1<1') ny2 = n2 - (nb2-1); if( ny2<1 ) call erexit('cinjof: ny2<1') if( conj == 0 ) do b2=1,nb2 { do y2=1,ny2 { x2 = y2 - (b2-nb2) do b1=1,nb1 { do y1=1,ny1 { x1 = y1 - (b1-nb1) * jump yy(y1,y2) = yy(y1,y2) + bb(b1,b2) * xx(x1,x2) }} }} else do b2=1,nb2 { do y2=1,ny2 { x2 = y2 - (b2-nb2) do b1=1,nb1 { do y1=1,ny1 { x1 = y1 - (b1-nb1) * jump bb(b1,b2) = bb(b1,b2) + yy(y1,y2) * xx(x1,x2) }} }} return; end