My Project
Macros | Typedefs | Functions
so3_core.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <complex.h>
#include <fftw3.h>
#include "ssht/ssht.h"
#include "so3_types.h"
#include "so3_error.h"
#include "so3_sampling.h"

Go to the source code of this file.

Macros

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

Typedefs

typedef void(* inverse_complex_ssht) (complex double *, const complex double *, int, int, int, ssht_dl_method_t, int)
 
typedef void(* inverse_real_ssht) (double *, const complex double *, int, int, ssht_dl_method_t, int)
 
typedef void(* forward_complex_ssht) (complex double *, const complex double *, int, int, int, ssht_dl_method_t, int)
 
typedef void(* forward_real_ssht) (complex double *, const double *, int, int, ssht_dl_method_t, int)
 

Functions

void so3_core_inverse_via_ssht (complex double *f, const complex double *flmn, const so3_parameters_t *parameters)
 
void so3_core_forward_via_ssht (complex double *flmn, const complex double *f, const so3_parameters_t *parameters)
 
void so3_core_inverse_via_ssht_real (double *f, const complex double *flmn, const so3_parameters_t *parameters)
 
void so3_core_forward_via_ssht_real (complex double *flmn, const double *f, const so3_parameters_t *parameters)
 
void so3_core_inverse_direct (complex double *f, const complex double *flmn, const so3_parameters_t *parameters)
 
void so3_core_forward_direct (complex double *flmn, const complex double *f, const so3_parameters_t *parameters)
 
void so3_core_inverse_direct_real (double *f, const complex double *flmn, const so3_parameters_t *parameters)
 
void so3_core_forward_direct_real (complex double *flmn, const double *f, const so3_parameters_t *parameters)
 

Detailed Description

Core algorithms to perform Wigner transform on the rotation group SO(§).

Author
Martin Büttner
Jason McEwen

Definition in file so3_core.c.

Macro Definition Documentation

◆ MAX

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

Definition at line 27 of file so3_core.c.

◆ MIN

#define MIN (   a,
 
)    ((a < b) ? (a) : (b))

Definition at line 26 of file so3_core.c.

Typedef Documentation

◆ forward_complex_ssht

typedef void(* forward_complex_ssht) (complex double *, const complex double *, int, int, int, ssht_dl_method_t, int)

Definition at line 31 of file so3_core.c.

◆ forward_real_ssht

typedef void(* forward_real_ssht) (complex double *, const double *, int, int, ssht_dl_method_t, int)

Definition at line 32 of file so3_core.c.

◆ inverse_complex_ssht

typedef void(* inverse_complex_ssht) (complex double *, const complex double *, int, int, int, ssht_dl_method_t, int)

Definition at line 29 of file so3_core.c.

◆ inverse_real_ssht

typedef void(* inverse_real_ssht) (double *, const complex double *, int, int, ssht_dl_method_t, int)

Definition at line 30 of file so3_core.c.

Function Documentation

◆ so3_core_forward_direct()

void so3_core_forward_direct ( complex double *  flmn,
const complex double *  f,
const so3_parameters_t *  parameters 
)

Compute forward Wigner transform for a complex signal directly (without using SSHT).

Parameters
[out]flmnHarmonic coefficients. If n_mode is different from SO3_N_MODE_ALL, this array has to be nulled before being passed to the function.
[in]fFunction on sphere. Provide a buffer of size (2*L-1)*L*(2*N-1).
[in]parametersA fully populated parameters object. The reality flag is ignored. Use so3_core_forward_via_ssht_real instead for real signals.
Return values
none
Author
Martin Büttner
Jason McEwen

Definition at line 1354 of file so3_core.c.

References MAX, MIN, so3_sampling_elmn2ind(), and so3_sampling_weight().

Referenced by main().

◆ so3_core_forward_direct_real()

void so3_core_forward_direct_real ( complex double *  flmn,
const double *  f,
const so3_parameters_t *  parameters 
)

Compute forward Wigner transform for a real signal directly (without using SSHT).

Parameters
[out]flmnHarmonic coefficients. If n_mode is different from SO3_N_MODE_ALL, this array has to be nulled before being past to the function.
[in]fFunction on sphere. Provide a buffer of size (2*L-1)*L*(2*N-1).
[in]parametersA fully populated parameters object. The reality flag is ignored. Use so3_core_forward_direct instead for complex signals.
Return values
none
Author
Martin Büttner
Jason McEwen

Definition at line 2255 of file so3_core.c.

References MIN, so3_sampling_elmn2ind_real(), and so3_sampling_weight().

Referenced by main().

◆ so3_core_forward_via_ssht()

