A fast multi-pole method for oscillatory kernels