Ssht  1.3.3
Fast and exact spin spherical harmonic transforms
Macros | Functions
ssht_core.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <tgmath.h>
#include <fftw3.h>
#include "ssht/ssht_types.h"
#include "ssht/ssht_error.h"
#include "ssht/ssht_dl.h"
#include "ssht/ssht_sampling.h"
#include "ssht/ssht_core.h"
Include dependency graph for ssht_core.c:

Macros

#define MAX(a, b)   ((a) > (b) ? (a) : (b))
 

Functions

void ssht_core_mw_inverse_sov_sym (ssht_complex_double *f, const ssht_complex_double *flm, int L, int spin, ssht_dl_method_t dl_method, int verbosity)
 
void ssht_core_mw_lb_inverse_sov_sym (ssht_complex_double *f, const ssht_complex_double *flm, int L0, int L, int spin, ssht_dl_method_t dl_method, int verbosity)
 
void ssht_core_mw_inverse_sov_sym_real (double *f, const ssht_complex_double *flm, int L, ssht_dl_method_t dl_method, int verbosity)
 
void ssht_core_mw_lb_inverse_sov_sym_real (double *f, const ssht_complex_double *flm, int L0, int L, ssht_dl_method_t dl_method, int verbosity)
 
void ssht_core_mwdirect_inverse (ssht_complex_double *f, const ssht_complex_double *flm, int L, int spin, int verbosity)
 
void ssht_core_mwdirect_inverse_sov (ssht_complex_double *f, const ssht_complex_double *flm, int L, int spin, int verbosity)
 
void ssht_core_mw_forward_sov_conv_sym (ssht_complex_double *flm, const ssht_complex_double *f, int L, int spin, ssht_dl_method_t dl_method, int verbosity)
 
void ssht_core_mw_lb_forward_sov_conv_sym (ssht_complex_double *flm, const ssht_complex_double *f, int L0, int L, int spin, ssht_dl_method_t dl_method, int verbosity)
 
void ssht_core_mw_forward_sov_conv_sym_real (ssht_complex_double *flm, const double *f, int L, ssht_dl_method_t dl_method, int verbosity)
 
void ssht_core_mw_lb_forward_sov_conv_sym_real (ssht_complex_double *flm, const double *f, int L0, int L, ssht_dl_method_t dl_method, int verbosity)
 
void ssht_core_mw_inverse_sov_sym_pole (ssht_complex_double *f, ssht_complex_double *f_sp, double *phi_sp, const ssht_complex_double *flm, int L, int spin, ssht_dl_method_t dl_method, int verbosity)
 
void ssht_core_mw_inverse_sov_sym_real_pole (double *f, double *f_sp, const ssht_complex_double *flm, int L, ssht_dl_method_t dl_method, int verbosity)
 
void ssht_core_mw_forward_sov_conv_sym_pole (ssht_complex_double *flm, const ssht_complex_double *f, ssht_complex_double f_sp, double phi_sp, int L, int spin, ssht_dl_method_t dl_method, int verbosity)
 
void ssht_core_mw_forward_sov_conv_sym_real_pole (ssht_complex_double *flm, const double *f, double f_sp, int L, ssht_dl_method_t dl_method, int verbosity)
 
void ssht_core_mw_inverse_sov_sym_ss (ssht_complex_double *f, const ssht_complex_double *flm, int L, int spin, ssht_dl_method_t dl_method, int verbosity)
 
void ssht_core_mw_lb_inverse_sov_sym_ss (ssht_complex_double *f, const ssht_complex_double *flm, int L0, int L, int spin, ssht_dl_method_t dl_method, int verbosity)
 
void ssht_core_mw_inverse_sov_sym_ss_real (double *f, const ssht_complex_double *flm, int L, ssht_dl_method_t dl_method, int verbosity)
 
void ssht_core_mw_lb_inverse_sov_sym_ss_real (double *f, const ssht_complex_double *flm, int L0, int L, ssht_dl_method_t dl_method, int verbosity)
 
void ssht_core_mwdirect_inverse_ss (ssht_complex_double *f, const ssht_complex_double *flm, int L, int spin, int verbosity)
 
void ssht_core_mw_forward_sov_conv_sym_ss (ssht_complex_double *flm, const ssht_complex_double *f, int L, int spin, ssht_dl_method_t dl_method, int verbosity)
 
