@@ -217,12 +217,20 @@ show(io::IO, p::FTPlan{T, 2, K}) where {T, K} = print(io, "FastTransforms plan f
217
217
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)
218
218
show (io:: IO , p:: FTPlan{T, 2, SPHERICALISOMETRY} ) where T = print (io, " FastTransforms " , kind2string (SPHERICALISOMETRY), " plan for $(p. n) ×$(2 p. n- 1 ) -element array of " , T)
219
219
220
- function checksize (p:: FTPlan{T} , x:: Array{T} ) where T
220
+ function checksize (p:: FTPlan{T, 1 } , x:: Array{T} ) where T
221
221
if p. n != size (x, 1 )
222
222
throw (DimensionMismatch (" FTPlan has dimensions $(p. n) × $(p. n) , x has leading dimension $(size (x, 1 )) " ))
223
223
end
224
224
end
225
225
226
+ for (N, K) in ((2 , RECTDISK), (2 , TRIANGLE), (3 , TETRAHEDRON))
227
+ @eval function checksize (p:: FTPlan{T, $N, $K} , x:: Array{T, $N} ) where T
228
+ if p. n != size (x, 1 )
229
+ throw (DimensionMismatch (" FTPlan has dimensions $(p. n) × $(p. n) , x has leading dimension $(size (x, 1 )) " ))
230
+ end
231
+ end
232
+ end
233
+
226
234
for K in (SPHERE, SPHEREV, DISK, SPINSPHERE)
227
235
@eval function checksize (p:: FTPlan{T, 2, $K} , x:: Matrix{T} ) where T
228
236
if p. n != size (x, 1 )
@@ -234,6 +242,18 @@ for K in (SPHERE, SPHEREV, DISK, SPINSPHERE)
234
242
end
235
243
end
236
244
245
+ function checksize (p:: FTPlan{T, 2} , x:: Array{T, 2} ) where T
246
+ if p. n != size (x, 1 ) || p. m != size (x, 2 )
247
+ throw (DimensionMismatch (" FTPlan has dimensions $(p. n) × $(p. m) , x has dimensions $(size (x, 1 )) × $(size (x, 2 )) " ))
248
+ end
249
+ end
250
+
251
+ function checksize (p:: FTPlan{T, 3} , x:: Array{T, 3} ) where T
252
+ if p. n != size (x, 1 ) || p. l != size (x, 2 ) || p. m != size (x, 3 )
253
+ throw (DimensionMismatch (" FTPlan has dimensions $(p. n) × $(p. l) × $(p. m) , x has dimensions $(size (x, 1 )) × $(size (x, 2 )) × $(size (x, 3 )) " ))
254
+ end
255
+ end
256
+
237
257
function checksize (p:: FTPlan{T, 2, SPHERICALISOMETRY} , x:: Matrix{T} ) where T
238
258
if p. n != size (x, 1 ) || 2 p. n- 1 != size (x, 2 )
239
259
throw (DimensionMismatch (" This FTPlan must operate on arrays of size $(p. n) × $(2 p. n- 1 ) ." ))
@@ -290,10 +310,29 @@ function show(io::IO, p::AdjointFTPlan)
290
310
show (io, p. parent)
291
311
end
292
312
293
- checksize (p:: AdjointFTPlan , x) = checksize (p. parent, x)
313
+ function checksize (p:: AdjointFTPlan , x)
314
+ try
315
+ checksize (p. adjoint, x)
316
+ catch
317
+ checksize (p. parent, x)
318
+ end
319
+ end
294
320
295
- unsafe_convert (:: Type{Ptr{ft_plan_struct}} , p:: AdjointFTPlan ) = unsafe_convert (Ptr{ft_plan_struct}, p. parent)
296
- unsafe_convert (:: Type{Ptr{mpfr_t}} , p:: AdjointFTPlan ) = unsafe_convert (Ptr{mpfr_t}, p. parent)
321
+ function unsafe_convert (:: Type{Ptr{ft_plan_struct}} , p:: AdjointFTPlan )
322
+ try
323
+ unsafe_convert (Ptr{ft_plan_struct}, p. adjoint)
324
+ catch
325
+ unsafe_convert (Ptr{ft_plan_struct}, p. parent)
326
+ end
327
+ end
328
+
329
+ function unsafe_convert (:: Type{Ptr{mpfr_t}} , p:: AdjointFTPlan )
330
+ try
331
+ unsafe_convert (Ptr{mpfr_t}, p. adjoint)
332
+ catch
333
+ unsafe_convert (Ptr{mpfr_t}, p. parent)
334
+ end
335
+ end
297
336
298
337
struct TransposeFTPlan{T, S, R}
299
338
parent:: S
@@ -319,10 +358,29 @@ function show(io::IO, p::TransposeFTPlan)
319
358
show (io, p. parent)
320
359
end
321
360
322
- checksize (p:: TransposeFTPlan , x) = checksize (p. parent, x)
361
+ function checksize (p:: TransposeFTPlan , x)
362
+ try
363
+ checksize (p. transpose, x)
364
+ catch
365
+ checksize (p. parent, x)
366
+ end
367
+ end
323
368
324
- unsafe_convert (:: Type{Ptr{ft_plan_struct}} , p:: TransposeFTPlan ) = unsafe_convert (Ptr{ft_plan_struct}, p. parent)
325
- unsafe_convert (:: Type{Ptr{mpfr_t}} , p:: TransposeFTPlan ) = unsafe_convert (Ptr{mpfr_t}, p. parent)
369
+ function unsafe_convert (:: Type{Ptr{ft_plan_struct}} , p:: TransposeFTPlan )
370
+ try
371
+ unsafe_convert (Ptr{ft_plan_struct}, p. transpose)
372
+ catch
373
+ unsafe_convert (Ptr{ft_plan_struct}, p. parent)
374
+ end
375
+ end
376
+
377
+ function unsafe_convert (:: Type{Ptr{mpfr_t}} , p:: TransposeFTPlan )
378
+ try
379
+ unsafe_convert (Ptr{mpfr_t}, p. transpose)
380
+ catch
381
+ unsafe_convert (Ptr{mpfr_t}, p. parent)
382
+ end
383
+ end
326
384
327
385
for f in (:leg2cheb , :cheb2leg , :ultra2ultra , :jac2jac ,
328
386
:lag2lag , :jac2ultra , :ultra2jac , :jac2cheb ,
@@ -563,9 +621,15 @@ function plan_spinsph2fourier(::Type{Complex{Float64}}, n::Integer, s::Integer)
563
621
end
564
622
565
623
for (fJ, fadJ, fC, fE, K) in ((:plan_sph_synthesis , :plan_sph_analysis , :ft_plan_sph_synthesis , :ft_execute_sph_synthesis , SPHERESYNTHESIS),
566
- (:plan_sph_analysis , :plan_sph_synthesis , :ft_plan_sph_analysis , :ft_execute_sph_analysis , SPHEREANALYSIS),
567
- (:plan_sphv_synthesis , :plan_sphv_analysis , :ft_plan_sphv_synthesis , :ft_execute_sphv_synthesis , SPHEREVSYNTHESIS),
568
- (:plan_sphv_analysis , :plan_sphv_synthesis , :ft_plan_sphv_analysis , :ft_execute_sphv_analysis , SPHEREVANALYSIS))
624
+ (:plan_sph_analysis , :plan_sph_synthesis , :ft_plan_sph_analysis , :ft_execute_sph_analysis , SPHEREANALYSIS),
625
+ (:plan_sphv_synthesis , :plan_sphv_analysis , :ft_plan_sphv_synthesis , :ft_execute_sphv_synthesis , SPHEREVSYNTHESIS),
626
+ (:plan_sphv_analysis , :plan_sphv_synthesis , :ft_plan_sphv_analysis , :ft_execute_sphv_analysis , SPHEREVANALYSIS),
627
+ (:plan_disk_synthesis , :plan_disk_analysis , :ft_plan_disk_synthesis , :ft_execute_disk_synthesis , DISKSYNTHESIS),
628
+ (:plan_disk_analysis , :plan_disk_synthesis , :ft_plan_disk_analysis , :ft_execute_disk_analysis , DISKANALYSIS),
629
+ (:plan_rectdisk_synthesis , :plan_rectdisk_analysis , :ft_plan_rectdisk_synthesis , :ft_execute_rectdisk_synthesis , RECTDISKSYNTHESIS),
630
+ (:plan_rectdisk_analysis , :plan_rectdisk_synthesis , :ft_plan_rectdisk_analysis , :ft_execute_rectdisk_analysis , RECTDISKANALYSIS),
631
+ (:plan_tri_synthesis , :plan_tri_analysis , :ft_plan_tri_synthesis , :ft_execute_tri_synthesis , TRIANGLESYNTHESIS),
632
+ (:plan_tri_analysis , :plan_tri_synthesis , :ft_plan_tri_analysis , :ft_execute_tri_analysis , TRIANGLEANALYSIS))
569
633
@eval begin
570
634
$ fJ (x:: Matrix{T} ) where T = $ fJ (T, size (x, 1 ), size (x, 2 ))
571
635
$ fJ (:: Type{Complex{T}} , x... ) where T <: Real = $ fJ (T, x... )
@@ -576,112 +640,81 @@ for (fJ, fadJ, fC, fE, K) in ((:plan_sph_synthesis, :plan_sph_analysis, :ft_plan
576
640
adjoint (p:: FTPlan{T, 2, $K} ) where T = AdjointFTPlan (p, $ fadJ (T, p. n, p. m))
577
641
transpose (p:: FTPlan{T, 2, $K} ) where T = TransposeFTPlan (p, $ fadJ (T, p. n, p. m))
578
642
function lmul! (p:: FTPlan{Float64, 2, $K} , x:: Matrix{Float64} )
579
- if p. n != size (x, 1 ) || p. m != size (x, 2 )
580
- throw (DimensionMismatch (" FTPlan has dimensions $(p. n) × $(p. m) , x has dimensions $(size (x, 1 )) × $(size (x, 2 )) " ))
581
- end
643
+ checksize (p, x)
582
644
ccall (($ (string (fE)), libfasttransforms), Cvoid, (Cint, Ptr{ft_plan_struct}, Ptr{Float64}, Cint, Cint), ' N' , p, x, size (x, 1 ), size (x, 2 ))
583
645
return x
584
646
end
585
647
function lmul! (p:: AdjointFTPlan{Float64, FTPlan{Float64, 2, $K}} , x:: Matrix{Float64} )
586
- if p. adjoint. n != size (x, 1 ) || p. adjoint. m != size (x, 2 )
587
- throw (DimensionMismatch (" FTPlan has dimensions $(p. n) × $(p. m) , x has dimensions $(size (x, 1 )) × $(size (x, 2 )) " ))
588
- end
589
- ccall (($ (string (fE)), libfasttransforms), Cvoid, (Cint, Ptr{ft_plan_struct}, Ptr{Float64}, Cint, Cint), ' T' , p. adjoint, x, size (x, 1 ), size (x, 2 ))
648
+ checksize (p, x)
649
+ ccall (($ (string (fE)), libfasttransforms), Cvoid, (Cint, Ptr{ft_plan_struct}, Ptr{Float64}, Cint, Cint), ' T' , p, x, size (x, 1 ), size (x, 2 ))
590
650
return x
591
651
end
592
652
function lmul! (p:: TransposeFTPlan{Float64, FTPlan{Float64, 2, $K}} , x:: Matrix{Float64} )
593
- if p. transpose. n != size (x, 1 ) || p. transpose. m != size (x, 2 )
594
- throw (DimensionMismatch (" FTPlan has dimensions $(p. n) × $(p. m) , x has dimensions $(size (x, 1 )) × $(size (x, 2 )) " ))
595
- end
596
- ccall (($ (string (fE)), libfasttransforms), Cvoid, (Cint, Ptr{ft_plan_struct}, Ptr{Float64}, Cint, Cint), ' T' , p. transpose, x, size (x, 1 ), size (x, 2 ))
653
+ checksize (p, x)
654
+ ccall (($ (string (fE)), libfasttransforms), Cvoid, (Cint, Ptr{ft_plan_struct}, Ptr{Float64}, Cint, Cint), ' T' , p, x, size (x, 1 ), size (x, 2 ))
597
655
return x
598
656
end
599
657
end
600
658
end
601
659
602
- for (fJ, fC, fE, K) in ((:plan_disk_synthesis , :ft_plan_disk_synthesis , :ft_execute_disk_synthesis , DISKSYNTHESIS),
603
- (:plan_disk_analysis , :ft_plan_disk_analysis , :ft_execute_disk_analysis , DISKANALYSIS),
604
- (:plan_rectdisk_synthesis , :ft_plan_rectdisk_synthesis , :ft_execute_rectdisk_synthesis , RECTDISKSYNTHESIS),
605
- (:plan_rectdisk_analysis , :ft_plan_rectdisk_analysis , :ft_execute_rectdisk_analysis , RECTDISKANALYSIS),
606
- (:plan_tri_synthesis , :ft_plan_tri_synthesis , :ft_execute_tri_synthesis , TRIANGLESYNTHESIS),
607
- (:plan_tri_analysis , :ft_plan_tri_analysis , :ft_execute_tri_analysis , TRIANGLEANALYSIS))
660
+ for (fJ, fadJ, fC, fE, K) in ((:plan_tet_synthesis , :plan_tet_analysis , :ft_plan_tet_synthesis , :ft_execute_tet_synthesis , TETRAHEDRONSYNTHESIS),
661
+ (:plan_tet_analysis , :plan_tet_synthesis , :ft_plan_tet_analysis , :ft_execute_tet_analysis , TETRAHEDRONANALYSIS))
608
662
@eval begin
609
- $ fJ (x:: Matrix{T } ) where T = $ fJ (T, size (x, 1 ), size (x, 2 ))
663
+ $ fJ (x:: Array{T, 3 } ) where T = $ fJ (T, size (x, 1 ), size (x, 2 ), size (x, 3 ))
610
664
$ fJ (:: Type{Complex{T}} , x... ) where T <: Real = $ fJ (T, x... )
611
- function $fJ (:: Type{Float64} , n:: Integer , m:: Integer )
612
- plan = ccall (($ (string (fC)), libfasttransforms), Ptr{ft_plan_struct}, (Cint, Cint), n, m)
613
- return FTPlan {Float64, 2 , $K} (plan, n, m)
665
+ function $fJ (:: Type{Float64} , n:: Integer , l :: Integer , m:: Integer )
666
+ plan = ccall (($ (string (fC)), libfasttransforms), Ptr{ft_plan_struct}, (Cint, Cint, Cint ), n, l , m)
667
+ return FTPlan {Float64, 3 , $K} (plan, n, l , m)
614
668
end
615
- function lmul! (p:: FTPlan{Float64, 2, $K} , x:: Matrix{Float64} )
616
- if p. n != size (x, 1 ) || p. m != size (x, 2 )
617
- throw (DimensionMismatch (" FTPlan has dimensions $(p. n) × $(p. m) , x has dimensions $(size (x, 1 )) × $(size (x, 2 )) " ))
618
- end
619
- ccall (($ (string (fE)), libfasttransforms), Cvoid, (Ptr{ft_plan_struct}, Ptr{Float64}, Cint, Cint), p, x, size (x, 1 ), size (x, 2 ))
669
+ adjoint (p:: FTPlan{T, 3, $K} ) where T = AdjointFTPlan (p, $ fadJ (T, p. n, p. l, p. m))
670
+ transpose (p:: FTPlan{T, 3, $K} ) where T = TransposeFTPlan (p, $ fadJ (T, p. n, p. l, p. m))
671
+ function lmul! (p:: FTPlan{Float64, 3, $K} , x:: Array{Float64, 3} )
672
+ checksize (p, x)
673
+ ccall (($ (string (fE)), libfasttransforms), Cvoid, (Cint, Ptr{ft_plan_struct}, Ptr{Float64}, Cint, Cint, Cint), ' N' , p, x, size (x, 1 ), size (x, 2 ), size (x, 3 ))
674
+ return x
675
+ end
676
+ function lmul! (p:: AdjointFTPlan{Float64, FTPlan{Float64, 3, $K}} , x:: Array{Float64, 3} )
677
+ checksize (p, x)
678
+ ccall (($ (string (fE)), libfasttransforms), Cvoid, (Cint, Ptr{ft_plan_struct}, Ptr{Float64}, Cint, Cint, Cint), ' T' , p, x, size (x, 1 ), size (x, 2 ), size (x, 3 ))
679
+ return x
680
+ end
681
+ function lmul! (p:: TransposeFTPlan{Float64, FTPlan{Float64, 3, $K}} , x:: Array{Float64, 3} )
682
+ checksize (p, x)
683
+ ccall (($ (string (fE)), libfasttransforms), Cvoid, (Cint, Ptr{ft_plan_struct}, Ptr{Float64}, Cint, Cint, Cint), ' T' , p, x, size (x, 1 ), size (x, 2 ), size (x, 3 ))
620
684
return x
621
685
end
622
686
end
623
687
end
624
688
625
- plan_tet_synthesis (x:: Array{T, 3} ) where T = plan_tet_synthesis (T, size (x, 1 ), size (x, 2 ), size (x, 3 ))
626
- plan_tet_synthesis (:: Type{Complex{T}} , x... ) where T <: Real = plan_tet_synthesis (T, x... )
627
-
628
- function plan_tet_synthesis (:: Type{Float64} , n:: Integer , l:: Integer , m:: Integer )
629
- plan = ccall ((:ft_plan_tet_synthesis , libfasttransforms), Ptr{ft_plan_struct}, (Cint, Cint, Cint), n, l, m)
630
- return FTPlan {Float64, 3, TETRAHEDRONSYNTHESIS} (plan, n, l, m)
631
- end
632
-
633
- function lmul! (p:: FTPlan{Float64, 3, TETRAHEDRONSYNTHESIS} , x:: Array{Float64, 3} )
634
- if p. n != size (x, 1 ) || p. l != size (x, 2 ) || p. m != size (x, 3 )
635
- throw (DimensionMismatch (" FTPlan has dimensions $(p. n) × $(p. l) × $(p. m) , x has dimensions $(size (x, 1 )) × $(size (x, 2 )) × $(size (x, 3 )) " ))
636
- end
637
- ccall ((:ft_execute_tet_synthesis , libfasttransforms), Cvoid, (Ptr{ft_plan_struct}, Ptr{Float64}, Cint, Cint, Cint), p, x, size (x, 1 ), size (x, 2 ), size (x, 3 ))
638
- return x
639
- end
640
-
641
- plan_tet_analysis (x:: Array{T, 3} ) where T = plan_tet_analysis (T, size (x, 1 ), size (x, 2 ), size (x, 3 ))
642
- plan_tet_analysis (:: Type{Complex{T}} , x... ) where T <: Real = plan_tet_analysis (T, x... )
643
-
644
- function plan_tet_analysis (:: Type{Float64} , n:: Integer , l:: Integer , m:: Integer )
645
- plan = ccall ((:ft_plan_tet_analysis , libfasttransforms), Ptr{ft_plan_struct}, (Cint, Cint, Cint), n, l, m)
646
- return FTPlan {Float64, 3, TETRAHEDRONANALYSIS} (plan, n, l, m)
647
- end
648
-
649
- function lmul! (p:: FTPlan{Float64, 3, TETRAHEDRONANALYSIS} , x:: Array{Float64, 3} )
650
- if p. n != size (x, 1 ) || p. l != size (x, 2 ) || p. m != size (x, 3 )
651
- throw (DimensionMismatch (" FTPlan has dimensions $(p. n) × $(p. l) × $(p. m) , x has dimensions $(size (x, 1 )) × $(size (x, 2 )) × $(size (x, 3 )) " ))
652
- end
653
- ccall ((:ft_execute_tet_analysis , libfasttransforms), Cvoid, (Ptr{ft_plan_struct}, Ptr{Float64}, Cint, Cint, Cint), p, x, size (x, 1 ), size (x, 2 ), size (x, 3 ))
654
- return x
655
- end
656
-
657
- plan_spinsph_synthesis (x:: Matrix{T} , s:: Integer ) where T = plan_spinsph_synthesis (T, size (x, 1 ), size (x, 2 ), s)
658
-
659
- function plan_spinsph_synthesis (:: Type{Complex{Float64}} , n:: Integer , m:: Integer , s:: Integer )
660
- plan = ccall ((:ft_plan_spinsph_synthesis , libfasttransforms), Ptr{ft_plan_struct}, (Cint, Cint, Cint), n, m, s)
661
- return FTPlan {Complex{Float64}, 2, SPINSPHERESYNTHESIS} (plan, n, m)
662
- end
663
-
664
- function lmul! (p:: FTPlan{Complex{Float64}, 2, SPINSPHERESYNTHESIS} , x:: Matrix{Complex{Float64}} )
665
- if p. n != size (x, 1 ) || p. m != size (x, 2 )
666
- throw (DimensionMismatch (" FTPlan has dimensions $(p. n) × $(p. m) , x has dimensions $(size (x, 1 )) × $(size (x, 2 )) " ))
667
- end
668
- ccall ((:ft_execute_spinsph_synthesis , libfasttransforms), Cvoid, (Ptr{ft_plan_struct}, Ptr{Float64}, Cint, Cint), p, x, size (x, 1 ), size (x, 2 ))
669
- return x
670
- end
671
-
672
- plan_spinsph_analysis (x:: Matrix{T} , s:: Integer ) where T = plan_spinsph_analysis (T, size (x, 1 ), size (x, 2 ), s)
673
-
674
- function plan_spinsph_analysis (:: Type{Complex{Float64}} , n:: Integer , m:: Integer , s:: Integer )
675
- plan = ccall ((:ft_plan_spinsph_analysis , libfasttransforms), Ptr{ft_plan_struct}, (Cint, Cint, Cint), n, m, s)
676
- return FTPlan {Complex{Float64}, 2, SPINSPHEREANALYSIS} (plan, n, m)
677
- end
678
-
679
- function lmul! (p:: FTPlan{Complex{Float64}, 2, SPINSPHEREANALYSIS} , x:: Matrix{Complex{Float64}} )
680
- if p. n != size (x, 1 ) || p. m != size (x, 2 )
681
- throw (DimensionMismatch (" FTPlan has dimensions $(p. n) × $(p. m) , x has dimensions $(size (x, 1 )) × $(size (x, 2 )) " ))
689
+ for (fJ, fadJ, fC, fE, K) in ((:plan_spinsph_synthesis , :plan_spinsph_analysis , :ft_plan_spinsph_synthesis , :ft_execute_spinsph_synthesis , SPINSPHERESYNTHESIS),
690
+ (:plan_spinsph_analysis , :plan_spinsph_synthesis , :ft_plan_spinsph_analysis , :ft_execute_spinsph_analysis , SPINSPHEREANALYSIS))
691
+ @eval begin
692
+ $ fJ (x:: Matrix{T} , s:: Integer ) where T = $ fJ (T, size (x, 1 ), size (x, 2 ), s)
693
+ function $fJ (:: Type{Complex{Float64}} , n:: Integer , m:: Integer , s:: Integer )
694
+ plan = ccall (($ (string (fC)), libfasttransforms), Ptr{ft_plan_struct}, (Cint, Cint, Cint), n, m, s)
695
+ return FTPlan {Complex{Float64}, 2, $K} (plan, n, m)
696
+ end
697
+ get_spin (p:: FTPlan{T, 2, $K} ) where T = ccall ((:ft_get_spin_spinsphere_fftw_plan , libfasttransforms), Cint, (Ptr{ft_plan_struct},), p)
698
+ adjoint (p:: FTPlan{T, 2, $K} ) where T = AdjointFTPlan (p, $ fadJ (T, p. n, p. m, get_spin (p)))
699
+ transpose (p:: FTPlan{T, 2, $K} ) where T = TransposeFTPlan (p, $ fadJ (T, p. n, p. m, get_spin (p)))
700
+ function lmul! (p:: FTPlan{Complex{Float64}, 2, $K} , x:: Matrix{Complex{Float64}} )
701
+ checksize (p, x)
702
+ ccall (($ (string (fE)), libfasttransforms), Cvoid, (Cint, Ptr{ft_plan_struct}, Ptr{Float64}, Cint, Cint), ' N' , p, x, size (x, 1 ), size (x, 2 ))
703
+ return x
704
+ end
705
+ function lmul! (p:: AdjointFTPlan{Complex{Float64}, FTPlan{Complex{Float64}, 2, $K}} , x:: Matrix{Complex{Float64}} )
706
+ checksize (p, x)
707
+ ccall (($ (string (fE)), libfasttransforms), Cvoid, (Cint, Ptr{ft_plan_struct}, Ptr{Float64}, Cint, Cint), ' C' , p, x, size (x, 1 ), size (x, 2 ))
708
+ return x
709
+ end
710
+ function lmul! (p:: TransposeFTPlan{Complex{Float64}, FTPlan{Complex{Float64}, 2, $K}} , x:: Matrix{Complex{Float64}} )
711
+ checksize (p, x)
712
+ conj! (x)
713
+ ccall (($ (string (fE)), libfasttransforms), Cvoid, (Cint, Ptr{ft_plan_struct}, Ptr{Float64}, Cint, Cint), ' C' , p, x, size (x, 1 ), size (x, 2 ))
714
+ conj! (x)
715
+ return x
716
+ end
682
717
end
683
- ccall ((:ft_execute_spinsph_analysis , libfasttransforms), Cvoid, (Ptr{ft_plan_struct}, Ptr{Float64}, Cint, Cint), p, x, size (x, 1 ), size (x, 2 ))
684
- return x
685
718
end
686
719
687
720
function plan_sph_isometry (:: Type{Float64} , n:: Integer )
@@ -834,17 +867,17 @@ for (fJ, fC) in ((:lmul!, :ft_mpfr_trmm_ptr),
834
867
end
835
868
836
869
for (fJ, fC, T, N, K) in ((:lmul! , :ft_execute_sph2fourier , Float64, 2 , SPHERE),
837
- (:ldiv! , :ft_execute_fourier2sph , Float64, 2 , SPHERE),
838
- (:lmul! , :ft_execute_sphv2fourier , Float64, 2 , SPHEREV),
839
- (:ldiv! , :ft_execute_fourier2sphv , Float64, 2 , SPHEREV),
840
- (:lmul! , :ft_execute_spinsph2fourier , Complex{Float64}, 2 , SPINSPHERE),
841
- (:ldiv! , :ft_execute_fourier2spinsph , Complex{Float64}, 2 , SPINSPHERE),
842
- (:lmul! , :ft_execute_disk2cxf , Float64, 2 , DISK),
843
- (:ldiv! , :ft_execute_cxf2disk , Float64, 2 , DISK),
844
- (:lmul! , :ft_execute_rectdisk2cheb , Float64, 2 , RECTDISK),
845
- (:ldiv! , :ft_execute_cheb2rectdisk , Float64, 2 , RECTDISK),
846
- (:lmul! , :ft_execute_tri2cheb , Float64, 2 , TRIANGLE),
847
- (:ldiv! , :ft_execute_cheb2tri , Float64, 2 , TRIANGLE))
870
+ (:ldiv! , :ft_execute_fourier2sph , Float64, 2 , SPHERE),
871
+ (:lmul! , :ft_execute_sphv2fourier , Float64, 2 , SPHEREV),
872
+ (:ldiv! , :ft_execute_fourier2sphv , Float64, 2 , SPHEREV),
873
+ (:lmul! , :ft_execute_spinsph2fourier , Complex{Float64}, 2 , SPINSPHERE),
874
+ (:ldiv! , :ft_execute_fourier2spinsph , Complex{Float64}, 2 , SPINSPHERE),
875
+ (:lmul! , :ft_execute_disk2cxf , Float64, 2 , DISK),
876
+ (:ldiv! , :ft_execute_cxf2disk , Float64, 2 , DISK),
877
+ (:lmul! , :ft_execute_rectdisk2cheb , Float64, 2 , RECTDISK),
878
+ (:ldiv! , :ft_execute_cheb2rectdisk , Float64, 2 , RECTDISK),
879
+ (:lmul! , :ft_execute_tri2cheb , Float64, 2 , TRIANGLE),
880
+ (:ldiv! , :ft_execute_cheb2tri , Float64, 2 , TRIANGLE))
848
881
@eval begin
849
882
function $fJ (p:: FTPlan{$T, $N, $K} , x:: Array{$T, $N} )
850
883
checksize (p, x)
0 commit comments