@@ -9,66 +9,65 @@ import Base: real, complex, copy, copy!
9
9
mutable struct RCpair{T<: AbstractFloat ,N,RType<: AbstractArray{T,N} ,CType<: AbstractArray{Complex{T},N} }
10
10
R:: RType
11
11
C:: CType
12
- region :: Vector{Int}
12
+ dims :: Vector{Int}
13
13
end
14
14
15
- function RCpair {T} (:: UndefInitializer , realsize:: Dims{N} , region = 1 : length (realsize)) where {T<: AbstractFloat ,N}
15
+ function RCpair {T} (:: UndefInitializer , realsize:: Dims{N} , dims = 1 : length (realsize)) where {T<: AbstractFloat ,N}
16
16
sz = [realsize... ]
17
- firstdim = region [1 ]
17
+ firstdim = dims [1 ]
18
18
sz[firstdim] = realsize[firstdim]>> 1 + 1
19
19
sz2 = copy (sz)
20
20
sz2[firstdim] *= 2
21
21
R = Array {T,N} (undef, (sz2... ,):: Dims{N} )
22
22
C = unsafe_wrap (Array, convert (Ptr{Complex{T}}, pointer (R)), (sz... ,):: Dims{N} ) # work around performance problems of reinterpretarray
23
- RCpair (view (R, map (n-> 1 : n, realsize)... ), C, [region ... ])
23
+ RCpair (view (R, map (n-> 1 : n, realsize)... ), C, [dims ... ])
24
24
end
25
25
26
- RCpair (A:: Array{T} , region = 1 : ndims (A)) where {T<: AbstractFloat } = copy! (RCpair {T} (undef, size (A), region ), A)
26
+ RCpair (A:: Array{T} , dims = 1 : ndims (A)) where {T<: AbstractFloat } = copy! (RCpair {T} (undef, size (A), dims ), A)
27
27
28
28
real (RC:: RCpair ) = RC. R
29
29
complex (RC:: RCpair ) = RC. C
30
30
31
31
copy! (RC:: RCpair , A:: AbstractArray{T} ) where {T<: Real } = (copy! (RC. R, A); RC)
32
+ copy! (RC:: RCpair , A:: AbstractArray{T} ) where {T<: Complex } = (copy! (RC. C, A); RC)
32
33
function copy (RC:: RCpair{T,N} ) where {T,N}
33
34
C = copy (RC. C)
34
35
R = reshape (reinterpret (T, C), size (parent (RC. R)))
35
- RCpair (view (R, RC. R. indices... ), C, copy (RC. region ))
36
+ RCpair (view (R, RC. R. indices... ), C, copy (RC. dims ))
36
37
end
37
38
38
39
# New API
39
- rplan_fwd (R, C, region , flags, tlim) =
40
- FFTW. rFFTWPlan {eltype(R),FFTW.FORWARD,true,ndims(R)} (R, C, region , flags, tlim)
41
- rplan_inv (R, C, region , flags, tlim) =
42
- FFTW. rFFTWPlan {eltype(R),FFTW.BACKWARD,true,ndims(R)} (R, C, region , flags, tlim)
40
+ rplan_fwd (R, C, dims , flags, tlim) =
41
+ FFTW. rFFTWPlan {eltype(R),FFTW.FORWARD,true,ndims(R)} (R, C, dims , flags, tlim)
42
+ rplan_inv (R, C, dims , flags, tlim) =
43
+ FFTW. rFFTWPlan {eltype(R),FFTW.BACKWARD,true,ndims(R)} (R, C, dims , flags, tlim)
43
44
function plan_rfft! (RC:: RCpair{T} ; flags:: Integer = FFTW. ESTIMATE, timelimit:: Real = FFTW. NO_TIMELIMIT) where T
44
- p = rplan_fwd (RC. R, RC. C, RC. region , flags, timelimit)
45
+ p = rplan_fwd (RC. R, RC. C, RC. dims , flags, timelimit)
45
46
return Z:: RCpair -> begin
46
47
FFTW. assert_applicable (p, Z. R, Z. C)
47
48
FFTW. unsafe_execute! (p, Z. R, Z. C)
48
49
return Z
49
50
end
50
51
end
51
52
function plan_irfft! (RC:: RCpair{T} ; flags:: Integer = FFTW. ESTIMATE, timelimit:: Real = FFTW. NO_TIMELIMIT) where T
52
- p = rplan_inv (RC. C, RC. R, RC. region , flags, timelimit)
53
+ p = rplan_inv (RC. C, RC. R, RC. dims , flags, timelimit)
53
54
return Z:: RCpair -> begin
54
55
FFTW. assert_applicable (p, Z. C, Z. R)
55
56
FFTW. unsafe_execute! (p, Z. C, Z. R)
56
- rmul! (Z. R, 1 / prod (size (Z. R)[Z. region ]))
57
+ rmul! (Z. R, 1 / prod (size (Z. R)[Z. dims ]))
57
58
return Z
58
59
end
59
60
end
60
61
function rfft! (RC:: RCpair{T} ) where T
61
- p = rplan_fwd (RC. R, RC. C, RC. region , FFTW. ESTIMATE, FFTW. NO_TIMELIMIT)
62
+ p = rplan_fwd (RC. R, RC. C, RC. dims , FFTW. ESTIMATE, FFTW. NO_TIMELIMIT)
62
63
FFTW. unsafe_execute! (p, RC. R, RC. C)
63
64
return RC
64
65
end
65
66
function irfft! (RC:: RCpair{T} ) where T
66
- p = rplan_inv (RC. C, RC. R, RC. region , FFTW. ESTIMATE, FFTW. NO_TIMELIMIT)
67
+ p = rplan_inv (RC. C, RC. R, RC. dims , FFTW. ESTIMATE, FFTW. NO_TIMELIMIT)
67
68
FFTW. unsafe_execute! (p, RC. C, RC. R)
68
- rmul! (RC. R, 1 / prod (size (RC. R)[RC. region ]))
69
+ rmul! (RC. R, 1 / prod (size (RC. R)[RC. dims ]))
69
70
return RC
70
71
end
71
72
72
- @deprecate RCpair (realtype:: Type{T} , realsize, region= 1 : length (realsize)) where T<: AbstractFloat RCpair {T} (undef, realsize, region)
73
-
74
73
end
0 commit comments