My Project: src/c/so3_sampling.c File Reference

My Project

Functions
so3_sampling.c File Reference
`#include <stdlib.h>`
`#include <stdio.h>`
`#include <math.h>`
`#include "so3_error.h"`
`#include "so3_types.h"`

Go to the source code of this file.

## Functions
int | so3_sampling_nalpha (const so3_parameters_t *)
int | so3_sampling_nbeta (const so3_parameters_t *)
int | so3_sampling_ngamma (const so3_parameters_t *)
complex double | so3_sampling_weight (const so3_parameters_t *parameters, int p)
int | so3_sampling_f_size (const so3_parameters_t *parameters)
int | so3_sampling_n (const so3_parameters_t *parameters)
double | so3_sampling_a2alpha (int a, const so3_parameters_t *parameters)
double | so3_sampling_b2beta (int b, const so3_parameters_t *parameters)
double | so3_sampling_g2gamma (int g, const so3_parameters_t *parameters)
int | so3_sampling_flmn_size (const so3_parameters_t *parameters)
void | so3_sampling_elmn2ind (int *ind, int el, int m, int n, const so3_parameters_t *parameters)
void | so3_sampling_ind2elmn (int *el, int *m, int *n, int ind, const so3_parameters_t *parameters)
void | so3_sampling_elmn2ind_real (int *ind, int el, int m, int n, const so3_parameters_t *parameters)
void | so3_sampling_ind2elmn_real (int *el, int *m, int *n, int ind, const so3_parameters_t *parameters)

## Function Documentation

## ◆ so3_sampling_a2alpha()

double so3_sampling_a2alpha | ( | int | a,
|  | const so3_parameters_t * | parameters
| ) |  |

Convert alpha index to angle for a given sampling scheme.

Note
  - a ranges from [0 .. 2*L-2] => 2*L-1 points in [0,2*pi).

Parameters

  [in] | a | Alpha index.
  [in] | parameters | A parameters object with (at least) the following fields: L, sampling_scheme

Return values

  alpha | Alpha angle.

Author
  Martin Büttner
  Jason McEwen

Definition at line 222 of file so3_sampling.c.

## ◆ so3_sampling_b2beta()

double so3_sampling_b2beta | ( | int | b,
|  | const so3_parameters_t * | parameters
| ) |  |

Convert beta index to angle for a given sampling scheme.

Note
  - b ranges from [0 .. 2*L-2] => 2*L-1 points in (0,2*pi).

Parameters

  [in] | b | Beta index.
  [in] | parameters | A parameters object with (at least) the following fields: L, sampling_scheme

Return values

  beta | Beta angle.

Author
  Martin Büttner
  Jason McEwen

Definition at line 254 of file so3_sampling.c.

## ◆ so3_sampling_elmn2ind()

void so3_sampling_elmn2ind | ( | int * | ind,
|  | int | el,
|  | int | m,
|  | int | n,
|  | const so3_parameters_t * | parameters
| ) |  |

Convert (el,m,n) harmonic indices to 1D index used to access flmn array.

Note
  Index ranges are as follows:
  - el ranges from [0 .. L-1].
  - m ranges from [-el .. el].
  - n ranges from [-el' .. el'], where el' = min{el, N}
  - ind ranges from [0 .. (2*N)(L**2-N(N-1)/3)-1] for compact storage methods and from [0 .. (2*N-1)*L**2-1] for 0-padded storage methods.

Parameters

  [out] | ind | 1D index to access flmn array.
  [in] | el | Harmonic index.
  [in] | m | Azimuthal harmonic index.
  [in] | n | Orientational harmonic index.
  [in] | parameters | A parameters object with (at least) the following fields: L, N, storage, n_order The reality flag is ignored. Use instead. none Martin Büttner

Author
  Jason McEwen

Definition at line 367 of file so3_sampling.c.

Referenced by so3_adjoint_forward_direct(), so3_adjoint_inverse_direct(), so3_core_forward_direct(), so3_core_forward_via_ssht(), so3_core_inverse_direct(), so3_core_inverse_via_ssht(), so3_sampling_elmn2ind_real(), so3_sampling_ind2elmn_real(), and so3_test_gen_flmn_complex().

## ◆ so3_sampling_elmn2ind_real()

