FastTransforms
|
What FastTransforms actually computes.
\( \def\ud{{\rm\,d}} \def\ii{{\rm i}} \def\fl{{\rm\,fl}} \def\abs#1{\left|{#1}\right|} \def\norm#1{\left\|{#1}\right\|} \def\conj#1{\overline{#1}} \)
FastTransforms provides computational kernels and driver routines for multivariate orthogonal polynomial transforms. The algorithms are \(2\)-normwise backward stable with a runtime complexity of \(\mathcal{O}(n^{d+1})\), where \(n\) is the polynomial degree and \(d\) is the spatial dimension of the problem.
The transforms are separated into computational kernels that offer SSE, AVX, and AVX-512 vectorization on applicable Intel processors, and driver routines that are easily parallelized by OpenMP.
For every subsection below, the title of the subsection, of the form a2b
, refers conceptually to the transform and the available functions are as follows:
ft_plan_a2b
, is a pre-computation,ft_execute_a2b
, is a forward execution,ft_execute_b2a
, is a backward execution,ft_execute_a_hi2lo
, is a conversion to a tensor-product basis,ft_execute_a_lo2hi
, is a conversion from a tensor-product basis,ft_kernel_a_hi2lo
, is an orthonormal conversion from high to low order,ft_kernel_a_lo2hi
, is an orthonormal conversion from low to high order.The ft_execute_*
functions are drivers that perform transforms as defined below. They are composed of computational kernels, of the form ft_kernel_*
, that are designed to be sufficiently generic to be assembled for different parallelism and compute paradigms. For good use of SIMD, the computational kernels rely on row-major ordering of the coefficients, and for trivial shared memory parallelism, the driver routines rely on column-major ordering of the coefficients. Local permutations are utilized to balance the use of SIMD and OpenMP multithreading. Generally, the pre-computations construct a ft_harmonic_plan, which may be destroyed by a call to ft_destroy_harmonic_plan.
Real orthonormal spherical harmonics in \(L^2(\mathbb{S}^2)\) are:
\begin{align*} Y_\ell^m(\theta,\varphi) & = (-1)^{\abs{m}}\sqrt{(\ell+\tfrac{1}{2})\frac{(\ell-\abs{m})!}{(\ell+\abs{m})!}} P_\ell^{\abs{m}}(\cos\theta) \sqrt{\frac{2-\delta_{m,0}}{2\pi}} \left\{\begin{array}{ccc} \cos(m\varphi) & {\rm for} & m \ge 0,\\ \sin(\abs{m}\varphi) & {\rm for} & m < 0,\end{array}\right. \end{align*}
where \(P_\ell^m(\cos\theta)\) are the associated Legendre functions. For \(0\le m\le\ell\), these may be defined by differentiating Legendre polynomials:
\[ P_\ell^m(x) = (-1)^m (1-x^2)^{\frac{m}{2}} \dfrac{{\rm d}^m}{{\rm d} x^m} P_\ell(x), \]
and defined equivalently by ultraspherical polynomials:
\[ P_\ell^m(\cos\theta) = (-2)^m(\tfrac{1}{2})_m \sin^m\theta C_{\ell-m}^{(m+\frac{1}{2})}(\cos\theta), \]
so that the spherical harmonics have positive real phase. A degree- \((n-1)\) expansion in spherical harmonics is given by:
\[ f_{n-1}(\theta,\varphi) = \sum_{\ell=0}^{n-1}\sum_{m=-\ell}^{+\ell} f_\ell^m Y_\ell^m(\theta,\varphi). \]
If real spherical harmonic expansion coefficients are organized into the array:
\[ F = \begin{pmatrix} f_0^0 & f_1^{-1} & f_1^1 & f_2^{-2} & f_2^2 & \cdots & f_{n-1}^{1-n} & f_{n-1}^{n-1}\\ f_1^0 & f_2^{-1} & f_2^1 & f_3^{-2} & f_3^2 & \cdots & 0 & 0\\ \vdots & \vdots & \vdots & \vdots & \vdots & \ddots & \vdots & \vdots\\ f_{n-3}^0 & f_{n-2}^{-1} & f_{n-2}^1 & f_{n-1}^{-2} & f_{n-1}^2 & & \vdots & \vdots\\ f_{n-2}^0 & f_{n-1}^{-1} & f_{n-1}^1 & 0 & 0 & \cdots & 0 & 0\\ f_{n-1}^0 & 0 & 0 & 0 & 0 & \cdots & 0 & 0\\ \end{pmatrix}, \]
then ft_plan_sph2fourier creates the appropriate ft_harmonic_plan, and ft_execute_sph2fourier returns the bivariate Fourier coefficients:
\[ G = \begin{pmatrix} g_0^0 & g_0^{-1} & g_0^1 & \cdots & g_0^{1-n} & g_0^{n-1}\\ g_1^0 & g_1^{-1} & g_1^1 & \cdots & g_1^{1-n} & g_1^{n-1}\\ \vdots & \vdots & \vdots & \ddots & \vdots & \vdots\\ g_{n-2}^0 & g_{n-2}^{-1} & g_{n-2}^1& \cdots & g_{n-2}^{1-n} & g_{n-2}^{n-1}\\ g_{n-1}^0 & 0 & 0 & \cdots & g_{n-1}^{1-n} & g_{n-1}^{n-1}\\ \end{pmatrix}. \]
That is:
\[ f_n(\theta,\varphi) = \sum_{\ell=0}^{n-1}\sum_{m=1-n}^{n-1} g_\ell^m \left\{\begin{array}{ccc} \cos(\ell\theta) & {\rm for} & m~{\rm even},\\ \sin((\ell+1)\theta) & {\rm for} & m~{\rm odd},\end{array}\right\} \sqrt{\frac{2-\delta_{m,0}}{2\pi}}\left\{\begin{array}{ccc} \cos(m\varphi) & {\rm for} & m \ge 0,\\ \sin(\abs{m}\varphi) & {\rm for} & m < 0,\end{array}\right. \]
and ft_execute_fourier2sph converts them back.
Real orthonormal generalized Zernike polynomials in \(L^2(\mathbb{D}^2, r^{2\alpha+1}(1-r^2)^\beta\ud r\ud\theta)\) are:
\[ Z_{\ell,m}^{(\alpha,\beta)}(r,\theta) = 2^{\frac{\abs{m}+\alpha+\beta+2}{2}} r^{\abs{m}}\tilde{P}_{\frac{\ell-\abs{m}}{2}}^{(\beta,\abs{m}+\alpha)}(2r^2-1) \sqrt{\frac{2-\delta_{m,0}}{2\pi}} \left\{\begin{array}{ccc} \cos(m\theta) & {\rm for} & m \ge 0,\\ \sin(\abs{m}\theta) & {\rm for} & m < 0,\end{array}\right. \]
where the tilde implies that the univariate Jacobi polynomials are orthonormal. A degree- \((2n-2)\) expansion in generalized Zernike polynomials is given by:
\[ f_{2n-2}(r,\theta) = \sum_{\ell=0}^{2n-2}\sum_{m=-\ell,2}^{+\ell} f_\ell^m Z_{\ell,m}^{(\alpha,\beta)}(r,\theta), \]
where the \(,2\) in the inner summation index implies that the inner summation runs from \(m=-\ell\) in steps of \(2\) up to \(+\ell\). If generalized Zernike expansion coefficients are organized into the array:
\[ F = \begin{pmatrix} f_0^0 & f_1^{-1} & f_1^1 & f_2^{-2} & f_2^2 & \cdots & f_{2n-2}^{2-2n} & f_{2n-2}^{2n-2}\\ f_2^0 & f_3^{-1} & f_3^1 & f_4^{-2} & f_4^2 & \cdots & 0 & 0\\ \vdots & \vdots & \vdots & \vdots & \vdots & \ddots & \vdots & \vdots\\ f_{2n-6}^0 & f_{2n-5}^{-1} & f_{2n-5}^1 & f_{2n-4}^{-2} & f_{2n-4}^2 & & \vdots & \vdots\\ f_{2n-4}^0 & f_{2n-3}^{-1} & f_{2n-3}^1 & f_{2n-2}^{-2} & f_{2n-2}^2 & \cdots & 0 & 0\\ f_{2n-2}^0 & 0 & 0 & 0 & 0 & \cdots & 0 & 0\\ \end{pmatrix}, \]
then ft_plan_disk2cxf creates the appropriate ft_harmonic_plan, and ft_execute_disk2cxf returns the even Chebyshev–Fourier coefficients:
\[ G = \begin{pmatrix} g_0^0 & g_0^{-1} & g_0^1 & g_0^{-2} & g_0^2 & \cdots & g_0^{2-2n} & g_0^{2n-2}\\ g_2^0 & g_2^{-1} & g_2^1 & g_2^{-2} & g_2^2 & \cdots & g_2^{2-2n} & g_2^{2n-2}\\ \vdots & \vdots & \vdots & \vdots & \vdots & \ddots & \vdots & \vdots\\ g_{2n-4}^0 & g_{2n-4}^{-1} & g_{2n-4}^1 & g_{2n-4}^{-2} & g_{2n-4}^2 & \cdots & g_{2n-4}^{2-2n} & g_{2n-4}^{2n-2}\\ g_{2n-2}^0 & 0 & 0 & g_{2n-2}^{-2} & g_{2n-2}^2 & \cdots & g_{2n-2}^{2-2n} & g_{2n-2}^{2n-2}\\ \end{pmatrix}. \]
That is:
\[ f_{2n-2}(r,\theta) = \sum_{\ell=0}^{n-1}\sum_{m=2-2n}^{2n-2} g_{2\ell}^m \left\{\begin{array}{ccc} T_{2\ell}(r) & {\rm for} & m~{\rm even},\\ T_{2\ell+1}(r) & {\rm for} & m~{\rm odd},\end{array}\right\} \sqrt{\frac{2-\delta_{m,0}}{2\pi}}\left\{\begin{array}{ccc} \cos(m\theta) & {\rm for} & m \ge 0,\\ \sin(\abs{m}\theta) & {\rm for} & m < 0,\end{array}\right. \]
and ft_execute_cxf2disk converts them back.
Consider \(P_n^{t,(\alpha,\beta,\gamma)}(x)\) to be orthogonal polynomials in \(L^2([-1,1], (1-x)^\alpha(1+x)^\beta(t+x)^\gamma\ud x)\), for parameter values \(\{t>1, \alpha,\beta>-1, \gamma\in\mathbb{R}\}\cup\{t=1, \alpha,\beta+\gamma>-1\}\).
Real orthonormal annulus polynomials in \(L^2(\{(r,\theta) : \rho < r < 1, 0 < \theta < 2\pi\}, r^{2\gamma+1}(r^2-\rho^2)^\alpha(1-r^2)^\beta\ud r\ud\theta)\) are:
\[ Z_{\ell,m}^{\rho,(\alpha,\beta,\gamma)}(r,\theta) = \sqrt{2} \left(\frac{2}{1-\rho^2}\right)^{\frac{\abs{m}+\alpha+\beta+\gamma+1}{2}} r^{\abs{m}}\tilde{P}_{\frac{\ell-\abs{m}}{2}}^{\frac{1+\rho^2}{1-\rho^2},(\beta,\alpha,\abs{m}+\gamma)}\left(\frac{2r^2-1-\rho^2}{1-\rho^2}\right) \sqrt{\frac{2-\delta_{m,0}}{2\pi}} \left\{\begin{array}{ccc} \cos(m\theta) & {\rm for} & m \ge 0,\\ \sin(\abs{m}\theta) & {\rm for} & m < 0,\end{array}\right. \]
where the tilde implies that \(\tilde{P}_n^{t,(\alpha,\beta,\gamma)}(x)\) are orthonormal. In the limit as \(\rho\to0\), the annulus polynomials converge to the Zernike polynomials, \(Z_{\ell,m}^{0,(\alpha,\beta,\gamma)}(r, \theta) = Z_{\ell,m}^{(\alpha+\gamma,\beta)}(r, \theta)\). A degree- \((2n-2)\) expansion in annulus polynomials is given by:
\[ f_{2n-2}(r,\theta) = \sum_{\ell=0}^{2n-2}\sum_{m=-\ell,2}^{+\ell} f_\ell^m Z_{\ell,m}^{\rho,(\alpha,\beta,\gamma)}(r,\theta), \]
where the \(,2\) in the inner summation index implies that the inner summation runs from \(m=-\ell\) in steps of \(2\) up to \(+\ell\). If annulus polynomial expansion coefficients are organized into the array:
\[ F = \begin{pmatrix} f_0^0 & f_1^{-1} & f_1^1 & f_2^{-2} & f_2^2 & \cdots & f_{2n-2}^{2-2n} & f_{2n-2}^{2n-2}\\ f_2^0 & f_3^{-1} & f_3^1 & f_4^{-2} & f_4^2 & \cdots & 0 & 0\\ \vdots & \vdots & \vdots & \vdots & \vdots & \ddots & \vdots & \vdots\\ f_{2n-6}^0 & f_{2n-5}^{-1} & f_{2n-5}^1 & f_{2n-4}^{-2} & f_{2n-4}^2 & & \vdots & \vdots\\ f_{2n-4}^0 & f_{2n-3}^{-1} & f_{2n-3}^1 & f_{2n-2}^{-2} & f_{2n-2}^2 & \cdots & 0 & 0\\ f_{2n-2}^0 & 0 & 0 & 0 & 0 & \cdots & 0 & 0\\ \end{pmatrix}, \]
then ft_plan_ann2cxf creates the appropriate ft_harmonic_plan, and ft_execute_ann2cxf returns the even Chebyshev–Fourier coefficients:
\[ G = \begin{pmatrix} g_0^0 & g_0^{-1} & g_0^1 & g_0^{-2} & g_0^2 & \cdots & g_0^{2-2n} & g_0^{2n-2}\\ g_2^0 & g_2^{-1} & g_2^1 & g_2^{-2} & g_2^2 & \cdots & g_2^{2-2n} & g_2^{2n-2}\\ \vdots & \vdots & \vdots & \vdots & \vdots & \ddots & \vdots & \vdots\\ g_{2n-4}^0 & g_{2n-4}^{-1} & g_{2n-4}^1 & g_{2n-4}^{-2} & g_{2n-4}^2 & \cdots & g_{2n-4}^{2-2n} & g_{2n-4}^{2n-2}\\ g_{2n-2}^0 & 0 & 0 & g_{2n-2}^{-2} & g_{2n-2}^2 & \cdots & g_{2n-2}^{2-2n} & g_{2n-2}^{2n-2}\\ \end{pmatrix}. \]
That is:
\[ f_{2n-2}(r,\theta) = \sum_{\ell=0}^{n-1}\sum_{m=2-2n}^{2n-2} g_{2\ell}^m \left\{\begin{array}{ccc} T_{\ell}\left(\frac{2r^2-1-\rho^2}{1-\rho^2}\right) & {\rm for} & m~{\rm even},\\ \sqrt{\frac{2}{1-\rho^2}}rT_{\ell}\left(\frac{2r^2-1-\rho^2}{1-\rho^2}\right) & {\rm for} & m~{\rm odd},\end{array}\right\} \sqrt{\frac{2-\delta_{m,0}}{2\pi}}\left\{\begin{array}{ccc} \cos(m\theta) & {\rm for} & m \ge 0,\\ \sin(\abs{m}\theta) & {\rm for} & m < 0,\end{array}\right. \]
and ft_execute_cxf2ann converts them back.
Real orthonormal Dunkl–Xu polynomials in \(L^2(\mathbb{D}^2, (1-x^2-y^2)^\beta\ud x\ud y)\) are:
\[ \tilde{P}_{\ell,m}^{(\beta)}(x,y) = (1-x^2)^{\frac{m}{2}}\tilde{P}_{\ell-m}^{(m+\beta+\frac{1}{2},m+\beta+\frac{1}{2})}(x) \tilde{P}_m^{(\beta,\beta)}\left(\frac{y}{\sqrt{1-x^2}}\right), \]
where the tilde implies that the univariate Jacobi polynomials are orthonormal. A degree- \((n-1)\) expansion in Dunkl–Xu polynomials is given by:
\[ f_{n-1}(x,y) = \sum_{\ell=0}^{n-1}\sum_{m=0}^\ell f_\ell^m \tilde{P}_{\ell,m}^{(\beta)}(x,y). \]
If Dunkl–Xu expansion coefficients are organized into the array:
\[ F = \begin{pmatrix} f_0^0 & f_1^1 & f_2^2 & \cdots & f_{n-1}^{n-1}\\ \vdots & \vdots & \vdots & \ddots & 0\\ f_{n-3}^0 & f_{n-2}^1 & f_{n-1}^2 & & \vdots\\ f_{n-2}^0 & f_{n-1}^1 & 0 & \cdots & 0\\ f_{n-1}^0 & 0 & 0 & \cdots & 0\\ \end{pmatrix}, \]
then ft_plan_rectdisk2cheb creates the appropriate ft_harmonic_plan, and ft_execute_rectdisk2cheb returns the bivariate (partially weighted) Chebyshev coefficients:
\[ G = \begin{pmatrix} g_0^0 & g_0^1 & \cdots & g_0^{n-1}\\ g_1^0 & g_1^1 & \cdots & g_1^{n-1}\\ \vdots & \vdots & \ddots & \vdots\\ g_{n-2}^0 & g_{n-2}^1 & \cdots & g_{n-2}^{n-1}\\ g_{n-1}^0 & 0 & \cdots & g_{n-1}^{n-1}\\ \end{pmatrix}. \]
That is:
\[ f_{n-1}(x,y) = \sum_{\ell=0}^{n-1}\sum_{m=0}^{n-1} g_\ell^m \left\{\begin{array}{ccc} T_\ell(x) & {\rm for} & m~{\rm even},\\ \sqrt{1-x^2}U_\ell(x) & {\rm for} & m~{\rm odd},\end{array}\right\} T_m\left(\frac{y}{\sqrt{1-x^2}}\right), \]
and ft_execute_cheb2rectdisk converts them back.
Proriol polynomials on the triangle with vertices \((0,0)\), \((1,0)\), and \((0,1)\) are:
\[ \tilde{P}_{\ell,m}^{(\alpha,\beta,\gamma)}(x,y) = (2-2x)^m \tilde{P}_{\ell-m}^{(2m+\beta+\gamma+1,\alpha)}(2x-1) \tilde{P}_m^{(\gamma,\beta)}\left(\frac{2y}{1-x}-1\right), \]
where the tilde implies that the univariate Jacobi polynomials are orthonormal. A degree- \((n-1)\) expansion in Proriol polynomials is given by:
\[ f_{n-1}(x,y) = \sum_{\ell=0}^{n-1}\sum_{m=0}^\ell f_\ell^m \tilde{P}_{\ell,m}^{(\alpha,\beta,\gamma)}(x,y). \]
If Proriol expansion coefficients are organized into the array:
\[ F = \begin{pmatrix} f_0^0 & f_1^1 & f_2^2 & \cdots & f_{n-1}^{n-1}\\ \vdots & \vdots & \vdots & \ddots & 0\\ f_{n-3}^0 & f_{n-2}^1 & f_{n-1}^2 & & \vdots\\ f_{n-2}^0 & f_{n-1}^1 & 0 & \cdots & 0\\ f_{n-1}^0 & 0 & 0 & \cdots & 0\\ \end{pmatrix}, \]
then ft_plan_tri2cheb creates the appropriate ft_harmonic_plan, and ft_execute_tri2cheb returns the bivariate Chebyshev coefficients:
\[ G = \begin{pmatrix} g_0^0 & g_0^1 & \cdots & g_0^{n-1}\\ g_1^0 & g_1^1 & \cdots & g_1^{n-1}\\ \vdots & \vdots & \ddots & \vdots\\ g_{n-1}^0 & g_{n-1}^1 & \cdots & g_{n-1}^{n-1}\\ \end{pmatrix}. \]
That is:
\[ f_{n-1}(x,y) = \sum_{\ell=0}^{n-1}\sum_{m=0}^{n-1} g_\ell^m T_\ell(2x-1) T_m\left(\frac{2y}{1-x}-1\right), \]
and ft_execute_cheb2tri converts them back.
Proriol polynomials on the simplex with vertices \((0,0,0)\), \((1,0,0)\), \((0,1,0)\), and \((0,0,1)\) are:
\[ \tilde{P}_{k,\ell,m}^{(\alpha,\beta,\gamma,\delta)}(x,y,z) = (2-2x)^{\ell+m} \tilde{P}_{k-\ell-m}^{(2\ell+2m+\beta+\gamma+\delta+2,\alpha)}(2x-1) \left(2-\frac{2y}{1-x}\right)^m \tilde{P}_\ell^{(2m+\gamma+\delta+1,\beta)}\left(\frac{2y}{1-x}-1\right) \tilde{P}_m^{(\delta,\gamma)}\left(\frac{2z}{1-x-y}-1\right), \]
where the tilde implies that the univariate Jacobi polynomials are orthonormal. A degree- \((n-1)\) expansion in Proriol polynomials is given by:
\[ f_{n-1}(x,y,z) = \sum_{k=0}^{n-1}\sum_{\ell=0}^k\sum_{m=0}^{k-\ell} f_{k,\ell}^m \tilde{P}_{k,\ell,m}^{(\alpha,\beta,\gamma,\delta)}(x,y,z) = \sum_{m=0}^{n-1}\sum_{\ell=0}^{n-1-m}\sum_{k=\ell+m}^{n-1} f_{k,\ell}^m \tilde{P}_{k,\ell,m}^{(\alpha,\beta,\gamma,\delta)}(x,y,z). \]
If Proriol expansion coefficients are organized into the rank- \(3\) array whose \(m^{\rm th}\) slice is:
\[ F[0:n-m-1,0:n-m-1,m] = \begin{pmatrix} f_{m,0}^m & f_{1+m,1}^m & f_{2+m,2}^m & \cdots & f_{n-1,n-1-m}^m\\ \vdots & \vdots & \vdots & \ddots & 0\\ f_{n-3,0}^m & f_{n-2,1}^m & f_{n-1,2}^m & & \vdots\\ f_{n-2,0}^m & f_{n-1,1}^m & 0 & \cdots & 0\\ f_{n-1,0}^m & 0 & 0 & \cdots & 0\\ \end{pmatrix}, \]
then ft_plan_tet2cheb creates the appropriate ft_tetrahedral_harmonic_plan, and ft_execute_tet2cheb returns the trivariate Chebyshev coefficients stored in the rank- \(3\) array \(G\). That is:
\[ f_{n-1}(x,y,z) = \sum_{k=0}^{n-1}\sum_{\ell=0}^{n-1}\sum_{m=0}^{n-1} g_{k,\ell}^m T_k(2x-1) T_\ell\left(\frac{2y}{1-x}-1\right) T_m\left(\frac{2z}{1-x-y}-1\right). \]
Complex-valued orthonormal spin-weighted spherical harmonics in \(L^2(\mathbb{S}^2)\) are:
\begin{align*} Y_{\ell,m}^s(\theta,\varphi) & = \frac{e^{\ii m\varphi}}{\sqrt{2\pi}} \sqrt{(\ell+\tfrac{1}{2})\frac{(\ell+\ell_0)!(\ell-\ell_0)!}{(\ell+\ell_1)!(\ell-\ell_1)!}} \sin^{\abs{m+s}}(\tfrac{\theta}{2})\cos^{\abs{m-s}}(\tfrac{\theta}{2}) P_{\ell-\ell_0}^{(\abs{m+s},\abs{m-s})}(\cos\theta), \end{align*}
where \(P_n^{(\alpha,\beta)}(\cos\theta)\) are the Jacobi polynomials and \(\ell_0 = \max\{\abs{m},\abs{s}\}\) and \(\ell_1 = \min\{\abs{m},\abs{s}\}\). A degree- \((n-1)\) expansion in spin-weighted spherical harmonics is given by:
\[ f_{n-1}^s(\theta,\varphi) = \sum_{\ell=\ell_0}^{n-1}\sum_{m=-\ell}^{+\ell} f_\ell^m Y_{\ell,m}^s(\theta,\varphi). \]
If spin-weighted spherical harmonic expansion coefficients with \(s=2\), for example, are organized into the array:
\[ F = \begin{pmatrix} f_2^0 & f_2^{-1} & f_2^1 & f_2^{-2} & f_2^2 & \cdots & f_{n-1}^{1-n} & f_{n-1}^{n-1}\\ f_3^0 & f_3^{-1} & f_3^1 & f_3^{-2} & f_3^2 & \cdots & 0 & 0\\ \vdots & \vdots & \vdots & \vdots & \vdots & \ddots & \vdots & \vdots\\ f_{n-1}^0 & f_{n-1}^{-1} & f_{n-1}^1 & f_{n-1}^{-2} & f_{n-1}^2 & & \vdots & \vdots\\ 0 & 0 & 0 & 0 & 0 & \cdots & 0 & 0\\ 0 & 0 & 0 & 0 & 0 & \cdots & 0 & 0\\ \end{pmatrix}, \]
then ft_execute_spinsph2fourier returns the bivariate Fourier coefficients:
\[ G = \begin{pmatrix} g_0^0 & g_0^{-1} & g_0^1 & \cdots & g_0^{1-n} & g_0^{n-1}\\ g_1^0 & g_1^{-1} & g_1^1 & \cdots & g_1^{1-n} & g_1^{n-1}\\ \vdots & \vdots & \vdots & \ddots & \vdots & \vdots\\ g_{n-2}^0 & g_{n-2}^{-1} & g_{n-2}^1& \cdots & g_{n-2}^{1-n} & g_{n-2}^{n-1}\\ g_{n-1}^0 & 0 & 0 & \cdots & g_{n-1}^{1-n} & g_{n-1}^{n-1}\\ \end{pmatrix}. \]
That is:
\[ f_{n-1}^s(\theta,\varphi) = \sum_{\ell=0}^{n-1}\sum_{m=1-n}^{n-1} g_\ell^m \frac{e^{\ii m\varphi}}{\sqrt{2\pi}} \left\{\begin{array}{ccc} \cos(\ell\theta) & {\rm for} & m+s~{\rm even},\\ \sin((\ell+1)\theta) & {\rm for} & m+s~{\rm odd}.\end{array}\right. \]
This convention has positive real phase, which implies identities such as:
\[ \overline{Y}_{\ell,m}^s(\theta,\varphi) = Y_{\ell,-m}^{-s}(\theta,\varphi). \]
Spherical Gauss–Laguerre functions are:
\[ \psi_{k,\ell,m}(r,\theta,\varphi) = r^\ell \tilde{L}_{k-\ell}^{(2\ell+2)}(r) Y_\ell^m(\theta,\varphi), \]
where the \(Y_\ell^m(\theta,\varphi)\) are spherical harmonics, and the \(\tilde{L}_n^{(\alpha)}(r)\) are normalized generalized Laguerre polynomials. A degree- \((n-1)\) expansion in spherical Gauss–Laguerre functions is given by:
\[ f_{n-1}(r,\theta,\varphi) = \sum_{k=0}^{n-1}\sum_{\ell=0}^k\sum_{m=-\ell}^{+\ell}f_{k,\ell}^m \psi_{k,\ell,m}(r,\theta,\varphi). \]