This function computes the one-dimensional n-point discrete Fourier
Transform (DFT) of a real-valued array by means of an efficient algorithm
called the Fast Fourier Transform (FFT).

Parameters :

a : array_like

Input array

n : int, optional

Number of points along transformation axis in the input to use.
If n is smaller than the length of the input, the input is cropped.
If it is larger, the input is padded with zeros. If n is not given,
the length of the input (along the axis specified by axis) is used.

axis : int, optional

Axis over which to compute the FFT. If not given, the last axis is
used.

Returns :

out : complex ndarray

The truncated or zero-padded input, transformed along the axis
indicated by axis, or the last one if axis is not specified.
The length of the transformed axis is n/2+1.

When the DFT is computed for purely real input, the output is
Hermite-symmetric, i.e. the negative frequency terms are just the complex
conjugates of the corresponding positive-frequency terms, and the
negative-frequency terms are therefore redundant. This function does not
compute the negative frequency terms, and the length of the transformed
axis of the output is therefore n/2+1.

When A=rfft(a), A[0] contains the zero-frequency term, which
must be purely real due to the Hermite symmetry.

If n is even, A[-1] contains the term for frequencies n/2 and
-n/2, and must also be purely real. If n is odd, A[-1]
contains the term for frequency A[(n-1)/2], and is complex in the
general case.