diff --git a/Include/arm_math.h b/Include/arm_math.h index d111f81c..867a4869 100644 --- a/Include/arm_math.h +++ b/Include/arm_math.h @@ -3309,21 +3309,6 @@ arm_status arm_rfft_fast_init_f64 ( arm_rfft_fast_instance_f64 * S, uint16_t fftLen); -arm_status arm_rfft_32_fast_init_f64 ( arm_rfft_fast_instance_f64 * S ); - -arm_status arm_rfft_64_fast_init_f64 ( arm_rfft_fast_instance_f64 * S ); - -arm_status arm_rfft_128_fast_init_f64 ( arm_rfft_fast_instance_f64 * S ); - -arm_status arm_rfft_256_fast_init_f64 ( arm_rfft_fast_instance_f64 * S ); - -arm_status arm_rfft_512_fast_init_f64 ( arm_rfft_fast_instance_f64 * S ); - -arm_status arm_rfft_1024_fast_init_f64 ( arm_rfft_fast_instance_f64 * S ); - -arm_status arm_rfft_2048_fast_init_f64 ( arm_rfft_fast_instance_f64 * S ); - -arm_status arm_rfft_4096_fast_init_f64 ( arm_rfft_fast_instance_f64 * S ); void arm_rfft_fast_f64( arm_rfft_fast_instance_f64 * S, @@ -3345,22 +3330,6 @@ arm_status arm_rfft_fast_init_f32 ( arm_rfft_fast_instance_f32 * S, uint16_t fftLen); -arm_status arm_rfft_32_fast_init_f32 ( arm_rfft_fast_instance_f32 * S ); - -arm_status arm_rfft_64_fast_init_f32 ( arm_rfft_fast_instance_f32 * S ); - -arm_status arm_rfft_128_fast_init_f32 ( arm_rfft_fast_instance_f32 * S ); - -arm_status arm_rfft_256_fast_init_f32 ( arm_rfft_fast_instance_f32 * S ); - -arm_status arm_rfft_512_fast_init_f32 ( arm_rfft_fast_instance_f32 * S ); - -arm_status arm_rfft_1024_fast_init_f32 ( arm_rfft_fast_instance_f32 * S ); - -arm_status arm_rfft_2048_fast_init_f32 ( arm_rfft_fast_instance_f32 * S ); - -arm_status arm_rfft_4096_fast_init_f32 ( arm_rfft_fast_instance_f32 * S ); - void arm_rfft_fast_f32( const arm_rfft_fast_instance_f32 * S, diff --git a/PythonWrapper/cmsisdsp_pkg/src/cmsismodule.h b/PythonWrapper/cmsisdsp_pkg/src/cmsismodule.h index 8074f215..f5352d77 100644 --- a/PythonWrapper/cmsisdsp_pkg/src/cmsismodule.h +++ b/PythonWrapper/cmsisdsp_pkg/src/cmsismodule.h @@ -7950,7 +7950,7 @@ cmsis_arm_rfft_fast_init_f64(PyObject *obj, PyObject *args) return(NULL); } - +#if 0 static PyObject * cmsis_arm_rfft_32_fast_init_f64(PyObject *obj, PyObject *args) { @@ -8141,7 +8141,7 @@ cmsis_arm_rfft_4096_fast_init_f64(PyObject *obj, PyObject *args) } return(NULL); } - +#endif static PyObject * cmsis_arm_rfft_fast_f64(PyObject *obj, PyObject *args) @@ -8201,6 +8201,7 @@ cmsis_arm_rfft_fast_init_f32(PyObject *obj, PyObject *args) return(NULL); } +#if 0 static PyObject * cmsis_arm_rfft_32_fast_init_f32(PyObject *obj, PyObject *args) @@ -8393,6 +8394,7 @@ cmsis_arm_rfft_4096_fast_init_f32(PyObject *obj, PyObject *args) return(NULL); } +#endif static PyObject * cmsis_arm_rfft_fast_f32(PyObject *obj, PyObject *args) @@ -15589,24 +15591,8 @@ static PyMethodDef CMSISMLMethods[] = { {"arm_rfft_init_f32", cmsis_arm_rfft_init_f32, METH_VARARGS,""}, {"arm_rfft_f32", cmsis_arm_rfft_f32, METH_VARARGS,""}, {"arm_rfft_fast_init_f64", cmsis_arm_rfft_fast_init_f64, METH_VARARGS,""}, -{"arm_rfft_32_fast_init_f64", cmsis_arm_rfft_32_fast_init_f64, METH_VARARGS,""}, -{"arm_rfft_64_fast_init_f64", cmsis_arm_rfft_64_fast_init_f64, METH_VARARGS,""}, -{"arm_rfft_128_fast_init_f64", cmsis_arm_rfft_128_fast_init_f64, METH_VARARGS,""}, -{"arm_rfft_256_fast_init_f64", cmsis_arm_rfft_256_fast_init_f64, METH_VARARGS,""}, -{"arm_rfft_512_fast_init_f64", cmsis_arm_rfft_512_fast_init_f64, METH_VARARGS,""}, -{"arm_rfft_1024_fast_init_f64", cmsis_arm_rfft_1024_fast_init_f64, METH_VARARGS,""}, -{"arm_rfft_2048_fast_init_f64", cmsis_arm_rfft_2048_fast_init_f64, METH_VARARGS,""}, -{"arm_rfft_4096_fast_init_f64", cmsis_arm_rfft_4096_fast_init_f64, METH_VARARGS,""}, {"arm_rfft_fast_f32", cmsis_arm_rfft_fast_f32, METH_VARARGS,""}, {"arm_rfft_fast_init_f32", cmsis_arm_rfft_fast_init_f32, METH_VARARGS,""}, -{"arm_rfft_32_fast_init_f32", cmsis_arm_rfft_32_fast_init_f32, METH_VARARGS,""}, -{"arm_rfft_64_fast_init_f32", cmsis_arm_rfft_64_fast_init_f32, METH_VARARGS,""}, -{"arm_rfft_128_fast_init_f32", cmsis_arm_rfft_128_fast_init_f32, METH_VARARGS,""}, -{"arm_rfft_256_fast_init_f32", cmsis_arm_rfft_256_fast_init_f32, METH_VARARGS,""}, -{"arm_rfft_512_fast_init_f32", cmsis_arm_rfft_512_fast_init_f32, METH_VARARGS,""}, -{"arm_rfft_1024_fast_init_f32", cmsis_arm_rfft_1024_fast_init_f32, METH_VARARGS,""}, -{"arm_rfft_2048_fast_init_f32", cmsis_arm_rfft_2048_fast_init_f32, METH_VARARGS,""}, -{"arm_rfft_4096_fast_init_f32", cmsis_arm_rfft_4096_fast_init_f32, METH_VARARGS,""}, {"arm_rfft_fast_f32", cmsis_arm_rfft_fast_f32, METH_VARARGS,""}, {"arm_dct4_init_f32", cmsis_arm_dct4_init_f32, METH_VARARGS,""}, {"arm_dct4_f32", cmsis_arm_dct4_f32, METH_VARARGS,""}, diff --git a/PythonWrapper/setup.py b/PythonWrapper/setup.py index 2af78dc9..a8c707e5 100644 --- a/PythonWrapper/setup.py +++ b/PythonWrapper/setup.py @@ -50,7 +50,6 @@ common.remove(os.path.join(ROOT,"Source","CommonTables","CommonTables.c")) #modulesrc = glob.glob(os.path.join("cmsisdsp_pkg","src","*.c")) modulesrc = [] -modulesrc.append(os.path.join("cmsisdsp_pkg","src","fftinit.c")) modulesrc.append(os.path.join("cmsisdsp_pkg","src","cmsismodule.c")) module1 = Extension(config.extensionName, diff --git a/PythonWrapper/cmsisdsp_pkg/src/fftinit.c b/Source/TransformFunctions/arm_cfft_init_f64.c old mode 100644 new mode 100755 similarity index 55% rename from PythonWrapper/cmsisdsp_pkg/src/fftinit.c rename to Source/TransformFunctions/arm_cfft_init_f64.c index 1ba4cf18..939488bb --- a/PythonWrapper/cmsisdsp_pkg/src/fftinit.c +++ b/Source/TransformFunctions/arm_cfft_init_f64.c @@ -1,15 +1,15 @@ /* ---------------------------------------------------------------------- - * Project: CMSIS DSP Python Wrapper - * Title: fftinit.c - * Description: FFT init functions for the Python wrapper + * Project: CMSIS DSP Library + * Title: arm_cfft_init_f64.c + * Description: Initialization function for cfft f64 instance * - * $Date: 25. March 2019 - * $Revision: V0.0.1 + * $Date: 23. January 2020 + * $Revision: V1.7.0 * * Target Processor: Cortex-M cores * -------------------------------------------------------------------- */ /* - * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved. + * Copyright (C) 2010-2020 ARM Limited or its affiliates. All rights reserved. * * SPDX-License-Identifier: Apache-2.0 * @@ -25,20 +25,33 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -#include "arm_math.h" -#include "arm_common_tables.h" -#include "arm_const_structs.h" #define FFTINIT(EXT,SIZE) \ S->bitRevLength = arm_cfft_sR_##EXT##_len##SIZE.bitRevLength; \ S->pBitRevTable = arm_cfft_sR_##EXT##_len##SIZE.pBitRevTable; \ S->pTwiddle = arm_cfft_sR_##EXT##_len##SIZE.pTwiddle; -#define FFTFXTINIT(EXT,SIZE) \ - S->bitRevLength = arm_cfft_sR_##EXT##_len##SIZE.bitRevLength; \ - S->pBitRevTable = arm_cfft_sR_##EXT##_len##SIZE.pBitRevTable; \ - S->pTwiddle = arm_cfft_sR_##EXT##_len##SIZE.pTwiddle; +/** + @addtogroup ComplexFFT + @{ + */ + +/** + @brief Initialization function for the cfft f64 function + @param[in,out] S points to an instance of the floating-point CFFT structure + @param[in] fftLen fft length (number of complex samples) + @return execution status + - \ref ARM_MATH_SUCCESS : Operation successful + - \ref ARM_MATH_ARGUMENT_ERROR : an error is detected + + @par Use of this function is mandatory only for the MVE version of the FFT. + Other versions can still initialize directly the data structure using + variables declared in arm_const_structs.h + */ +#include "arm_math.h" +#include "arm_common_tables.h" +#include "arm_const_structs.h" arm_status arm_cfft_init_f64( @@ -52,58 +65,75 @@ arm_status arm_cfft_init_f64( S->fftLen = fftLen; /* Initialise the Twiddle coefficient pointer */ - S->pTwiddle = (float64_t *)twiddleCoefF64_4096; + S->pTwiddle = NULL; /* Initializations of Instance structure depending on the FFT length */ switch (S->fftLen) { +#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_f64_4096) && defined(ARM_TABLE_BITREVIDX_FLT_4096)) /* Initializations of structure parameters for 4096 point FFT */ case 4096U: /* Initialise the bit reversal table modifier */ FFTINIT(f64,4096); break; +#endif +#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_f64_2048) && defined(ARM_TABLE_BITREVIDX_FLT_2048)) /* Initializations of structure parameters for 2048 point FFT */ case 2048U: /* Initialise the bit reversal table modifier */ FFTINIT(f64,2048); break; +#endif +#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_f64_1024) && defined(ARM_TABLE_BITREVIDX_FLT_1024)) /* Initializations of structure parameters for 1024 point FFT */ case 1024U: /* Initialise the bit reversal table modifier */ FFTINIT(f64,1024); break; +#endif +#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_f64_512) && defined(ARM_TABLE_BITREVIDX_FLT_512)) /* Initializations of structure parameters for 512 point FFT */ case 512U: /* Initialise the bit reversal table modifier */ FFTINIT(f64,512); break; +#endif +#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_f64_256) && defined(ARM_TABLE_BITREVIDX_FLT_256)) case 256U: FFTINIT(f64,256); break; +#endif +#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_f64_128) && defined(ARM_TABLE_BITREVIDX_FLT_128)) case 128U: FFTINIT(f64,128); break; +#endif +#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_f64_64) && defined(ARM_TABLE_BITREVIDX_FLT_64)) case 64U: FFTINIT(f64,64); break; +#endif +#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_f64_32) && defined(ARM_TABLE_BITREVIDX_FLT_32)) case 32U: FFTINIT(f64,32); break; +#endif +#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_f64_16) && defined(ARM_TABLE_BITREVIDX_FLT_16)) case 16U: /* Initializations of structure parameters for 16 point FFT */ FFTINIT(f64,16); break; - +#endif default: /* Reporting argument error if fftSize is not valid value */ @@ -111,7 +141,10 @@ arm_status arm_cfft_init_f64( break; } + return (status); } - +/** + @} end of ComplexFFT group + */ diff --git a/Source/TransformFunctions/arm_rfft_fast_f32.c b/Source/TransformFunctions/arm_rfft_fast_f32.c index 8d5d72ec..2f82f923 100644 --- a/Source/TransformFunctions/arm_rfft_fast_f32.c +++ b/Source/TransformFunctions/arm_rfft_fast_f32.c @@ -533,17 +533,15 @@ void merge_rfft_f32( - Initializes twiddle factor table and bit reversal table pointers. - Initializes the internal complex FFT data structure. @par - Use of the initialization function is optional. - However, if the initialization function is used, then the instance structure - cannot be placed into a const data section. To place an instance structure - into a const data section, the instance structure should be manually - initialized as follows: + Use of the initialization function is optional **except for MVE versions where it is mandatory**. + If you don't use the initialization functions, then the structures should be initialized with code + similar to the one below:
arm_rfft_instance_q31 S = {fftLenReal, fftLenBy2, ifftFlagR, bitReverseFlagR, twidCoefRModifier, pTwiddleAReal, pTwiddleBReal, pCfft};
arm_rfft_instance_q15 S = {fftLenReal, fftLenBy2, ifftFlagR, bitReverseFlagR, twidCoefRModifier, pTwiddleAReal, pTwiddleBReal, pCfft};
where fftLenReal is the length of the real transform;
- fftLenBy2 length of the internal complex transform.
+ fftLenBy2 length of the internal complex transform (fftLenReal/2).
ifftFlagR Selects forward (=0) or inverse (=1) transform.
bitReverseFlagR Selects bit reversed output (=0) or normal order
output (=1).
@@ -552,8 +550,10 @@ void merge_rfft_f32(
pTwiddleARealpoints to the A array of twiddle coefficients;
pTwiddleBRealpoints to the B array of twiddle coefficients;
pCfft points to the CFFT Instance structure. The CFFT structure
- must also be initialized. Refer to arm_cfft_radix4_f32() for details regarding
- static initialization of the complex FFT instance structure.
+ must also be initialized.
+@par
+ Note that with MVE versions you can't initialize instance structures directly and **must
+ use the initialization function**.
*/
/**
diff --git a/Source/TransformFunctions/arm_rfft_fast_init_f32.c b/Source/TransformFunctions/arm_rfft_fast_init_f32.c
index b657e19b..72a6768d 100644
--- a/Source/TransformFunctions/arm_rfft_fast_init_f32.c
+++ b/Source/TransformFunctions/arm_rfft_fast_init_f32.c
@@ -41,6 +41,7 @@
#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_16) && defined(ARM_TABLE_BITREVIDX_FLT_16) && defined(ARM_TABLE_TWIDDLECOEF_F32_16) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_32))
/**
+ @private
@brief Initialization function for the 32pt floating-point real FFT.
@param[in,out] S points to an arm_rfft_fast_instance_f32 structure
@return execution status
@@ -48,7 +49,7 @@
- \ref ARM_MATH_ARGUMENT_ERROR : an error is detected
*/
-arm_status arm_rfft_32_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {
+static arm_status arm_rfft_32_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {
arm_status status;
@@ -70,6 +71,7 @@ arm_status arm_rfft_32_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {
#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_32) && defined(ARM_TABLE_BITREVIDX_FLT_32) && defined(ARM_TABLE_TWIDDLECOEF_F32_32) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_64))
/**
+ @private
@brief Initialization function for the 64pt floating-point real FFT.
@param[in,out] S points to an arm_rfft_fast_instance_f32 structure
@return execution status
@@ -77,7 +79,7 @@ arm_status arm_rfft_32_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {
- \ref ARM_MATH_ARGUMENT_ERROR : an error is detected
*/
-arm_status arm_rfft_64_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {
+static arm_status arm_rfft_64_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {
arm_status status;
@@ -99,6 +101,7 @@ arm_status arm_rfft_64_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {
#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_64) && defined(ARM_TABLE_BITREVIDX_FLT_64) && defined(ARM_TABLE_TWIDDLECOEF_F32_64) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_128))
/**
+ @private
@brief Initialization function for the 128pt floating-point real FFT.
@param[in,out] S points to an arm_rfft_fast_instance_f32 structure
@return execution status
@@ -106,7 +109,7 @@ arm_status arm_rfft_64_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {
- \ref ARM_MATH_ARGUMENT_ERROR : an error is detected
*/
-arm_status arm_rfft_128_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {
+static arm_status arm_rfft_128_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {
arm_status status;
@@ -128,6 +131,7 @@ arm_status arm_rfft_128_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {
#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_128) && defined(ARM_TABLE_BITREVIDX_FLT_128) && defined(ARM_TABLE_TWIDDLECOEF_F32_128) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_256))
/**
+ @private
@brief Initialization function for the 256pt floating-point real FFT.
@param[in,out] S points to an arm_rfft_fast_instance_f32 structure
@return execution status
@@ -135,7 +139,7 @@ arm_status arm_rfft_128_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {
- \ref ARM_MATH_ARGUMENT_ERROR : an error is detected
*/
-arm_status arm_rfft_256_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {
+static arm_status arm_rfft_256_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {
arm_status status;
@@ -157,6 +161,7 @@ arm_status arm_rfft_256_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {
#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_256) && defined(ARM_TABLE_BITREVIDX_FLT_256) && defined(ARM_TABLE_TWIDDLECOEF_F32_256) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_512))
/**
+ @private
@brief Initialization function for the 512pt floating-point real FFT.
@param[in,out] S points to an arm_rfft_fast_instance_f32 structure
@return execution status
@@ -164,7 +169,7 @@ arm_status arm_rfft_256_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {
- \ref ARM_MATH_ARGUMENT_ERROR : an error is detected
*/
-arm_status arm_rfft_512_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {
+static arm_status arm_rfft_512_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {
arm_status status;
@@ -185,6 +190,7 @@ arm_status arm_rfft_512_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {
#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_512) && defined(ARM_TABLE_BITREVIDX_FLT_512) && defined(ARM_TABLE_TWIDDLECOEF_F32_512) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_1024))
/**
+ @private
@brief Initialization function for the 1024pt floating-point real FFT.
@param[in,out] S points to an arm_rfft_fast_instance_f32 structure
@return execution status
@@ -192,7 +198,7 @@ arm_status arm_rfft_512_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {
- \ref ARM_MATH_ARGUMENT_ERROR : an error is detected
*/
-arm_status arm_rfft_1024_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {
+static arm_status arm_rfft_1024_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {
arm_status status;
@@ -213,13 +219,14 @@ arm_status arm_rfft_1024_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {
#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_1024) && defined(ARM_TABLE_BITREVIDX_FLT_1024) && defined(ARM_TABLE_TWIDDLECOEF_F32_1024) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_2048))
/**
+ @private
@brief Initialization function for the 2048pt floating-point real FFT.
@param[in,out] S points to an arm_rfft_fast_instance_f32 structure
@return execution status
- \ref ARM_MATH_SUCCESS : Operation successful
- \ref ARM_MATH_ARGUMENT_ERROR : an error is detected
*/
-arm_status arm_rfft_2048_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {
+static arm_status arm_rfft_2048_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {
arm_status status;
@@ -240,6 +247,7 @@ arm_status arm_rfft_2048_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {
#if !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_ALL_FFT_TABLES) || (defined(ARM_TABLE_TWIDDLECOEF_F32_2048) && defined(ARM_TABLE_BITREVIDX_FLT_2048) && defined(ARM_TABLE_TWIDDLECOEF_F32_2048) && defined(ARM_TABLE_TWIDDLECOEF_RFFT_F32_4096))
/**
+ @private
* @brief Initialization function for the 4096pt floating-point real FFT.
* @param[in,out] S points to an arm_rfft_fast_instance_f32 structure
@return execution status
@@ -247,7 +255,7 @@ arm_status arm_rfft_2048_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {
- \ref ARM_MATH_ARGUMENT_ERROR : an error is detected
*/
-arm_status arm_rfft_4096_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {
+static arm_status arm_rfft_4096_fast_init_f32( arm_rfft_fast_instance_f32 * S ) {
arm_status status;
diff --git a/Source/TransformFunctions/arm_rfft_fast_init_f64.c b/Source/TransformFunctions/arm_rfft_fast_init_f64.c
index 84b6fab2..3ea02ff1 100755
--- a/Source/TransformFunctions/arm_rfft_fast_init_f64.c
+++ b/Source/TransformFunctions/arm_rfft_fast_init_f64.c
@@ -48,7 +48,7 @@
- \ref ARM_MATH_ARGUMENT_ERROR : an error is detected
*/
-arm_status arm_rfft_32_fast_init_f64( arm_rfft_fast_instance_f64 * S ) {
+static arm_status arm_rfft_32_fast_init_f64( arm_rfft_fast_instance_f64 * S ) {
arm_cfft_instance_f64 * Sint;
@@ -77,7 +77,7 @@ arm_status arm_rfft_32_fast_init_f64( arm_rfft_fast_instance_f64 * S ) {
- \ref ARM_MATH_ARGUMENT_ERROR : an error is detected
*/
-arm_status arm_rfft_64_fast_init_f64( arm_rfft_fast_instance_f64 * S ) {
+static arm_status arm_rfft_64_fast_init_f64( arm_rfft_fast_instance_f64 * S ) {
arm_cfft_instance_f64 * Sint;
@@ -106,7 +106,7 @@ arm_status arm_rfft_64_fast_init_f64( arm_rfft_fast_instance_f64 * S ) {
- \ref ARM_MATH_ARGUMENT_ERROR : an error is detected
*/
-arm_status arm_rfft_128_fast_init_f64( arm_rfft_fast_instance_f64 * S ) {
+static arm_status arm_rfft_128_fast_init_f64( arm_rfft_fast_instance_f64 * S ) {
arm_cfft_instance_f64 * Sint;
@@ -135,7 +135,7 @@ arm_status arm_rfft_128_fast_init_f64( arm_rfft_fast_instance_f64 * S ) {
- \ref ARM_MATH_ARGUMENT_ERROR : an error is detected
*/
-arm_status arm_rfft_256_fast_init_f64( arm_rfft_fast_instance_f64 * S ) {
+static arm_status arm_rfft_256_fast_init_f64( arm_rfft_fast_instance_f64 * S ) {
arm_cfft_instance_f64 * Sint;
@@ -164,7 +164,7 @@ arm_status arm_rfft_256_fast_init_f64( arm_rfft_fast_instance_f64 * S ) {
- \ref ARM_MATH_ARGUMENT_ERROR : an error is detected
*/
-arm_status arm_rfft_512_fast_init_f64( arm_rfft_fast_instance_f64 * S ) {
+static arm_status arm_rfft_512_fast_init_f64( arm_rfft_fast_instance_f64 * S ) {
arm_cfft_instance_f64 * Sint;
@@ -192,7 +192,7 @@ arm_status arm_rfft_512_fast_init_f64( arm_rfft_fast_instance_f64 * S ) {
- \ref ARM_MATH_ARGUMENT_ERROR : an error is detected
*/
-arm_status arm_rfft_1024_fast_init_f64( arm_rfft_fast_instance_f64 * S ) {
+static arm_status arm_rfft_1024_fast_init_f64( arm_rfft_fast_instance_f64 * S ) {
arm_cfft_instance_f64 * Sint;
@@ -219,7 +219,7 @@ arm_status arm_rfft_1024_fast_init_f64( arm_rfft_fast_instance_f64 * S ) {
- \ref ARM_MATH_SUCCESS : Operation successful
- \ref ARM_MATH_ARGUMENT_ERROR : an error is detected
*/
-arm_status arm_rfft_2048_fast_init_f64( arm_rfft_fast_instance_f64 * S ) {
+static arm_status arm_rfft_2048_fast_init_f64( arm_rfft_fast_instance_f64 * S ) {
arm_cfft_instance_f64 * Sint;
@@ -247,7 +247,7 @@ arm_status arm_rfft_2048_fast_init_f64( arm_rfft_fast_instance_f64 * S ) {
- \ref ARM_MATH_ARGUMENT_ERROR : an error is detected
*/
-arm_status arm_rfft_4096_fast_init_f64( arm_rfft_fast_instance_f64 * S ) {
+static arm_status arm_rfft_4096_fast_init_f64( arm_rfft_fast_instance_f64 * S ) {
arm_cfft_instance_f64 * Sint;
diff --git a/Source/TransformFunctions/arm_rfft_q15.c b/Source/TransformFunctions/arm_rfft_q15.c
index ca4c9d45..306963d8 100644
--- a/Source/TransformFunctions/arm_rfft_q15.c
+++ b/Source/TransformFunctions/arm_rfft_q15.c
@@ -68,6 +68,9 @@ void arm_split_rifft_q15(
\image html RFFTQ15.gif "Input and Output Formats for Q15 RFFT"
@par
\image html RIFFTQ15.gif "Input and Output Formats for Q15 RIFFT"
+ @par
+ If the input buffer is of length N, the output buffer must have length 2*N.
+ The input buffer is modified by this function.
*/
void arm_rfft_q15(
diff --git a/Source/TransformFunctions/arm_rfft_q31.c b/Source/TransformFunctions/arm_rfft_q31.c
index 9ba0d521..00dc7fae 100644
--- a/Source/TransformFunctions/arm_rfft_q31.c
+++ b/Source/TransformFunctions/arm_rfft_q31.c
@@ -68,6 +68,9 @@ void arm_split_rifft_q31(
\image html RFFTQ31.gif "Input and Output Formats for Q31 RFFT"
@par
\image html RIFFTQ31.gif "Input and Output Formats for Q31 RIFFT"
+ @par
+ If the input buffer is of length N, the output buffer must have length 2*N.
+ The input buffer is modified by this function.
*/
void arm_rfft_q31(
diff --git a/Testing/CMakeLists.txt b/Testing/CMakeLists.txt
index 40b1453d..06e210b4 100644
--- a/Testing/CMakeLists.txt
+++ b/Testing/CMakeLists.txt
@@ -147,9 +147,9 @@ set(TESTSRC
Source/Tests/ComplexTestsQ15.cpp
Source/Tests/SVMF32.cpp
Source/Tests/BayesF32.cpp
- #Source/Tests/TransformCF64.cpp
+ Source/Tests/TransformCF64.cpp
Source/Tests/TransformCF32.cpp
- #Source/Tests/TransformRF64.cpp
+ Source/Tests/TransformRF64.cpp
Source/Tests/TransformRF32.cpp
Source/Tests/TransformCQ31.cpp
Source/Tests/TransformRQ31.cpp
diff --git a/Testing/desc.txt b/Testing/desc.txt
index 663051b0..283f2cfd 100644
--- a/Testing/desc.txt
+++ b/Testing/desc.txt
@@ -2391,7 +2391,7 @@ group Root {
class = TransformTests
folder = Transform
- disabled {suite Transform Complex F64 {
+ suite Transform Complex F64 {
class = TransformCF64
folder = TransformF64
@@ -2509,9 +2509,8 @@ group Root {
}
}
- }
- disabled { suite Transform Real F64 {
+ suite Transform Real F64 {
class = TransformRF64
folder = TransformF64
@@ -2618,7 +2617,7 @@ group Root {
}
}
- }
+
suite Transform Complex F32 {
class = TransformCF32
diff --git a/Testing/runAllTests.py b/Testing/runAllTests.py
index 9459e2f6..1e07c8fa 100755
--- a/Testing/runAllTests.py
+++ b/Testing/runAllTests.py
@@ -103,7 +103,27 @@ processAndRun(BUILDFOLDER,FVP,"FilteringTests",custom=custom)
msg("Matrix Tests")
processAndRun(BUILDFOLDER,FVP,"MatrixTests",custom=custom)
-msg("Transform Tests")
-processAndRun(BUILDFOLDER,FVP,"TransformTests",custom=custom)
+# Too many patterns to run the full transform directly
+msg("Transform Tests CF64")
+processAndRun(BUILDFOLDER,FVP,"TransformCF64",custom=custom)
+msg("Transform Tests RF64")
+processAndRun(BUILDFOLDER,FVP,"TransformRF64",custom=custom)
+msg("Transform Tests CF32")
+processAndRun(BUILDFOLDER,FVP,"TransformCF32",custom=custom)
+
+msg("Transform Tests RF32")
+processAndRun(BUILDFOLDER,FVP,"TransformRF32",custom=custom)
+
+msg("Transform Tests CQ31")
+processAndRun(BUILDFOLDER,FVP,"TransformCQ31",custom=custom)
+
+msg("Transform Tests RQ31")
+processAndRun(BUILDFOLDER,FVP,"TransformRQ31",custom=custom)
+
+msg("Transform Tests CQ15")
+processAndRun(BUILDFOLDER,FVP,"TransformCQ15",custom=custom)
+
+msg("Transform Tests RQ15")
+processAndRun(BUILDFOLDER,FVP,"TransformRQ15",custom=custom)
\ No newline at end of file