func TestFFT(t *testing.T) { for _, ft := range fftTests { v := FFTReal(ft.in) if !dsputils.PrettyCloseC(v, ft.out) { t.Error("FFT error\ninput:", ft.in, "\noutput:", v, "\nexpected:", ft.out) } vi := IFFT(ft.out) if !dsputils.PrettyCloseC(vi, dsputils.ToComplex(ft.in)) { t.Error("IFFT error\ninput:", ft.out, "\noutput:", vi, "\nexpected:", dsputils.ToComplex(ft.in)) } } }
func TestFFTN(t *testing.T) { for _, ft := range fftnTests { m := dsputils.MakeMatrix(dsputils.ToComplex(ft.in), ft.dim) o := dsputils.MakeMatrix(ft.out, ft.dim) v := FFTN(m) if !v.PrettyClose(o) { t.Error("FFTN error\ninput:", m, "\noutput:", v, "\nexpected:", o) } vi := IFFTN(o) if !vi.PrettyClose(m) { t.Error("IFFTN error\ninput:", o, "\noutput:", vi, "\nexpected:", m) } } }
// IFFTReal returns the inverse FFT of the real-valued slice. func IFFTReal(x []float64) []complex128 { return IFFT(dsputils.ToComplex(x)) }