58
58
dims = ndims (x)
59
59
y = AbstractFFTs. fft (x, dims)
60
60
@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
66
70
67
71
fftw_bfft = complex .(size (x, dims) .* x)
68
72
@test AbstractFFTs. bfft (y, dims) ≈ fftw_bfft
73
77
74
78
fftw_ifft = complex .(x)
75
79
@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
80
88
81
89
# real FFT
82
90
fftw_rfft = fftw_fft[
85
93
]
86
94
ry = AbstractFFTs. rfft (x, dims)
87
95
@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
93
105
94
106
fftw_brfft = complex .(size (x, dims) .* x)
95
107
@test AbstractFFTs. brfft (ry, size (x, dims), dims) ≈ fftw_brfft
@@ -100,10 +112,14 @@ end
100
112
101
113
fftw_irfft = complex .(x)
102
114
@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
107
123
end
108
124
end
109
125
0 commit comments