void ssht_core_mw_lb_forward_sov_conv_sym_ss (ssht_complex_double *flm, const ssht_complex_double *f, int L0, int L, int spin, ssht_dl_method_t dl_method, int verbosity)
 
void ssht_core_mw_forward_sov_conv_sym_ss_real (ssht_complex_double *flm, const double *f, int L, ssht_dl_method_t dl_method, int verbosity)
 
void ssht_core_mw_lb_forward_sov_conv_sym_ss_real (ssht_complex_double *flm, const double *f, int L0, int L, ssht_dl_method_t dl_method, int verbosity)
 
void ssht_core_mw_inverse_sov_sym_ss_pole (ssht_complex_double *f, ssht_complex_double *f_np, double *phi_np, ssht_complex_double *f_sp, double *phi_sp, const ssht_complex_double *flm, int L, int spin, ssht_dl_method_t dl_method, int verbosity)
 
void ssht_core_mw_inverse_sov_sym_ss_real_pole (double *f, double *f_np, double *f_sp, const ssht_complex_double *flm, int L, ssht_dl_method_t dl_method, int verbosity)
 
void ssht_core_mw_forward_sov_conv_sym_ss_pole (ssht_complex_double *flm, const ssht_complex_double *f, ssht_complex_double f_np, double phi_np, ssht_complex_double f_sp, double phi_sp, int L, int spin, ssht_dl_method_t dl_method, int verbosity)
 
void ssht_core_mw_forward_sov_conv_sym_ss_real_pole (ssht_complex_double *flm, const double *f, double f_np, double f_sp, int L, ssht_dl_method_t dl_method, int verbosity)
 
void ssht_core_gl_inverse_sov (ssht_complex_double *f, const ssht_complex_double *flm, int L, int spin, int verbosity)
 
void ssht_core_gl_inverse_sov_real (double *f, const ssht_complex_double *flm, int L, int verbosity)
 
void ssht_core_gl_forward_sov (ssht_complex_double *flm, const ssht_complex_double *f, int L, int spin, int verbosity)
 
void ssht_core_gl_forward_sov_real (ssht_complex_double *flm, const double *f, int L, int verbosity)
 
void ssht_core_dh_inverse_sov (ssht_complex_double *f, const ssht_complex_double *flm, int L, int spin, int verbosity)
 
void ssht_core_dh_inverse_sov_real (double *f, const ssht_complex_double *flm, int L, int verbosity)
 
void ssht_core_dh_forward_sov (ssht_complex_double *flm, const ssht_complex_double *f, int L, int spin, int verbosity)
 
void ssht_core_dh_forward_sov_real (ssht_complex_double *flm, const double *f, int L, int verbosity)
 

Detailed Description

Core algorithms to perform spin spherical harmonic transform on the sphere.

Author
Jason McEwen

Macro Definition Documentation

◆ MAX

#define MAX (   a,
 
)    ((a) > (b) ? (a) : (b))

Function Documentation

◆ ssht_core_dh_forward_sov()

void ssht_core_dh_forward_sov ( ssht_complex_double flm,
const ssht_complex_double f,
int  L,
int  spin,
int  verbosity 
)

Compute forward transform using Driscoll and Healy quadrature with separation of variables.

Parameters
[out]flmHarmonic coefficients.
[in]fFunction on sphere.
[in]LHarmonic band-limit.
[in]spinSpin number.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_dh_forward_sov_real()

void ssht_core_dh_forward_sov_real ( ssht_complex_double flm,
const double *  f,
int  L,
int  verbosity 
)

Compute forward transform of real scalar signal using Driscoll and Healy quadrature with separation of variables (symmetries for real signals are exploited).

Parameters
[out]flmHarmonic coefficients.
[in]fFunction on sphere.
[in]LHarmonic band-limit.
[in]spinSpin number.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_dh_inverse_sov()

void ssht_core_dh_inverse_sov ( ssht_complex_double f,
const ssht_complex_double flm,
int  L,
int  spin,
int  verbosity 
)

Compute inverse transform using direct method with separation of variables for DH sampling.