void so3_core_forward_via_ssht ( complex double *  flmn,
const complex double *  f,
const so3_parameters_t *  parameters 
)

Compute forward Wigner transform for a complex signal via SSHT.

Parameters
[out]flmnHarmonic coefficients. If n_mode is different from SO3_N_MODE_ALL, this array has to be nulled before being past to the function.
[in]fFunction on sphere. Provide a buffer of size (2*L-1)*L*(2*N-1).
[in]parametersA fully populated parameters object. The reality flag is ignored. Use so3_core_forward_via_ssht_real instead for real signals.
Return values
none
Author
Martin Büttner
Jason McEwen

Definition at line 253 of file so3_core.c.

References MAX, and so3_sampling_elmn2ind().

Referenced by main().

◆ so3_core_forward_via_ssht_real()

void so3_core_forward_via_ssht_real ( complex double *  flmn,
const double *  f,
const so3_parameters_t *  parameters 
)

Compute forward Wigner transform for a real signal via SSHT.

Parameters
[out]flmnHarmonic coefficients. If n_mode is different from SO3_N_MODE_ALL, this array has to be nulled before being past to the function.
[in]fFunction on sphere. Provide a buffer of size (2*L-1)*L*(2*N-1).
[in]parametersA fully populated parameters object. The reality flag is ignored. Use so3_core_forward_via_ssht instead for complex signals.
Return values
none
Author
Martin Büttner
Jason McEwen

Definition at line 700 of file so3_core.c.

References MAX, and so3_sampling_elmn2ind_real().

Referenced by main().

◆ so3_core_inverse_direct()

void so3_core_inverse_direct ( complex double *  f,
const complex double *  flmn,
const so3_parameters_t *  parameters 
)

Compute inverse Wigner transform for a complex signal directly (without using SSHT).

Parameters
[out]fFunction on sphere. Provide a buffer of size (2*L-1)*L*(2*N-1).
[in]flmnHarmonic coefficients.
[in]parametersA fully populated parameters object. The reality flag is ignored. Use so3_core_inverse_via_ssht_real instead for real signals.
Return values
none
Author
Martin Büttner
Jason McEwen

Definition at line 951 of file so3_core.c.

References MAX, MIN, and so3_sampling_elmn2ind().

Referenced by main().

◆ so3_core_inverse_direct_real()

void so3_core_inverse_direct_real ( double *  f,
const complex double *  flmn,
const so3_parameters_t *  parameters 
)

Compute inverse Wigner transform for a real signal directly (without using SSHT).

Parameters
[out]fFunction on sphere. Provide a buffer of size (2*L-1)*L*(2*N-1).
[in]flmnHarmonic coefficients for n >= 0. Note that for n = 0, these have to respect the symmetry flm0* = (-1)^(m+n)*fl-m0, and hence fl00 has to be real.
[in]parametersA fully populated parameters object. The reality flag is ignored. Use so3_core_inverse_direct instead for complex signals.
Return values
none
Author
Martin Büttner
Jason McEwen

Definition at line 1850 of file so3_core.c.

References MIN, and so3_sampling_elmn2ind_real().

Referenced by main().

◆ so3_core_inverse_via_ssht()

void so3_core_inverse_via_ssht ( complex double *  f,
const complex double *  flmn,
const so3_parameters_t *  parameters 
)

Compute inverse Wigner transform for a complex signal via SSHT.

Parameters
[out]fFunction on sphere. Provide a buffer of size (2*L-1)*L*(2*N-1).
[in]flmnHarmonic coefficients.
[in]parametersA fully populated parameters object. The reality flag is ignored. Use so3_core_inverse_via_ssht_real instead for real signals.
Return values
none
Author
Martin Büttner
Jason McEwen

Definition at line 48 of file so3_core.c.

References MAX, and so3_sampling_elmn2ind().

Referenced by main().

◆ so3_core_inverse_via_ssht_real()

void so3_core_inverse_via_ssht_real ( double *  f,
const complex double *  flmn,
const so3_parameters_t *  parameters 
)

Compute inverse Wigner transform for a real signal via SSHT.

Parameters
[out]fFunction on sphere. Provide a buffer of size (2*L-1)*L*(2*N-1).
[in]flmnHarmonic coefficients for n >= 0. Note that for n = 0, these have to respect the symmetry flm0* = (-1)^(m+n)*fl-m0, and hence fl00 has to be real.
[in]parametersA fully populated parameters object. The reality flag is ignored. Use so3_core_inverse_via_ssht instead for complex signals.
Return values
none
Author
Martin Büttner
Jason McEwen

Definition at line 475 of file so3_core.c.

References MAX, and so3_sampling_elmn2ind_real().

Referenced by main().