All Projects → JuliaMath → AbstractFFTs.jl

JuliaMath / AbstractFFTs.jl

Licence: MIT license
A Julia framework for implementing FFTs

Programming Languages

julia
2034 projects

Labels

Projects that are alternatives of or similar to AbstractFFTs.jl

Fftw.jl
Julia bindings to the FFTW library for fast Fourier transforms
Stars: ✭ 127 (+76.39%)
Mutual labels:  math, fft
Surge
A Swift library that uses the Accelerate framework to provide high-performance functions for matrix math, digital signal processing, and image manipulation.
Stars: ✭ 4,945 (+6768.06%)
Mutual labels:  math, fft
math
Useful m-scripts for DSP (CIC, FIR, FFT, Fast convolution, Partial Filters etc.)
Stars: ✭ 15 (-79.17%)
Mutual labels:  math, fft
Mathnet Numerics
Math.NET Numerics
Stars: ✭ 2,688 (+3633.33%)
Mutual labels:  math, fft
fftpack
Double precision version of fftpack
Stars: ✭ 44 (-38.89%)
Mutual labels:  fft
PyAbel
A python package for Abel and inverse Abel transforms
Stars: ✭ 74 (+2.78%)
Mutual labels:  math
data
A community database of topological counterexamples
Stars: ✭ 42 (-41.67%)
Mutual labels:  math
unity-music-visualizer
Basic music visualization project for Unity.
Stars: ✭ 39 (-45.83%)
Mutual labels:  fft
fftWater
Ocean simulation based on the paper of Jerry Tessendorf: Simulating Ocean Water
Stars: ✭ 20 (-72.22%)
Mutual labels:  fft
pyrgg
🔧 Python Random Graph Generator
Stars: ✭ 158 (+119.44%)
Mutual labels:  math
augmath
Interactive Computer Algebra System. Augmenting how we *do* mathematics using computers
Stars: ✭ 41 (-43.06%)
Mutual labels:  math
Mathos-Project
The Mathos Core Library
Stars: ✭ 22 (-69.44%)
Mutual labels:  math
intel-mkl-src
Redistribute Intel MKL as a crate
Stars: ✭ 52 (-27.78%)
Mutual labels:  fft
Mathematics for Machine Learning
Learn mathematics behind machine learning and explore different mathematics in machine learning.
Stars: ✭ 28 (-61.11%)
Mutual labels:  math
showdown-katex
Math typesetting for showdown
Stars: ✭ 32 (-55.56%)
Mutual labels:  math
codex
A repository of mathematical knowledge written in the MathLingua language.
Stars: ✭ 17 (-76.39%)
Mutual labels:  math
mathjax-node-cli
CLI tools for mathjax-node
Stars: ✭ 27 (-62.5%)
Mutual labels:  math
Mather
A powerful expression-based calculator, unit converter, and general computation engine for Android
Stars: ✭ 49 (-31.94%)
Mutual labels:  math
Atosym
algebraic expressions parsing and evaluation through a property system based algorithm
Stars: ✭ 15 (-79.17%)
Mutual labels:  math
gpyfft
python wrapper for the OpenCL FFT library clFFT
Stars: ✭ 52 (-27.78%)
Mutual labels:  fft

AbstractFFTs.jl

A general framework for fast Fourier transforms (FFTs) in Julia.

Travis Coveralls

Documentation:

This package is mainly not intended to be used directly. Instead, developers of packages that implement FFTs (such as FFTW.jl or FastTransforms.jl) extend the types/functions defined in AbstractFFTs. This allows multiple FFT packages to co-exist with the same underlying fft(x) and plan_fft(x) interface.

Developer information

To define a new FFT implementation in your own module, you should

  • Define a new subtype (e.g. MyPlan) of AbstractFFTs.Plan{T} for FFTs and related transforms on arrays of T. This must have a pinv::Plan field, initially undefined when a MyPlan is created, that is used for caching the inverse plan.

  • Define a new method AbstractFFTs.plan_fft(x, region; kws...) that returns a MyPlan for at least some types of x and some set of dimensions region. The region (or a copy thereof) should be accessible via fftdims(p::MyPlan) (which defaults to p.region).

  • Define a method of LinearAlgebra.mul!(y, p::MyPlan, x) (or A_mul_B!(y, p::MyPlan, x) on Julia prior to 0.7.0-DEV.3204) that computes the transform p of x and stores the result in y.

  • Define a method of *(p::MyPlan, x), which can simply call your mul! (or A_mul_B!) method. This is not defined generically in this package due to subtleties that arise for in-place and real-input FFTs.

  • If the inverse transform is implemented, you should also define plan_inv(p::MyPlan), which should construct the inverse plan to p, and plan_bfft(x, region; kws...) for an unnormalized inverse ("backwards") transform of x.

  • You can also define similar methods of plan_rfft and plan_brfft for real-input FFTs.

The normalization convention for your FFT should be that it computes yₖ = ∑ⱼ xⱼ exp(-2πi jk/n) for a transform of length n, and the "backwards" (unnormalized inverse) transform computes the same thing but with exp(+2πi jk/n).

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].