You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
SPHERESYNTHESIS =>"FFTW Fourier synthesis on the sphere",
87
-
SPHEREANALYSIS =>"FFTW Fourier analysis on the sphere",
88
-
SPHEREVSYNTHESIS =>"FFTW Fourier synthesis on the sphere (vector field)",
89
-
SPHEREVANALYSIS =>"FFTW Fourier analysis on the sphere (vector field)",
90
-
DISKSYNTHESIS =>"FFTW Chebyshev×Fourier synthesis on the disk",
91
-
DISKANALYSIS =>"FFTW Chebyshev×Fourier analysis on the disk",
92
-
TRIANGLESYNTHESIS =>"FFTW Chebyshev synthesis on the triangle",
93
-
TRIANGLEANALYSIS =>"FFTW Chebyshev analysis on the triangle")
57
+
const LEG2CHEB =0
58
+
const CHEB2LEG =1
59
+
const ULTRA2ULTRA =2
60
+
const JAC2JAC =3
61
+
const LAG2LAG =4
62
+
const JAC2ULTRA =5
63
+
const ULTRA2JAC =6
64
+
const JAC2CHEB =7
65
+
const CHEB2JAC =8
66
+
const ULTRA2CHEB =9
67
+
const CHEB2ULTRA =10
68
+
const SPHERE =11
69
+
const SPHEREV =12
70
+
const DISK =13
71
+
const TRIANGLE =14
72
+
const TETRAHEDRON =15
73
+
const SPHERESYNTHESIS =16
74
+
const SPHEREANALYSIS =17
75
+
const SPHEREVSYNTHESIS =18
76
+
const SPHEREVANALYSIS =19
77
+
const DISKSYNTHESIS =20
78
+
const DISKANALYSIS =21
79
+
const TRIANGLESYNTHESIS =22
80
+
const TRIANGLEANALYSIS =23
81
+
const TETRAHEDRONSYNTHESIS =24
82
+
const TETRAHEDRONANALYSIS =25
83
+
84
+
let k2s =Dict(LEG2CHEB =>"Legendre--Chebyshev",
85
+
CHEB2LEG =>"Chebyshev--Legendre",
86
+
ULTRA2ULTRA =>"ultraspherical--ultraspherical",
87
+
JAC2JAC =>"Jacobi--Jacobi",
88
+
LAG2LAG =>"Laguerre--Laguerre",
89
+
JAC2ULTRA =>"Jacobi--ultraspherical",
90
+
ULTRA2JAC =>"ultraspherical--Jacobi",
91
+
JAC2CHEB =>"Jacobi--Chebyshev",
92
+
CHEB2JAC =>"Chebyshev--Jacobi",
93
+
ULTRA2CHEB =>"ultraspherical--Chebyshev",
94
+
CHEB2ULTRA =>"Chebyshev--ultraspherical",
95
+
SPHERE =>"Spherical harmonic--Fourier",
96
+
SPHEREV =>"Spherical vector field--Fourier",
97
+
DISK =>"Zernike--Chebyshev×Fourier",
98
+
TRIANGLE =>"Proriol--Chebyshev²",
99
+
TETRAHEDRON =>"Proriol--Chebyshev³",
100
+
SPHERESYNTHESIS =>"FFTW Fourier synthesis on the sphere",
101
+
SPHEREANALYSIS =>"FFTW Fourier analysis on the sphere",
102
+
SPHEREVSYNTHESIS =>"FFTW Fourier synthesis on the sphere (vector field)",
103
+
SPHEREVANALYSIS =>"FFTW Fourier analysis on the sphere (vector field)",
104
+
DISKSYNTHESIS =>"FFTW Chebyshev×Fourier synthesis on the disk",
105
+
DISKANALYSIS =>"FFTW Chebyshev×Fourier analysis on the disk",
106
+
TRIANGLESYNTHESIS =>"FFTW Chebyshev synthesis on the triangle",
107
+
TRIANGLEANALYSIS =>"FFTW Chebyshev analysis on the triangle",
108
+
TETRAHEDRONSYNTHESIS =>"FFTW Chebyshev synthesis on the tetrahedron",
109
+
TETRAHEDRONANALYSIS =>"FFTW Chebyshev analysis on the tetrahedron")
94
110
global kind2string
95
111
kind2string(k::Integer) = k2s[Int(k)]
96
112
end
@@ -100,14 +116,20 @@ struct ft_plan_struct end
100
116
mutable struct FTPlan{T, N, K}
101
117
plan::Ptr{ft_plan_struct}
102
118
n::Int
119
+
l::Int
103
120
m::Int
104
121
functionFTPlan{T, N, K}(plan::Ptr{ft_plan_struct}, n::Int) where {T, N, K}
105
122
p =new(plan, n)
106
123
finalizer(destroy_plan, p)
107
124
p
108
125
end
109
126
functionFTPlan{T, N, K}(plan::Ptr{ft_plan_struct}, n::Int, m::Int) where {T, N, K}
110
-
p =new(plan, n, m)
127
+
p =new(plan, n, -1, m)
128
+
finalizer(destroy_plan, p)
129
+
p
130
+
end
131
+
functionFTPlan{T, N, K}(plan::Ptr{ft_plan_struct}, n::Int, l::Int, m::Int) where {T, N, K}
132
+
p =new(plan, n, l, m)
111
133
finalizer(destroy_plan, p)
112
134
p
113
135
end
@@ -120,7 +142,9 @@ show(io::IO, p::FTPlan{T, 2, SPHERE}) where T = print(io, "FastTransforms ", kin
120
142
show(io::IO, p::FTPlan{T, 2, SPHEREV}) where T =print(io, "FastTransforms ", kind2string(SPHEREV), " plan for $(p.n)×$(2p.n-1)-element array of ", T)
121
143
show(io::IO, p::FTPlan{T, 2, DISK}) where T =print(io, "FastTransforms ", kind2string(DISK), " plan for $(p.n)×$(4p.n-3)-element array of ", T)
122
144
show(io::IO, p::FTPlan{T, 2, TRIANGLE}) where T =print(io, "FastTransforms ", kind2string(TRIANGLE), " plan for $(p.n)×$(p.n)-element array of ", T)
145
+
show(io::IO, p::FTPlan{T, 3, TETRAHEDRON}) where T =print(io, "FastTransforms ", kind2string(TETRAHEDRON), " plan for $(p.n)×$(p.n)×$(p.n)-element array of ", T)
123
146
show(io::IO, p::FTPlan{T, 2, K}) where {T, K} =print(io, "FastTransforms plan for ", kind2string(K), " for $(p.n)×$(p.m)-element array of ", T)
147
+
show(io::IO, p::FTPlan{T, 3, K}) where {T, K} =print(io, "FastTransforms plan for ", kind2string(K), " for $(p.n)×$(p.l)×$(p.m)-element array of ", T)
124
148
125
149
functionchecksize(p::FTPlan{T}, x::Array{T}) where T
0 commit comments