Numerical building blocks like matrix algebra, linear algebra, or FFTs are not normally programmed by yourself, but taken from libraries. The reason for this is that getting those building blocks right is *very* difficult[1], and you get absolutely nothing from doing them yourself. FFT routines are, for example, provided by MKL or ACML (which are recommended because you also get the matrix stuff), but you can also take them from FFTW, which comes in packages for all linux systems (install fftw3) and can also be used from Fortran.
Note: You mean "efficient". "Effective" and "efficient" are not the same things.
[1] And in the matrix multiplication case, you simply cannot beat BLAS. It's impossible.