#ifndef STIM_FFT_H #define STIM_FFT_H namespace stim{ template void circshift(T *out, const T *in, size_t xdim, size_t ydim, size_t xshift, size_t yshift){ size_t i, j, ii, jj; for (i =0; i < xdim; i++) { ii = (i + xshift) % xdim; for (j = 0; j < ydim; j++) { jj = (j + yshift) % ydim; out[ii * ydim + jj] = in[i * ydim + j]; } } } template void cpu_fftshift(T* out, T* in, size_t xdim, size_t ydim){ circshift(out, in, xdim, ydim, xdim/2, ydim/2); } template void cpu_ifftshift(T* out, T* in, size_t xdim, size_t ydim){ circshift(out, in, xdim, ydim, xdim/2, ydim/2); } } #endif