Comments (5)
I'll make a pull request and then we can see.
from fasttransforms.jl.
Related: #34. Originally, I thought that someone from FFTW with connections to Julia might write native generic FFTs, but I suppose we can't wait forever.
from fasttransforms.jl.
Oops, I did not see the existing issue.
The generic FFT code works with other AbstractFloat types, but making them accessible for any AbstractFloat like I suggested above is not free of issues. For example, since dct
is defined for Vectors in FastTransforms but for AbstractArrays (with any dimension) in FFTW, the definition of FastTransforms.jl is actually more specific. Hence, it ends up getting called, even when the argument has Float64 elements. Furthermore, the test suite yields StackOverflowErrors, presumably for a similar reason. For the time being, the code is here: https://github.com/daanhb/FastTransforms.jl/blob/genericfft/src/fftBigFloat.jl
from fasttransforms.jl.
The code now works and all tests pass, with some changes to the codeflow. I've renamed fft to generic_fft. The fft routines in AbstractFFTs.jl invoke plan_fft (and friends). We implement plan_fft with the same signature as in FFTW, but such that the methods of FFTW are more specific than ours when T is one of the fftwNumber types. We provide a fallback for any AbstractFloat. The dummy plans of FastTransforms subsequently call generic_fft (and friends).
So: fft (AbstractFFTs) -> plan_fft (FastTransforms) -> DummyFFTPlan.
The DummyFFTPlan calls generic_fft
.
For Float64: fft (AbstractFFTs) -> plan_fft (FFTW) -> SomeFFTWPlan, much more efficient.
I've had to change the dummy plan for irfft to include the extra integer argument, which is the length of the original vector to which rfft was applied. I'll make a pull request.
from fasttransforms.jl.
Closed by #64
from fasttransforms.jl.
Related Issues (20)
- Move Chebyshev functionality to Chebyshevtransforms.jl
- What algorithm does cheb2leg() use? HOT 2
- Potentially suboptimal performance in r2r transforms? HOT 1
- sph methods slow? HOT 4
- Chebyshev transforms do not work with the FFTW v1.6. HOT 2
- Add a slow path in ultra2ultra transforms?
- Reduction in accuracy in `cheb2leg ∘ leg2cheb` on v0.15 HOT 4
- Regression in `ultra2ultra` with identical orders HOT 1
- Write test for Normalization in `cheb2leg` and `leg2cheb` HOT 4
- `cheb2ultra` seems unreasonably slow HOT 2
- Julia rewrite of libFastTransforms HOT 2
- 1d transforms with multi-dimensional regions are slow HOT 3
- Use Toeplitz-dot-Hankel for very large dimensional transforms HOT 4
- Add multidimensional interface for lib transforms HOT 3
- Avoid reexporting dependencies
- Move out forwardrecurrence and clenshaw
- Segmentation fault for spherical harmonic transform HOT 5
- cheb2leg gives negatives for odd polynomials HOT 3
- Illegal instruction on macos in `ft_plan_chebyshev_to_jacobi` or `plan_cheb2leg`
- Can't use empty vectors in `th_cheb2leg` or `th_leg2cheb`
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fasttransforms.jl.