CMSIS-DSP: Cleaning for RFFT

Updated Doxygen comments.
Moved cfft_init_f64 from PythonWrapper to normal repository.
diff --git a/CMSIS/DSP/Include/arm_math.h b/CMSIS/DSP/Include/arm_math.h
index d111f81..867a486 100644
--- a/CMSIS/DSP/Include/arm_math.h
+++ b/CMSIS/DSP/Include/arm_math.h
@@ -3309,21 +3309,6 @@
          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_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/CMSIS/DSP/PythonWrapper/cmsisdsp_pkg/src/cmsismodule.h b/CMSIS/DSP/PythonWrapper/cmsisdsp_pkg/src/cmsismodule.h
index 8074f21..f5352d7 100644
--- a/CMSIS/DSP/PythonWrapper/cmsisdsp_pkg/src/cmsismodule.h
+++ b/CMSIS/DSP/PythonWrapper/cmsisdsp_pkg/src/cmsismodule.h
@@ -7950,7 +7950,7 @@
   return(NULL);
 }
 
-
+#if 0
 static PyObject *
 cmsis_arm_rfft_32_fast_init_f64(PyObject *obj, PyObject *args)
 {
@@ -8141,7 +8141,7 @@
   }
   return(NULL);
 }
-
+#endif
 
 static PyObject *
 cmsis_arm_rfft_fast_f64(PyObject *obj, PyObject *args)
@@ -8201,6 +8201,7 @@
   return(NULL);
 }
 
+#if 0
 
 static PyObject *
 cmsis_arm_rfft_32_fast_init_f32(PyObject *obj, PyObject *args)
@@ -8393,6 +8394,7 @@
   return(NULL);
 }
 
+#endif 
 
 static PyObject *
 cmsis_arm_rfft_fast_f32(PyObject *obj, PyObject *args)
@@ -15589,24 +15591,8 @@
 {"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/CMSIS/DSP/PythonWrapper/cmsisdsp_pkg/src/fftinit.c b/CMSIS/DSP/PythonWrapper/cmsisdsp_pkg/src/fftinit.c
deleted file mode 100644
index 1ba4cf1..0000000
--- a/CMSIS/DSP/PythonWrapper/cmsisdsp_pkg/src/fftinit.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/* ----------------------------------------------------------------------
- * Project:      CMSIS DSP Python Wrapper
- * Title:        fftinit.c
- * Description:  FFT init functions for the Python wrapper
- *
- * $Date:        25. March 2019
- * $Revision:    V0.0.1
- *
- * Target Processor: Cortex-M cores
- * -------------------------------------------------------------------- */
-/*
- * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * 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;
-
-
-
-arm_status arm_cfft_init_f64(
-  arm_cfft_instance_f64 * S,
-  uint16_t fftLen)
-{
-        /*  Initialise the default arm status */
-        arm_status status = ARM_MATH_SUCCESS;
-
-        /*  Initialise the FFT length */
-        S->fftLen = fftLen;
-
-        /*  Initialise the Twiddle coefficient pointer */
-        S->pTwiddle = (float64_t *)twiddleCoefF64_4096;
-
-
-        /*  Initializations of Instance structure depending on the FFT length */
-        switch (S->fftLen) {
-            /*  Initializations of structure parameters for 4096 point FFT */
-        case 4096U:
-            /*  Initialise the bit reversal table modifier */
-            FFTINIT(f64,4096);
-            break;
-
-            /*  Initializations of structure parameters for 2048 point FFT */
-        case 2048U:
-            /*  Initialise the bit reversal table modifier */
-            FFTINIT(f64,2048);
-
-            break;
-
-            /*  Initializations of structure parameters for 1024 point FFT */
-        case 1024U:
-            /*  Initialise the bit reversal table modifier */
-            FFTINIT(f64,1024);
-
-            break;
-
-            /*  Initializations of structure parameters for 512 point FFT */
-        case 512U:
-            /*  Initialise the bit reversal table modifier */
-            FFTINIT(f64,512);
-            break;
-
-        case 256U:
-            FFTINIT(f64,256);
-            break;
-
-        case 128U:
-            FFTINIT(f64,128);
-            break;
-
-        case 64U:
-            FFTINIT(f64,64);
-            break;
-
-        case 32U:
-            FFTINIT(f64,32);
-            break;
-
-        case 16U:
-            /*  Initializations of structure parameters for 16 point FFT */
-            FFTINIT(f64,16);
-            break;
-
-
-        default:
-            /*  Reporting argument error if fftSize is not valid value */
-            status = ARM_MATH_ARGUMENT_ERROR;
-            break;
-        }
-
-        return (status);
-}
-
-
diff --git a/CMSIS/DSP/PythonWrapper/setup.py b/CMSIS/DSP/PythonWrapper/setup.py
index 2af78dc..a8c707e 100644
--- a/CMSIS/DSP/PythonWrapper/setup.py
+++ b/CMSIS/DSP/PythonWrapper/setup.py
@@ -50,7 +50,6 @@
 
 #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/CMSIS/DSP/Source/TransformFunctions/arm_cfft_init_f64.c b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_init_f64.c
