s2fft is currently in an open beta, please provide feedback on GitHub

Wigner-d recursions#

Price-McEwen recursion functions#

Function Name

Description

compute_all_slices()

Computes all necessary slices of Wigner-d planes using Price-McEwen recursion (NumPy).

compute_all_slices_jax()

Computes all necessary slices of Wigner-d planes using Price-McEwen recursion (JAX).

generate_precomputes()

Constructs list of \(\mathcal{O}(L^2)\) precomputes to accelerate Price-McEwen recursion for spin-spherical harmonic transform (NumPy).

generate_precomputes_jax()

Constructs list of \(\mathcal{O}(L^2)\) precomputes to accelerate Price-McEwen recursion for spin-spherical harmonic transform (JAX).

generate_precomputes_wigner()

Constructs list of \(\mathcal{O}(NL^2)\) precomputes to accelerate Price-McEwen recursion for Wigner transform (NumPy).

generate_precomputes_wigner_jax()

Constructs list of \(\mathcal{O}(NL^2)\) precomputes to accelerate Price-McEwen recursion for Wigner transform (JAX).

Turok-Bucher recursion functions#

Function Name

Description

compute_full()

Compute the complete Wigner-d matrix at polar angle \(\beta\) using Turok & Bucher recursion.

compute_slice()

Compute a particular slice \(m^{\prime}\), denoted mm, of the complete Wigner-d matrix at polar angle \(\beta\) using Turok & Bucher recursion.

compute_quarter_slice()

Compute a single slice at \(m^{\prime}\) of the Wigner-d matrix evaluated at \(\beta\).

compute_quarter()

Compute the left quarter triangle of the Wigner-d matrix via Turok & Bucher recursion.

fill()

Reflects Wigner-d quarter plane to complete full matrix by using symmetry properties of the Wigner-d matrices.

compute_slice() (JAX)

Compute a particular slice \(m^{\prime}\), denoted mm, of the complete Wigner-d matrix at polar angle \(\beta\) using Turok & Bucher recursion (JAX).

reindex() (JAX)

Reorders indexing of Wigner-d matrix, only necessary to maintain fixed length JAX arrays.

Trapani recursion functions#

Function Name

Description

compute_eighth()

Compute Wigner-d at argument \(\pi/2\) for eighth of plane using Trapani & Navaza recursion.

compute_quarter_vectorized()

Compute Wigner-d at argument \(\pi/2\) for quarter of plane using Trapani & Navaza recursion (vector implementation).

compute_quarter_jax()

Compute Wigner-d at argument \(\pi/2\) for quarter of plane using Trapani & Navaza recursion (JAX implementation).

fill_eighth2quarter()

Fill in quarter of Wigner-d plane from eighth.

fill_quarter2half()

Fill in half of Wigner-d plane from quarter.

fill_quarter2half_vectorized()

Fill in half of Wigner-d plane from quarter (vectorised implementation).

fill_quarter2half_jax()

Fill in half of Wigner-d plane from quarter (JAX implementation).

fill_half2full()

Fill in full Wigner-d plane from half.

fill_half2full_vectorized()

Fill in full Wigner-d plane from half (vectorized implementation).

fill_half2full_jax()

Fill in full Wigner-d plane from half (JAX implementation).

compute_full()

Compute Wigner-d at argument \(\pi/2\) for full plane using Trapani & Navaza recursion (multiple implementations).

compute_full_loop()

Compute Wigner-d at argument \(\pi/2\) for full plane using Trapani & Navaza recursion (loop-based implementation).

compute_quarter()

Compute Wigner-d at argument \(\pi/2\) for quarter plane using Trapani & Navaza recursion.

compute_full_vectorized()

Compute Wigner-d at argument \(\pi/2\) for full plane using Trapani & Navaza recursion (vectorized implementation).

compute_full_jax()

Compute Wigner-d at argument \(\pi/2\) for full plane using Trapani & Navaza recursion (JAX implementation).

Risbo recursion functions#

Function Name

Description

compute_full()

Compute Wigner-d at argument \(\beta\) for full plane using Risbo recursion.

compute_full()

Compute Wigner-d at argument \(\beta\) for full plane using Risbo recursion (JAX implementation).

Warning

The primary recursion used by S2FFT is the Price-McEwen recursion, though we include other popular recursions for comparison. One should however note that the development time for these recursions was minimal, thus functionality for these recursions is very limited.