Skip to content

Commit 57fe852

Browse files
update docs
1 parent e896c4a commit 57fe852

File tree

2 files changed

+18
-27
lines changed

2 files changed

+18
-27
lines changed

README.md

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@
22

33
[![Travis](https://travis-ci.org/MikaelSlevinsky/FastTransforms.jl.svg?branch=master)](https://travis-ci.org/MikaelSlevinsky/FastTransforms.jl) [![AppVeyor](https://ci.appveyor.com/api/projects/status/oba9qush15q3x8pb/branch/master?svg=true)](https://ci.appveyor.com/project/MikaelSlevinsky/fasttransforms-jl/branch/master) [![codecov](https://codecov.io/gh/MikaelSlevinsky/FastTransforms.jl/branch/master/graph/badge.svg)](https://codecov.io/gh/MikaelSlevinsky/FastTransforms.jl) [![](https://img.shields.io/badge/docs-stable-blue.svg)](https://MikaelSlevinsky.github.io/FastTransforms.jl/stable) [![](https://img.shields.io/badge/docs-latest-blue.svg)](https://MikaelSlevinsky.github.io/FastTransforms.jl/latest)
44

5-
The aim of this package is to provide fast orthogonal polynomial transforms that are designed for expansions of functions with any degree of regularity. There are multiple approaches to the classical connection problem, though the user does not need to know the specifics.
5+
Orthogonal polynomials are instrumental in approximation theory, numerical analysis, and signal processing. `FastTransforms.jl` allows the user to conveniently work with orthogonal polynomials with degrees well into the millions. Many algorithms have been derived for accelerating orthogonal polynomial transforms, though the user need not know the specifics.
66

7-
One approach is based on the use of asymptotic formulae to relate the transforms to a small number of fast Fourier transforms. Another approach is based on a Toeplitz-dot-Hankel decomposition of the matrix of connection coefficients. Alternatively, the matrix of connection coefficients may be decomposed hierarchically à la Fast Multipole Method.
7+
Transforms include conversion between Jacobi polynomial expansions, with Chebyshev, Legendre, and ultraspherical polynomial transforms as special cases. For the signal processor, all three types of nonuniform fast Fourier transforms available. As well, spherical harmonic transforms and transforms between orthogonal polynomials on the triangle allow for the efficient simulation of partial differential equations of evolution.
8+
9+
Algorithms include methods based on asymptotic formulae to relate the transforms to a small number of fast Fourier transforms, matrix factorizations based on the Hadamard product, hierarchical matrix decompositions à la Fast Multipole Method, and the butterfly algorithm.
810

911
## The Chebyshev—Legendre Transform
1012

@@ -52,28 +54,21 @@ The Chebyshev—Jacobi transform allows the fast conversion of Chebyshev expansi
5254
```julia
5355
julia> c = rand(10001);
5456

55-
julia> @time norm(icjt(cjt(c,0.1,-0.2),0.1,-0.2)-c,Inf)
57+
julia> @time norm(icjt(cjt(c, 0.1, -0.2), 0.1, -0.2) - c, Inf)
5658
0.258390 seconds (431 allocations: 6.278 MB)
5759
1.4830359162942841e-12
5860

59-
julia> p1 = plan_cjt(c,0.1,-0.2);
61+
julia> p1 = plan_cjt(c, 0.1, -0.2);
6062

61-
julia> p2 = plan_icjt(c,0.1,-0.2);
63+
julia> p2 = plan_icjt(c, 0.1, -0.2);
6264

63-
julia> @time norm(p2*(p1*c)-c,Inf)
65+
julia> @time norm(p2*(p1*c) - c, Inf)
6466
0.244842 seconds (17 allocations: 469.344 KB)
6567
1.4830359162942841e-12
6668

6769
```
6870

69-
The design and implementation is analogous to FFTW: there is a type `ChebyshevJacobiPlan`
70-
that stores pre-planned optimized DCT-I and DST-I plans, recurrence coefficients,
71-
and temporary arrays to allow the execution of either the `cjt` or the `icjt` allocation-free.
72-
This type is constructed with either `plan_cjt` or `plan_icjt`. Composition of transforms
73-
allows the Jacobi—Jacobi transform, computed via `jjt`. The remainder in Hahn's asymptotic expansion
74-
is valid for the half-open square `(α,β) ∈ (-1/2,1/2]^2`. Therefore, the fast transform works best
75-
when the parameters are inside. If the parameters `(α,β)` are not exceptionally beyond the square,
76-
then increment/decrement operators are used with linear complexity (and linear conditioning) in the degree.
71+
Composition of transforms allows the Jacobi—Jacobi transform, computed via `jjt`. The remainder in Hahn's asymptotic expansion is valid for the half-open square `(α,β) ∈ (-1/2,1/2]^2`. Therefore, the fast transform works best when the parameters are inside. If the parameters `(α,β)` are not exceptionally beyond the square, then increment/decrement operators are used with linear complexity (and linear conditioning) in the degree.
7772

7873
## Nonuniform fast Fourier transforms
7974

@@ -85,6 +80,7 @@ The NUFFTs are implemented thanks to [Alex Townsend](https://github.com/ajt60gai
8580
- `inufft2` inverts an `nufft2`.
8681

8782
Here is an example:
83+
8884
```julia
8985
julia> n = 10^4;
9086

@@ -124,19 +120,20 @@ The Padua transform and its inverse are implemented thanks to [Michael Clarke](h
124120
```julia
125121
julia> n = 200;
126122

127-
julia> N = div((n+1)*(n+2),2);
123+
julia> N = div((n+1)*(n+2), 2);
128124

129125
julia> v = rand(N); # The length of v is the number of Padua points
130126

131-
julia> @time norm(ipaduatransform(paduatransform(v))-v)
127+
julia> @time norm(ipaduatransform(paduatransform(v)) - v)
132128
0.006571 seconds (846 allocations: 1.746 MiB)
133129
3.123637691861415e-14
134130

135131
```
136132

137133
## The Spherical Harmonic Transform
138134

139-
Let `F` be a matrix of spherical harmonic expansion coefficients arranged by increasing order in absolute value, alternating between negative and positive orders. Then `sph2fourier` converts the representation into a bivariate Fourier series, and `fourier2sph` converts it back.
135+
Let `F` be a matrix of spherical harmonic expansion coefficients with columns arranged by increasing order in absolute value, alternating between negative and positive orders. Then `sph2fourier` converts the representation into a bivariate Fourier series, and `fourier2sph` converts it back.
136+
140137
```julia
141138
julia> F = sphrandn(Float64, 256, 256);
142139

docs/src/index.md

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,11 @@
22

33
## Introduction
44

5-
In numerical analysis, it is customary to expand a function in a basis:
6-
```math
7-
f(x) = \sum_{\ell=0}^{\infty} f_{\ell} \phi_{\ell}(x).
8-
```
9-
It may be necessary to transform our representation to one in a new basis, say, ``\{\psi_m(x)\}_{m\ge0}``:
10-
```math
11-
f(x) = \sum_{m=0}^{\infty} g_m \psi_m(x).
12-
```
13-
In many cases of interest, both representations have finite dimension ``n`` and we seek a fast method (faster than ``\mathcal{O}(n^2)``) to transform the original coefficients ``f_{\ell}`` to the new coefficients ``g_m``.
5+
Orthogonal polynomials are instrumental in approximation theory, numerical analysis, and signal processing. `FastTransforms.jl` allows the user to conveniently work with orthogonal polynomials with degrees well into the millions. Many algorithms have been derived for accelerating orthogonal polynomial transforms, though the user need not know the specifics.
6+
7+
Transforms include conversion between Jacobi polynomial expansions, with Chebyshev, Legendre, and ultraspherical polynomial transforms as special cases. For the signal processor, all three types of nonuniform fast Fourier transforms available. As well, spherical harmonic transforms and transforms between orthogonal polynomials on the triangle allow for the efficient simulation of partial differential equations of evolution.
148

15-
A similar problem arises when we wish to evaluate ``f`` at a set of points ``\{x_m\}_{m=0}^n``. We wish to transform coefficients of ``f`` to values at the set of points in fewer than ``\mathcal{O}(n^2)`` operations.
9+
Algorithms include methods based on asymptotic formulae to relate the transforms to a small number of fast Fourier transforms, matrix factorizations based on the Hadamard product, hierarchical matrix decompositions à la Fast Multipole Method, and the butterfly algorithm.
1610

1711
## Fast Transforms
1812

0 commit comments

Comments
 (0)