@@ -13,15 +13,6 @@ function ArrayPlan(F::FTPlan{<:T}, c::AbstractArray{T}, dims::Tuple{<:Int}=(1,))
13
13
ArrayPlan (F, size (c), dims)
14
14
end
15
15
16
- function inv_perm (d:: Vector{<:Int} )
17
- inv_d = Vector {Int} (undef, length (d))
18
- for (i, val) in enumerate (d)
19
- inv_d[val] = i
20
- end
21
- return inv_d
22
- end
23
- inv_perm (d:: Tuple ) = inv_perm ([d... ])
24
-
25
16
function * (P:: ArrayPlan , f:: AbstractArray )
26
17
F, dims, szs = P. F, P. dims, P. szs
27
18
@assert length (dims) == 1
@@ -33,7 +24,7 @@ function *(P::ArrayPlan, f::AbstractArray)
33
24
34
25
fr = reshape (fp, size (fp,1 ), :)
35
26
36
- permutedims (reshape (F* fr, size (fp)... ), inv_perm (perm))
27
+ permutedims (reshape (F* fr, size (fp)... ), invperm (perm))
37
28
end
38
29
39
30
function \ (P:: ArrayPlan , f:: AbstractArray )
@@ -47,7 +38,7 @@ function \(P::ArrayPlan, f::AbstractArray)
47
38
48
39
fr = reshape (fp, size (fp,1 ), :)
49
40
50
- permutedims (reshape (F\ fr, size (fp)... ), inv_perm (perm))
41
+ permutedims (reshape (F\ fr, size (fp)... ), invperm (perm))
51
42
end
52
43
53
44
struct NDimsPlan{T, FF<: ArrayPlan{<:T} , Szs<: Tuple , Dims<: Tuple } <: Plan{T}
@@ -79,7 +70,7 @@ function *(P::NDimsPlan, f::AbstractArray)
79
70
for d in dims
80
71
perm = ntuple (k -> k == d1 ? t[d] : k == d ? t[d1] : t[k], ndims (g))
81
72
gp = permutedims (g, perm)
82
- g = permutedims (F* gp, inv_perm (perm))
73
+ g = permutedims (F* gp, invperm (perm))
83
74
end
84
75
return g
85
76
end
@@ -93,7 +84,7 @@ function \(P::NDimsPlan, f::AbstractArray)
93
84
for d in dims
94
85
perm = ntuple (k -> k == d1 ? t[d] : k == d ? t[d1] : t[k], ndims (g))
95
86
gp = permutedims (g, perm)
96
- g = permutedims (F\ gp, inv_perm (perm))
87
+ g = permutedims (F\ gp, invperm (perm))
97
88
end
98
89
return g
99
90
end
0 commit comments