|
27 | 27 | function AbstractFFTs.plan_bfft(x::AbstractArray{T}, region; kwargs...) where {T} |
28 | 28 | return InverseTestPlan{T}(region, size(x)) |
29 | 29 | end |
| 30 | + |
30 | 31 | function AbstractFFTs.plan_inv(p::TestPlan{T}) where {T} |
31 | 32 | unscaled_pinv = InverseTestPlan{T}(p.region, p.sz) |
32 | | - unscaled_pinv.pinv = p |
33 | | - pinv = AbstractFFTs.ScaledPlan( |
34 | | - unscaled_pinv, AbstractFFTs.normalization(T, p.sz, p.region), |
35 | | - ) |
| 33 | + N = AbstractFFTs.normalization(T, p.sz, p.region) |
| 34 | + unscaled_pinv.pinv = AbstractFFTs.ScaledPlan(p, N) |
| 35 | + pinv = AbstractFFTs.ScaledPlan(unscaled_pinv, N) |
36 | 36 | return pinv |
37 | 37 | end |
38 | | -function AbstractFFTs.plan_inv(p::InverseTestPlan{T}) where {T} |
39 | | - unscaled_pinv = TestPlan{T}(p.region, p.sz) |
40 | | - unscaled_pinv.pinv = p |
41 | | - pinv = AbstractFFTs.ScaledPlan( |
42 | | - unscaled_pinv, AbstractFFTs.normalization(T, p.sz, p.region), |
43 | | - ) |
44 | | - return pinv |
| 38 | +function AbstractFFTs.plan_inv(pinv::InverseTestPlan{T}) where {T} |
| 39 | + unscaled_p = TestPlan{T}(pinv.region, pinv.sz) |
| 40 | + N = AbstractFFTs.normalization(T, pinv.sz, pinv.region) |
| 41 | + unscaled_p.pinv = AbstractFFTs.ScaledPlan(pinv, N) |
| 42 | + p = AbstractFFTs.ScaledPlan(unscaled_p, N) |
| 43 | + return p |
45 | 44 | end |
46 | 45 |
|
47 | 46 | # Just a helper function since forward and backward are nearly identical |
@@ -118,22 +117,23 @@ function AbstractFFTs.plan_inv(p::TestRPlan{T,N}) where {T,N} |
118 | 117 | firstdim = first(p.region)::Int |
119 | 118 | d = p.sz[firstdim] |
120 | 119 | sz = ntuple(i -> i == firstdim ? d ÷ 2 + 1 : p.sz[i], Val(N)) |
| 120 | + _N = AbstractFFTs.normalization(T, p.sz, p.region) |
| 121 | + |
121 | 122 | unscaled_pinv = InverseTestRPlan{T}(d, p.region, sz) |
122 | | - unscaled_pinv.pinv = p |
123 | | - pinv = AbstractFFTs.ScaledPlan( |
124 | | - unscaled_pinv, AbstractFFTs.normalization(T, p.sz, p.region), |
125 | | - ) |
| 123 | + unscaled_pinv.pinv = AbstractFFTs.ScaledPlan(p, _N) |
| 124 | + pinv = AbstractFFTs.ScaledPlan(unscaled_pinv, _N) |
126 | 125 | return pinv |
127 | 126 | end |
128 | | -function AbstractFFTs.plan_inv(p::InverseTestRPlan{T,N}) where {T,N} |
129 | | - firstdim = first(p.region)::Int |
130 | | - sz = ntuple(i -> i == firstdim ? p.d : p.sz[i], Val(N)) |
131 | | - unscaled_pinv = TestRPlan{T}(p.region, sz) |
132 | | - unscaled_pinv.pinv = p |
133 | | - pinv = AbstractFFTs.ScaledPlan( |
134 | | - unscaled_pinv, AbstractFFTs.normalization(T, sz, p.region), |
135 | | - ) |
136 | | - return pinv |
| 127 | + |
| 128 | +function AbstractFFTs.plan_inv(pinv::InverseTestRPlan{T,N}) where {T,N} |
| 129 | + firstdim = first(pinv.region)::Int |
| 130 | + sz = ntuple(i -> i == firstdim ? pinv.d : pinv.sz[i], Val(N)) |
| 131 | + _N = AbstractFFTs.normalization(T, sz, pinv.region) |
| 132 | + |
| 133 | + unscaled_p = TestRPlan{T}(pinv.region, sz) |
| 134 | + unscaled_p.pinv = AbstractFFTs.ScaledPlan(pinv, _N) |
| 135 | + p = AbstractFFTs.ScaledPlan(unscaled_p, _N) |
| 136 | + return p |
137 | 137 | end |
138 | 138 |
|
139 | 139 | Base.size(p::TestRPlan) = p.sz |
|
0 commit comments