Parameters
[out]fFunction on sphere.
[in]flmHarmonic coefficients.
[in]LHarmonic band-limit.
[in]spinSpin number.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_dh_inverse_sov_real()

void ssht_core_dh_inverse_sov_real ( double *  f,
const ssht_complex_double flm,
int  L,
int  verbosity 
)

Compute inverse transform of real scalar signal using direct method with separation of variables for DH sampling (symmetries for real signals are exploited).

Parameters
[out]fFunction on sphere.
[in]flmHarmonic coefficients.
[in]LHarmonic band-limit.
[in]spinSpin number.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_gl_forward_sov()

void ssht_core_gl_forward_sov ( ssht_complex_double flm,
const ssht_complex_double f,
int  L,
int  spin,
int  verbosity 
)

Compute forward transform using Gauss-Legendgre quadrature with separation of variables.

Parameters
[out]flmHarmonic coefficients.
[in]fFunction on sphere.
[in]LHarmonic band-limit.
[in]spinSpin number.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_gl_forward_sov_real()

void ssht_core_gl_forward_sov_real ( ssht_complex_double flm,
const double *  f,
int  L,
int  verbosity 
)

Compute forward transform of real scalar signal using Gauss-Legendgre quadrature with separation of variables (symmetries for real signals are exploited).

Parameters
[out]flmHarmonic coefficients.
[in]fFunction on sphere.
[in]LHarmonic band-limit.
[in]spinSpin number.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_gl_inverse_sov()

void ssht_core_gl_inverse_sov ( ssht_complex_double f,
const ssht_complex_double flm,
int  L,
int  spin,
int  verbosity 
)

Compute inverse transform using direct method with separation of variables for GL sampling.

Parameters
[out]fFunction on sphere.
[in]flmHarmonic coefficients.
[in]LHarmonic band-limit.
[in]spinSpin number.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_gl_inverse_sov_real()

void ssht_core_gl_inverse_sov_real ( double *  f,
const ssht_complex_double flm,
int  L,
int  verbosity 
)

Compute inverse transform of real scalar signal using direct method with separation of variables for GL sampling (symmetries for real signals are exploited).

Parameters
[out]fFunction on sphere.
[in]flmHarmonic coefficients.
[in]LHarmonic band-limit.
[in]spinSpin number.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_mw_forward_sov_conv_sym()

void ssht_core_mw_forward_sov_conv_sym ( ssht_complex_double flm,
const ssht_complex_double f,
int  L,
int  spin,
ssht_dl_method_t  dl_method,
int  verbosity 
)

Compute forward transform for MW method using separation of variables, fast Fourier transforms, performing convolution with weights as product in transformed space and exploiting all symmetries (for complex spin signal).

Parameters
[out]flmHarmonic coefficients.
[in]fFunction on sphere.
[in]LHarmonic band-limit.
[in]spinSpin number.
[in]dl_methodMethod to use when compute Wigner functions.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_mw_forward_sov_conv_sym_pole()

void ssht_core_mw_forward_sov_conv_sym_pole ( ssht_complex_double flm,
const ssht_complex_double f,
ssht_complex_double  f_sp,
double  phi_sp,
int  L,
int  spin,
ssht_dl_method_t  dl_method,
int  verbosity 
)

South pole wrapper for forward transform for MW method. The South pole is defined by a single sample and its corresponding phi angle, rather than specifying samples for all phi at the South pole (which are simply related by the rotation of a spin function in its tangent plane).

Parameters
[out]flmHarmonic coefficients.
[in]fFunction on sphere (excluding South pole).
[in]f_spFunction sample on South pole.
[in]phi_spPhi angle corresponding to quoted sample at South pole.
[in]LHarmonic band-limit.
[in]spinSpin number.
[in]dl_methodMethod to use when compute Wigner functions.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_mw_forward_sov_conv_sym_real()

void ssht_core_mw_forward_sov_conv_sym_real ( ssht_complex_double flm,
const double *  f,
int  L,
ssht_dl_method_t  dl_method,
int  verbosity 
)

Compute forward transform for MW method of real scalar signal using separation of variables, fast Fourier transforms, performing convolution with weights as product in transformed space and exploiting all symmetries (including additional symmetries for real signals).

