FastTransforms.jl Documentation
Introduction
FastTransforms.jl
allows the user to conveniently work with orthogonal polynomials with degrees well into the millions.
This package provides a Julia wrapper for the C library of the same name. Additionally, all three types of nonuniform fast Fourier transforms available, as well as the Padua transform.
Fast orthogonal polynomial transforms
For this documentation, please see the documentation for FastTransforms. Most transforms have separate forward and inverse plans. In some instances, however, the inverse is in the sense of least-squares, and therefore only the forward transform is planned.
Fast Cholesky factorization of the Gram matrix
FastTransforms.GramMatrix
— TypeGramMatrix(W::AbstractMatrix, X::AbstractMatrix)
Construct a symmetric positive-definite Gram matrix with data stored in $W$. Given a family of orthogonal polynomials ${\bf P}(x) = \{p_0(x), p_1(x),\ldots\}$ and a continuous inner product $\langle f, g\rangle$, the Gram matrix is defined by:
Moreover, given $X$, the transposed Jacobi matrix that satisfies $x {\bf P}(x) = {\bf P}(x) X$, the Gram matrix satisfies the skew-symmetric rank-2 displacement equation ($X = X_{1:n, 1:n}$):
where $J = \begin{pmatrix} 0 & 1\\ -1 & 0\end{pmatrix}$ and where:
Fast ($O(n^2)$) Cholesky factorization of the Gram matrix returns the connection coefficients between ${\bf P}(x)$ and the polynomials ${\bf Q}(x)$ orthogonal in the modified inner product, ${\bf P}(x) = {\bf Q}(x) R$.
FastTransforms.ChebyshevGramMatrix
— TypeChebyshevGramMatrix(μ::AbstractVector)
Construct a Chebyshev–Gram matrix of size (length(μ)+1)÷2
with entries:
Due to the linearization of a product of two first-kind Chebyshev polynomials, the Chebyshev–Gram matrix can be constructed from modified Chebyshev moments:
Specialized construction and Cholesky factorization is given for this type.
See also GramMatrix
for the general case.
Nonuniform fast Fourier transforms
FastTransforms.nufft1
— FunctionComputes a nonuniform fast Fourier transform of type I:
Computes a 2D nonuniform fast Fourier transform of type I-I:
FastTransforms.nufft2
— FunctionComputes a nonuniform fast Fourier transform of type II:
Computes a 2D nonuniform fast Fourier transform of type II-II:
FastTransforms.nufft3
— FunctionComputes a nonuniform fast Fourier transform of type III:
FastTransforms.inufft1
— FunctionComputes an inverse nonuniform fast Fourier transform of type I.
FastTransforms.inufft2
— FunctionComputes an inverse nonuniform fast Fourier transform of type II.
FastTransforms.paduatransform
— FunctionPadua Transform maps from interpolant values at the Padua points to the 2D Chebyshev coefficients.
FastTransforms.ipaduatransform
— FunctionInverse Padua Transform maps the 2D Chebyshev coefficients to the values of the interpolation polynomial at the Padua points.
Other Exported Methods
FastTransforms.gaunt
— FunctionCalculates the Gaunt coefficients, defined by:
or defined by:
This is a Julia implementation of the stable recurrence described in:
Y.-l. Xu, Fast evaluation of Gaunt coefficients: recursive approach, J. Comp. Appl. Math., 85:53–65, 1997.
Calculates the Gaunt coefficients in 64-bit floating-point arithmetic.
FastTransforms.paduapoints
— FunctionReturns coordinates of the $(n+1)(n+2)/2$ Padua points.
FastTransforms.sphevaluate
— FunctionPointwise evaluation of real orthonormal spherical harmonic:
Internal Methods
Miscellaneous Special Functions
FastTransforms.half
— FunctionCompute a typed 0.5.
FastTransforms.two
— FunctionCompute a typed 2.
FastTransforms.δ
— FunctionThe Kronecker $\delta$ function:
FastTransforms.Λ
— FunctionThe Lambda function $\Lambda(z) = \frac{\Gamma(z+\frac{1}{2})}{\Gamma(z+1)}$ for the ratio of gamma functions.
For 64-bit floating-point arithmetic, the Lambda function uses the asymptotic series for $\tau$ in Appendix B of
I. Bogaert and B. Michiels and J. Fostier, 𝒪(1) computation of Legendre polynomials and Gauss–Legendre nodes and weights for parallel computing, SIAM J. Sci. Comput., 34:C83–C101, 2012.
The Lambda function $\Lambda(z,λ₁,λ₂) = \frac{\Gamma(z+\lambda_1)}{Γ(z+\lambda_2)}$ for the ratio of gamma functions.
FastTransforms.lambertw
— FunctionThe principal branch of the Lambert-W function, defined by $x = W_0(x) e^{W_0(x)}$, computed using Halley's method for $x \in [-e^{-1},\infty)$.
FastTransforms.pochhammer
— FunctionPochhammer symbol $(x)_n = \frac{\Gamma(x+n)}{\Gamma(x)}$ for the rising factorial.
FastTransforms.stirlingseries
— FunctionStirling's asymptotic series for $\Gamma(z)$.
Modified Chebyshev Moment-Based Quadrature
FastTransforms.clenshawcurtisnodes
— FunctionCompute nodes of the Clenshaw—Curtis quadrature rule.
FastTransforms.clenshawcurtisweights
— FunctionCompute weights of the Clenshaw—Curtis quadrature rule with modified Chebyshev moments of the first kind $\mu$.
FastTransforms.fejernodes1
— FunctionCompute nodes of Fejer's first quadrature rule.
FastTransforms.fejerweights1
— FunctionCompute weights of Fejer's first quadrature rule with modified Chebyshev moments of the first kind $\mu$.
FastTransforms.fejernodes2
— FunctionCompute nodes of Fejer's second quadrature rule.
FastTransforms.fejerweights2
— FunctionCompute weights of Fejer's second quadrature rule with modified Chebyshev moments of the second kind $\mu$.
FastTransforms.chebyshevmoments1
— FunctionModified Chebyshev moments of the first kind:
FastTransforms.chebyshevjacobimoments1
— FunctionModified Chebyshev moments of the first kind with respect to the Jacobi weight:
FastTransforms.chebyshevlogmoments1
— FunctionModified Chebyshev moments of the first kind with respect to the logarithmic weight:
FastTransforms.chebyshevmoments2
— FunctionModified Chebyshev moments of the second kind:
FastTransforms.chebyshevjacobimoments2
— FunctionModified Chebyshev moments of the second kind with respect to the Jacobi weight:
FastTransforms.chebyshevlogmoments2
— FunctionModified Chebyshev moments of the second kind with respect to the logarithmic weight:
Elliptic
FastTransforms.Elliptic
— ModuleFastTransforms
submodule for the computation of some elliptic integrals and functions.
Complete elliptic integrals of the first and second kinds:
Jacobian elliptic functions:
and the remaining nine are defined by: