Project Ne10
An open, optimized software library for the ARM architecture.
|
Variables | |
void(* | ne10_fft_r2c_1d_float32 )(ne10_fft_cpx_float32_t *fout, ne10_float32_t *fin, ne10_fft_r2c_cfg_float32_t cfg) |
Mixed radix-2/4 real-to-complex FFT of single precision floating point data. More... | |
void(* | ne10_fft_c2r_1d_float32 )(ne10_float32_t *fout, ne10_fft_cpx_float32_t *fin, ne10_fft_r2c_cfg_float32_t cfg) |
Mixed radix-2/4 complex-to-real IFFT of single precision floating point data. More... | |
void(* | ne10_fft_r2c_1d_int32 )(ne10_fft_cpx_int32_t *fout, ne10_int32_t *fin, ne10_fft_r2c_cfg_int32_t cfg, ne10_int32_t scaled_flag) |
Mixed radix-2/4 real-to-complex FFT of 32-bit fixed point Q31 data. More... | |
void(* | ne10_fft_c2r_1d_int32 )(ne10_int32_t *fout, ne10_fft_cpx_int32_t *fin, ne10_fft_r2c_cfg_int32_t cfg, ne10_int32_t scaled_flag) |
Mixed radix-2/4 complex-to-real IFFT of 32-bit fixed point Q31 data. More... | |
void(* | ne10_fft_r2c_1d_int16 )(ne10_fft_cpx_int16_t *fout, ne10_int16_t *fin, ne10_fft_r2c_cfg_int16_t cfg, ne10_int32_t scaled_flag) |
Mixed radix-2/4 real-to-complex FFT of 16-bit fixed point Q15 data. More... | |
void(* | ne10_fft_c2r_1d_int16 )(ne10_int16_t *fout, ne10_fft_cpx_int16_t *fin, ne10_fft_r2c_cfg_int16_t cfg, ne10_int32_t scaled_flag) |
Mixed radix-2/4 complex-to-real IFFT of 16-bit fixed point Q15 data. More... | |
(fftSize / 2) + 1
complex elements long. Similarly, inputs to the inverse transform need only be this long. Real-to-Complex (R2C) FFT: Input: { Re[0], Re[1], Re[2], Re[3], Re[4], Re[5], ..., Re[fftSize - 4], Re[fftSize - 3], Re[fftSize - 2], Re[fftSize - 1] } Output: { Re[0], Im[0], Re[1], Im[1], Re[2], Im[2], ..., Re[(fftSize / 2) - 1], Im[(fftSize / 2) - 1], Re[(fftSize / 2)], Im[(fftSize / 2)] } Complex-to-Real (C2R) IFFT: Input: { Re[0], Im[0], Re[1], Im[1], Re[2], Im[2], ..., Re[(fftSize / 2) - 1], Im[(fftSize / 2) - 1], Re[(fftSize / 2)], Im[(fftSize / 2)] } Output: { Re[0], Re[1], Re[2], Re[3], Re[4], Re[5], ..., Re[fftSize - 4], Re[fftSize - 3], Re[fftSize - 2], Re[fftSize - 1] }
cfg
is a pointer to a configuration structure. For different inputs of the same size, the same configuration structure can (and should, where possible) be reused.cfg->twiddles
: a pointer to a table of "twiddle factors" that are used in computing the FFT/IFFTcfg->super_twiddles
: a pointer to a table of twiddle factors used in splitting complex and real componentscfg->factors
: a buffer of "factors", which suggests to the core algorithm how the input can be broken down into smaller calculationscfg->buffer
: a pointer to a temporary buffer used internally in calculations that is allocated when the configuration structure is set up ne10_fft_r2c_cfg_float32_t ne10_fft_alloc_r2c_float32 | ( | ne10_int32_t | nfft | ) |
Creates a configuration structure for variants of ne10_fft_r2c_1d_float32 and ne10_fft_c2r_1d_float32.
[in] | nfft | input length |
st | pointer to an FFT configuration structure (allocated with malloc ), or NULL to indicate an error |
Allocates and initialises an ne10_fft_r2c_cfg_float32_t configuration structure for the FP32 real-to-complex and complex-to-real FFT/IFFT. As part of this, it reserves a buffer used internally by the FFT algorithm, factors the length of the FFT into simpler chunks, and generates a "twiddle table" of coefficients used in the FFT "butterfly" calculations.
To free the returned structure, call ne10_fft_destroy_r2c_float32.
Definition at line 943 of file NE10_fft_float32.c.
ne10_fft_r2c_cfg_int16_t ne10_fft_alloc_r2c_int16 | ( | ne10_int32_t | nfft | ) |
Creates a configuration structure for variants of ne10_fft_r2c_1d_int16 and ne10_fft_c2r_1d_int16.
[in] | nfft | input length |
st | pointer to an FFT configuration structure (allocated with malloc ), or NULL to indicate an error |
Allocates and initialises an ne10_fft_r2c_cfg_int16_t configuration structure for the INT16 real-to-complex and complex-to-real FFT/IFFT. As part of this, it reserves a buffer used internally by the FFT algorithm, factors the length of the FFT into simpler chunks, and generates a "twiddle table" of coefficients used in the FFT "butterfly" calculations.
To free the returned structure, call ne10_fft_destroy_r2c_int16.
Definition at line 1163 of file NE10_fft_int16.c.
ne10_fft_r2c_cfg_int32_t ne10_fft_alloc_r2c_int32 | ( | ne10_int32_t | nfft | ) |
Creates a configuration structure for variants of ne10_fft_r2c_1d_int32 and ne10_fft_c2r_1d_int32.
[in] | nfft | input length |
st | pointer to an FFT configuration structure (allocated with malloc ), or NULL to indicate an error |
Allocates and initialises an ne10_fft_r2c_cfg_int32_t configuration structure for the INT32 real-to-complex and complex-to-real FFT/IFFT. As part of this, it reserves a buffer used internally by the FFT algorithm, factors the length of the FFT into simpler chunks, and generates a "twiddle table" of coefficients used in the FFT "butterfly" calculations.
To free the returned structure, call ne10_fft_destroy_r2c_int32.
Definition at line 1157 of file NE10_fft_int32.c.
void ne10_fft_c2r_1d_float32_c | ( | ne10_float32_t * | fout, |
ne10_fft_cpx_float32_t * | fin, | ||
ne10_fft_r2c_cfg_float32_t | cfg | ||
) |
Specific implementation of ne10_fft_c2r_1d_float32 using plain C.
Definition at line 1036 of file NE10_fft_float32.c.
void ne10_fft_c2r_1d_float32_neon | ( | ne10_float32_t * | fout, |
ne10_fft_cpx_float32_t * | fin, | ||
ne10_fft_r2c_cfg_float32_t | cfg | ||
) |
Specific implementation of ne10_fft_c2r_1d_float32 using NEON SIMD capabilities.
Definition at line 766 of file NE10_fft_float32.neon.c.
void ne10_fft_c2r_1d_int16_c | ( | ne10_int16_t * | fout, |
ne10_fft_cpx_int16_t * | fin, | ||
ne10_fft_r2c_cfg_int16_t | cfg, | ||
ne10_int32_t | scaled_flag | ||
) |
Specific implementation of ne10_fft_c2r_1d_int16 using plain C.
Definition at line 1257 of file NE10_fft_int16.c.
void ne10_fft_c2r_1d_int16_neon | ( | ne10_int16_t * | fout, |
ne10_fft_cpx_int16_t * | fin, | ||
ne10_fft_r2c_cfg_int16_t | cfg, | ||
ne10_int32_t | scaled_flag | ||
) |
Specific implementation of ne10_fft_c2r_1d_int16 using NEON SIMD capabilities.
Definition at line 899 of file NE10_fft_int16.neon.c.
void ne10_fft_c2r_1d_int32_c | ( | ne10_int32_t * | fout, |
ne10_fft_cpx_int32_t * | fin, | ||
ne10_fft_r2c_cfg_int32_t | cfg, | ||
ne10_int32_t | scaled_flag | ||
) |
Specific implementation of ne10_fft_c2r_1d_int32 using plain C.
Definition at line 1251 of file NE10_fft_int32.c.
void ne10_fft_c2r_1d_int32_neon | ( | ne10_int32_t * | fout, |
ne10_fft_cpx_int32_t * | fin, | ||
ne10_fft_r2c_cfg_int32_t | cfg, | ||
ne10_int32_t | scaled_flag | ||
) |
Specific implementation of ne10_fft_c2r_1d_int32 using NEON SIMD capabilities.
Definition at line 1347 of file NE10_fft_int32.neon.c.
void ne10_fft_destroy_r2c_float32 | ( | ne10_fft_r2c_cfg_float32_t | cfg | ) |
Destroys the configuration structure allocated by ne10_fft_alloc_r2c_float32 (frees memory, etc.)
[in] | cfg | pointer to the FFT configuration structure |
Definition at line 593 of file NE10_fft.c.
void ne10_fft_destroy_r2c_int16 | ( | ne10_fft_r2c_cfg_int16_t | cfg | ) |
Destroys the configuration structure allocated by ne10_fft_alloc_r2c_int16 (frees memory, etc.)
[in] | cfg | pointer to the FFT configuration structure |
Definition at line 613 of file NE10_fft.c.
void ne10_fft_destroy_r2c_int32 | ( | ne10_fft_r2c_cfg_int32_t | cfg | ) |
Destroys the configuration structure allocated by ne10_fft_alloc_r2c_int32 (frees memory, etc.)
[in] | cfg | pointer to the FFT configuration structure |
Definition at line 603 of file NE10_fft.c.
void ne10_fft_r2c_1d_float32_c | ( | ne10_fft_cpx_float32_t * | fout, |
ne10_float32_t * | fin, | ||
ne10_fft_r2c_cfg_float32_t | cfg | ||
) |
Specific implementation of ne10_fft_r2c_1d_float32 using plain C.
Definition at line 1022 of file NE10_fft_float32.c.
void ne10_fft_r2c_1d_float32_neon | ( | ne10_fft_cpx_float32_t * | fout, |
ne10_float32_t * | fin, | ||
ne10_fft_r2c_cfg_float32_t | cfg | ||
) |
Specific implementation of ne10_fft_r2c_1d_float32 using NEON SIMD capabilities.
Definition at line 745 of file NE10_fft_float32.neon.c.
void ne10_fft_r2c_1d_int16_c | ( | ne10_fft_cpx_int16_t * | fout, |
ne10_int16_t * | fin, | ||
ne10_fft_r2c_cfg_int16_t | cfg, | ||
ne10_int32_t | scaled_flag | ||
) |
Specific implementation of ne10_fft_r2c_1d_int16 using plain C.
Definition at line 1242 of file NE10_fft_int16.c.
void ne10_fft_r2c_1d_int16_neon | ( | ne10_fft_cpx_int16_t * | fout, |
ne10_int16_t * | fin, | ||
ne10_fft_r2c_cfg_int16_t | cfg, | ||
ne10_int32_t | scaled_flag | ||
) |
Specific implementation of ne10_fft_r2c_1d_int16 using NEON SIMD capabilities.
Definition at line 877 of file NE10_fft_int16.neon.c.
void ne10_fft_r2c_1d_int32_c | ( | ne10_fft_cpx_int32_t * | fout, |
ne10_int32_t * | fin, | ||
ne10_fft_r2c_cfg_int32_t | cfg, | ||
ne10_int32_t | scaled_flag | ||
) |
Specific implementation of ne10_fft_r2c_1d_int32 using plain C.
Definition at line 1236 of file NE10_fft_int32.c.
void ne10_fft_r2c_1d_int32_neon | ( | ne10_fft_cpx_int32_t * | fout, |
ne10_int32_t * | fin, | ||
ne10_fft_r2c_cfg_int32_t | cfg, | ||
ne10_int32_t | scaled_flag | ||
) |
Specific implementation of ne10_fft_r2c_1d_int32 using NEON SIMD capabilities.
Definition at line 1325 of file NE10_fft_int32.neon.c.
void(* ne10_fft_c2r_1d_float32) (ne10_float32_t *fout, ne10_fft_cpx_float32_t *fin, ne10_fft_r2c_cfg_float32_t cfg) |
Mixed radix-2/4 complex-to-real IFFT of single precision floating point data.
[out] | *fout | pointer to the output buffer |
[in] | *fin | pointer to the input buffer |
[in] | cfg | pointer to the configuration structure (allocated via ne10_fft_alloc_r2c_float32) |
The function implements a mixed radix-2/4 complex-to-real IFFT, supporting input lengths of the form 2N (N > 0). Points to ne10_fft_c2r_1d_float32_c or ne10_fft_c2r_1d_float32_neon. This is an out-of-place algorithm. For usage information, please check test/test_suite_fft_float32.c.
Definition at line 126 of file NE10_init_dsp.c.
void(* ne10_fft_c2r_1d_int16) (ne10_int16_t *fout, ne10_fft_cpx_int16_t *fin, ne10_fft_r2c_cfg_int16_t cfg, ne10_int32_t scaled_flag) |
Mixed radix-2/4 complex-to-real IFFT of 16-bit fixed point Q15 data.
[out] | *fout | pointer to the output buffer |
[in] | *fin | pointer to the input buffer |
[in] | cfg | pointer to the configuration structure (allocated via ne10_fft_alloc_r2c_int16) |
[in] | scaled_flag | scale flag (0: unscaled, 1: scaled) |
The function implements a mixed radix-2/4 complex-to-real IFFT, supporting input lengths of the form 2N (N > 0). Points to ne10_fft_c2r_1d_int16_c or ne10_fft_c2r_1d_int16_neon. This is an out-of-place algorithm. For usage information, please check test/test_suite_fft_int16.c.
Definition at line 158 of file NE10_init_dsp.c.
void(* ne10_fft_c2r_1d_int32) (ne10_int32_t *fout, ne10_fft_cpx_int32_t *fin, ne10_fft_r2c_cfg_int32_t cfg, ne10_int32_t scaled_flag) |
Mixed radix-2/4 complex-to-real IFFT of 32-bit fixed point Q31 data.
[out] | *fout | pointer to the output buffer |
[in] | *fin | pointer to the input buffer |
[in] | cfg | pointer to the configuration structure (allocated via ne10_fft_alloc_r2c_int32) |
[in] | scaled_flag | scale flag (0: unscaled, 1: scaled) |
The function implements a mixed radix-2/4 complex-to-real IFFT, supporting input lengths of the form 2N (N > 0). Points to ne10_fft_c2r_1d_int32_c or ne10_fft_c2r_1d_int32_neon. This is an out-of-place algorithm. For usage information, please check test/test_suite_fft_int32.c.
Definition at line 142 of file NE10_init_dsp.c.
void(* ne10_fft_r2c_1d_float32) (ne10_fft_cpx_float32_t *fout, ne10_float32_t *fin, ne10_fft_r2c_cfg_float32_t cfg) |
Mixed radix-2/4 real-to-complex FFT of single precision floating point data.
[out] | *fout | pointer to the output buffer |
[in] | *fin | pointer to the input buffer |
[in] | cfg | pointer to the configuration structure (allocated via ne10_fft_alloc_r2c_float32) |
The function implements a mixed radix-2/4 real-to-complex FFT, supporting input lengths of the form 2N (N > 0). Points to ne10_fft_r2c_1d_float32_c or ne10_fft_r2c_1d_float32_neon. This is an out-of-place algorithm. For usage information, please check test/test_suite_fft_float32.c.
For the inverse transform (IFFT), call ne10_fft_c2r_1d_float32.
Definition at line 122 of file NE10_init_dsp.c.
void(* ne10_fft_r2c_1d_int16) (ne10_fft_cpx_int16_t *fout, ne10_int16_t *fin, ne10_fft_r2c_cfg_int16_t cfg, ne10_int32_t scaled_flag) |
Mixed radix-2/4 real-to-complex FFT of 16-bit fixed point Q15 data.
[out] | *fout | pointer to the output buffer |
[in] | *fin | pointer to the input buffer |
[in] | cfg | pointer to the configuration structure (allocated via ne10_fft_alloc_r2c_int16) |
[in] | scaled_flag | scale flag (0: unscaled, 1: scaled) |
The function implements a mixed radix-2/4 real-to-complex FFT, supporting input lengths of the form 2N (N > 0). Points to ne10_fft_r2c_1d_int16_c or ne10_fft_r2c_1d_int16_neon. This is an out-of-place algorithm. For usage information, please check test/test_suite_fft_int16.c.
For the inverse transform (IFFT), call ne10_fft_c2r_1d_int16.
Definition at line 153 of file NE10_init_dsp.c.
void(* ne10_fft_r2c_1d_int32) (ne10_fft_cpx_int32_t *fout, ne10_int32_t *fin, ne10_fft_r2c_cfg_int32_t cfg, ne10_int32_t scaled_flag) |
Mixed radix-2/4 real-to-complex FFT of 32-bit fixed point Q31 data.
[out] | *fout | pointer to the output buffer |
[in] | *fin | pointer to the input buffer |
[in] | cfg | pointer to the configuration structure (allocated via ne10_fft_alloc_r2c_int32) |
[in] | scaled_flag | scale flag (0: unscaled, 1: scaled) |
The function implements a mixed radix-2/4 real-to-complex FFT, supporting input lengths of the form 2N (N > 0). Points to ne10_fft_r2c_1d_int32_c or ne10_fft_r2c_1d_int32_neon. This is an out-of-place algorithm. For usage information, please check test/test_suite_fft_int32.c.
For the inverse transform (IFFT), call ne10_fft_c2r_1d_int32.
Definition at line 137 of file NE10_init_dsp.c.