# \[ANN\] Announcing EasyFFTs.jl

**URL:** https://discourse.julialang.org/t/ann-announcing-easyffts-jl/90174
**Category:** Package Announcements
**Created:** [November 12, 2022, 10:47pm UTC](https://discourse.julialang.org/t/ann-announcing-easyffts-jl/90174 "2022-11-12T22:47:45Z")
**Posts on this page:** 1
**Showing post:** 2

<div class="post-metadata">

### Author: ![photor](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/photor/32/14343_2.png) [@photor](https://discourse.julialang.org/u/photor)
#### Post date: [November 13, 2022, 4:15am UTC](https://discourse.julialang.org/t/ann-announcing-easyffts-jl/90174/2 "2022-11-13T04:15:38Z")

</div>

> `rfft` is automatically called for real element vectors, avoiding  
> the common newbie mistake of always using `fft`. Benefits are faster computation  
> and automtically discarding half of the symmetric spectrum. If you want both  
> sides of the spectrum, see the only other exported function `easymirror`.

Any ideas about what happens there? Thanks.

> [@R2r is surprisingly slower than complex fft](https://discourse.julialang.org/t/r2r-is-surprisingly-slower-than-complex-fft/90018):
>
> const m=60 x=randn(m,m,m) y=deepcopy(x) p = FFTW.plan\_r2r(y,FFTW.R2HC,flags=FFTW.MEASURE) @btime mul!($y,$p,$x); gives the result 572.302 μs (138 allocations: 10.16 KiB) while const m=60 x=randn(ComplexF64,m,m,m) y=deepcopy(x) p = plan\_fft(y,flags=FFTW.MEASURE) @btime mul!($y,$p,$x); gives 551.774 μs (138 allocations: 10.16 KiB) Have I missed some crucial point?

---

_[View the full topic](https://discourse.julialang.org/t/ann-announcing-easyffts-jl/90174)._
