소스 검색

CMSIS-DSP: Cleaning for RFFT

Updated Doxygen comments.
Moved cfft_init_f64 from PythonWrapper to normal repository.
Christophe Favergeon 6 년 전
부모
커밋
bcfcc0b76d

+ 0 - 31
CMSIS/DSP/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,

+ 4 - 18
CMSIS/DSP/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,""},

+ 0 - 1
CMSIS/DSP/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,

+ 49 - 16
CMSIS/DSP/PythonWrapper/cmsisdsp_pkg/src/fftinit.c → CMSIS/DSP/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
+ */

+ 8 - 8
CMSIS/DSP/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:
   <pre>
       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};
   </pre>
                    where <code>fftLenReal</code> is the length of the real transform;
-                   <code>fftLenBy2</code> length of  the internal complex transform.
+                   <code>fftLenBy2</code> length of  the internal complex transform (fftLenReal/2).
                    <code>ifftFlagR</code> Selects forward (=0) or inverse (=1) transform.
                    <code>bitReverseFlagR</code> Selects bit reversed output (=0) or normal order
                    output (=1).
@@ -552,8 +550,10 @@ void merge_rfft_f32(
                    <code>pTwiddleAReal</code>points to the A array of twiddle coefficients;
                    <code>pTwiddleBReal</code>points to the B array of twiddle coefficients;
                    <code>pCfft</code> 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**.
  */
 
 /**

+ 16 - 8
CMSIS/DSP/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;
 

+ 8 - 8
CMSIS/DSP/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;
 

+ 3 - 0
CMSIS/DSP/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(

+ 3 - 0
CMSIS/DSP/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(

+ 2 - 2
CMSIS/DSP/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

+ 3 - 4
CMSIS/DSP/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

+ 22 - 2
CMSIS/DSP/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)

+ 2 - 2
CMSIS/DoxyGen/DSP/dsp.dxy

@@ -414,7 +414,7 @@ EXTRACT_ALL            = YES
 # be included in the documentation.
 # The default value is: NO.
 
-EXTRACT_PRIVATE        = YES
+EXTRACT_PRIVATE        = NO
 
 # If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
 # scope will be included in the documentation.
@@ -426,7 +426,7 @@ EXTRACT_PACKAGE        = NO
 # included in the documentation.
 # The default value is: NO.
 
-EXTRACT_STATIC         = YES
+EXTRACT_STATIC         = NO
 
 # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined
 # locally in source files will be included in the documentation. If set to NO