Parameters
[out]flmHarmonic coefficients.
[in]fFunction on sphere.
[in]LHarmonic band-limit.
[in]dl_methodMethod to use when compute Wigner functions.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_mw_forward_sov_conv_sym_real_pole()

void ssht_core_mw_forward_sov_conv_sym_real_pole ( ssht_complex_double flm,
const double *  f,
double  f_sp,
int  L,
ssht_dl_method_t  dl_method,
int  verbosity 
)

South pole wrapper for forward transform of real scalar function for MW method. The South pole is defined by a single sample, rather than specifying samples for all phi at the South pole (which for a scalar function are identical).

Parameters
[out]flmHarmonic coefficients.
[in]fFunction on sphere (excluding South pole).
[in]f_spFunction sample on South pole.
[in]LHarmonic band-limit.
[in]spinSpin number.
[in]dl_methodMethod to use when compute Wigner functions.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_mw_forward_sov_conv_sym_ss()

void ssht_core_mw_forward_sov_conv_sym_ss ( ssht_complex_double flm,
const ssht_complex_double f,
int  L,
int  spin,
ssht_dl_method_t  dl_method,
int  verbosity 
)

Compute forward transform for MW method with symmetric sampling using separation of variables, fast Fourier transforms, performing convolution with weights as product in transformed space and exploiting all symmetries (for complex spin signal).

Parameters
[out]flmHarmonic coefficients.
[in]fFunction on sphere.
[in]LHarmonic band-limit.
[in]spinSpin number.
[in]dl_methodMethod to use when compute Wigner functions.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_mw_forward_sov_conv_sym_ss_pole()

void ssht_core_mw_forward_sov_conv_sym_ss_pole ( ssht_complex_double flm,
const ssht_complex_double f,
ssht_complex_double  f_np,
double  phi_np,
ssht_complex_double  f_sp,
double  phi_sp,
int  L,
int  spin,
ssht_dl_method_t  dl_method,
int  verbosity 
)

North-South pole wrapper for forward transform for MW method with symmetric sampling. The poles are defined by single samples and their corresponding phi angle, rather than specifying samples for all phi at the poles (which are simply related by the rotation of a spin function in its tangent plane).

Parameters
[out]flmHarmonic coefficients.
[in]fFunction on sphere (excluding poles).
[in]f_npFunction sample on North pole.
[in]phi_npPhi angle corresponding to quoted sample at North pole.
[in]f_spFunction sample on South pole.
[in]phi_spPhi angle corresponding to quoted sample at South pole.
[in]LHarmonic band-limit.
[in]spinSpin number.
[in]dl_methodMethod to use when compute Wigner functions.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_mw_forward_sov_conv_sym_ss_real()

void ssht_core_mw_forward_sov_conv_sym_ss_real ( ssht_complex_double flm,
const double *  f,
int  L,
ssht_dl_method_t  dl_method,
int  verbosity 
)

Compute forward transform for MW method using symmetric sampling of real scalar signal using separation of variables, fast Fourier transforms, performing convolution with weights as product in transformed space and exploiting all symmetries (including additional symmetries for real signals).

Parameters
[out]flmHarmonic coefficients.
[in]fFunction on sphere.
[in]LHarmonic band-limit.
[in]dl_methodMethod to use when compute Wigner functions.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_mw_forward_sov_conv_sym_ss_real_pole()

void ssht_core_mw_forward_sov_conv_sym_ss_real_pole ( ssht_complex_double flm,
const double *  f,
double  f_np,
double  f_sp,
int  L,
ssht_dl_method_t  dl_method,
int  verbosity 
)

North-South pole wrapper for forward transform of real scalar function for MW method with symmetric sampling. The poles are defined by single samples, rather than specifying samples for all phi at the poles (which for a scalar function are identical).

Parameters
[out]flmHarmonic coefficients.
[in]fFunction on sphere (excluding poles).
[in]f_npFunction sample on North pole.
[in]f_spFunction sample on South pole.
[in]LHarmonic band-limit.
[in]spinSpin number.
[in]dl_methodMethod to use when compute Wigner functions.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_mw_inverse_sov_sym()

void ssht_core_mw_inverse_sov_sym ( ssht_complex_double f,
const ssht_complex_double flm,
int  L,
int  spin,
ssht_dl_method_t  dl_method,
int  verbosity 
)

