Exemplo n.º 1
0
func BenchmarkFFTW(b *testing.B) {
	in := fftw.Alloc1d(N)
	out := fftw.Alloc1d(N)
	plan := fftw.PlanDft1d(in, out, fftw.Forward, fftw.Estimate)
	for i := 0; i < b.N; i++ {
		plan.Execute()
	}
}
Exemplo n.º 2
0
func FFTWSpec(c gospec.Context) {
	c.Specify("Check agains fftw", func() {
		N := 2 * 3 * 5 * 7 * 11
		in := make([]complex128, N)
		out_fft := make([]complex128, N)
		out_fftw := make([]complex128, N)
		for i := range in {
			in[i] = complex(float64(i/1000-100), float64(i)/10)
		}

		fftw.PlanDft1d(in, out_fftw, fftw.Forward, fftw.Estimate).Execute()
		fft.FFT(in, out_fft)

		tolerance := 1e-5
		for i := range out_fft {
			c.Expect(real(out_fft[i]), IsWithin(tolerance), real(out_fftw[i]))
			c.Expect(imag(out_fft[i]), IsWithin(tolerance), imag(out_fftw[i]))
		}
	})
}