ISCE_INSAR/components/isceobj/Util/src/interp.F

42 lines
1.1 KiB
FortranFixed
Raw Normal View History

2019-01-16 19:40:08 +00:00
real*4 function interp(ix, iy, xfrac, yfrac, rvs, iac, ioff)
c integer*4 CMAX
c parameter (CMAX = 7000)
integer*4 ix, iy, n, first, iac, ioff
real*8 xfrac, yfrac
real*4 rvs(0:2*iac-1,*)
complex temp(8)
real*4 xintp(0:65544)
data first/1/
save xintp, first
c* we want to do a 8192 x (8-pt sinc) interpolation of the original data, choosing
c* the resulting nearest neighbor.
if(first .eq. 1) then
call intp_coef_norm(8192,xintp)
first = 0
end if
n = 0
ifrac = 8 * nint(xfrac * 8192.)
c write (*,*) '1 ',frac,ifrac
do i = iy - 3 , iy + 4
n = n + 1
temp(n) = cmplx(0.0,0.0)
do k = -3 , 4
temp(n) = temp(n) + rvs(ix+k+ioff,i) * xintp(ifrac+k+3)
end do
enddo
ifrac = 8 * nint(yfrac * 8192.)
c write (*,*) '2 ', frac,ifrac
cinterp = cmplx(0.,0.)
do k = -3 , 4
cinterp = cinterp + temp(k+4) * xintp(ifrac+k+3)
end do
interp = real(cinterp)
return
end