FNFT
Loading...
Searching...
No Matches
fnft__akns_discretization.h
Go to the documentation of this file.
1/*
2 * This file is part of FNFT.
3 *
4 * FNFT is free software; you can redistribute it and/or
5 * modify it under the terms of the version 2 of the GNU General
6 * Public License as published by the Free Software Foundation.
7 *
8 * FNFT is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Contributors:
17 * Sander Wahls (TU Delft) 2017-2018.
18 * Shrinivas Chimmalgi (TU Delft) 2017.
19 * Peter J. Prins (TU Delft) 2018, 2020-2021.
20 */
21
28#ifndef FNFT__AKNS_DISCRETIZATION_H
29#define FNFT__AKNS_DISCRETIZATION_H
30
32#include "fnft__errwarn.h"
33#include "fnft__misc.h"
34
35
50 discretization);
51
67
82
98
118 FNFT_COMPLEX * const vals, fnft__akns_discretization_t discretization);
119
139 FNFT_COMPLEX * const vals, fnft__akns_discretization_t discretization);
140
162 FNFT_COMPLEX **eps_t_weights_ptr,
163 fnft__akns_discretization_t const akns_discretization);
164
199 FNFT_COMPLEX const * const q,
200 FNFT_COMPLEX (*r_from_q[3])(FNFT_COMPLEX const),
201 FNFT_REAL const eps_t,
202 FNFT_UINT * const Dsub_ptr,
203 FNFT_COMPLEX **q_preprocessed_ptr,
204 FNFT_COMPLEX **r_preprocessed_ptr,
205 FNFT_UINT * const first_last_index,
206 fnft__akns_discretization_t discretization);
207
221 FNFT_COMPLEX const xi,
222 FNFT_UINT const derivative_flag, // 0- > 2x2, 1->4x4
223 FNFT_REAL const eps_t,
224 fnft__akns_discretization_t const akns_discretization,
225 FNFT_UINT vanilla_flag,
226 fnft__akns_pde_t const PDE);
227
241 FNFT_COMPLEX const xi,
242 FNFT_UINT const derivative_flag, // 0- > 2x2, 1->4x4
243 FNFT_REAL const eps_t,
244 fnft__akns_discretization_t const akns_discretization,
245 FNFT_UINT vanilla_flag,
246 fnft__akns_pde_t const PDE);
247
248#ifdef FNFT_ENABLE_SHORT_NAMES
249#define akns_discretization_degree(...) fnft__akns_discretization_degree(__VA_ARGS__)
250#define akns_discretization_boundary_coeff(...) fnft__akns_discretization_boundary_coeff(__VA_ARGS__)
251#define akns_discretization_upsampling_factor(...) fnft__akns_discretization_upsampling_factor(__VA_ARGS__)
252#define akns_discretization_method_order(...) fnft__akns_discretization_method_order(__VA_ARGS__)
253#define akns_discretization_lambda_to_z(...) fnft__akns_discretization_lambda_to_z(__VA_ARGS__)
254#define akns_discretization_z_to_lambda(...) fnft__akns_discretization_z_to_lambda(__VA_ARGS__)
255#define akns_discretization_method_weights(...) fnft__akns_discretization_method_weights(__VA_ARGS__)
256#define akns_discretization_preprocess_signal(...) fnft__akns_discretization_preprocess_signal(__VA_ARGS__)
257#define akns_discretization_change_of_basis_matrix_to_S(...) fnft__akns_discretization_change_of_basis_matrix_to_S(__VA_ARGS__)
258#define akns_discretization_change_of_basis_matrix_from_S(...) fnft__akns_discretization_change_of_basis_matrix_from_S(__VA_ARGS__)
259#endif
260
261#endif
FNFT_INT fnft__akns_discretization_method_weights(FNFT_COMPLEX **qr_weights_ptr, FNFT_COMPLEX **eps_t_weights_ptr, fnft__akns_discretization_t const akns_discretization)
This routine computes various weights required by some methods based on the discretization.
FNFT_INT fnft__akns_discretization_preprocess_signal(FNFT_UINT const D, FNFT_COMPLEX const *const q, FNFT_COMPLEX(*r_from_q[3])(FNFT_COMPLEX const), FNFT_REAL const eps_t, FNFT_UINT *const Dsub_ptr, FNFT_COMPLEX **q_preprocessed_ptr, FNFT_COMPLEX **r_preprocessed_ptr, FNFT_UINT *const first_last_index, fnft__akns_discretization_t discretization)
This routine preprocesses the signal by resampling and subsampling based on the discretization....
FNFT_INT fnft__akns_discretization_lambda_to_z(const FNFT_UINT n, const FNFT_REAL eps_t, FNFT_COMPLEX *const vals, fnft__akns_discretization_t discretization)
This routine maps from continuous-time domain to in the discrete-time domain based on the discretiz...
FNFT_UINT fnft__akns_discretization_degree(fnft__akns_discretization_t discretization)
This routine returns the max degree d of the polynomials in a single scattering matrix or zero if the...
FNFT_UINT fnft__akns_discretization_method_order(fnft__akns_discretization_t discretization)
This routine returns the order of the method based on the discretization.
FNFT_REAL fnft__akns_discretization_boundary_coeff(fnft__akns_discretization_t discretization)
This routine returns the boundary coefficient based on the discretization.
FNFT_UINT fnft__akns_discretization_upsampling_factor(fnft__akns_discretization_t discretization)
This routine returns the scaling for effective number of samples based on the discretization.
FNFT_INT fnft__akns_discretization_change_of_basis_matrix_from_S(FNFT_COMPLEX *const T, FNFT_COMPLEX const xi, FNFT_UINT const derivative_flag, FNFT_REAL const eps_t, fnft__akns_discretization_t const akns_discretization, FNFT_UINT vanilla_flag, fnft__akns_pde_t const PDE)
This routine returns the change of basis matrix from the S basis to the basis of the discretization.
FNFT_INT fnft__akns_discretization_z_to_lambda(const FNFT_UINT n, const FNFT_REAL eps_t, FNFT_COMPLEX *const vals, fnft__akns_discretization_t discretization)
This routine maps from the discrete-time domain to in the continuous-time domain based on the discr...
FNFT_INT fnft__akns_discretization_change_of_basis_matrix_to_S(FNFT_COMPLEX *const T, FNFT_COMPLEX const xi, FNFT_UINT const derivative_flag, FNFT_REAL const eps_t, fnft__akns_discretization_t const akns_discretization, FNFT_UINT vanilla_flag, fnft__akns_pde_t const PDE)
This routine returns the change of basis matrix from the basis of the discretization to S.
Lists discretizations of AKNS system.
Miscellaneous functions used in the FNFT library.
fnft__akns_pde_t
Enum that specifies partial differential equations for which the nonlinear Fourier transform can be c...
Definition fnft__akns_discretization_t.h:149
fnft__akns_discretization_t
Enum that specifies discretizations used to compute nonlinear Fourier transforms of systems that fit ...
Definition fnft__akns_discretization_t.h:104
size_t FNFT_UINT
Definition fnft_numtypes.h:62
double complex FNFT_COMPLEX
Definition fnft_numtypes.h:47
int32_t FNFT_INT
Definition fnft_numtypes.h:56
double FNFT_REAL
Definition fnft_numtypes.h:40