Compute inverse transform for MW method using separation of variables, fast Fourier transforms and exploiting all symmetries (for complex spin signal).

Parameters
[out]fFunction on sphere.
[in]flmHarmonic coefficients.
[in]LHarmonic band-limit.
[in]spinSpin number.
[in]dl_methodMethod to use when compute Wigner functions.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_mw_inverse_sov_sym_pole()

void ssht_core_mw_inverse_sov_sym_pole ( ssht_complex_double f,
ssht_complex_double f_sp,
double *  phi_sp,
const ssht_complex_double flm,
int  L,
int  spin,
ssht_dl_method_t  dl_method,
int  verbosity 
)

South pole wrapper for inverse transform for MW method. The South pole is defined by a single sample and its corresponding phi angle, rather than specifying samples for all phi at the South pole (which are simply related by the rotation of a spin function in its tangent plane).

Parameters
[out]fFunction on sphere (excluding South pole).
[out]f_spFunction sample on South pole.
[out]phi_spPhi angle corresponding to quoted sample at South pole.
[in]flmHarmonic coefficients.
[in]LHarmonic band-limit.
[in]spinSpin number.
[in]dl_methodMethod to use when compute Wigner functions.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_mw_inverse_sov_sym_real()

void ssht_core_mw_inverse_sov_sym_real ( double *  f,
const ssht_complex_double flm,
int  L,
ssht_dl_method_t  dl_method,
int  verbosity 
)

Compute inverse transform for MW method of real scalar signal using separation of variables, fast Fourier transforms and exploiting all symmetries (including additional symmetries for real signals).

Parameters
[out]fFunction on sphere.
[in]flmHarmonic coefficients.
[in]LHarmonic band-limit.
[in]spinSpin number.
[in]dl_methodMethod to use when compute Wigner functions.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_mw_inverse_sov_sym_real_pole()

void ssht_core_mw_inverse_sov_sym_real_pole ( double *  f,
double *  f_sp,
const ssht_complex_double flm,
int  L,
ssht_dl_method_t  dl_method,
int  verbosity 
)

South pole wrapper for inverse transform of real scalar function for MW method. The South pole is defined by a single sample, rather than specifying samples for all phi at the South pole (which for a scalar function are identical).

Parameters
[out]fFunction on sphere (excluding South pole).
[out]f_spFunction sample on South pole.
[in]flmHarmonic coefficients.
[in]LHarmonic band-limit.
[in]spinSpin number.
[in]dl_methodMethod to use when compute Wigner functions.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_mw_inverse_sov_sym_ss()

void ssht_core_mw_inverse_sov_sym_ss ( ssht_complex_double f,
const ssht_complex_double flm,
int  L,
int  spin,
ssht_dl_method_t  dl_method,
int  verbosity 
)

Compute inverse transform for MW method with symmetric sampling using separation of variables, fast Fourier transforms and exploiting all symmetries (for complex spin signal).

Parameters
[out]fFunction on sphere.
[in]flmHarmonic coefficients.
[in]LHarmonic band-limit.
[in]spinSpin number.
[in]dl_methodMethod to use when compute Wigner functions.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_mw_inverse_sov_sym_ss_pole()

void ssht_core_mw_inverse_sov_sym_ss_pole ( ssht_complex_double f,
ssht_complex_double f_np,
double *  phi_np,
ssht_complex_double f_sp,
double *  phi_sp,
const ssht_complex_double flm,
int  L,
int  spin,
ssht_dl_method_t  dl_method,
int  verbosity 
)

North-South pole wrapper for inverse transform for MW method with symmetric sampling. The poles are defined by single samples and their corresponding phi angle, rather than specifying samples for all phi at the poles (which are simply related by the rotation of a spin function in its tangent plane).

Parameters
[out]fFunction on sphere (excluding poles).
[out]f_npFunction sample on North pole.
[out]phi_npPhi angle corresponding to quoted sample at North pole.
[out]f_spFunction sample on South pole.
[out]phi_spPhi angle corresponding to quoted sample at South pole.
[in]flmHarmonic coefficients.
[in]LHarmonic band-limit.
[in]spinSpin number.
[in]dl_methodMethod to use when compute Wigner functions.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_mw_inverse_sov_sym_ss_real()

