Ssht
1.3.3
Fast and exact spin spherical harmonic transforms
|
#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_adjoint.h"
Algorithms to perform fast adjoint of spin spherical harmonic transforms on the sphere.
void ssht_adjoint_mw_forward_sov_sym | ( | ssht_complex_double * | f, |
const ssht_complex_double * | flm, | ||
int | L, | ||
int | spin, | ||
ssht_dl_method_t | dl_method, | ||
int | verbosity | ||
) |
Compute adjoint of 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).
[out] | f | Function on sphere. |
[in] | flm | Harmonic coefficients. |
[in] | L | Harmonic band-limit. |
[in] | spin | Spin number. |
[in] | dl_method | Method to use when compute Wigner functions. |
[in] | verbosity | Verbosiity flag in range [0,5]. |
none |
void ssht_adjoint_mw_forward_sov_sym_pole | ( | ssht_complex_double * | f, |
ssht_complex_double * | f_sp, | ||
double * | phi_sp, | ||
ssht_complex_double * | flm, | ||
int | L, | ||
int | spin, | ||
ssht_dl_method_t | dl_method, | ||
int | verbosity | ||
) |
South pole wrapper for adjoint 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).
[out] | f | Function on sphere (excluding South pole). |
[out] | f_sp | Function sample on South pole. |
[out] | phi_sp | Phi angle corresponding to quoted sample at South pole. |
[in] | flm | Harmonic coefficients. |
[in] | L | Harmonic band-limit. |
[in] | spin | Spin number. |
[in] | dl_method | Method to use when compute Wigner functions. |
[in] | verbosity | Verbosiity flag in range [0,5]. |
none |
void ssht_adjoint_mw_forward_sov_sym_real | ( | double * | f, |
const ssht_complex_double * | flm, | ||
int | L, | ||
ssht_dl_method_t | dl_method, | ||
int | verbosity | ||
) |
Compute adjoint of 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).
[out] | f | Function on sphere. |
[in] | flm | Harmonic coefficients. |
[in] | L | Harmonic band-limit. |
[in] | dl_method | Method to use when compute Wigner functions. |
[in] | verbosity | Verbosiity flag in range [0,5]. |
none |
void ssht_adjoint_mw_forward_sov_sym_real_pole | ( | double * | f, |
double * | f_sp, | ||
ssht_complex_double * | flm, | ||
int | L, | ||
ssht_dl_method_t | dl_method, | ||
int | verbosity | ||
) |
South pole wrapper for adjoint 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).
[out] | f | Function on sphere (excluding South pole). |
[out] | f_sp | Function sample on South pole. |
[in] | flm | Harmonic coefficients. |
[in] | L | Harmonic band-limit. |
[in] | spin | Spin number. |
[in] | dl_method | Method to use when compute Wigner functions. |
[in] | verbosity | Verbosiity flag in range [0,5]. |
none |
void ssht_adjoint_mw_forward_sov_sym_ss | ( | ssht_complex_double * | f, |
ssht_complex_double * | flm, | ||
int | L, | ||
int | spin, | ||
ssht_dl_method_t | dl_method, | ||
int | verbosity | ||
) |
Compute adjoint of 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).
[out] | f | Function on sphere. |
[in] | flm | Harmonic coefficients. |
[in] | L | Harmonic band-limit. |
[in] | spin | Spin number. |
[in] | dl_method | Method to use when compute Wigner functions. |
[in] | verbosity | Verbosiity flag in range [0,5]. |
none |
void ssht_adjoint_mw_forward_sov_sym_ss_pole | ( | ssht_complex_double * | f, |
ssht_complex_double * | f_np, | ||
double * | phi_np, | ||
ssht_complex_double * | f_sp, | ||
double * | phi_sp, | ||
ssht_complex_double * | flm, | ||
int | L, | ||
int | spin, | ||
ssht_dl_method_t | dl_method, | ||
int | verbosity | ||
) |
North-South pole wrapper for adjoint 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).
[out] | f | Function on sphere (excluding poles). |
[out] | f_np | Function sample on North pole. |
[out] | phi_np | Phi angle corresponding to quoted sample at North pole. |
[out] | f_sp | Function sample on South pole. |
[out] | phi_sp | Phi angle corresponding to quoted sample at South pole. |
[in] | flm | Harmonic coefficients. |
[in] | L | Harmonic band-limit. |
[in] | spin | Spin number. |
[in] | dl_method | Method to use when compute Wigner functions. |
[in] | verbosity | Verbosiity flag in range [0,5]. |
none |
void ssht_adjoint_mw_forward_sov_sym_ss_real | ( | double * | f, |
ssht_complex_double * | flm, | ||
int | L, | ||
ssht_dl_method_t | dl_method, | ||
int | verbosity | ||
) |
Compute adjoint of forward transform for MW method with 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).
[out] | f | Function on sphere. |
[in] | flm | Harmonic coefficients. |
[in] | L | Harmonic band-limit. |
[in] | dl_method | Method to use when compute Wigner functions. |
[in] | verbosity | Verbosiity flag in range [0,5]. |
none |
void ssht_adjoint_mw_forward_sov_sym_ss_real_pole | ( | double * | f, |
double * | f_np, | ||
double * | f_sp, | ||
ssht_complex_double * | flm, | ||
int | L, | ||
ssht_dl_method_t | dl_method, | ||
int | verbosity | ||
) |
North-South pole wrapper for adjoint 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).
[out] | f | Function on sphere (excluding poles). |
[out] | f_sp | Function sample on South pole. |
[out] | f_np | Function sample on North pole. |
[in] | flm | Harmonic coefficients. |
[in] | L | Harmonic band-limit. |
[in] | spin | Spin number. |
[in] | dl_method | Method to use when compute Wigner functions. |
[in] | verbosity | Verbosiity flag in range [0,5]. |
none |
void ssht_adjoint_mw_inverse_sov_sym | ( | ssht_complex_double * | flm, |
const ssht_complex_double * | f, | ||
int | L, | ||
int | spin, | ||
ssht_dl_method_t | dl_method, | ||
int | verbosity | ||
) |
Compute adjoint of inverse transform for MW method using separation of variables, fast Fourier transforms and exploiting all symmetries (for complex spin signal).
[out] | flm | Harmonic coefficients. |
[in] | f | Function on sphere. |
[in] | L | Harmonic band-limit. |
[in] | spin | Spin number. |
[in] | dl_method | Method to use when compute Wigner functions. |
[in] | verbosity | Verbosiity flag in range [0,5]. |
none |
void ssht_adjoint_mw_inverse_sov_sym_pole | ( | ssht_complex_double * | flm, |
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 adjoint 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).
[out] | flm | Harmonic coefficients. |
[in] | f | Function on sphere (excluding South pole). |
[in] | f_sp | Function sample on South pole. |
[in] | phi_sp | Phi angle corresponding to quoted sample at South pole. |
[in] | L | Harmonic band-limit. |
[in] | spin | Spin number. |
[in] | dl_method | Method to use when compute Wigner functions. |
[in] | verbosity | Verbosiity flag in range [0,5]. |
none |
void ssht_adjoint_mw_inverse_sov_sym_real | ( | ssht_complex_double * | flm, |
const double * | f, | ||
int | L, | ||
ssht_dl_method_t | dl_method, | ||
int | verbosity | ||
) |
Compute adjoint of 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).
[out] | flm | Harmonic coefficients. |
[in] | f | Function on sphere. |
[in] | L | Harmonic band-limit. |
[in] | dl_method | Method to use when compute Wigner functions. |
[in] | verbosity | Verbosiity flag in range [0,5]. |
none |
void ssht_adjoint_mw_inverse_sov_sym_real_pole | ( | ssht_complex_double * | flm, |
double * | f, | ||
double | f_sp, | ||
int | L, | ||
ssht_dl_method_t | dl_method, | ||
int | verbosity | ||
) |
South pole wrapper for adjoint 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).
[out] | flm | Harmonic coefficients. |
[in] | f | Function on sphere (excluding South pole). |
[in] | f_sp | Function sample on South pole. |
[in] | L | Harmonic band-limit. |
[in] | spin | Spin number. |
[in] | dl_method | Method to use when compute Wigner functions. |
[in] | verbosity | Verbosiity flag in range [0,5]. |
none |
void ssht_adjoint_mw_inverse_sov_sym_ss | ( | ssht_complex_double * | flm, |
ssht_complex_double * | f, | ||
int | L, | ||
int | spin, | ||
ssht_dl_method_t | dl_method, | ||
int | verbosity | ||
) |
Compute adjoint of inverse transform for MW method with symmetric sampling using separation of variables, fast Fourier transforms and exploiting all symmetries (for complex spin signal).
[out] | flm | Harmonic coefficients. |
[in] | f | Function on sphere. |
[in] | L | Harmonic band-limit. |
[in] | spin | Spin number. |
[in] | dl_method | Method to use when compute Wigner functions. |
[in] | verbosity | Verbosiity flag in range [0,5]. |
none |
void ssht_adjoint_mw_inverse_sov_sym_ss_pole | ( | ssht_complex_double * | flm, |
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 adjoint 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).
[out] | flm | Harmonic coefficients. |
[in] | f | Function on sphere (excluding poles). |
[in] | f_np | Function sample on North pole. |
[in] | phi_np | Phi angle corresponding to quoted sample at North pole. |
[in] | f_sp | Function sample on South pole. |
[in] | phi_sp | Phi angle corresponding to quoted sample at South pole. |
[in] | L | Harmonic band-limit. |
[in] | spin | Spin number. |
[in] | dl_method | Method to use when compute Wigner functions. |
[in] | verbosity | Verbosiity flag in range [0,5]. |
none |
void ssht_adjoint_mw_inverse_sov_sym_ss_real | ( | ssht_complex_double * | flm, |
double * | f, | ||
int | L, | ||
ssht_dl_method_t | dl_method, | ||
int | verbosity | ||
) |
Compute adjoint of 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).
[out] | flm | Harmonic coefficients. |
[in] | f | Function on sphere. |
[in] | L | Harmonic band-limit. |
[in] | dl_method | Method to use when compute Wigner functions. |
[in] | verbosity | Verbosiity flag in range [0,5]. |
none |
void ssht_adjoint_mw_inverse_sov_sym_ss_real_pole | ( | ssht_complex_double * | flm, |
double * | f, | ||
double | f_np, | ||
double | f_sp, | ||
int | L, | ||
ssht_dl_method_t | dl_method, | ||
int | verbosity | ||
) |
North-South pole wrapper for adjoint 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).
[out] | flm | Harmonic coefficients. |
[in] | f | Function on sphere (excluding poles). |
[in] | f_np | Function sample on North pole. |
[in] | f_sp | Function sample on South pole. |
[in] | L | Harmonic band-limit. |
[in] | spin | Spin number. |
[in] | dl_method | Method to use when compute Wigner functions. |
[in] | verbosity | Verbosiity flag in range [0,5]. |
none |