5858 dims = ndims (x)
5959 y = AbstractFFTs. fft (x, dims)
6060 @test y ≈ fftw_fft
61- P = plan_fft (x, dims)
62- @test eltype (P) === ComplexF64
63- @test P * x ≈ fftw_fft
64- @test P \ (P * x) ≈ x
65- @test fftdims (P) == dims
61+ # test plan_fft and also inv and plan_inv of plan_ifft, which should all give
62+ # functionally identical plans
63+ for P in [plan_fft (x, dims), inv (plan_ifft (x, dims)),
64+ AbstractFFTs. plan_inv (plan_ifft (x, dims))]
65+ @test eltype (P) === ComplexF64
66+ @test P * x ≈ fftw_fft
67+ @test P \ (P * x) ≈ x
68+ @test fftdims (P) == dims
69+ end
6670
6771 fftw_bfft = complex .(size (x, dims) .* x)
6872 @test AbstractFFTs. bfft (y, dims) ≈ fftw_bfft
7377
7478 fftw_ifft = complex .(x)
7579 @test AbstractFFTs. ifft (y, dims) ≈ fftw_ifft
76- P = plan_ifft (x, dims)
77- @test P * y ≈ fftw_ifft
78- @test P \ (P * y) ≈ y
79- @test fftdims (P) == dims
80+ # test plan_ifft and also inv and plan_inv of plan_fft, which should all give
81+ # functionally identical plans
82+ for P in [plan_ifft (x, dims), inv (plan_fft (x, dims)),
83+ AbstractFFTs. plan_inv (plan_fft (x, dims))]
84+ @test P * y ≈ fftw_ifft
85+ @test P \ (P * y) ≈ y
86+ @test fftdims (P) == dims
87+ end
8088
8189 # real FFT
8290 fftw_rfft = fftw_fft[
8593 ]
8694 ry = AbstractFFTs. rfft (x, dims)
8795 @test ry ≈ fftw_rfft
88- P = plan_rfft (x, dims)
89- @test eltype (P) === Int
90- @test P * x ≈ fftw_rfft
91- @test P \ (P * x) ≈ x
92- @test fftdims (P) == dims
96+ # test plan_rfft and also inv and plan_inv of plan_irfft, which should all give
97+ # functionally identical plans
98+ for P in [plan_rfft (x, dims), inv (plan_irfft (ry, size (x, dims), dims)),
99+ AbstractFFTs. plan_inv (plan_irfft (ry, size (x, dims), dims))]
100+ @test eltype (P) <: Real
101+ @test P * x ≈ fftw_rfft
102+ @test P \ (P * x) ≈ x
103+ @test fftdims (P) == dims
104+ end
93105
94106 fftw_brfft = complex .(size (x, dims) .* x)
95107 @test AbstractFFTs. brfft (ry, size (x, dims), dims) ≈ fftw_brfft
@@ -100,10 +112,14 @@ end
100112
101113 fftw_irfft = complex .(x)
102114 @test AbstractFFTs. irfft (ry, size (x, dims), dims) ≈ fftw_irfft
103- P = plan_irfft (ry, size (x, dims), dims)
104- @test P * ry ≈ fftw_irfft
105- @test P \ (P * ry) ≈ ry
106- @test fftdims (P) == dims
115+ # test plan_rfft and also inv and plan_inv of plan_irfft, which should all give
116+ # functionally identical plans
117+ for P in [plan_irfft (ry, size (x, dims), dims), inv (plan_rfft (x, dims)),
118+ AbstractFFTs. plan_inv (plan_rfft (x, dims))]
119+ @test P * ry ≈ fftw_irfft
120+ @test P \ (P * ry) ≈ ry
121+ @test fftdims (P) == dims
122+ end
107123 end
108124end
109125
0 commit comments