void ssht_core_mw_inverse_sov_sym_ss_real ( double *  f,
const ssht_complex_double flm,
int  L,
ssht_dl_method_t  dl_method,
int  verbosity 
)

Compute inverse transform for MW method with symmetric sampling of real scalar signal using separation of variables, fast Fourier transforms and exploiting all symmetries (including additional symmetries for real signals).

Parameters
[out]fFunction on sphere.
[in]flmHarmonic coefficients.
[in]LHarmonic band-limit.
[in]spinSpin number.
[in]dl_methodMethod to use when compute Wigner functions.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_mw_inverse_sov_sym_ss_real_pole()

void ssht_core_mw_inverse_sov_sym_ss_real_pole ( double *  f,
double *  f_np,
double *  f_sp,
const ssht_complex_double flm,
int  L,
ssht_dl_method_t  dl_method,
int  verbosity 
)

North-South pole wrapper for inverse transform of real scalar function for MW method with symmetric sampling. The poles are defined by single samples, rather than specifying samples for all phi at the poles (which for a scalar function are identical).

Parameters
[out]fFunction on sphere (excluding poles).
[out]f_spFunction sample on South pole.
[out]f_npFunction sample on North pole.
[in]flmHarmonic coefficients.
[in]LHarmonic band-limit.
[in]spinSpin number.
[in]dl_methodMethod to use when compute Wigner functions.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_mw_lb_forward_sov_conv_sym()

void ssht_core_mw_lb_forward_sov_conv_sym ( ssht_complex_double flm,
const ssht_complex_double f,
int  L0,
int  L,
int  spin,
ssht_dl_method_t  dl_method,
int  verbosity 
)

Compute forward transform for MW method using separation of variables, fast Fourier transforms, performing convolution with weights as product in transformed space and exploiting all symmetries (for complex spin signal).

Parameters
[out]flmHarmonic coefficients.
[in]fFunction on sphere.
[in]L0Lower harmonic band-limit.
[in]LUpper harmonic band-limit.
[in]spinSpin number.
[in]dl_methodMethod to use when compute Wigner functions.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_mw_lb_forward_sov_conv_sym_real()

void ssht_core_mw_lb_forward_sov_conv_sym_real ( ssht_complex_double flm,
const double *  f,
int  L0,
int  L,
ssht_dl_method_t  dl_method,
int  verbosity 
)

Compute forward transform for MW method of real scalar signal using separation of variables, fast Fourier transforms, performing convolution with weights as product in transformed space and exploiting all symmetries (including additional symmetries for real signals).

Parameters
[out]flmHarmonic coefficients.
[in]fFunction on sphere.
[in]L0Lower harmonic band-limit.
[in]LUpper harmonic band-limit.
[in]dl_methodMethod to use when compute Wigner functions.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_mw_lb_forward_sov_conv_sym_ss()

void ssht_core_mw_lb_forward_sov_conv_sym_ss ( ssht_complex_double flm,
const ssht_complex_double f,
int  L0,
int  L,
int  spin,
ssht_dl_method_t  dl_method,
int  verbosity 
)

Compute forward transform for MW method with symmetric sampling using separation of variables, fast Fourier transforms, performing convolution with weights as product in transformed space and exploiting all symmetries (for complex spin signal).

Parameters
[out]flmHarmonic coefficients.
[in]fFunction on sphere.
[in]L0Lower harmonic band-limit.
[in]LUpper harmonic band-limit.
[in]spinSpin number.
[in]dl_methodMethod to use when compute Wigner functions.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_mw_lb_forward_sov_conv_sym_ss_real()

void ssht_core_mw_lb_forward_sov_conv_sym_ss_real ( ssht_complex_double flm,
const double *  f,
int  L0,
int  L,
ssht_dl_method_t  dl_method,
int  verbosity 
)

Compute forward transform for MW method using symmetric sampling of real scalar signal using separation of variables, fast Fourier transforms, performing convolution with weights as product in transformed space and exploiting all symmetries (including additional symmetries for real signals).

Parameters
[out]flmHarmonic coefficients.
[in]fFunction on sphere.
[in]L0Lower harmonic band-limit.
[in]LUpper harmonic band-limit.
[in]dl_methodMethod to use when compute Wigner functions.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_mw_lb_inverse_sov_sym()

