# shaping filter # minimize SUM rr(i)**2 by finding ff and rr where # # rr = yy - xx (convolve) ff # subroutine shaper( nf,ff, nx,xx, ny, yy, rr, niter) integer i, iter, nf, nx, ny, niter real ff(nf), xx(nx), yy(ny), rr(ny) temporary real df(nf), dr(ny), sf(nf), sr(ny) if( ny != nx+nf-1) call erexit('data length error') do i= 1, nf ff(i) = 0. do i= 1, ny rr(i) = yy(i) do iter= 0, niter { call contran( 1, 0, nx,xx, nf,df, rr) # df=xx*rr call contran( 0, 0, nx,xx, nf,df, dr) # dr=xx*df call cgstep( iter, nf,ff,df,sf, ny,rr,dr,sr) # rr=rr-dr; ff=ff+df } return; end