new file mode 100755
index 0000000..939488b
--- /dev/null
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_init_f64.c
@@ -0,0 +1,150 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_cfft_init_f64.c
+ * Description:  Initialization function for cfft f64 instance
+ *
+ * $Date:        23. January 2020
+ * $Revision:    V1.7.0
+ *
+ * Target Processor: Cortex-M cores
+ * -------------------------------------------------------------------- */
+/*
+ * Copyright (C) 2010-2020 ARM Limited or its affiliates. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#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;
+
+/**
+  @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(
+  arm_cfft_instance_f64 * S,
+  uint16_t fftLen)
+{
+        /*  Initialise the default arm status */
+        arm_status status = ARM_MATH_SUCCESS;
+
+        /*  Initialise the FFT length */
+        S->fftLen = fftLen;
+
+        /*  Initialise the Twiddle coefficient pointer */
+        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 */
+            status = ARM_MATH_ARGUMENT_ERROR;
+            break;
+        }
+
+
+        return (status);
+}
+
+/**
+  @} end of ComplexFFT group
+ */
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_f32.c b/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_f32.c
index 8d5d72e..2f82f92 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_f32.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_f32.c
@@ -533,17 +533,15 @@
                     - 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 @@
                    <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**.
  */
 
 /**
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_init_f32.c b/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_init_f32.c
index b657e19..72a6768 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_init_f32.c
+++ b/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 @@
 #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 @@
                    - \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 @@
 #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 @@
                    - \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 @@
 #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 @@
                    - \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 @@
 #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 @@
                    - \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 @@
 
 #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 @@
                    - \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 @@
 
 #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 @@
 
 #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 @@
                    - \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/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_init_f64.c b/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_init_f64.c
index 84b6fab..3ea02ff 100755
--- a/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_init_f64.c
+++ b/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 @@
                    - \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 @@
                    - \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 @@
                    - \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 @@
                    - \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 @@
                    - \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 @@
                    - \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 @@
                    - \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/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q15.c b/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q15.c
index ca4c9d4..306963d 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q15.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q15.c
@@ -68,6 +68,9 @@
                    \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/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q31.c b/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q31.c
index 9ba0d52..00dc7fa 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q31.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q31.c
@@ -68,6 +68,9 @@
                    \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/CMSIS/DSP/Testing/CMakeLists.txt b/CMSIS/DSP/Testing/CMakeLists.txt
index 40b1453..06e210b 100644
--- a/CMSIS/DSP/Testing/CMakeLists.txt
+++ b/CMSIS/DSP/Testing/CMakeLists.txt
@@ -147,9 +147,9 @@
   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/CMSIS/DSP/Testing/desc.txt b/CMSIS/DSP/Testing/desc.txt
index 663051b..283f2cf 100644
--- a/CMSIS/DSP/Testing/desc.txt
+++ b/CMSIS/DSP/Testing/desc.txt
@@ -2391,7 +2391,7 @@
            class = TransformTests
            folder = Transform 
 
-           disabled {suite Transform Complex F64 {
+           suite Transform Complex F64 {
               class = TransformCF64
               folder = TransformF64
 
@@ -2509,9 +2509,8 @@
               }
 
             }
-           }
 
-           disabled { suite Transform Real F64 {
+           suite Transform Real F64 {
               class = TransformRF64
               folder = TransformF64
 
@@ -2618,7 +2617,7 @@
               }
 
             }
-           }
+           
 
            suite Transform Complex F32 {
               class = TransformCF32
diff --git a/CMSIS/DSP/Testing/runAllTests.py b/CMSIS/DSP/Testing/runAllTests.py
index 9459e2f..1e07c8f 100755
--- a/CMSIS/DSP/Testing/runAllTests.py
+++ b/CMSIS/DSP/Testing/runAllTests.py
@@ -103,7 +103,27 @@
 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
diff --git a/CMSIS/DoxyGen/DSP/dsp.dxy b/CMSIS/DoxyGen/DSP/dsp.dxy
index 6a2c60e..16c592a 100644
--- a/CMSIS/DoxyGen/DSP/dsp.dxy
+++ b/CMSIS/DoxyGen/DSP/dsp.dxy
@@ -414,7 +414,7 @@
 # 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 @@
 # 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