prepz <- function(z) { rn <- length(z) logn <- ceiling(log2(rn+100)) n <- 2^logn rn0 <- floor((n-rn)/2) n2 <- floor(n/2) n4 <- floor(n/4) n3 <- n2+n4 n5 <- n4 #z0 <- (z[rn]-z[1]) rn1 <- n-rn0-rn z.fft <- fft( c((z[rn]+z[1])/2+(z[1]-z[rn])/(2*rn0)*1:rn0+(2*z[1]-z[rn0+1-1:rn0])*exp(-12*(rn0+1-1:rn0)/rn0), z, z[rn]+(z[1]-z[rn])/(2*rn1)*1:rn1+(2*z[rn]-z[rn+1-1:rn1])*exp(-12*(-1+1:rn1)/rn1))) sinc2 <- (sin(pi/n2*1:n2) *n2/pi / 1:n2 )^2 z.fft.o <- c(z.fft[1:n4],z.fft[n4+1:n2]*sinc2,rep(0,2*(n-n3)),z.fft[n-n4-n2+1:n2]*rev(sinc2),z.fft[n-n4+1:n4]) z.fft.i <- fft(z.fft.o,inv=T) / n mulop <- c(-1+1:n,-n-1+1:n); mulop <- mulop * SSfpl(abs(mulop),1,0,n5,n5/8) z.fft.d <- fft(z.fft.o*mulop,inv=T) * 1000*pi / n^2 rn <- 2 *rn rn0 <- 2 *rn0 list( n=n, rn=rn, rn0=rn0, z.fft = z.fft, oz = z.fft.i[rn0+1:rn], dz1 = z.fft.d[rn0+1:rn], dz10.h = filter(Re(z.fft.i),dg(10))[rn0+1:rn], dz10.v = filter(Im(z.fft.i),dg(10))[rn0+1:rn])}