# System Function DFT

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

 Z←⎕DFT R returns the Discrete Fourier Transform of R.
R is a scalar or vector of Real or Complex numbers.
Z is a vector of length 2*⌈2⍟≢R of Complex numbers.

The monadic function is implemented by choosing the Fast Fourier Transform algorithm appropriate to the datatype of R. In particular, if the datatype of R is

• Fixed Precision Integer or Floating Point, the FFT algorithm from Gnu Scientific Library is used
• Multiple Precision Integer/Rational or Floating Point, the FFT algorithm MPFFT is used
• Ball Arithmetic, the FFT algorithm from ARB is used

Because the underlying FFT algorithm is most efficient when the length of R is a power of two, the system function automatically pads its argument with a sufficient number of trailing zeros, and returns a result of the padded length.

For example,

```      ⎕PP←10
⎕DFT 1 2 3 4
10 ¯2i2 ¯2 ¯2i¯2```

 Z←L ⎕DFT R returns the Discrete Fourier Transform of R or its Inverse depending upon the value of L.
R is a scalar or vector of Real or Complex numbers.
L is an integer scalar whose value is either 1 or ¯1.
Z is a vector of length 2*⌈2⍟≢R of Complex numbers.

The dyadic function 1 ⎕DFT R returns the Discrete Fourier Transform of R; ¯1 ⎕DFT R returns the Inverse Discrete Fourier Transform. As in the monadic case, the dyadic function chooses the (Inverse) Fast Fourier Transform algorithm appropriate to the datatype of R.

For example,

```      ⎕PP←10
⎕DFT 1 2 3 4
10 ¯2i2 ¯2 ¯2i¯2
1 ⎕DFT 1 2 3 4
10 ¯2i2 ¯2 ¯2i¯2
¯1 ⎕DFT ⎕DFT 1 2 3 4
1 2 3 4```