void so3_sampling_elmn2ind_real | ( | int * | ind,
|  | int | el,
|  | int | m,
|  | int | n,
|  | const so3_parameters_t * | parameters
| ) |  |

Convert (el,m,n) harmonic indices to 1D index used to access flmn array for a real signal.

Note
  Index ranges are as follows:
  - el ranges from [0 .. L-1].
  - m ranges from [-el .. el].
  - n ranges from [0 .. el'], where el' = min{el, N}
  - ind ranges from [0 .. N*(L*L-(N-1)*(2*N-1)/6)-1] for compact storage methods and from [0 .. N*L*L-1] for 0-padded storage methods.

Parameters

  [out] | ind | 1D index to access flmn array.
  [in] | el | Harmonic index
  [in] | m | Azimuthal harmonic index.
  [in] | n | Orientational harmonic index.
  [in] | parameters | A parameters object with (at least) the following fields: L, N, storage The reality flag is ignored. Use so3_sampling_elmn2ind instead.

Return values

  none |

Author
  Martin Büttner
  Jason McEwen

Definition at line 569 of file so3_sampling.c.

References so3_sampling_elmn2ind().

Referenced by so3_adjoint_forward_direct_real(), so3_adjoint_inverse_direct_real(), so3_core_forward_direct_real(), so3_core_forward_via_ssht_real(), so3_core_inverse_direct_real(), so3_core_inverse_via_ssht_real(), and so3_test_gen_flmn_real().

## ◆ so3_sampling_f_size()

int so3_sampling_f_size | ( | const so3_parameters_t * | parameters | ) |

Compute size of the signal buffer f to be passed to the forward and returned from the inverse transform function for a given sampling scheme.

Note
  Computes number of samples on rotation group, not over extended domain.
  This includes degenerate samples on the poles which are the same for each value of phi. To get the logical number of samples (i.e. ignoring without degeneracy) use so3_sampling_n, instead.

Parameters

  [in] | parameters | A parameters object with (at least) the following fields: L, N, sampling_scheme

Return values

  n | Number of samples stored in the signal buffers.

Author
  Martin Büttner
  Jason McEwen

Definition at line 78 of file so3_sampling.c.

References so3_sampling_nalpha(), so3_sampling_nbeta(), and so3_sampling_ngamma().

## ◆ so3_sampling_flmn_size()

int so3_sampling_flmn_size | ( | const so3_parameters_t * | parameters | ) |

Get storage size of flmn array for different storage methods.

Parameters

  [in] | parameters | A parameters object with (at least) the following fields: L, N, storage, reality

Return values

  Number | of coefficients to be stored.

Author
  Martin Büttner
  Jason McEwen

Definition at line 314 of file so3_sampling.c.

Referenced by main().

## ◆ so3_sampling_g2gamma()

double so3_sampling_g2gamma | ( | int | g,
|  | const so3_parameters_t * | parameters
| ) |  |

Convert gamma index to angle for a given sampling scheme.

Note
  - g ranges from [0 .. 2*L-2] => 2*L-1 points in [0,2*pi).

Parameters

  [in] | g | Gamma index.
  [in] | parameters | A parameters object with (at least) the following fields: N, sampling_scheme

Return values

  gamma | Gamma angle.

Author
  Martin Büttner
  Jason McEwen

Definition at line 286 of file so3_sampling.c.

## ◆ so3_sampling_ind2elmn()

void so3_sampling_ind2elmn | ( | int * | el,
|  | int * | m,
|  | int * | n,
|  | int | ind,
|  | const so3_parameters_t * | parameters
| ) |  |

Convert 1D index used to access flmn array to (el,m,n) harmonic indices.

Note
  Index ranges are as follows:
  - el ranges from [0 .. L-1].
  - m ranges from [-el .. el].
  - n ranges from [-el' .. el'], where el' = min{el, N}
  - ind ranges from [0 .. (2*N)(L**2-N(N-1)/3)-1] for compact storage methods and from [0 .. (2*N-1)*L**2-1] for 0-padded storage methods.

Parameters

  [out] | el | Harmonic index.
  [out] | m | Azimuthal harmonic index.
  [out] | n | Orientational harmonic index.
  [in] | ind | 1D index to access flm array.
  [in] | parameters | A parameters object with (at least) the following fields: L, N, storage The reality flag is ignored. Use so3_sampling_ind2elmn_real instead.

Return values

  none |

Author
  Martin Büttner
  Jason McEwen

Definition at line 453 of file so3_sampling.c.

Referenced by so3_sampling_ind2elmn_real().

## ◆ so3_sampling_ind2elmn_real()

void so3_sampling_ind2elmn_real | ( | int * | el,
|  | int * | m,
|  | int * | n,
|  | int | ind,
|  | const so3_parameters_t * | parameters
| ) |  |

Convert 1D index used to access flmn array to (el,m,n) harmonic indices for a real signal.

Note
  Index ranges are as follows:
  - el ranges from [0 .. L-1].
  - m ranges from [-el .. el].
  - n ranges from [0 .. el'], where el' = min{el, N}
  - ind ranges from [0 .. N*(L*L-(N-1)*(2*N-1)/6)-1] for compact storage methods and from [0 .. N*L*L-1] for 0-padded storage methods.

Parameters

  [out] | el | Harmonic index.
  [out] | m | Azimuthal harmonic index.
  [out] | n | Orientational harmonic index.
  [in] | ind | 1D index to access flm array.
  [in] | parameters | A parameters object with (at least) the following fields: L, N, storage The reality flag is ignored. Use so3_sampling_ind2elmn instead.

Return values

  none |

Author
  Martin Büttner
  Jason McEwen

Definition at line 624 of file so3_sampling.c.

References so3_sampling_elmn2ind(), and so3_sampling_ind2elmn().

## ◆ so3_sampling_n()

int so3_sampling_n | ( | const so3_parameters_t * | parameters | ) |

Compute total number of samples for a given sampling scheme.

Note
  Computes number of samples on rotation group, not over extended domain.
  This returns the logical number of samples (without degeneracy), and not the size of the signal buffer used in the transform functions. Use so3_sampling_f_size to get the actual size of the signal buffer.

Parameters

  [in] | parameters | A parameters object with (at least) the following fields: L, N, sampling_scheme

Return values

  n | Number of samples.

Author
  Martin Büttner
  Jason McEwen

Definition at line 110 of file so3_sampling.c.

References so3_sampling_ngamma().

## ◆ so3_sampling_nalpha()

int so3_sampling_nalpha | ( | const so3_parameters_t * | parameters | ) |

Compute number of alpha samples for a given sampling scheme.

Parameters

  [in] | parameters | A parameters object with (at least) the following fields: L, sampling_scheme

Return values

  nalpha | Number of alpha samples.

Author
  Martin Büttner
  Jason McEwen

Definition at line 140 of file so3_sampling.c.

Referenced by so3_sampling_f_size().

## ◆ so3_sampling_nbeta()

int so3_sampling_nbeta | ( | const so3_parameters_t * | parameters | ) |

Compute number of beta samples for a given sampling scheme.

Note
  Computes number of samples in (0,pi], not over extended domain.

Parameters

  [in] | parameters | A parameters object with (at least) the following fields: L, sampling_scheme

Return values

  nbeta | Number of beta samples.

Author
  Martin Büttner
  Jason McEwen

Definition at line 171 of file so3_sampling.c.

Referenced by so3_sampling_f_size().

## ◆ so3_sampling_ngamma()

int so3_sampling_ngamma | ( | const so3_parameters_t * | parameters | ) |

Compute number of gamma samples for a given sampling scheme.

Parameters

  [in] | parameters | A parameters object with (at least) the following fields: B, sampling_scheme

Return values

  ngamma | Number of gamma samples.

Author
  Martin Büttner
  Jason McEwen

Definition at line 195 of file so3_sampling.c.

Referenced by so3_sampling_f_size(), and so3_sampling_n().

## ◆ so3_sampling_weight()

complex double so3_sampling_weight | ( | const so3_parameters_t * | parameters,
|  | int | p
| ) |  |

Compute conjugate weights for toroidal extension.

Parameters

  [in] | parameters | A parameters object with (at least) sampling_scheme
  [in] | p | Integer index to compute weight for.

Return values

  Corresponding | conjugate weight.

Author
  Jason McEwen

Definition at line 30 of file so3_sampling.c.

Referenced by so3_adjoint_forward_direct(), so3_adjoint_forward_direct_real(), so3_core_forward_direct(), and so3_core_forward_direct_real().