For the Fourier Transform routines, I would recommand FFTW depending on the usage scenario. FFTW is optimized for a prepare-once, reuse-often scenario. So if you need to compute the same kind of transform, let's say a 1024x2000 (non-power-of-2) transform inside a loop, FFTW will be faster. If you need to compute a different transform type (dimensions change every time), then MKL will be faster.
The way FFTW works is that your software first call the prepare routine, which can take from a few ms to a few seconds (you can configure this) to check your particular platform and choose the most optimized routine. Then you can call repeatedly the transform routine with optimized parameter.
All other known libraries have fix-ed-optimization, which may or may not be optimal for your platform.