void ssht_core_mw_lb_inverse_sov_sym ( ssht_complex_double f,
const ssht_complex_double flm,
int  L0,
int  L,
int  spin,
ssht_dl_method_t  dl_method,
int  verbosity 
)

Compute inverse transform for MW method using separation of variables, fast Fourier transforms and exploiting all symmetries (for complex spin signal).

Parameters
[out]fFunction on sphere.
[in]flmHarmonic coefficients.
[in]L0Lower harmonic band-limit.
[in]LUpper harmonic band-limit.
[in]spinSpin number.
[in]dl_methodMethod to use when compute Wigner functions.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_mw_lb_inverse_sov_sym_real()

void ssht_core_mw_lb_inverse_sov_sym_real ( double *  f,
const ssht_complex_double flm,
int  L0,
int  L,
ssht_dl_method_t  dl_method,
int  verbosity 
)

Compute inverse transform for MW method of real scalar signal using separation of variables, fast Fourier transforms and exploiting all symmetries (including additional symmetries for real signals).

Parameters
[out]fFunction on sphere.
[in]flmHarmonic coefficients.
[in]L0Lower harmonic band-limit.
[in]LUpper harmonic band-limit.
[in]spinSpin number.
[in]dl_methodMethod to use when compute Wigner functions.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_mw_lb_inverse_sov_sym_ss()

void ssht_core_mw_lb_inverse_sov_sym_ss ( ssht_complex_double f,
const ssht_complex_double flm,
int  L0,
int  L,
int  spin,
ssht_dl_method_t  dl_method,
int  verbosity 
)

Compute inverse transform for MW method with symmetric sampling using separation of variables, fast Fourier transforms and exploiting all symmetries (for complex spin signal).

Parameters
[out]fFunction on sphere.
[in]flmHarmonic coefficients.
[in]L0Lower harmonic band-limit.
[in]LUpper harmonic band-limit.
[in]spinSpin number.
[in]dl_methodMethod to use when compute Wigner functions.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_mw_lb_inverse_sov_sym_ss_real()

void ssht_core_mw_lb_inverse_sov_sym_ss_real ( double *  f,
const ssht_complex_double flm,
int  L0,
int  L,
ssht_dl_method_t  dl_method,
int  verbosity 
)

Compute inverse transform for MW method with symmetric sampling of real scalar signal using separation of variables, fast Fourier transforms and exploiting all symmetries (including additional symmetries for real signals).

Parameters
[out]fFunction on sphere.
[in]flmHarmonic coefficients.
[in]L0Lower harmonic band-limit.
[in]LUpper harmonic band-limit.
[in]spinSpin number.
[in]dl_methodMethod to use when compute Wigner functions.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_mwdirect_inverse()

void ssht_core_mwdirect_inverse ( ssht_complex_double f,
const ssht_complex_double flm,
int  L,
int  spin,
int  verbosity 
)

Compute inverse transform using direct method for MW sampling.

Warning
This algorithm is very slow and is included for verification purposes only.
Parameters
[out]fFunction on sphere.
[in]flmHarmonic coefficients.
[in]LHarmonic band-limit.
[in]spinSpin number.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_mwdirect_inverse_sov()

void ssht_core_mwdirect_inverse_sov ( ssht_complex_double f,
const ssht_complex_double flm,
int  L,
int  spin,
int  verbosity 
)

Compute inverse transform using direct method with separation of variables for MW sampling.

Warning
This algorithm is included for verification purposes only.
Parameters
[out]fFunction on sphere.
[in]flmHarmonic coefficients.
[in]LHarmonic band-limit.
[in]spinSpin number.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen

◆ ssht_core_mwdirect_inverse_ss()

void ssht_core_mwdirect_inverse_ss ( ssht_complex_double f,
const ssht_complex_double flm,
int  L,
int  spin,
int  verbosity 
)

Compute inverse transform using direct method for MW symmetric sampling.

Warning
This algorithm is very slow and is included for verification purposes only.
Parameters
[out]fFunction on sphere.
[in]flmHarmonic coefficients.
[in]LHarmonic band-limit.
[in]spinSpin number.
[in]verbosityVerbosity flag in range [0,5].
Return values
none
Author
Jason McEwen