CMSIS-DSP:  Re-organization of arm_math.h
arm_math.h splitted into several headers.
Interpolation functions moved from arm_math.h to a separate folder.
diff --git a/CMSIS/DSP/Include/arm_common_tables.h b/CMSIS/DSP/Include/arm_common_tables.h
index 8bc1c26..40b351b 100644
--- a/CMSIS/DSP/Include/arm_common_tables.h
+++ b/CMSIS/DSP/Include/arm_common_tables.h
@@ -29,7 +29,8 @@
 #ifndef _ARM_COMMON_TABLES_H
 #define _ARM_COMMON_TABLES_H
 
-#include "arm_math.h"
+#include "arm_math_types.h"
+#include "dsp/fast_math_functions.h"
 
 #ifdef   __cplusplus
 extern "C"
diff --git a/CMSIS/DSP/Include/arm_common_tables_f16.h b/CMSIS/DSP/Include/arm_common_tables_f16.h
index 1bae6d8..87a1143 100755
--- a/CMSIS/DSP/Include/arm_common_tables_f16.h
+++ b/CMSIS/DSP/Include/arm_common_tables_f16.h
@@ -29,8 +29,7 @@
 #ifndef _ARM_COMMON_TABLES_F16_H
 #define _ARM_COMMON_TABLES_F16_H
 
-#include "arm_math_f16.h"
-#include "arm_common_tables.h"
+#include "arm_math_types_f16.h"
 
 #ifdef   __cplusplus
 extern "C"
diff --git a/CMSIS/DSP/Include/arm_const_structs.h b/CMSIS/DSP/Include/arm_const_structs.h
index 373bd07..712c6eb 100644
--- a/CMSIS/DSP/Include/arm_const_structs.h
+++ b/CMSIS/DSP/Include/arm_const_structs.h
@@ -30,8 +30,9 @@
 #ifndef _ARM_CONST_STRUCTS_H
 #define _ARM_CONST_STRUCTS_H
 
-#include "arm_math.h"
+#include "arm_math_types.h"
 #include "arm_common_tables.h"
+#include "dsp/transform_functions.h"
 
 #ifdef   __cplusplus
 extern "C"
diff --git a/CMSIS/DSP/Include/arm_const_structs_f16.h b/CMSIS/DSP/Include/arm_const_structs_f16.h
index 0e58a72..c20f519 100755
--- a/CMSIS/DSP/Include/arm_const_structs_f16.h
+++ b/CMSIS/DSP/Include/arm_const_structs_f16.h
@@ -30,8 +30,10 @@
 #ifndef _ARM_CONST_STRUCTS_F16_H
 #define _ARM_CONST_STRUCTS_F16_H
 
-#include "arm_math_f16.h"
+#include "arm_math_types_f16.h"
+#include "arm_common_tables.h"
 #include "arm_common_tables_f16.h"
+#include "dsp/transform_functions_f16.h"
 
 #ifdef   __cplusplus
 extern "C"
diff --git a/CMSIS/DSP/Include/arm_math.h b/CMSIS/DSP/Include/arm_math.h
index 1b01d07..404ee91 100644
--- a/CMSIS/DSP/Include/arm_math.h
+++ b/CMSIS/DSP/Include/arm_math.h
@@ -149,6 +149,11 @@
    *
    * MVE Float16 implementations of some algorithms (Requires MVE extension).
    *
+   * - DISABLEFLOAT16:
+   *
+   * Disable float16 algorithms when __fp16 is not supported for a
+   * specific compiler / core configuration
+   *
    * <hr>
    * \section pack CMSIS-DSP in ARM::CMSIS Pack
    *
@@ -156,9 +161,10 @@
    * |File/Folder                      |Content                                                                 |
    * |---------------------------------|------------------------------------------------------------------------|
    * |\b CMSIS\\Documentation\\DSP     | This documentation                                                     |
-   * |\b CMSIS\\DSP\\DSP_Lib_TestSuite | DSP_Lib test suite                                                     |
+   * |\b CMSIS\\DSP\\DSP_Lib_TestSuite | DSP_Lib deprecated test suite                                                     |
    * |\b CMSIS\\DSP\\Examples          | Example projects demonstrating the usage of the library functions      |
-   * |\b CMSIS\\DSP\\Include           | DSP_Lib include files                                                  |
+   * |\b CMSIS\\DSP\\Include           | DSP_Lib include files for using and building the lib
+   * |\b CMSIS\\DSP\\PrivateInclude    | DSP_Lib private include files for building the lib                                               |
    * |\b CMSIS\\DSP\\Lib               | DSP_Lib binaries                                                       |
    * |\b CMSIS\\DSP\\Projects          | Projects to rebuild DSP_Lib binaries                                   |
    * |\b CMSIS\\DSP\\Source            | DSP_Lib source files                                                   |
@@ -169,8912 +175,63 @@
    */
 
 
-/**
- * @defgroup groupMath Basic Math Functions
- */
 
-/**
- * @defgroup groupFastMath Fast Math Functions
- * This set of functions provides a fast approximation to sine, cosine, and square root.
- * As compared to most of the other functions in the CMSIS math library, the fast math functions
- * operate on individual values and not arrays.
- * There are separate functions for Q15, Q31, and floating-point data.
- *
- */
 
-/**
- * @defgroup groupCmplxMath Complex Math Functions
- * This set of functions operates on complex data vectors.
- * The data in the complex arrays is stored in an interleaved fashion
- * (real, imag, real, imag, ...).
- * In the API functions, the number of samples in a complex array refers
- * to the number of complex values; the array contains twice this number of
- * real values.
- */
 
-/**
- * @defgroup groupFilters Filtering Functions
- */
 
-/**
- * @defgroup groupMatrix Matrix Functions
- *
- * This set of functions provides basic matrix math operations.
- * The functions operate on matrix data structures.  For example,
- * the type
- * definition for the floating-point matrix structure is shown
- * below:
- * <pre>
- *     typedef struct
- *     {
- *       uint16_t numRows;     // number of rows of the matrix.
- *       uint16_t numCols;     // number of columns of the matrix.
- *       float32_t *pData;     // points to the data of the matrix.
- *     } arm_matrix_instance_f32;
- * </pre>
- * There are similar definitions for Q15 and Q31 data types.
- *
- * The structure specifies the size of the matrix and then points to
- * an array of data.  The array is of size <code>numRows X numCols</code>
- * and the values are arranged in row order.  That is, the
- * matrix element (i, j) is stored at:
- * <pre>
- *     pData[i*numCols + j]
- * </pre>
- *
- * \par Init Functions
- * There is an associated initialization function for each type of matrix
- * data structure.
- * The initialization function sets the values of the internal structure fields.
- * Refer to \ref arm_mat_init_f32(), \ref arm_mat_init_q31() and \ref arm_mat_init_q15()
- * for floating-point, Q31 and Q15 types,  respectively.
- *
- * \par
- * Use of the initialization function is optional. However, if initialization function is used
- * then the instance structure cannot be placed into a const data section.
- * To place the instance structure in a const data
- * section, manually initialize the data structure.  For example:
- * <pre>
- * <code>arm_matrix_instance_f32 S = {nRows, nColumns, pData};</code>
- * <code>arm_matrix_instance_q31 S = {nRows, nColumns, pData};</code>
- * <code>arm_matrix_instance_q15 S = {nRows, nColumns, pData};</code>
- * </pre>
- * where <code>nRows</code> specifies the number of rows, <code>nColumns</code>
- * specifies the number of columns, and <code>pData</code> points to the
- * data array.
- *
- * \par Size Checking
- * By default all of the matrix functions perform size checking on the input and
- * output matrices. For example, the matrix addition function verifies that the
- * two input matrices and the output matrix all have the same number of rows and
- * columns. If the size check fails the functions return:
- * <pre>
- *     ARM_MATH_SIZE_MISMATCH
- * </pre>
- * Otherwise the functions return
- * <pre>
- *     ARM_MATH_SUCCESS
- * </pre>
- * There is some overhead associated with this matrix size checking.
- * The matrix size checking is enabled via the \#define
- * <pre>
- *     ARM_MATH_MATRIX_CHECK
- * </pre>
- * within the library project settings.  By default this macro is defined
- * and size checking is enabled. By changing the project settings and
- * undefining this macro size checking is eliminated and the functions
- * run a bit faster. With size checking disabled the functions always
- * return <code>ARM_MATH_SUCCESS</code>.
- */
 
-/**
- * @defgroup groupTransforms Transform Functions
- */
 
-/**
- * @defgroup groupController Controller Functions
- */
 
-/**
- * @defgroup groupStats Statistics Functions
- */
 
-/**
- * @defgroup groupSupport Support Functions
- */
-
-/**
- * @defgroup groupInterpolation Interpolation Functions
- * These functions perform 1- and 2-dimensional interpolation of data.
- * Linear interpolation is used for 1-dimensional data and
- * bilinear interpolation is used for 2-dimensional data.
- */
 
 /**
  * @defgroup groupExamples Examples
  */
 
-/**
- * @defgroup groupSVM SVM Functions
- * This set of functions is implementing SVM classification on 2 classes.
- * The training must be done from scikit-learn. The parameters can be easily
- * generated from the scikit-learn object. Some examples are given in
- * DSP/Testing/PatternGeneration/SVM.py
- *
- * If more than 2 classes are needed, the functions in this folder 
- * will have to be used, as building blocks, to do multi-class classification.
- *
- * No multi-class classification is provided in this SVM folder.
- * 
- */
 
 
-/**
- * @defgroup groupBayes Bayesian estimators
- *
- * Implement the naive gaussian Bayes estimator.
- * The training must be done from scikit-learn.
- *
- * The parameters can be easily
- * generated from the scikit-learn object. Some examples are given in
- * DSP/Testing/PatternGeneration/Bayes.py
- */
-
-/**
- * @defgroup groupDistance Distance functions
- *
- * Distance functions for use with clustering algorithms.
- * There are distance functions for float vectors and boolean vectors.
- *
- */
 
 
 #ifndef _ARM_MATH_H
 #define _ARM_MATH_H
 
+
+#include "arm_math_types.h"
+#include "arm_math_memory.h"
+
+#include "dsp/none.h"
+#include "dsp/utils.h"
+
+#include "dsp/basic_math_functions.h"  
+#include "dsp/interpolation_functions.h"
+#include "dsp/bayes_functions.h"
+#include "dsp/matrix_functions.h"
+#include "dsp/complex_math_functions.h"
+#include "dsp/statistics_functions.h"
+#include "dsp/controller_functions.h"
+#include "dsp/support_functions.h"
+#include "dsp/distance_functions.h"
+#include "dsp/svm_functions.h"
+#include "dsp/fast_math_functions.h"
+#include "dsp/transform_functions.h"
+#include "dsp/filtering_functions.h"
+
+
+
 #ifdef   __cplusplus
 extern "C"
 {
 #endif
 
-/* Compiler specific diagnostic adjustment */
-#if   defined ( __CC_ARM )
 
-#elif defined ( __ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 )
 
-#elif defined ( __GNUC__ )
-  #pragma GCC diagnostic push
-  #pragma GCC diagnostic ignored "-Wsign-conversion"
-  #pragma GCC diagnostic ignored "-Wconversion"
-  #pragma GCC diagnostic ignored "-Wunused-parameter"
 
-#elif defined ( __ICCARM__ )
-
-#elif defined ( __TI_ARM__ )
-
-#elif defined ( __CSMC__ )
-
-#elif defined ( __TASKING__ )
-
-#elif defined ( _MSC_VER )
-
-#else
-  #error Unknown compiler
-#endif
-
-
-/* Included for instrinsics definitions */
-#if defined (_MSC_VER ) 
-#include <stdint.h>
-#define __STATIC_FORCEINLINE static __forceinline
-#define __STATIC_INLINE static __inline
-#define __ALIGNED(x) __declspec(align(x))
-
-#elif defined (__GNUC_PYTHON__)
-#include <stdint.h>
-#define  __ALIGNED(x) __attribute__((aligned(x)))
-#define __STATIC_FORCEINLINE static __attribute__((inline))
-#define __STATIC_INLINE static __attribute__((inline))
-#pragma GCC diagnostic ignored "-Wunused-function"
-#pragma GCC diagnostic ignored "-Wattributes"
-
-#else
-#include "cmsis_compiler.h"
-#endif
-
-
-
-#include <string.h>
-#include <math.h>
-#include <float.h>
-#include <limits.h>
-
-/* evaluate ARM DSP feature */
-#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1))
-  #define ARM_MATH_DSP                   1
-#endif
-
-#if defined(ARM_MATH_NEON)
-#include <arm_neon.h>
-#if __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
-  #if !defined(ARM_MATH_NEON_FLOAT16)
-  #define ARM_MATH_NEON_FLOAT16
-  #endif
-#endif
-#endif
-
-#if !defined(ARM_MATH_AUTOVECTORIZE)
-
-#if __ARM_FEATURE_MVE
-  #if !defined(ARM_MATH_MVEI)
-    #define ARM_MATH_MVEI
-  #endif
-#endif
-
-#if (__ARM_FEATURE_MVE & 2)
-  #if !defined(ARM_MATH_MVEF)
-    #define ARM_MATH_MVEF
-  #endif
-  #if !defined(ARM_MATH_MVE_FLOAT16)
-  /* HW Float16 not yet well supported on gcc for M55 */
-    #if !defined(__CMSIS_GCC_H)
-       #define ARM_MATH_MVE_FLOAT16
-    #endif
-  #endif
-#endif
-
-#endif /*!defined(ARM_MATH_AUTOVECTORIZE)*/
-
-
-#if defined (ARM_MATH_HELIUM)
-  #if !defined(ARM_MATH_MVEF)
-    #define ARM_MATH_MVEF
-  #endif
-
-  #if !defined(ARM_MATH_MVEI)
-    #define ARM_MATH_MVEI
-  #endif
-
-  #if !defined(ARM_MATH_MVE_FLOAT16)
-    /* HW Float16 not yet well supported on gcc for M55 */
-    #if !defined(__CMSIS_GCC_H)
-       #define ARM_MATH_MVE_FLOAT16
-    #endif
-  #endif
-#endif
-
-#ifdef   __cplusplus
-}
-#endif
-
-#if __ARM_FEATURE_MVE
-#include <arm_mve.h>
-#endif
-
-#ifdef   __cplusplus
-extern "C"
-{
-#endif
- /**
-   * @brief 8-bit fractional data type in 1.7 format.
-   */
-  typedef int8_t q7_t;
-
-  /**
-   * @brief 16-bit fractional data type in 1.15 format.
-   */
-  typedef int16_t q15_t;
-
-  /**
-   * @brief 32-bit fractional data type in 1.31 format.
-   */
-  typedef int32_t q31_t;
-
-  /**
-   * @brief 64-bit fractional data type in 1.63 format.
-   */
-  typedef int64_t q63_t;
-
-  /**
-   * @brief 32-bit floating-point type definition.
-   */
-  typedef float float32_t;
-
-  /**
-   * @brief 64-bit floating-point type definition.
-   */
-  typedef double float64_t;
-
-  /**
-   * @brief vector types
-   */
-#if defined(ARM_MATH_NEON) || defined (ARM_MATH_MVEI)
-  /**
-   * @brief 64-bit fractional 128-bit vector data type in 1.63 format
-   */
-  typedef int64x2_t q63x2_t;
-
-  /**
-   * @brief 32-bit fractional 128-bit vector data type in 1.31 format.
-   */
-  typedef int32x4_t q31x4_t;
-
-  /**
-   * @brief 16-bit fractional 128-bit vector data type with 16-bit alignement in 1.15 format.
-   */
-  typedef __ALIGNED(2) int16x8_t q15x8_t;
-
- /**
-   * @brief 8-bit fractional 128-bit vector data type with 8-bit alignement in 1.7 format.
-   */
-  typedef __ALIGNED(1) int8x16_t q7x16_t;
-
-    /**
-   * @brief 32-bit fractional 128-bit vector pair data type in 1.31 format.
-   */
-  typedef int32x4x2_t q31x4x2_t;
-
-  /**
-   * @brief 32-bit fractional 128-bit vector quadruplet data type in 1.31 format.
-   */
-  typedef int32x4x4_t q31x4x4_t;
-
-  /**
-   * @brief 16-bit fractional 128-bit vector pair data type in 1.15 format.
-   */
-  typedef int16x8x2_t q15x8x2_t;
-
-  /**
-   * @brief 16-bit fractional 128-bit vector quadruplet data type in 1.15 format.
-   */
-  typedef int16x8x4_t q15x8x4_t;
-
-  /**
-   * @brief 8-bit fractional 128-bit vector pair data type in 1.7 format.
-   */
-  typedef int8x16x2_t q7x16x2_t;
-
-  /**
-   * @brief 8-bit fractional 128-bit vector quadruplet data type in 1.7 format.
-   */
-   typedef int8x16x4_t q7x16x4_t;
-
-  /**
-   * @brief 32-bit fractional data type in 9.23 format.
-   */
-  typedef int32_t q23_t;
-
-  /**
-   * @brief 32-bit fractional 128-bit vector data type in 9.23 format.
-   */
-  typedef int32x4_t q23x4_t;
-
-  /**
-   * @brief 64-bit status 128-bit vector data type.
-   */
-  typedef int64x2_t status64x2_t;
-
-  /**
-   * @brief 32-bit status 128-bit vector data type.
-   */
-  typedef int32x4_t status32x4_t;
-
-  /**
-   * @brief 16-bit status 128-bit vector data type.
-   */
-  typedef int16x8_t status16x8_t;
-
-  /**
-   * @brief 8-bit status 128-bit vector data type.
-   */
-  typedef int8x16_t status8x16_t;
-
-
-#endif
-
-#if defined(ARM_MATH_NEON) || defined(ARM_MATH_MVEF) /* floating point vector*/
-  /**
-   * @brief 32-bit floating-point 128-bit vector type
-   */
-  typedef float32x4_t f32x4_t;
-
-  /**
-   * @brief 32-bit floating-point 128-bit vector pair data type
-   */
-  typedef float32x4x2_t f32x4x2_t;
-
-  /**
-   * @brief 32-bit floating-point 128-bit vector quadruplet data type
-   */
-  typedef float32x4x4_t f32x4x4_t;
-
-  /**
-   * @brief 32-bit ubiquitous 128-bit vector data type
-   */
-  typedef union _any32x4_t
-  {
-      float32x4_t     f;
-      int32x4_t       i;
-  } any32x4_t;
-
-#endif
-
-#if defined(ARM_MATH_NEON)
-  /**
-   * @brief 32-bit fractional 64-bit vector data type in 1.31 format.
-   */
-  typedef int32x2_t  q31x2_t;
-
-  /**
-   * @brief 16-bit fractional 64-bit vector data type in 1.15 format.
-   */
-  typedef  __ALIGNED(2) int16x4_t q15x4_t;
-
-  /**
-   * @brief 8-bit fractional 64-bit vector data type in 1.7 format.
-   */
-  typedef  __ALIGNED(1) int8x8_t q7x8_t;
-
-  /**
-   * @brief 32-bit float 64-bit vector data type.
-   */
-  typedef float32x2_t  f32x2_t;
-
-  /**
-   * @brief 32-bit floating-point 128-bit vector triplet data type
-   */
-  typedef float32x4x3_t f32x4x3_t;
-
-
-  /**
-   * @brief 32-bit fractional 128-bit vector triplet data type in 1.31 format
-   */
-  typedef int32x4x3_t q31x4x3_t;
-
-  /**
-   * @brief 16-bit fractional 128-bit vector triplet data type in 1.15 format
-   */
-  typedef int16x8x3_t q15x8x3_t;
-
-  /**
-   * @brief 8-bit fractional 128-bit vector triplet data type in 1.7 format
-   */
-  typedef int8x16x3_t q7x16x3_t;
-
-  /**
-   * @brief 32-bit floating-point 64-bit vector pair data type
-   */
-  typedef float32x2x2_t f32x2x2_t;
-
-  /**
-   * @brief 32-bit floating-point 64-bit vector triplet data type
-   */
-  typedef float32x2x3_t f32x2x3_t;
-
-  /**
-   * @brief 32-bit floating-point 64-bit vector quadruplet data type
-   */
-  typedef float32x2x4_t f32x2x4_t;
-
-
-  /**
-   * @brief 32-bit fractional 64-bit vector pair data type in 1.31 format
-   */
-  typedef int32x2x2_t q31x2x2_t;
-
-  /**
-   * @brief 32-bit fractional 64-bit vector triplet data type in 1.31 format
-   */
-  typedef int32x2x3_t q31x2x3_t;
-
-  /**
-   * @brief 32-bit fractional 64-bit vector quadruplet data type in 1.31 format
-   */
-  typedef int32x4x3_t q31x2x4_t;
-
-  /**
-   * @brief 16-bit fractional 64-bit vector pair data type in 1.15 format
-   */
-  typedef int16x4x2_t q15x4x2_t;
-
-  /**
-   * @brief 16-bit fractional 64-bit vector triplet data type in 1.15 format
-   */
-  typedef int16x4x2_t q15x4x3_t;
-
-  /**
-   * @brief 16-bit fractional 64-bit vector quadruplet data type in 1.15 format
-   */
-  typedef int16x4x3_t q15x4x4_t;
-
-  /**
-   * @brief 8-bit fractional 64-bit vector pair data type in 1.7 format
-   */
-  typedef int8x8x2_t q7x8x2_t;
-
-  /**
-   * @brief 8-bit fractional 64-bit vector triplet data type in 1.7 format
-   */
-  typedef int8x8x3_t q7x8x3_t;
-
-  /**
-   * @brief 8-bit fractional 64-bit vector quadruplet data type in 1.7 format
-   */
-  typedef int8x8x4_t q7x8x4_t;
-
-  /**
-   * @brief 32-bit ubiquitous 64-bit vector data type
-   */
-  typedef union _any32x2_t
-  {
-      float32x2_t     f;
-      int32x2_t       i;
-  } any32x2_t;
-
-
-  /**
-   * @brief 32-bit status 64-bit vector data type.
-   */
-  typedef int32x4_t status32x2_t;
-
-  /**
-   * @brief 16-bit status 64-bit vector data type.
-   */
-  typedef int16x8_t status16x4_t;
-
-  /**
-   * @brief 8-bit status 64-bit vector data type.
-   */
-  typedef int8x16_t status8x8_t;
-
-#endif
-
-
-
-
-
-#define F64_MAX   ((float64_t)DBL_MAX)
-#define F32_MAX   ((float32_t)FLT_MAX)
-
-
-
-#define F64_MIN   (-DBL_MAX)
-#define F32_MIN   (-FLT_MAX)
-
-
-
-#define F64_ABSMAX   ((float64_t)DBL_MAX)
-#define F32_ABSMAX   ((float32_t)FLT_MAX)
-
-
-
-#define F64_ABSMIN   ((float64_t)0.0)
-#define F32_ABSMIN   ((float32_t)0.0)
-
-
-#define Q31_MAX   ((q31_t)(0x7FFFFFFFL))
-#define Q15_MAX   ((q15_t)(0x7FFF))
-#define Q7_MAX    ((q7_t)(0x7F))
-#define Q31_MIN   ((q31_t)(0x80000000L))
-#define Q15_MIN   ((q15_t)(0x8000))
-#define Q7_MIN    ((q7_t)(0x80))
-
-#define Q31_ABSMAX   ((q31_t)(0x7FFFFFFFL))
-#define Q15_ABSMAX   ((q15_t)(0x7FFF))
-#define Q7_ABSMAX    ((q7_t)(0x7F))
-#define Q31_ABSMIN   ((q31_t)0)
-#define Q15_ABSMIN   ((q15_t)0)
-#define Q7_ABSMIN    ((q7_t)0)
-
-
-
-  /**
-   * @brief Macros required for reciprocal calculation in Normalized LMS
-   */
-
-#define DELTA_Q31          ((q31_t)(0x100))
-#define DELTA_Q15          ((q15_t)0x5)
-#define INDEX_MASK         0x0000003F
-#ifndef PI
-  #define PI               3.14159265358979f
-#endif
-
-  /**
-   * @brief Macros required for SINE and COSINE Fast math approximations
-   */
-
-#define FAST_MATH_TABLE_SIZE  512
-#define FAST_MATH_Q31_SHIFT   (32 - 10)
-#define FAST_MATH_Q15_SHIFT   (16 - 10)
-#define CONTROLLER_Q31_SHIFT  (32 - 9)
-#define TABLE_SPACING_Q31     0x400000
-#define TABLE_SPACING_Q15     0x80
-
-  /**
-   * @brief Macros required for SINE and COSINE Controller functions
-   */
-  /* 1.31(q31) Fixed value of 2/360 */
-  /* -1 to +1 is divided into 360 values so total spacing is (2/360) */
-#define INPUT_SPACING         0xB60B61
-
-  /**
-   * @brief Macros for complex numbers
-   */
-
-  /* Dimension C vector space */
-  #define CMPLX_DIM 2
-
-  /**
-   * @brief Error status returned by some functions in the library.
-   */
-
-  typedef enum
-  {
-    ARM_MATH_SUCCESS        =  0,        /**< No error */
-    ARM_MATH_ARGUMENT_ERROR = -1,        /**< One or more arguments are incorrect */
-    ARM_MATH_LENGTH_ERROR   = -2,        /**< Length of data buffer is incorrect */
-    ARM_MATH_SIZE_MISMATCH  = -3,        /**< Size of matrices is not compatible with the operation */
-    ARM_MATH_NANINF         = -4,        /**< Not-a-number (NaN) or infinity is generated */
-    ARM_MATH_SINGULAR       = -5,        /**< Input matrix is singular and cannot be inverted */
-    ARM_MATH_TEST_FAILURE   = -6         /**< Test Failed */
-  } arm_status;
-
- 
-/**
-  @brief definition to read/write two 16 bit values.
-  @deprecated
- */
-#if   defined ( __CC_ARM )
-  #define __SIMD32_TYPE int32_t __packed
-#elif defined ( __ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 )
-  #define __SIMD32_TYPE int32_t
-#elif defined ( __GNUC__ )
-  #define __SIMD32_TYPE int32_t
-#elif defined ( __ICCARM__ )
-  #define __SIMD32_TYPE int32_t __packed
-#elif defined ( __TI_ARM__ )
-  #define __SIMD32_TYPE int32_t
-#elif defined ( __CSMC__ )
-  #define __SIMD32_TYPE int32_t
-#elif defined ( __TASKING__ )
-  #define __SIMD32_TYPE __un(aligned) int32_t
-#elif defined(_MSC_VER )
-  #define __SIMD32_TYPE int32_t
-#else
-  #error Unknown compiler
-#endif
-
-#define __SIMD32(addr)        (*(__SIMD32_TYPE **) & (addr))
-#define __SIMD32_CONST(addr)  ( (__SIMD32_TYPE * )   (addr))
-#define _SIMD32_OFFSET(addr)  (*(__SIMD32_TYPE * )   (addr))
-#define __SIMD64(addr)        (*(      int64_t **) & (addr))
-
-#define STEP(x) (x) <= 0 ? 0 : 1
-#define SQ(x) ((x) * (x))
-
-/* SIMD replacement */
-
-
-/**
-  @brief         Read 2 Q15 from Q15 pointer.
-  @param[in]     pQ15      points to input value
-  @return        Q31 value
- */
-__STATIC_FORCEINLINE q31_t read_q15x2 (
-  q15_t * pQ15)
-{
-  q31_t val;
-
-#ifdef __ARM_FEATURE_UNALIGNED
-  memcpy (&val, pQ15, 4);
-#else
-  val = (pQ15[1] << 16) | (pQ15[0] & 0x0FFFF) ;
-#endif
-
-  return (val);
-}
-
-/**
-  @brief         Read 2 Q15 from Q15 pointer and increment pointer afterwards.
-  @param[in]     pQ15      points to input value
-  @return        Q31 value
- */
-__STATIC_FORCEINLINE q31_t read_q15x2_ia (
-  q15_t ** pQ15)
-{
-  q31_t val;
-
-#ifdef __ARM_FEATURE_UNALIGNED
-  memcpy (&val, *pQ15, 4);
-#else
-  val = ((*pQ15)[1] << 16) | ((*pQ15)[0] & 0x0FFFF);
-#endif
-
- *pQ15 += 2;
- return (val);
-}
-
-/**
-  @brief         Read 2 Q15 from Q15 pointer and decrement pointer afterwards.
-  @param[in]     pQ15      points to input value
-  @return        Q31 value
- */
-__STATIC_FORCEINLINE q31_t read_q15x2_da (
-  q15_t ** pQ15)
-{
-  q31_t val;
-
-#ifdef __ARM_FEATURE_UNALIGNED
-  memcpy (&val, *pQ15, 4);
-#else
-  val = ((*pQ15)[1] << 16) | ((*pQ15)[0] & 0x0FFFF);
-#endif
-
-  *pQ15 -= 2;
-  return (val);
-}
-
-/**
-  @brief         Write 2 Q15 to Q15 pointer and increment pointer afterwards.
-  @param[in]     pQ15      points to input value
-  @param[in]     value     Q31 value
-  @return        none
- */
-__STATIC_FORCEINLINE void write_q15x2_ia (
-  q15_t ** pQ15,
-  q31_t    value)
-{
-  q31_t val = value;
-#ifdef __ARM_FEATURE_UNALIGNED
-  memcpy (*pQ15, &val, 4);
-#else
-  (*pQ15)[0] = (val & 0x0FFFF);
-  (*pQ15)[1] = (val >> 16) & 0x0FFFF;
-#endif
-
- *pQ15 += 2;
-}
-
-/**
-  @brief         Write 2 Q15 to Q15 pointer.
-  @param[in]     pQ15      points to input value
-  @param[in]     value     Q31 value
-  @return        none
- */
-__STATIC_FORCEINLINE void write_q15x2 (
-  q15_t * pQ15,
-  q31_t   value)
-{
-  q31_t val = value;
-
-#ifdef __ARM_FEATURE_UNALIGNED
-  memcpy (pQ15, &val, 4);
-#else
-  pQ15[0] = val & 0x0FFFF;
-  pQ15[1] = val >> 16;
-#endif
-}
-
-
-/**
-  @brief         Read 4 Q7 from Q7 pointer and increment pointer afterwards.
-  @param[in]     pQ7       points to input value
-  @return        Q31 value
- */
-__STATIC_FORCEINLINE q31_t read_q7x4_ia (
-  q7_t ** pQ7)
-{
-  q31_t val;
-
-
-#ifdef __ARM_FEATURE_UNALIGNED
-  memcpy (&val, *pQ7, 4);
-#else
-  val =(((*pQ7)[3] & 0x0FF) << 24)  | (((*pQ7)[2] & 0x0FF) << 16)  | (((*pQ7)[1] & 0x0FF) << 8)  | ((*pQ7)[0] & 0x0FF);
-#endif 
-
-  *pQ7 += 4;
-
-  return (val);
-}
-
-/**
-  @brief         Read 4 Q7 from Q7 pointer and decrement pointer afterwards.
-  @param[in]     pQ7       points to input value
-  @return        Q31 value
- */
-__STATIC_FORCEINLINE q31_t read_q7x4_da (
-  q7_t ** pQ7)
-{
-  q31_t val;
-#ifdef __ARM_FEATURE_UNALIGNED
-  memcpy (&val, *pQ7, 4);
-#else
-  val = ((((*pQ7)[3]) & 0x0FF) << 24) | ((((*pQ7)[2]) & 0x0FF) << 16)   | ((((*pQ7)[1]) & 0x0FF) << 8)  | ((*pQ7)[0] & 0x0FF);
-#endif 
-  *pQ7 -= 4;
-
-  return (val);
-}
-
-/**
-  @brief         Write 4 Q7 to Q7 pointer and increment pointer afterwards.
-  @param[in]     pQ7       points to input value
-  @param[in]     value     Q31 value
-  @return        none
- */
-__STATIC_FORCEINLINE void write_q7x4_ia (
-  q7_t ** pQ7,
-  q31_t   value)
-{
-  q31_t val = value;
-#ifdef __ARM_FEATURE_UNALIGNED
-  memcpy (*pQ7, &val, 4);
-#else
-  (*pQ7)[0] = val & 0x0FF;
-  (*pQ7)[1] = (val >> 8) & 0x0FF;
-  (*pQ7)[2] = (val >> 16) & 0x0FF;
-  (*pQ7)[3] = (val >> 24) & 0x0FF;
-
-#endif
-  *pQ7 += 4;
-}
-
-/*
-
-Normally those kind of definitions are in a compiler file
-in Core or Core_A.
-
-But for MSVC compiler it is a bit special. The goal is very specific
-to CMSIS-DSP and only to allow the use of this library from other
-systems like Python or Matlab.
-
-MSVC is not going to be used to cross-compile to ARM. So, having a MSVC
-compiler file in Core or Core_A would not make sense.
-
-*/
-#if defined ( _MSC_VER ) || defined(__GNUC_PYTHON__)
-    __STATIC_FORCEINLINE uint8_t __CLZ(uint32_t data)
-    {
-      if (data == 0U) { return 32U; }
-
-      uint32_t count = 0U;
-      uint32_t mask = 0x80000000U;
-
-      while ((data & mask) == 0U)
-      {
-        count += 1U;
-        mask = mask >> 1U;
-      }
-      return count;
-    }
-
-  __STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat)
-  {
-    if ((sat >= 1U) && (sat <= 32U))
-    {
-      const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U);
-      const int32_t min = -1 - max ;
-      if (val > max)
-      {
-        return max;
-      }
-      else if (val < min)
-      {
-        return min;
-      }
-    }
-    return val;
-  }
-
-  __STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat)
-  {
-    if (sat <= 31U)
-    {
-      const uint32_t max = ((1U << sat) - 1U);
-      if (val > (int32_t)max)
-      {
-        return max;
-      }
-      else if (val < 0)
-      {
-        return 0U;
-      }
-    }
-    return (uint32_t)val;
-  }
-
- /**
-  \brief   Rotate Right in unsigned value (32 bit)
-  \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.
-  \param [in]    op1  Value to rotate
-  \param [in]    op2  Number of Bits to rotate
-  \return               Rotated value
- */
-__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2)
-{
-  op2 %= 32U;
-  if (op2 == 0U)
-  {
-    return op1;
-  }
-  return (op1 >> op2) | (op1 << (32U - op2));
-}
-
-
-#endif
-
-#ifndef ARM_MATH_DSP
-  /**
-   * @brief definition to pack two 16 bit values.
-   */
-  #define __PKHBT(ARG1, ARG2, ARG3) ( (((int32_t)(ARG1) <<    0) & (int32_t)0x0000FFFF) | \
-                                      (((int32_t)(ARG2) << ARG3) & (int32_t)0xFFFF0000)  )
-  #define __PKHTB(ARG1, ARG2, ARG3) ( (((int32_t)(ARG1) <<    0) & (int32_t)0xFFFF0000) | \
-                                      (((int32_t)(ARG2) >> ARG3) & (int32_t)0x0000FFFF)  )
-#endif
-
-   /**
-   * @brief definition to pack four 8 bit values.
-   */
-#ifndef ARM_MATH_BIG_ENDIAN
-  #define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v0) <<  0) & (int32_t)0x000000FF) | \
-                                  (((int32_t)(v1) <<  8) & (int32_t)0x0000FF00) | \
-                                  (((int32_t)(v2) << 16) & (int32_t)0x00FF0000) | \
-                                  (((int32_t)(v3) << 24) & (int32_t)0xFF000000)  )
-#else
-  #define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v3) <<  0) & (int32_t)0x000000FF) | \
-                                  (((int32_t)(v2) <<  8) & (int32_t)0x0000FF00) | \
-                                  (((int32_t)(v1) << 16) & (int32_t)0x00FF0000) | \
-                                  (((int32_t)(v0) << 24) & (int32_t)0xFF000000)  )
-#endif
-
-
-  /**
-   * @brief Clips Q63 to Q31 values.
-   */
-  __STATIC_FORCEINLINE q31_t clip_q63_to_q31(
-  q63_t x)
-  {
-    return ((q31_t) (x >> 32) != ((q31_t) x >> 31)) ?
-      ((0x7FFFFFFF ^ ((q31_t) (x >> 63)))) : (q31_t) x;
-  }
-
-  /**
-   * @brief Clips Q63 to Q15 values.
-   */
-  __STATIC_FORCEINLINE q15_t clip_q63_to_q15(
-  q63_t x)
-  {
-    return ((q31_t) (x >> 32) != ((q31_t) x >> 31)) ?
-      ((0x7FFF ^ ((q15_t) (x >> 63)))) : (q15_t) (x >> 15);
-  }
-
-  /**
-   * @brief Clips Q31 to Q7 values.
-   */
-  __STATIC_FORCEINLINE q7_t clip_q31_to_q7(
-  q31_t x)
-  {
-    return ((q31_t) (x >> 24) != ((q31_t) x >> 23)) ?
-      ((0x7F ^ ((q7_t) (x >> 31)))) : (q7_t) x;
-  }
-
-  /**
-   * @brief Clips Q31 to Q15 values.
-   */
-  __STATIC_FORCEINLINE q15_t clip_q31_to_q15(
-  q31_t x)
-  {
-    return ((q31_t) (x >> 16) != ((q31_t) x >> 15)) ?
-      ((0x7FFF ^ ((q15_t) (x >> 31)))) : (q15_t) x;
-  }
-
-  /**
-   * @brief Multiplies 32 X 64 and returns 32 bit result in 2.30 format.
-   */
-  __STATIC_FORCEINLINE q63_t mult32x64(
-  q63_t x,
-  q31_t y)
-  {
-    return ((((q63_t) (x & 0x00000000FFFFFFFF) * y) >> 32) +
-            (((q63_t) (x >> 32)                * y)      )  );
-  }
-
-  /**
-   * @brief Function to Calculates 1/in (reciprocal) value of Q31 Data type.
-   */
-  __STATIC_FORCEINLINE uint32_t arm_recip_q31(
-        q31_t in,
-        q31_t * dst,
-  const q31_t * pRecipTable)
-  {
-    q31_t out;
-    uint32_t tempVal;
-    uint32_t index, i;
-    uint32_t signBits;
-
-    if (in > 0)
-    {
-      signBits = ((uint32_t) (__CLZ( in) - 1));
-    }
-    else
-    {
-      signBits = ((uint32_t) (__CLZ(-in) - 1));
-    }
-
-    /* Convert input sample to 1.31 format */
-    in = (in << signBits);
-
-    /* calculation of index for initial approximated Val */
-    index = (uint32_t)(in >> 24);
-    index = (index & INDEX_MASK);
-
-    /* 1.31 with exp 1 */
-    out = pRecipTable[index];
-
-    /* calculation of reciprocal value */
-    /* running approximation for two iterations */
-    for (i = 0U; i < 2U; i++)
-    {
-      tempVal = (uint32_t) (((q63_t) in * out) >> 31);
-      tempVal = 0x7FFFFFFFu - tempVal;
-      /*      1.31 with exp 1 */
-      /* out = (q31_t) (((q63_t) out * tempVal) >> 30); */
-      out = clip_q63_to_q31(((q63_t) out * tempVal) >> 30);
-    }
-
-    /* write output */
-    *dst = out;
-
-    /* return num of signbits of out = 1/in value */
-    return (signBits + 1U);
-  }
-
-
-  /**
-   * @brief Function to Calculates 1/in (reciprocal) value of Q15 Data type.
-   */
-  __STATIC_FORCEINLINE uint32_t arm_recip_q15(
-        q15_t in,
-        q15_t * dst,
-  const q15_t * pRecipTable)
-  {
-    q15_t out = 0;
-    uint32_t tempVal = 0;
-    uint32_t index = 0, i = 0;
-    uint32_t signBits = 0;
-
-    if (in > 0)
-    {
-      signBits = ((uint32_t)(__CLZ( in) - 17));
-    }
-    else
-    {
-      signBits = ((uint32_t)(__CLZ(-in) - 17));
-    }
-
-    /* Convert input sample to 1.15 format */
-    in = (in << signBits);
-
-    /* calculation of index for initial approximated Val */
-    index = (uint32_t)(in >>  8);
-    index = (index & INDEX_MASK);
-
-    /*      1.15 with exp 1  */
-    out = pRecipTable[index];
-
-    /* calculation of reciprocal value */
-    /* running approximation for two iterations */
-    for (i = 0U; i < 2U; i++)
-    {
-      tempVal = (uint32_t) (((q31_t) in * out) >> 15);
-      tempVal = 0x7FFFu - tempVal;
-      /*      1.15 with exp 1 */
-      out = (q15_t) (((q31_t) out * tempVal) >> 14);
-      /* out = clip_q31_to_q15(((q31_t) out * tempVal) >> 14); */
-    }
-
-    /* write output */
-    *dst = out;
-
-    /* return num of signbits of out = 1/in value */
-    return (signBits + 1);
-  }
-
-/**
- * @brief Integer exponentiation
- * @param[in]    x           value
- * @param[in]    nb          integer exponent >= 1
- * @return x^nb
- *
- */
-__STATIC_INLINE float32_t arm_exponent_f32(float32_t x, int32_t nb)
-{
-    float32_t r = x;
-    nb --;
-    while(nb > 0)
-    {
-        r = r * x;
-        nb--;
-    }
-    return(r);
-}
-
-/**
- * @brief  64-bit to 32-bit unsigned normalization
- * @param[in]  in           is input unsigned long long value
- * @param[out] normalized   is the 32-bit normalized value
- * @param[out] norm         is norm scale
- */
-__STATIC_INLINE  void arm_norm_64_to_32u(uint64_t in, int32_t * normalized, int32_t *norm)
-{
-    int32_t     n1;
-    int32_t     hi = (int32_t) (in >> 32);
-    int32_t     lo = (int32_t) ((in << 32) >> 32);
-
-    n1 = __CLZ(hi) - 32;
-    if (!n1)
-    {
-        /*
-         * input fits in 32-bit
-         */
-        n1 = __CLZ(lo);
-        if (!n1)
-        {
-            /*
-             * MSB set, need to scale down by 1
-             */
-            *norm = -1;
-            *normalized = (((uint32_t) lo) >> 1);
-        } else
-        {
-            if (n1 == 32)
-            {
-                /*
-                 * input is zero
-                 */
-                *norm = 0;
-                *normalized = 0;
-            } else
-            {
-                /*
-                 * 32-bit normalization
-                 */
-                *norm = n1 - 1;
-                *normalized = lo << *norm;
-            }
-        }
-    } else
-    {
-        /*
-         * input fits in 64-bit
-         */
-        n1 = 1 - n1;
-        *norm = -n1;
-        /*
-         * 64 bit normalization
-         */
-        *normalized = (((uint32_t) lo) >> n1) | (hi << (32 - n1));
-    }
-}
-
-__STATIC_INLINE q31_t arm_div_q63_to_q31(q63_t num, q31_t den)
-{
-    q31_t   result;
-    uint64_t   absNum;
-    int32_t   normalized;
-    int32_t   norm;
-
-    /*
-     * if sum fits in 32bits
-     * avoid costly 64-bit division
-     */
-    absNum = num > 0 ? num : -num;
-    arm_norm_64_to_32u(absNum, &normalized, &norm);
-    if (norm > 0)
-        /*
-         * 32-bit division
-         */
-        result = (q31_t) num / den;
-    else
-        /*
-         * 64-bit division
-         */
-        result = (q31_t) (num / den);
-
-    return result;
-}
-
-
-/*
- * @brief C custom defined intrinsic functions
- */
-#if !defined (ARM_MATH_DSP)
-
-
-  /*
-   * @brief C custom defined QADD8
-   */
-  __STATIC_FORCEINLINE uint32_t __QADD8(
-  uint32_t x,
-  uint32_t y)
-  {
-    q31_t r, s, t, u;
-
-    r = __SSAT(((((q31_t)x << 24) >> 24) + (((q31_t)y << 24) >> 24)), 8) & (int32_t)0x000000FF;
-    s = __SSAT(((((q31_t)x << 16) >> 24) + (((q31_t)y << 16) >> 24)), 8) & (int32_t)0x000000FF;
-    t = __SSAT(((((q31_t)x <<  8) >> 24) + (((q31_t)y <<  8) >> 24)), 8) & (int32_t)0x000000FF;
-    u = __SSAT(((((q31_t)x      ) >> 24) + (((q31_t)y      ) >> 24)), 8) & (int32_t)0x000000FF;
-
-    return ((uint32_t)((u << 24) | (t << 16) | (s <<  8) | (r      )));
-  }
-
-
-  /*
-   * @brief C custom defined QSUB8
-   */
-  __STATIC_FORCEINLINE uint32_t __QSUB8(
-  uint32_t x,
-  uint32_t y)
-  {
-    q31_t r, s, t, u;
-
-    r = __SSAT(((((q31_t)x << 24) >> 24) - (((q31_t)y << 24) >> 24)), 8) & (int32_t)0x000000FF;
-    s = __SSAT(((((q31_t)x << 16) >> 24) - (((q31_t)y << 16) >> 24)), 8) & (int32_t)0x000000FF;
-    t = __SSAT(((((q31_t)x <<  8) >> 24) - (((q31_t)y <<  8) >> 24)), 8) & (int32_t)0x000000FF;
-    u = __SSAT(((((q31_t)x      ) >> 24) - (((q31_t)y      ) >> 24)), 8) & (int32_t)0x000000FF;
-
-    return ((uint32_t)((u << 24) | (t << 16) | (s <<  8) | (r      )));
-  }
-
-
-  /*
-   * @brief C custom defined QADD16
-   */
-  __STATIC_FORCEINLINE uint32_t __QADD16(
-  uint32_t x,
-  uint32_t y)
-  {
-/*  q31_t r,     s;  without initialisation 'arm_offset_q15 test' fails  but 'intrinsic' tests pass! for armCC */
-    q31_t r = 0, s = 0;
-
-    r = __SSAT(((((q31_t)x << 16) >> 16) + (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF;
-    s = __SSAT(((((q31_t)x      ) >> 16) + (((q31_t)y      ) >> 16)), 16) & (int32_t)0x0000FFFF;
-
-    return ((uint32_t)((s << 16) | (r      )));
-  }
-
-
-  /*
-   * @brief C custom defined SHADD16
-   */
-  __STATIC_FORCEINLINE uint32_t __SHADD16(
-  uint32_t x,
-  uint32_t y)
-  {
-    q31_t r, s;
-
-    r = (((((q31_t)x << 16) >> 16) + (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF;
-    s = (((((q31_t)x      ) >> 16) + (((q31_t)y      ) >> 16)) >> 1) & (int32_t)0x0000FFFF;
-
-    return ((uint32_t)((s << 16) | (r      )));
-  }
-
-
-  /*
-   * @brief C custom defined QSUB16
-   */
-  __STATIC_FORCEINLINE uint32_t __QSUB16(
-  uint32_t x,
-  uint32_t y)
-  {
-    q31_t r, s;
-
-    r = __SSAT(((((q31_t)x << 16) >> 16) - (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF;
-    s = __SSAT(((((q31_t)x      ) >> 16) - (((q31_t)y      ) >> 16)), 16) & (int32_t)0x0000FFFF;
-
-    return ((uint32_t)((s << 16) | (r      )));
-  }
-
-
-  /*
-   * @brief C custom defined SHSUB16
-   */
-  __STATIC_FORCEINLINE uint32_t __SHSUB16(
-  uint32_t x,
-  uint32_t y)
-  {
-    q31_t r, s;
-
-    r = (((((q31_t)x << 16) >> 16) - (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF;
-    s = (((((q31_t)x      ) >> 16) - (((q31_t)y      ) >> 16)) >> 1) & (int32_t)0x0000FFFF;
-
-    return ((uint32_t)((s << 16) | (r      )));
-  }
-
-
-  /*
-   * @brief C custom defined QASX
-   */
-  __STATIC_FORCEINLINE uint32_t __QASX(
-  uint32_t x,
-  uint32_t y)
-  {
-    q31_t r, s;
-
-    r = __SSAT(((((q31_t)x << 16) >> 16) - (((q31_t)y      ) >> 16)), 16) & (int32_t)0x0000FFFF;
-    s = __SSAT(((((q31_t)x      ) >> 16) + (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF;
-
-    return ((uint32_t)((s << 16) | (r      )));
-  }
-
-
-  /*
-   * @brief C custom defined SHASX
-   */
-  __STATIC_FORCEINLINE uint32_t __SHASX(
-  uint32_t x,
-  uint32_t y)
-  {
-    q31_t r, s;
-
-    r = (((((q31_t)x << 16) >> 16) - (((q31_t)y      ) >> 16)) >> 1) & (int32_t)0x0000FFFF;
-    s = (((((q31_t)x      ) >> 16) + (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF;
-
-    return ((uint32_t)((s << 16) | (r      )));
-  }
-
-
-  /*
-   * @brief C custom defined QSAX
-   */
-  __STATIC_FORCEINLINE uint32_t __QSAX(
-  uint32_t x,
-  uint32_t y)
-  {
-    q31_t r, s;
-
-    r = __SSAT(((((q31_t)x << 16) >> 16) + (((q31_t)y      ) >> 16)), 16) & (int32_t)0x0000FFFF;
-    s = __SSAT(((((q31_t)x      ) >> 16) - (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF;
-
-    return ((uint32_t)((s << 16) | (r      )));
-  }
-
-
-  /*
-   * @brief C custom defined SHSAX
-   */
-  __STATIC_FORCEINLINE uint32_t __SHSAX(
-  uint32_t x,
-  uint32_t y)
-  {
-    q31_t r, s;
-
-    r = (((((q31_t)x << 16) >> 16) + (((q31_t)y      ) >> 16)) >> 1) & (int32_t)0x0000FFFF;
-    s = (((((q31_t)x      ) >> 16) - (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF;
-
-    return ((uint32_t)((s << 16) | (r      )));
-  }
-
-
-  /*
-   * @brief C custom defined SMUSDX
-   */
-  __STATIC_FORCEINLINE uint32_t __SMUSDX(
-  uint32_t x,
-  uint32_t y)
-  {
-    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y      ) >> 16)) -
-                       ((((q31_t)x      ) >> 16) * (((q31_t)y << 16) >> 16))   ));
-  }
-
-  /*
-   * @brief C custom defined SMUADX
-   */
-  __STATIC_FORCEINLINE uint32_t __SMUADX(
-  uint32_t x,
-  uint32_t y)
-  {
-    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y      ) >> 16)) +
-                       ((((q31_t)x      ) >> 16) * (((q31_t)y << 16) >> 16))   ));
-  }
-
-
-  /*
-   * @brief C custom defined QADD
-   */
-  __STATIC_FORCEINLINE int32_t __QADD(
-  int32_t x,
-  int32_t y)
-  {
-    return ((int32_t)(clip_q63_to_q31((q63_t)x + (q31_t)y)));
-  }
-
-
-  /*
-   * @brief C custom defined QSUB
-   */
-  __STATIC_FORCEINLINE int32_t __QSUB(
-  int32_t x,
-  int32_t y)
-  {
-    return ((int32_t)(clip_q63_to_q31((q63_t)x - (q31_t)y)));
-  }
-
-
-  /*
-   * @brief C custom defined SMLAD
-   */
-  __STATIC_FORCEINLINE uint32_t __SMLAD(
-  uint32_t x,
-  uint32_t y,
-  uint32_t sum)
-  {
-    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) +
-                       ((((q31_t)x      ) >> 16) * (((q31_t)y      ) >> 16)) +
-                       ( ((q31_t)sum    )                                  )   ));
-  }
-
-
-  /*
-   * @brief C custom defined SMLADX
-   */
-  __STATIC_FORCEINLINE uint32_t __SMLADX(
-  uint32_t x,
-  uint32_t y,
-  uint32_t sum)
-  {
-    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y      ) >> 16)) +
-                       ((((q31_t)x      ) >> 16) * (((q31_t)y << 16) >> 16)) +
-                       ( ((q31_t)sum    )                                  )   ));
-  }
-
-
-  /*
-   * @brief C custom defined SMLSDX
-   */
-  __STATIC_FORCEINLINE uint32_t __SMLSDX(
-  uint32_t x,
-  uint32_t y,
-  uint32_t sum)
-  {
-    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y      ) >> 16)) -
-                       ((((q31_t)x      ) >> 16) * (((q31_t)y << 16) >> 16)) +
-                       ( ((q31_t)sum    )                                  )   ));
-  }
-
-
-  /*
-   * @brief C custom defined SMLALD
-   */
-  __STATIC_FORCEINLINE uint64_t __SMLALD(
-  uint32_t x,
-  uint32_t y,
-  uint64_t sum)
-  {
-/*  return (sum + ((q15_t) (x >> 16) * (q15_t) (y >> 16)) + ((q15_t) x * (q15_t) y)); */
-    return ((uint64_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) +
-                       ((((q31_t)x      ) >> 16) * (((q31_t)y      ) >> 16)) +
-                       ( ((q63_t)sum    )                                  )   ));
-  }
-
-
-  /*
-   * @brief C custom defined SMLALDX
-   */
-  __STATIC_FORCEINLINE uint64_t __SMLALDX(
-  uint32_t x,
-  uint32_t y,
-  uint64_t sum)
-  {
-/*  return (sum + ((q15_t) (x >> 16) * (q15_t) y)) + ((q15_t) x * (q15_t) (y >> 16)); */
-    return ((uint64_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y      ) >> 16)) +
-                       ((((q31_t)x      ) >> 16) * (((q31_t)y << 16) >> 16)) +
-                       ( ((q63_t)sum    )                                  )   ));
-  }
-
-
-  /*
-   * @brief C custom defined SMUAD
-   */
-  __STATIC_FORCEINLINE uint32_t __SMUAD(
-  uint32_t x,
-  uint32_t y)
-  {
-    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) +
-                       ((((q31_t)x      ) >> 16) * (((q31_t)y      ) >> 16))   ));
-  }
-
-
-  /*
-   * @brief C custom defined SMUSD
-   */
-  __STATIC_FORCEINLINE uint32_t __SMUSD(
-  uint32_t x,
-  uint32_t y)
-  {
-    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) -
-                       ((((q31_t)x      ) >> 16) * (((q31_t)y      ) >> 16))   ));
-  }
-
-
-  /*
-   * @brief C custom defined SXTB16
-   */
-  __STATIC_FORCEINLINE uint32_t __SXTB16(
-  uint32_t x)
-  {
-    return ((uint32_t)(((((q31_t)x << 24) >> 24) & (q31_t)0x0000FFFF) |
-                       ((((q31_t)x <<  8) >>  8) & (q31_t)0xFFFF0000)  ));
-  }
-
-  /*
-   * @brief C custom defined SMMLA
-   */
-  __STATIC_FORCEINLINE int32_t __SMMLA(
-  int32_t x,
-  int32_t y,
-  int32_t sum)
-  {
-    return (sum + (int32_t) (((int64_t) x * y) >> 32));
-  }
-
-#endif /* !defined (ARM_MATH_DSP) */
-
-
-  /**
-   * @brief Instance structure for the Q7 FIR filter.
-   */
-  typedef struct
-  {
-          uint16_t numTaps;        /**< number of filter coefficients in the filter. */
-          q7_t *pState;            /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
-    const q7_t *pCoeffs;           /**< points to the coefficient array. The array is of length numTaps.*/
-  } arm_fir_instance_q7;
-
-  /**
-   * @brief Instance structure for the Q15 FIR filter.
-   */
-  typedef struct
-  {
-          uint16_t numTaps;         /**< number of filter coefficients in the filter. */
-          q15_t *pState;            /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
-    const q15_t *pCoeffs;           /**< points to the coefficient array. The array is of length numTaps.*/
-  } arm_fir_instance_q15;
-
-  /**
-   * @brief Instance structure for the Q31 FIR filter.
-   */
-  typedef struct
-  {
-          uint16_t numTaps;         /**< number of filter coefficients in the filter. */
-          q31_t *pState;            /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
-    const q31_t *pCoeffs;           /**< points to the coefficient array. The array is of length numTaps. */
-  } arm_fir_instance_q31;
-
-  /**
-   * @brief Instance structure for the floating-point FIR filter.
-   */
-  typedef struct
-  {
-          uint16_t numTaps;     /**< number of filter coefficients in the filter. */
-          float32_t *pState;    /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
-    const float32_t *pCoeffs;   /**< points to the coefficient array. The array is of length numTaps. */
-  } arm_fir_instance_f32;
-
-  /**
-   * @brief Processing function for the Q7 FIR filter.
-   * @param[in]  S          points to an instance of the Q7 FIR filter structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[out] pDst       points to the block of output data.
-   * @param[in]  blockSize  number of samples to process.
-   */
-  void arm_fir_q7(
-  const arm_fir_instance_q7 * S,
-  const q7_t * pSrc,
-        q7_t * pDst,
-        uint32_t blockSize);
-
-  /**
-   * @brief  Initialization function for the Q7 FIR filter.
-   * @param[in,out] S          points to an instance of the Q7 FIR structure.
-   * @param[in]     numTaps    Number of filter coefficients in the filter.
-   * @param[in]     pCoeffs    points to the filter coefficients.
-   * @param[in]     pState     points to the state buffer.
-   * @param[in]     blockSize  number of samples that are processed.
-   *
-   * For the MVE version, the coefficient length must be a multiple of 16.
-   * You can pad with zeros if you have less coefficients.
-   */
-  void arm_fir_init_q7(
-        arm_fir_instance_q7 * S,
-        uint16_t numTaps,
-  const q7_t * pCoeffs,
-        q7_t * pState,
-        uint32_t blockSize);
-
-  /**
-   * @brief Processing function for the Q15 FIR filter.
-   * @param[in]  S          points to an instance of the Q15 FIR structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[out] pDst       points to the block of output data.
-   * @param[in]  blockSize  number of samples to process.
-   */
-  void arm_fir_q15(
-  const arm_fir_instance_q15 * S,
-  const q15_t * pSrc,
-        q15_t * pDst,
-        uint32_t blockSize);
-
-  /**
-   * @brief Processing function for the fast Q15 FIR filter (fast version).
-   * @param[in]  S          points to an instance of the Q15 FIR filter structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[out] pDst       points to the block of output data.
-   * @param[in]  blockSize  number of samples to process.
-   */
-  void arm_fir_fast_q15(
-  const arm_fir_instance_q15 * S,
-  const q15_t * pSrc,
-        q15_t * pDst,
-        uint32_t blockSize);
-
-  /**
-   * @brief  Initialization function for the Q15 FIR filter.
-   * @param[in,out] S          points to an instance of the Q15 FIR filter structure.
-   * @param[in]     numTaps    Number of filter coefficients in the filter. Must be even and greater than or equal to 4.
-   * @param[in]     pCoeffs    points to the filter coefficients.
-   * @param[in]     pState     points to the state buffer.
-   * @param[in]     blockSize  number of samples that are processed at a time.
-   * @return     The function returns either
-   * <code>ARM_MATH_SUCCESS</code> if initialization was successful or
-   * <code>ARM_MATH_ARGUMENT_ERROR</code> if <code>numTaps</code> is not a supported value.
-   *
-   * For the MVE version, the coefficient length must be a multiple of 8.
-   * You can pad with zeros if you have less coefficients.
-   *
-   */
-  arm_status arm_fir_init_q15(
-        arm_fir_instance_q15 * S,
-        uint16_t numTaps,
-  const q15_t * pCoeffs,
-        q15_t * pState,
-        uint32_t blockSize);
-
-  /**
-   * @brief Processing function for the Q31 FIR filter.
-   * @param[in]  S          points to an instance of the Q31 FIR filter structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[out] pDst       points to the block of output data.
-   * @param[in]  blockSize  number of samples to process.
-   */
-  void arm_fir_q31(
-  const arm_fir_instance_q31 * S,
-  const q31_t * pSrc,
-        q31_t * pDst,
-        uint32_t blockSize);
-
-  /**
-   * @brief Processing function for the fast Q31 FIR filter (fast version).
-   * @param[in]  S          points to an instance of the Q31 FIR filter structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[out] pDst       points to the block of output data.
-   * @param[in]  blockSize  number of samples to process.
-   */
-  void arm_fir_fast_q31(
-  const arm_fir_instance_q31 * S,
-  const q31_t * pSrc,
-        q31_t * pDst,
-        uint32_t blockSize);
-
-  /**
-   * @brief  Initialization function for the Q31 FIR filter.
-   * @param[in,out] S          points to an instance of the Q31 FIR structure.
-   * @param[in]     numTaps    Number of filter coefficients in the filter.
-   * @param[in]     pCoeffs    points to the filter coefficients.
-   * @param[in]     pState     points to the state buffer.
-   * @param[in]     blockSize  number of samples that are processed at a time.
-   *
-   * For the MVE version, the coefficient length must be a multiple of 4.
-   * You can pad with zeros if you have less coefficients.
-   */
-  void arm_fir_init_q31(
-        arm_fir_instance_q31 * S,
-        uint16_t numTaps,
-  const q31_t * pCoeffs,
-        q31_t * pState,
-        uint32_t blockSize);
-
-  /**
-   * @brief Processing function for the floating-point FIR filter.
-   * @param[in]  S          points to an instance of the floating-point FIR structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[out] pDst       points to the block of output data.
-   * @param[in]  blockSize  number of samples to process.
-   */
-  void arm_fir_f32(
-  const arm_fir_instance_f32 * S,
-  const float32_t * pSrc,
-        float32_t * pDst,
-        uint32_t blockSize);
-
-  /**
-   * @brief  Initialization function for the floating-point FIR filter.
-   * @param[in,out] S          points to an instance of the floating-point FIR filter structure.
-   * @param[in]     numTaps    Number of filter coefficients in the filter.
-   * @param[in]     pCoeffs    points to the filter coefficients.
-   * @param[in]     pState     points to the state buffer.
-   * @param[in]     blockSize  number of samples that are processed at a time.
-   */
-  void arm_fir_init_f32(
-        arm_fir_instance_f32 * S,
-        uint16_t numTaps,
-  const float32_t * pCoeffs,
-        float32_t * pState,
-        uint32_t blockSize);
-
-  /**
-   * @brief Instance structure for the Q15 Biquad cascade filter.
-   */
-  typedef struct
-  {
-          int8_t numStages;        /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */
-          q15_t *pState;           /**< Points to the array of state coefficients.  The array is of length 4*numStages. */
-    const q15_t *pCoeffs;          /**< Points to the array of coefficients.  The array is of length 5*numStages. */
-          int8_t postShift;        /**< Additional shift, in bits, applied to each output sample. */
-  } arm_biquad_casd_df1_inst_q15;
-
-  /**
-   * @brief Instance structure for the Q31 Biquad cascade filter.
-   */
-  typedef struct
-  {
-          uint32_t numStages;      /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */
-          q31_t *pState;           /**< Points to the array of state coefficients.  The array is of length 4*numStages. */
-    const q31_t *pCoeffs;          /**< Points to the array of coefficients.  The array is of length 5*numStages. */
-          uint8_t postShift;       /**< Additional shift, in bits, applied to each output sample. */
-  } arm_biquad_casd_df1_inst_q31;
-
-  /**
-   * @brief Instance structure for the floating-point Biquad cascade filter.
-   */
-  typedef struct
-  {
-          uint32_t numStages;      /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */
-          float32_t *pState;       /**< Points to the array of state coefficients.  The array is of length 4*numStages. */
-    const float32_t *pCoeffs;      /**< Points to the array of coefficients.  The array is of length 5*numStages. */
-  } arm_biquad_casd_df1_inst_f32;
-
-#if defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE)
-  /**
-   * @brief Instance structure for the modified Biquad coefs required by vectorized code.
-   */
-  typedef struct
-  {
-      float32_t coeffs[8][4]; /**< Points to the array of modified coefficients.  The array is of length 32. There is one per stage */
-  } arm_biquad_mod_coef_f32;
-#endif 
-
-  /**
-   * @brief Processing function for the Q15 Biquad cascade filter.
-   * @param[in]  S          points to an instance of the Q15 Biquad cascade structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[out] pDst       points to the block of output data.
-   * @param[in]  blockSize  number of samples to process.
-   */
-  void arm_biquad_cascade_df1_q15(
-  const arm_biquad_casd_df1_inst_q15 * S,
-  const q15_t * pSrc,
-        q15_t * pDst,
-        uint32_t blockSize);
-
-  /**
-   * @brief  Initialization function for the Q15 Biquad cascade filter.
-   * @param[in,out] S          points to an instance of the Q15 Biquad cascade structure.
-   * @param[in]     numStages  number of 2nd order stages in the filter.
-   * @param[in]     pCoeffs    points to the filter coefficients.
-   * @param[in]     pState     points to the state buffer.
-   * @param[in]     postShift  Shift to be applied to the output. Varies according to the coefficients format
-   */
-  void arm_biquad_cascade_df1_init_q15(
-        arm_biquad_casd_df1_inst_q15 * S,
-        uint8_t numStages,
-  const q15_t * pCoeffs,
-        q15_t * pState,
-        int8_t postShift);
-
-  /**
-   * @brief Fast but less precise processing function for the Q15 Biquad cascade filter for Cortex-M3 and Cortex-M4.
-   * @param[in]  S          points to an instance of the Q15 Biquad cascade structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[out] pDst       points to the block of output data.
-   * @param[in]  blockSize  number of samples to process.
-   */
-  void arm_biquad_cascade_df1_fast_q15(
-  const arm_biquad_casd_df1_inst_q15 * S,
-  const q15_t * pSrc,
-        q15_t * pDst,
-        uint32_t blockSize);
-
-  /**
-   * @brief Processing function for the Q31 Biquad cascade filter
-   * @param[in]  S          points to an instance of the Q31 Biquad cascade structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[out] pDst       points to the block of output data.
-   * @param[in]  blockSize  number of samples to process.
-   */
-  void arm_biquad_cascade_df1_q31(
-  const arm_biquad_casd_df1_inst_q31 * S,
-  const q31_t * pSrc,
-        q31_t * pDst,
-        uint32_t blockSize);
-
-  /**
-   * @brief Fast but less precise processing function for the Q31 Biquad cascade filter for Cortex-M3 and Cortex-M4.
-   * @param[in]  S          points to an instance of the Q31 Biquad cascade structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[out] pDst       points to the block of output data.
-   * @param[in]  blockSize  number of samples to process.
-   */
-  void arm_biquad_cascade_df1_fast_q31(
-  const arm_biquad_casd_df1_inst_q31 * S,
-  const q31_t * pSrc,
-        q31_t * pDst,
-        uint32_t blockSize);
-
-  /**
-   * @brief  Initialization function for the Q31 Biquad cascade filter.
-   * @param[in,out] S          points to an instance of the Q31 Biquad cascade structure.
-   * @param[in]     numStages  number of 2nd order stages in the filter.
-   * @param[in]     pCoeffs    points to the filter coefficients.
-   * @param[in]     pState     points to the state buffer.
-   * @param[in]     postShift  Shift to be applied to the output. Varies according to the coefficients format
-   */
-  void arm_biquad_cascade_df1_init_q31(
-        arm_biquad_casd_df1_inst_q31 * S,
-        uint8_t numStages,
-  const q31_t * pCoeffs,
-        q31_t * pState,
-        int8_t postShift);
-
-  /**
-   * @brief Processing function for the floating-point Biquad cascade filter.
-   * @param[in]  S          points to an instance of the floating-point Biquad cascade structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[out] pDst       points to the block of output data.
-   * @param[in]  blockSize  number of samples to process.
-   */
-  void arm_biquad_cascade_df1_f32(
-  const arm_biquad_casd_df1_inst_f32 * S,
-  const float32_t * pSrc,
-        float32_t * pDst,
-        uint32_t blockSize);
-
-  /**
-   * @brief  Initialization function for the floating-point Biquad cascade filter.
-   * @param[in,out] S          points to an instance of the floating-point Biquad cascade structure.
-   * @param[in]     numStages  number of 2nd order stages in the filter.
-   * @param[in]     pCoeffs    points to the filter coefficients.
-   * @param[in]     pCoeffsMod points to the modified filter coefficients (only MVE version).
-   * @param[in]     pState     points to the state buffer.
-   */
-#if defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE)
-  void arm_biquad_cascade_df1_mve_init_f32(
-      arm_biquad_casd_df1_inst_f32 * S,
-      uint8_t numStages,
-      const float32_t * pCoeffs, 
-      arm_biquad_mod_coef_f32 * pCoeffsMod, 
-      float32_t * pState);
-#endif
-  
-  void arm_biquad_cascade_df1_init_f32(
-        arm_biquad_casd_df1_inst_f32 * S,
-        uint8_t numStages,
-  const float32_t * pCoeffs,
-        float32_t * pState);
-
-
-  /**
-   * @brief         Compute the logical bitwise AND of two fixed-point vectors.
-   * @param[in]     pSrcA      points to input vector A
-   * @param[in]     pSrcB      points to input vector B
-   * @param[out]    pDst       points to output vector
-   * @param[in]     blockSize  number of samples in each vector
-   * @return        none
-   */
-  void arm_and_u16(
-    const uint16_t * pSrcA,
-    const uint16_t * pSrcB,
-          uint16_t * pDst,
-          uint32_t blockSize);
-
-  /**
-   * @brief         Compute the logical bitwise AND of two fixed-point vectors.
-   * @param[in]     pSrcA      points to input vector A
-   * @param[in]     pSrcB      points to input vector B
-   * @param[out]    pDst       points to output vector
-   * @param[in]     blockSize  number of samples in each vector
-   * @return        none
-   */
-  void arm_and_u32(
-    const uint32_t * pSrcA,
-    const uint32_t * pSrcB,
-          uint32_t * pDst,
-          uint32_t blockSize);
-
-  /**
-   * @brief         Compute the logical bitwise AND of two fixed-point vectors.
-   * @param[in]     pSrcA      points to input vector A
-   * @param[in]     pSrcB      points to input vector B
-   * @param[out]    pDst       points to output vector
-   * @param[in]     blockSize  number of samples in each vector
-   * @return        none
-   */
-  void arm_and_u8(
-    const uint8_t * pSrcA,
-    const uint8_t * pSrcB,
-          uint8_t * pDst,
-          uint32_t blockSize);
-
-  /**
-   * @brief         Compute the logical bitwise OR of two fixed-point vectors.
-   * @param[in]     pSrcA      points to input vector A
-   * @param[in]     pSrcB      points to input vector B
-   * @param[out]    pDst       points to output vector
-   * @param[in]     blockSize  number of samples in each vector
-   * @return        none
-   */
-  void arm_or_u16(
-    const uint16_t * pSrcA,
-    const uint16_t * pSrcB,
-          uint16_t * pDst,
-          uint32_t blockSize);
-
-  /**
-   * @brief         Compute the logical bitwise OR of two fixed-point vectors.
-   * @param[in]     pSrcA      points to input vector A
-   * @param[in]     pSrcB      points to input vector B
-   * @param[out]    pDst       points to output vector
-   * @param[in]     blockSize  number of samples in each vector
-   * @return        none
-   */
-  void arm_or_u32(
-    const uint32_t * pSrcA,
-    const uint32_t * pSrcB,
-          uint32_t * pDst,
-          uint32_t blockSize);
-
-  /**
-   * @brief         Compute the logical bitwise OR of two fixed-point vectors.
-   * @param[in]     pSrcA      points to input vector A
-   * @param[in]     pSrcB      points to input vector B
-   * @param[out]    pDst       points to output vector
-   * @param[in]     blockSize  number of samples in each vector
-   * @return        none
-   */
-  void arm_or_u8(
-    const uint8_t * pSrcA,
-    const uint8_t * pSrcB,
-          uint8_t * pDst,
-          uint32_t blockSize);
-
-  /**
-   * @brief         Compute the logical bitwise NOT of a fixed-point vector.
-   * @param[in]     pSrc       points to input vector 
-   * @param[out]    pDst       points to output vector
-   * @param[in]     blockSize  number of samples in each vector
-   * @return        none
-   */
-  void arm_not_u16(
-    const uint16_t * pSrc,
-          uint16_t * pDst,
-          uint32_t blockSize);
-
-  /**
-   * @brief         Compute the logical bitwise NOT of a fixed-point vector.
-   * @param[in]     pSrc       points to input vector 
-   * @param[out]    pDst       points to output vector
-   * @param[in]     blockSize  number of samples in each vector
-   * @return        none
-   */
-  void arm_not_u32(
-    const uint32_t * pSrc,
-          uint32_t * pDst,
-          uint32_t blockSize);
-
-  /**
-   * @brief         Compute the logical bitwise NOT of a fixed-point vector.
-   * @param[in]     pSrc       points to input vector 
-   * @param[out]    pDst       points to output vector
-   * @param[in]     blockSize  number of samples in each vector
-   * @return        none
-   */
-  void arm_not_u8(
-    const uint8_t * pSrc,
-          uint8_t * pDst,
-          uint32_t blockSize);
-
-/**
-   * @brief         Compute the logical bitwise XOR of two fixed-point vectors.
-   * @param[in]     pSrcA      points to input vector A
-   * @param[in]     pSrcB      points to input vector B
-   * @param[out]    pDst       points to output vector
-   * @param[in]     blockSize  number of samples in each vector
-   * @return        none
-   */
-  void arm_xor_u16(
-    const uint16_t * pSrcA,
-    const uint16_t * pSrcB,
-          uint16_t * pDst,
-          uint32_t blockSize);
-
-  /**
-   * @brief         Compute the logical bitwise XOR of two fixed-point vectors.
-   * @param[in]     pSrcA      points to input vector A
-   * @param[in]     pSrcB      points to input vector B
-   * @param[out]    pDst       points to output vector
-   * @param[in]     blockSize  number of samples in each vector
-   * @return        none
-   */
-  void arm_xor_u32(
-    const uint32_t * pSrcA,
-    const uint32_t * pSrcB,
-          uint32_t * pDst,
-          uint32_t blockSize);
-
-  /**
-   * @brief         Compute the logical bitwise XOR of two fixed-point vectors.
-   * @param[in]     pSrcA      points to input vector A
-   * @param[in]     pSrcB      points to input vector B
-   * @param[out]    pDst       points to output vector
-   * @param[in]     blockSize  number of samples in each vector
-   * @return        none
-   */
-  void arm_xor_u8(
-    const uint8_t * pSrcA,
-    const uint8_t * pSrcB,
-          uint8_t * pDst,
-    uint32_t blockSize);
-
-  /**
-   * @brief Struct for specifying sorting algorithm
-   */
-  typedef enum
-  {
-    ARM_SORT_BITONIC   = 0,
-             /**< Bitonic sort   */
-    ARM_SORT_BUBBLE    = 1,
-             /**< Bubble sort    */
-    ARM_SORT_HEAP      = 2,
-             /**< Heap sort      */
-    ARM_SORT_INSERTION = 3,
-             /**< Insertion sort */
-    ARM_SORT_QUICK     = 4,
-             /**< Quick sort     */
-    ARM_SORT_SELECTION = 5
-             /**< Selection sort */
-  } arm_sort_alg;
-
-  /**
-   * @brief Struct for specifying sorting algorithm
-   */
-  typedef enum
-  {
-    ARM_SORT_DESCENDING = 0,
-             /**< Descending order (9 to 0) */
-    ARM_SORT_ASCENDING = 1
-             /**< Ascending order (0 to 9) */
-  } arm_sort_dir;
-
-  /**
-   * @brief Instance structure for the sorting algorithms.
-   */
-  typedef struct            
-  {
-    arm_sort_alg alg;        /**< Sorting algorithm selected */
-    arm_sort_dir dir;        /**< Sorting order (direction)  */
-  } arm_sort_instance_f32;  
-
-  /**
-   * @param[in]  S          points to an instance of the sorting structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[out] pDst       points to the block of output data.
-   * @param[in]  blockSize  number of samples to process.
-   */
-  void arm_sort_f32(
-    const arm_sort_instance_f32 * S, 
-          float32_t * pSrc, 
-          float32_t * pDst, 
-          uint32_t blockSize);
-
-  /**
-   * @param[in,out]  S            points to an instance of the sorting structure.
-   * @param[in]      alg          Selected algorithm.
-   * @param[in]      dir          Sorting order.
-   */
-  void arm_sort_init_f32(
-    arm_sort_instance_f32 * S, 
-    arm_sort_alg alg, 
-    arm_sort_dir dir); 
-
-  /**
-   * @brief Instance structure for the sorting algorithms.
-   */
-  typedef struct            
-  {
-    arm_sort_dir dir;        /**< Sorting order (direction)  */
-    float32_t * buffer;      /**< Working buffer */
-  } arm_merge_sort_instance_f32;  
-
-  /**
-   * @param[in]      S          points to an instance of the sorting structure.
-   * @param[in,out]  pSrc       points to the block of input data.
-   * @param[out]     pDst       points to the block of output data
-   * @param[in]      blockSize  number of samples to process.
-   */
-  void arm_merge_sort_f32(
-    const arm_merge_sort_instance_f32 * S,
-          float32_t *pSrc,
-          float32_t *pDst,
-          uint32_t blockSize);
-
-  /**
-   * @param[in,out]  S            points to an instance of the sorting structure.
-   * @param[in]      dir          Sorting order.
-   * @param[in]      buffer       Working buffer.
-   */
-  void arm_merge_sort_init_f32(
-    arm_merge_sort_instance_f32 * S,
-    arm_sort_dir dir,
-    float32_t * buffer);
-
-  /**
-   * @brief Struct for specifying cubic spline type
-   */
-  typedef enum
-  {
-    ARM_SPLINE_NATURAL = 0,           /**< Natural spline */
-    ARM_SPLINE_PARABOLIC_RUNOUT = 1   /**< Parabolic runout spline */
-  } arm_spline_type;
-
-  /**
-   * @brief Instance structure for the floating-point cubic spline interpolation.
-   */
-  typedef struct
-  {
-    arm_spline_type type;      /**< Type (boundary conditions) */
-    const float32_t * x;       /**< x values */
-    const float32_t * y;       /**< y values */
-    uint32_t n_x;              /**< Number of known data points */
-    float32_t * coeffs;        /**< Coefficients buffer (b,c, and d) */
-  } arm_spline_instance_f32;
-
-  /**
-   * @brief Processing function for the floating-point cubic spline interpolation.
-   * @param[in]  S          points to an instance of the floating-point spline structure.
-   * @param[in]  xq         points to the x values ot the interpolated data points.
-   * @param[out] pDst       points to the block of output data.
-   * @param[in]  blockSize  number of samples of output data.
-   */
-  void arm_spline_f32(
-        arm_spline_instance_f32 * S, 
-  const float32_t * xq,
-        float32_t * pDst,
-        uint32_t blockSize);
-
-  /**
-   * @brief Initialization function for the floating-point cubic spline interpolation.
-   * @param[in,out] S        points to an instance of the floating-point spline structure.
-   * @param[in]     type     type of cubic spline interpolation (boundary conditions)
-   * @param[in]     x        points to the x values of the known data points.
-   * @param[in]     y        points to the y values of the known data points.
-   * @param[in]     n        number of known data points.
-   * @param[in]     coeffs   coefficients array for b, c, and d
-   * @param[in]     tempBuffer   buffer array for internal computations
-   */
-  void arm_spline_init_f32(
-          arm_spline_instance_f32 * S,
-          arm_spline_type type,
-    const float32_t * x,
-    const float32_t * y,
-          uint32_t n, 
-          float32_t * coeffs,
-          float32_t * tempBuffer);
-
-  /**
-   * @brief Instance structure for the floating-point matrix structure.
-   */
-  typedef struct
-  {
-    uint16_t numRows;     /**< number of rows of the matrix.     */
-    uint16_t numCols;     /**< number of columns of the matrix.  */
-    float32_t *pData;     /**< points to the data of the matrix. */
-  } arm_matrix_instance_f32;
- 
- /**
-   * @brief Instance structure for the floating-point matrix structure.
-   */
-  typedef struct
-  {
-    uint16_t numRows;     /**< number of rows of the matrix.     */
-    uint16_t numCols;     /**< number of columns of the matrix.  */
-    float64_t *pData;     /**< points to the data of the matrix. */
-  } arm_matrix_instance_f64;
-
- /**
-   * @brief Instance structure for the Q7 matrix structure.
-   */
-  typedef struct
-  {
-    uint16_t numRows;     /**< number of rows of the matrix.     */
-    uint16_t numCols;     /**< number of columns of the matrix.  */
-    q7_t *pData;         /**< points to the data of the matrix. */
-  } arm_matrix_instance_q7;
-
-  /**
-   * @brief Instance structure for the Q15 matrix structure.
-   */
-  typedef struct
-  {
-    uint16_t numRows;     /**< number of rows of the matrix.     */
-    uint16_t numCols;     /**< number of columns of the matrix.  */
-    q15_t *pData;         /**< points to the data of the matrix. */
-  } arm_matrix_instance_q15;
-
-  /**
-   * @brief Instance structure for the Q31 matrix structure.
-   */
-  typedef struct
-  {
-    uint16_t numRows;     /**< number of rows of the matrix.     */
-    uint16_t numCols;     /**< number of columns of the matrix.  */
-    q31_t *pData;         /**< points to the data of the matrix. */
-  } arm_matrix_instance_q31;
-
-  /**
-   * @brief Floating-point matrix addition.
-   * @param[in]  pSrcA  points to the first input matrix structure
-   * @param[in]  pSrcB  points to the second input matrix structure
-   * @param[out] pDst   points to output matrix structure
-   * @return     The function returns either
-   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
-   */
-arm_status arm_mat_add_f32(
-  const arm_matrix_instance_f32 * pSrcA,
-  const arm_matrix_instance_f32 * pSrcB,
-        arm_matrix_instance_f32 * pDst);
-
-  /**
-   * @brief Q15 matrix addition.
-   * @param[in]   pSrcA  points to the first input matrix structure
-   * @param[in]   pSrcB  points to the second input matrix structure
-   * @param[out]  pDst   points to output matrix structure
-   * @return     The function returns either
-   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
-   */
-arm_status arm_mat_add_q15(
-  const arm_matrix_instance_q15 * pSrcA,
-  const arm_matrix_instance_q15 * pSrcB,
-        arm_matrix_instance_q15 * pDst);
-
-  /**
-   * @brief Q31 matrix addition.
-   * @param[in]  pSrcA  points to the first input matrix structure
-   * @param[in]  pSrcB  points to the second input matrix structure
-   * @param[out] pDst   points to output matrix structure
-   * @return     The function returns either
-   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
-   */
-arm_status arm_mat_add_q31(
-  const arm_matrix_instance_q31 * pSrcA,
-  const arm_matrix_instance_q31 * pSrcB,
-        arm_matrix_instance_q31 * pDst);
-
-  /**
-   * @brief Floating-point, complex, matrix multiplication.
-   * @param[in]  pSrcA  points to the first input matrix structure
-   * @param[in]  pSrcB  points to the second input matrix structure
-   * @param[out] pDst   points to output matrix structure
-   * @return     The function returns either
-   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
-   */
-arm_status arm_mat_cmplx_mult_f32(
-  const arm_matrix_instance_f32 * pSrcA,
-  const arm_matrix_instance_f32 * pSrcB,
-        arm_matrix_instance_f32 * pDst);
-
-  /**
-   * @brief Q15, complex,  matrix multiplication.
-   * @param[in]  pSrcA  points to the first input matrix structure
-   * @param[in]  pSrcB  points to the second input matrix structure
-   * @param[out] pDst   points to output matrix structure
-   * @return     The function returns either
-   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
-   */
-arm_status arm_mat_cmplx_mult_q15(
-  const arm_matrix_instance_q15 * pSrcA,
-  const arm_matrix_instance_q15 * pSrcB,
-        arm_matrix_instance_q15 * pDst,
-        q15_t * pScratch);
-
-  /**
-   * @brief Q31, complex, matrix multiplication.
-   * @param[in]  pSrcA  points to the first input matrix structure
-   * @param[in]  pSrcB  points to the second input matrix structure
-   * @param[out] pDst   points to output matrix structure
-   * @return     The function returns either
-   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
-   */
-arm_status arm_mat_cmplx_mult_q31(
-  const arm_matrix_instance_q31 * pSrcA,
-  const arm_matrix_instance_q31 * pSrcB,
-        arm_matrix_instance_q31 * pDst);
-
-  /**
-   * @brief Floating-point matrix transpose.
-   * @param[in]  pSrc  points to the input matrix
-   * @param[out] pDst  points to the output matrix
-   * @return    The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>
-   * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
-   */
-arm_status arm_mat_trans_f32(
-  const arm_matrix_instance_f32 * pSrc,
-        arm_matrix_instance_f32 * pDst);
-
-  /**
-   * @brief Floating-point complex matrix transpose.
-   * @param[in]  pSrc  points to the input matrix
-   * @param[out] pDst  points to the output matrix
-   * @return    The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>
-   * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
-   */
-arm_status arm_mat_cmplx_trans_f32(
-  const arm_matrix_instance_f32 * pSrc,
-  arm_matrix_instance_f32 * pDst);
-
-
-  /**
-   * @brief Q15 matrix transpose.
-   * @param[in]  pSrc  points to the input matrix
-   * @param[out] pDst  points to the output matrix
-   * @return    The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>
-   * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
-   */
-arm_status arm_mat_trans_q15(
-  const arm_matrix_instance_q15 * pSrc,
-        arm_matrix_instance_q15 * pDst);
-
-  /**
-   * @brief Q15 complex matrix transpose.
-   * @param[in]  pSrc  points to the input matrix
-   * @param[out] pDst  points to the output matrix
-   * @return    The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>
-   * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
-   */
-arm_status arm_mat_cmplx_trans_q15(
-  const arm_matrix_instance_q15 * pSrc,
-  arm_matrix_instance_q15 * pDst);
-
-  /**
-   * @brief Q7 matrix transpose.
-   * @param[in]  pSrc  points to the input matrix
-   * @param[out] pDst  points to the output matrix
-   * @return    The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>
-   * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
-   */
-arm_status arm_mat_trans_q7(
-  const arm_matrix_instance_q7 * pSrc,
-        arm_matrix_instance_q7 * pDst);
-
-  /**
-   * @brief Q31 matrix transpose.
-   * @param[in]  pSrc  points to the input matrix
-   * @param[out] pDst  points to the output matrix
-   * @return    The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>
-   * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
-   */
-arm_status arm_mat_trans_q31(
-  const arm_matrix_instance_q31 * pSrc,
-        arm_matrix_instance_q31 * pDst);
-
-  /**
-   * @brief Q31 complex matrix transpose.
-   * @param[in]  pSrc  points to the input matrix
-   * @param[out] pDst  points to the output matrix
-   * @return    The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>
-   * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
-   */
-arm_status arm_mat_cmplx_trans_q31(
-  const arm_matrix_instance_q31 * pSrc,
-  arm_matrix_instance_q31 * pDst);
-
-  /**
-   * @brief Floating-point matrix multiplication
-   * @param[in]  pSrcA  points to the first input matrix structure
-   * @param[in]  pSrcB  points to the second input matrix structure
-   * @param[out] pDst   points to output matrix structure
-   * @return     The function returns either
-   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
-   */
-arm_status arm_mat_mult_f32(
-  const arm_matrix_instance_f32 * pSrcA,
-  const arm_matrix_instance_f32 * pSrcB,
-        arm_matrix_instance_f32 * pDst);
-
-  /**
-   * @brief Floating-point matrix and vector multiplication
-   * @param[in]  pSrcMat  points to the input matrix structure
-   * @param[in]  pVec     points to vector
-   * @param[out] pDst     points to output vector
-   */
-void arm_mat_vec_mult_f32(
-  const arm_matrix_instance_f32 *pSrcMat, 
-  const float32_t *pVec, 
-  float32_t *pDst);
-
-  /**
-   * @brief Q7 matrix multiplication
-   * @param[in]  pSrcA   points to the first input matrix structure
-   * @param[in]  pSrcB   points to the second input matrix structure
-   * @param[out] pDst    points to output matrix structure
-   * @param[in]  pState  points to the array for storing intermediate results
-   * @return     The function returns either
-   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
-   */
-arm_status arm_mat_mult_q7(
-  const arm_matrix_instance_q7 * pSrcA,
-  const arm_matrix_instance_q7 * pSrcB,
-        arm_matrix_instance_q7 * pDst,
-        q7_t * pState);
-
-  /**
-   * @brief Q7 matrix and vector multiplication
-   * @param[in]  pSrcMat  points to the input matrix structure
-   * @param[in]  pVec     points to vector
-   * @param[out] pDst     points to output vector
-   */
-void arm_mat_vec_mult_q7(
-  const arm_matrix_instance_q7 *pSrcMat, 
-  const q7_t *pVec, 
-  q7_t *pDst);
-
-  /**
-   * @brief Q15 matrix multiplication
-   * @param[in]  pSrcA   points to the first input matrix structure
-   * @param[in]  pSrcB   points to the second input matrix structure
-   * @param[out] pDst    points to output matrix structure
-   * @param[in]  pState  points to the array for storing intermediate results
-   * @return     The function returns either
-   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
-   */
-arm_status arm_mat_mult_q15(
-  const arm_matrix_instance_q15 * pSrcA,
-  const arm_matrix_instance_q15 * pSrcB,
-        arm_matrix_instance_q15 * pDst,
-        q15_t * pState);
-
-  /**
-   * @brief Q15 matrix and vector multiplication
-   * @param[in]  pSrcMat  points to the input matrix structure
-   * @param[in]  pVec     points to vector
-   * @param[out] pDst     points to output vector
-   */
-void arm_mat_vec_mult_q15(
-  const arm_matrix_instance_q15 *pSrcMat, 
-  const q15_t *pVec, 
-  q15_t *pDst);
-
-  /**
-   * @brief Q15 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4
-   * @param[in]  pSrcA   points to the first input matrix structure
-   * @param[in]  pSrcB   points to the second input matrix structure
-   * @param[out] pDst    points to output matrix structure
-   * @param[in]  pState  points to the array for storing intermediate results
-   * @return     The function returns either
-   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
-   */
-arm_status arm_mat_mult_fast_q15(
-  const arm_matrix_instance_q15 * pSrcA,
-  const arm_matrix_instance_q15 * pSrcB,
-        arm_matrix_instance_q15 * pDst,
-        q15_t * pState);
-
-  /**
-   * @brief Q31 matrix multiplication
-   * @param[in]  pSrcA  points to the first input matrix structure
-   * @param[in]  pSrcB  points to the second input matrix structure
-   * @param[out] pDst   points to output matrix structure
-   * @return     The function returns either
-   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
-   */
-arm_status arm_mat_mult_q31(
-  const arm_matrix_instance_q31 * pSrcA,
-  const arm_matrix_instance_q31 * pSrcB,
-        arm_matrix_instance_q31 * pDst);
-
-  /**
-   * @brief Q31 matrix and vector multiplication
-   * @param[in]  pSrcMat  points to the input matrix structure
-   * @param[in]  pVec     points to vector
-   * @param[out] pDst     points to output vector
-   */
-void arm_mat_vec_mult_q31(
-  const arm_matrix_instance_q31 *pSrcMat, 
-  const q31_t *pVec, 
-  q31_t *pDst);
-
-  /**
-   * @brief Q31 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4
-   * @param[in]  pSrcA  points to the first input matrix structure
-   * @param[in]  pSrcB  points to the second input matrix structure
-   * @param[out] pDst   points to output matrix structure
-   * @return     The function returns either
-   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
-   */
-arm_status arm_mat_mult_fast_q31(
-  const arm_matrix_instance_q31 * pSrcA,
-  const arm_matrix_instance_q31 * pSrcB,
-        arm_matrix_instance_q31 * pDst);
-
-  /**
-   * @brief Floating-point matrix subtraction
-   * @param[in]  pSrcA  points to the first input matrix structure
-   * @param[in]  pSrcB  points to the second input matrix structure
-   * @param[out] pDst   points to output matrix structure
-   * @return     The function returns either
-   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
-   */
-arm_status arm_mat_sub_f32(
-  const arm_matrix_instance_f32 * pSrcA,
-  const arm_matrix_instance_f32 * pSrcB,
-        arm_matrix_instance_f32 * pDst);
-
-  /**
-   * @brief Q15 matrix subtraction
-   * @param[in]  pSrcA  points to the first input matrix structure
-   * @param[in]  pSrcB  points to the second input matrix structure
-   * @param[out] pDst   points to output matrix structure
-   * @return     The function returns either
-   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
-   */
-arm_status arm_mat_sub_q15(
-  const arm_matrix_instance_q15 * pSrcA,
-  const arm_matrix_instance_q15 * pSrcB,
-        arm_matrix_instance_q15 * pDst);
-
-  /**
-   * @brief Q31 matrix subtraction
-   * @param[in]  pSrcA  points to the first input matrix structure
-   * @param[in]  pSrcB  points to the second input matrix structure
-   * @param[out] pDst   points to output matrix structure
-   * @return     The function returns either
-   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
-   */
-arm_status arm_mat_sub_q31(
-  const arm_matrix_instance_q31 * pSrcA,
-  const arm_matrix_instance_q31 * pSrcB,
-        arm_matrix_instance_q31 * pDst);
-
-  /**
-   * @brief Floating-point matrix scaling.
-   * @param[in]  pSrc   points to the input matrix
-   * @param[in]  scale  scale factor
-   * @param[out] pDst   points to the output matrix
-   * @return     The function returns either
-   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
-   */
-arm_status arm_mat_scale_f32(
-  const arm_matrix_instance_f32 * pSrc,
-        float32_t scale,
-        arm_matrix_instance_f32 * pDst);
-
-  /**
-   * @brief Q15 matrix scaling.
-   * @param[in]  pSrc        points to input matrix
-   * @param[in]  scaleFract  fractional portion of the scale factor
-   * @param[in]  shift       number of bits to shift the result by
-   * @param[out] pDst        points to output matrix
-   * @return     The function returns either
-   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
-   */
-arm_status arm_mat_scale_q15(
-  const arm_matrix_instance_q15 * pSrc,
-        q15_t scaleFract,
-        int32_t shift,
-        arm_matrix_instance_q15 * pDst);
-
-  /**
-   * @brief Q31 matrix scaling.
-   * @param[in]  pSrc        points to input matrix
-   * @param[in]  scaleFract  fractional portion of the scale factor
-   * @param[in]  shift       number of bits to shift the result by
-   * @param[out] pDst        points to output matrix structure
-   * @return     The function returns either
-   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
-   */
-arm_status arm_mat_scale_q31(
-  const arm_matrix_instance_q31 * pSrc,
-        q31_t scaleFract,
-        int32_t shift,
-        arm_matrix_instance_q31 * pDst);
-
-  /**
-   * @brief  Q31 matrix initialization.
-   * @param[in,out] S         points to an instance of the floating-point matrix structure.
-   * @param[in]     nRows     number of rows in the matrix.
-   * @param[in]     nColumns  number of columns in the matrix.
-   * @param[in]     pData     points to the matrix data array.
-   */
-void arm_mat_init_q31(
-        arm_matrix_instance_q31 * S,
-        uint16_t nRows,
-        uint16_t nColumns,
-        q31_t * pData);
-
-  /**
-   * @brief  Q15 matrix initialization.
-   * @param[in,out] S         points to an instance of the floating-point matrix structure.
-   * @param[in]     nRows     number of rows in the matrix.
-   * @param[in]     nColumns  number of columns in the matrix.
-   * @param[in]     pData     points to the matrix data array.
-   */
-void arm_mat_init_q15(
-        arm_matrix_instance_q15 * S,
-        uint16_t nRows,
-        uint16_t nColumns,
-        q15_t * pData);
-
-  /**
-   * @brief  Floating-point matrix initialization.
-   * @param[in,out] S         points to an instance of the floating-point matrix structure.
-   * @param[in]     nRows     number of rows in the matrix.
-   * @param[in]     nColumns  number of columns in the matrix.
-   * @param[in]     pData     points to the matrix data array.
-   */
-void arm_mat_init_f32(
-        arm_matrix_instance_f32 * S,
-        uint16_t nRows,
-        uint16_t nColumns,
-        float32_t * pData);
-
-
-  /**
-   * @brief Instance structure for the Q15 PID Control.
-   */
-  typedef struct
-  {
-          q15_t A0;           /**< The derived gain, A0 = Kp + Ki + Kd . */
-#if !defined (ARM_MATH_DSP)
-          q15_t A1;           /**< The derived gain A1 = -Kp - 2Kd */
-          q15_t A2;           /**< The derived gain A1 = Kd. */
-#else
-          q31_t A1;           /**< The derived gain A1 = -Kp - 2Kd | Kd.*/
-#endif
-          q15_t state[3];     /**< The state array of length 3. */
-          q15_t Kp;           /**< The proportional gain. */
-          q15_t Ki;           /**< The integral gain. */
-          q15_t Kd;           /**< The derivative gain. */
-  } arm_pid_instance_q15;
-
-  /**
-   * @brief Instance structure for the Q31 PID Control.
-   */
-  typedef struct
-  {
-          q31_t A0;            /**< The derived gain, A0 = Kp + Ki + Kd . */
-          q31_t A1;            /**< The derived gain, A1 = -Kp - 2Kd. */
-          q31_t A2;            /**< The derived gain, A2 = Kd . */
-          q31_t state[3];      /**< The state array of length 3. */
-          q31_t Kp;            /**< The proportional gain. */
-          q31_t Ki;            /**< The integral gain. */
-          q31_t Kd;            /**< The derivative gain. */
-  } arm_pid_instance_q31;
-
-  /**
-   * @brief Instance structure for the floating-point PID Control.
-   */
-  typedef struct
-  {
-          float32_t A0;          /**< The derived gain, A0 = Kp + Ki + Kd . */
-          float32_t A1;          /**< The derived gain, A1 = -Kp - 2Kd. */
-          float32_t A2;          /**< The derived gain, A2 = Kd . */
-          float32_t state[3];    /**< The state array of length 3. */
-          float32_t Kp;          /**< The proportional gain. */
-          float32_t Ki;          /**< The integral gain. */
-          float32_t Kd;          /**< The derivative gain. */
-  } arm_pid_instance_f32;
-
-
-
-  /**
-   * @brief  Initialization function for the floating-point PID Control.
-   * @param[in,out] S               points to an instance of the PID structure.
-   * @param[in]     resetStateFlag  flag to reset the state. 0 = no change in state 1 = reset the state.
-   */
-  void arm_pid_init_f32(
-        arm_pid_instance_f32 * S,
-        int32_t resetStateFlag);
-
-
-  /**
-   * @brief  Reset function for the floating-point PID Control.
-   * @param[in,out] S  is an instance of the floating-point PID Control structure
-   */
-  void arm_pid_reset_f32(
-        arm_pid_instance_f32 * S);
-
-
-  /**
-   * @brief  Initialization function for the Q31 PID Control.
-   * @param[in,out] S               points to an instance of the Q15 PID structure.
-   * @param[in]     resetStateFlag  flag to reset the state. 0 = no change in state 1 = reset the state.
-   */
-  void arm_pid_init_q31(
-        arm_pid_instance_q31 * S,
-        int32_t resetStateFlag);
-
-
-  /**
-   * @brief  Reset function for the Q31 PID Control.
-   * @param[in,out] S   points to an instance of the Q31 PID Control structure
-   */
-
-  void arm_pid_reset_q31(
-        arm_pid_instance_q31 * S);
-
-
-  /**
-   * @brief  Initialization function for the Q15 PID Control.
-   * @param[in,out] S               points to an instance of the Q15 PID structure.
-   * @param[in]     resetStateFlag  flag to reset the state. 0 = no change in state 1 = reset the state.
-   */
-  void arm_pid_init_q15(
-        arm_pid_instance_q15 * S,
-        int32_t resetStateFlag);
-
-
-  /**
-   * @brief  Reset function for the Q15 PID Control.
-   * @param[in,out] S  points to an instance of the q15 PID Control structure
-   */
-  void arm_pid_reset_q15(
-        arm_pid_instance_q15 * S);
-
-
-  /**
-   * @brief Instance structure for the floating-point Linear Interpolate function.
-   */
-  typedef struct
-  {
-          uint32_t nValues;           /**< nValues */
-          float32_t x1;               /**< x1 */
-          float32_t xSpacing;         /**< xSpacing */
-          float32_t *pYData;          /**< pointer to the table of Y values */
-  } arm_linear_interp_instance_f32;
-
-  /**
-   * @brief Instance structure for the floating-point bilinear interpolation function.
-   */
-  typedef struct
-  {
-          uint16_t numRows;   /**< number of rows in the data table. */
-          uint16_t numCols;   /**< number of columns in the data table. */
-          float32_t *pData;   /**< points to the data table. */
-  } arm_bilinear_interp_instance_f32;
-
-   /**
-   * @brief Instance structure for the Q31 bilinear interpolation function.
-   */
-  typedef struct
-  {
-          uint16_t numRows;   /**< number of rows in the data table. */
-          uint16_t numCols;   /**< number of columns in the data table. */
-          q31_t *pData;       /**< points to the data table. */
-  } arm_bilinear_interp_instance_q31;
-
-   /**
-   * @brief Instance structure for the Q15 bilinear interpolation function.
-   */
-  typedef struct
-  {
-          uint16_t numRows;   /**< number of rows in the data table. */
-          uint16_t numCols;   /**< number of columns in the data table. */
-          q15_t *pData;       /**< points to the data table. */
-  } arm_bilinear_interp_instance_q15;
-
-   /**
-   * @brief Instance structure for the Q15 bilinear interpolation function.
-   */
-  typedef struct
-  {
-          uint16_t numRows;   /**< number of rows in the data table. */
-          uint16_t numCols;   /**< number of columns in the data table. */
-          q7_t *pData;        /**< points to the data table. */
-  } arm_bilinear_interp_instance_q7;
-
-
-  /**
-   * @brief Q7 vector multiplication.
-   * @param[in]  pSrcA      points to the first input vector
-   * @param[in]  pSrcB      points to the second input vector
-   * @param[out] pDst       points to the output vector
-   * @param[in]  blockSize  number of samples in each vector
-   */
-  void arm_mult_q7(
-  const q7_t * pSrcA,
-  const q7_t * pSrcB,
-        q7_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Q15 vector multiplication.
-   * @param[in]  pSrcA      points to the first input vector
-   * @param[in]  pSrcB      points to the second input vector
-   * @param[out] pDst       points to the output vector
-   * @param[in]  blockSize  number of samples in each vector
-   */
-  void arm_mult_q15(
-  const q15_t * pSrcA,
-  const q15_t * pSrcB,
-        q15_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Q31 vector multiplication.
-   * @param[in]  pSrcA      points to the first input vector
-   * @param[in]  pSrcB      points to the second input vector
-   * @param[out] pDst       points to the output vector
-   * @param[in]  blockSize  number of samples in each vector
-   */
-  void arm_mult_q31(
-  const q31_t * pSrcA,
-  const q31_t * pSrcB,
-        q31_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Floating-point vector multiplication.
-   * @param[in]  pSrcA      points to the first input vector
-   * @param[in]  pSrcB      points to the second input vector
-   * @param[out] pDst       points to the output vector
-   * @param[in]  blockSize  number of samples in each vector
-   */
-  void arm_mult_f32(
-  const float32_t * pSrcA,
-  const float32_t * pSrcB,
-        float32_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Instance structure for the Q15 CFFT/CIFFT function.
-   */
-  typedef struct
-  {
-          uint16_t fftLen;                 /**< length of the FFT. */
-          uint8_t ifftFlag;                /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */
-          uint8_t bitReverseFlag;          /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */
-    const q15_t *pTwiddle;                 /**< points to the Sin twiddle factor table. */
-    const uint16_t *pBitRevTable;          /**< points to the bit reversal table. */
-          uint16_t twidCoefModifier;       /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
-          uint16_t bitRevFactor;           /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */
-  } arm_cfft_radix2_instance_q15;
-
-/* Deprecated */
-  arm_status arm_cfft_radix2_init_q15(
-        arm_cfft_radix2_instance_q15 * S,
-        uint16_t fftLen,
-        uint8_t ifftFlag,
-        uint8_t bitReverseFlag);
-
-/* Deprecated */
-  void arm_cfft_radix2_q15(
-  const arm_cfft_radix2_instance_q15 * S,
-        q15_t * pSrc);
-
-
-  /**
-   * @brief Instance structure for the Q15 CFFT/CIFFT function.
-   */
-  typedef struct
-  {
-          uint16_t fftLen;                 /**< length of the FFT. */
-          uint8_t ifftFlag;                /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */
-          uint8_t bitReverseFlag;          /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */
-    const q15_t *pTwiddle;                 /**< points to the twiddle factor table. */
-    const uint16_t *pBitRevTable;          /**< points to the bit reversal table. */
-          uint16_t twidCoefModifier;       /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
-          uint16_t bitRevFactor;           /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */
-  } arm_cfft_radix4_instance_q15;
-
-/* Deprecated */
-  arm_status arm_cfft_radix4_init_q15(
-        arm_cfft_radix4_instance_q15 * S,
-        uint16_t fftLen,
-        uint8_t ifftFlag,
-        uint8_t bitReverseFlag);
-
-/* Deprecated */
-  void arm_cfft_radix4_q15(
-  const arm_cfft_radix4_instance_q15 * S,
-        q15_t * pSrc);
-
-  /**
-   * @brief Instance structure for the Radix-2 Q31 CFFT/CIFFT function.
-   */
-  typedef struct
-  {
-          uint16_t fftLen;                 /**< length of the FFT. */
-          uint8_t ifftFlag;                /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */
-          uint8_t bitReverseFlag;          /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */
-    const q31_t *pTwiddle;                 /**< points to the Twiddle factor table. */
-    const uint16_t *pBitRevTable;          /**< points to the bit reversal table. */
-          uint16_t twidCoefModifier;       /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
-          uint16_t bitRevFactor;           /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */
-  } arm_cfft_radix2_instance_q31;
-
-/* Deprecated */
-  arm_status arm_cfft_radix2_init_q31(
-        arm_cfft_radix2_instance_q31 * S,
-        uint16_t fftLen,
-        uint8_t ifftFlag,
-        uint8_t bitReverseFlag);
-
-/* Deprecated */
-  void arm_cfft_radix2_q31(
-  const arm_cfft_radix2_instance_q31 * S,
-        q31_t * pSrc);
-
-  /**
-   * @brief Instance structure for the Q31 CFFT/CIFFT function.
-   */
-  typedef struct
-  {
-          uint16_t fftLen;                 /**< length of the FFT. */
-          uint8_t ifftFlag;                /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */
-          uint8_t bitReverseFlag;          /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */
-    const q31_t *pTwiddle;                 /**< points to the twiddle factor table. */
-    const uint16_t *pBitRevTable;          /**< points to the bit reversal table. */
-          uint16_t twidCoefModifier;       /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
-          uint16_t bitRevFactor;           /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */
-  } arm_cfft_radix4_instance_q31;
-
-/* Deprecated */
-  void arm_cfft_radix4_q31(
-  const arm_cfft_radix4_instance_q31 * S,
-        q31_t * pSrc);
-
-/* Deprecated */
-  arm_status arm_cfft_radix4_init_q31(
-        arm_cfft_radix4_instance_q31 * S,
-        uint16_t fftLen,
-        uint8_t ifftFlag,
-        uint8_t bitReverseFlag);
-
-  /**
-   * @brief Instance structure for the floating-point CFFT/CIFFT function.
-   */
-  typedef struct
-  {
-          uint16_t fftLen;                   /**< length of the FFT. */
-          uint8_t ifftFlag;                  /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */
-          uint8_t bitReverseFlag;            /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */
-    const float32_t *pTwiddle;               /**< points to the Twiddle factor table. */
-    const uint16_t *pBitRevTable;            /**< points to the bit reversal table. */
-          uint16_t twidCoefModifier;         /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
-          uint16_t bitRevFactor;             /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */
-          float32_t onebyfftLen;             /**< value of 1/fftLen. */
-  } arm_cfft_radix2_instance_f32;
-
-
-/* Deprecated */
-  arm_status arm_cfft_radix2_init_f32(
-        arm_cfft_radix2_instance_f32 * S,
-        uint16_t fftLen,
-        uint8_t ifftFlag,
-        uint8_t bitReverseFlag);
-
-/* Deprecated */
-  void arm_cfft_radix2_f32(
-  const arm_cfft_radix2_instance_f32 * S,
-        float32_t * pSrc);
-
-  /**
-   * @brief Instance structure for the floating-point CFFT/CIFFT function.
-   */
-  typedef struct
-  {
-          uint16_t fftLen;                   /**< length of the FFT. */
-          uint8_t ifftFlag;                  /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */
-          uint8_t bitReverseFlag;            /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */
-    const float32_t *pTwiddle;               /**< points to the Twiddle factor table. */
-    const uint16_t *pBitRevTable;            /**< points to the bit reversal table. */
-          uint16_t twidCoefModifier;         /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
-          uint16_t bitRevFactor;             /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */
-          float32_t onebyfftLen;             /**< value of 1/fftLen. */
-  } arm_cfft_radix4_instance_f32;
-
-
-
-/* Deprecated */
-  arm_status arm_cfft_radix4_init_f32(
-        arm_cfft_radix4_instance_f32 * S,
-        uint16_t fftLen,
-        uint8_t ifftFlag,
-        uint8_t bitReverseFlag);
-
-/* Deprecated */
-  void arm_cfft_radix4_f32(
-  const arm_cfft_radix4_instance_f32 * S,
-        float32_t * pSrc);
-
-  /**
-   * @brief Instance structure for the fixed-point CFFT/CIFFT function.
-   */
-  typedef struct
-  {
-          uint16_t fftLen;                   /**< length of the FFT. */
-    const q15_t *pTwiddle;             /**< points to the Twiddle factor table. */
-    const uint16_t *pBitRevTable;      /**< points to the bit reversal table. */
-          uint16_t bitRevLength;             /**< bit reversal table length. */
-#if defined(ARM_MATH_MVEI)
-   const uint32_t *rearranged_twiddle_tab_stride1_arr;        /**< Per stage reordered twiddle pointer (offset 1) */                                                       \
-   const uint32_t *rearranged_twiddle_tab_stride2_arr;        /**< Per stage reordered twiddle pointer (offset 2) */                                                       \
-   const uint32_t *rearranged_twiddle_tab_stride3_arr;        /**< Per stage reordered twiddle pointer (offset 3) */                                                       \
-   const q15_t *rearranged_twiddle_stride1; /**< reordered twiddle offset 1 storage */                                                                   \
-   const q15_t *rearranged_twiddle_stride2; /**< reordered twiddle offset 2 storage */                                                                   \
-   const q15_t *rearranged_twiddle_stride3;
-#endif
-  } arm_cfft_instance_q15;
-
-arm_status arm_cfft_init_q15(
-  arm_cfft_instance_q15 * S,
-  uint16_t fftLen);
-
-void arm_cfft_q15(
-    const arm_cfft_instance_q15 * S,
-          q15_t * p1,
-          uint8_t ifftFlag,
-          uint8_t bitReverseFlag);
-
-  /**
-   * @brief Instance structure for the fixed-point CFFT/CIFFT function.
-   */
-  typedef struct
-  {
-          uint16_t fftLen;                   /**< length of the FFT. */
-    const q31_t *pTwiddle;             /**< points to the Twiddle factor table. */
-    const uint16_t *pBitRevTable;      /**< points to the bit reversal table. */
-          uint16_t bitRevLength;             /**< bit reversal table length. */
-#if defined(ARM_MATH_MVEI)
-   const uint32_t *rearranged_twiddle_tab_stride1_arr;        /**< Per stage reordered twiddle pointer (offset 1) */                                                       \
-   const uint32_t *rearranged_twiddle_tab_stride2_arr;        /**< Per stage reordered twiddle pointer (offset 2) */                                                       \
-   const uint32_t *rearranged_twiddle_tab_stride3_arr;        /**< Per stage reordered twiddle pointer (offset 3) */                                                       \
-   const q31_t *rearranged_twiddle_stride1; /**< reordered twiddle offset 1 storage */                                                                   \
-   const q31_t *rearranged_twiddle_stride2; /**< reordered twiddle offset 2 storage */                                                                   \
-   const q31_t *rearranged_twiddle_stride3;
-#endif
-  } arm_cfft_instance_q31;
-
-arm_status arm_cfft_init_q31(
-  arm_cfft_instance_q31 * S,
-  uint16_t fftLen);
-
-void arm_cfft_q31(
-    const arm_cfft_instance_q31 * S,
-          q31_t * p1,
-          uint8_t ifftFlag,
-          uint8_t bitReverseFlag);
-
-  /**
-   * @brief Instance structure for the floating-point CFFT/CIFFT function.
-   */
-  typedef struct
-  {
-          uint16_t fftLen;                   /**< length of the FFT. */
-    const float32_t *pTwiddle;         /**< points to the Twiddle factor table. */
-    const uint16_t *pBitRevTable;      /**< points to the bit reversal table. */
-          uint16_t bitRevLength;             /**< bit reversal table length. */
-#if defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE)
-   const uint32_t *rearranged_twiddle_tab_stride1_arr;        /**< Per stage reordered twiddle pointer (offset 1) */                                                       \
-   const uint32_t *rearranged_twiddle_tab_stride2_arr;        /**< Per stage reordered twiddle pointer (offset 2) */                                                       \
-   const uint32_t *rearranged_twiddle_tab_stride3_arr;        /**< Per stage reordered twiddle pointer (offset 3) */                                                       \
-   const float32_t *rearranged_twiddle_stride1; /**< reordered twiddle offset 1 storage */                                                                   \
-   const float32_t *rearranged_twiddle_stride2; /**< reordered twiddle offset 2 storage */                                                                   \
-   const float32_t *rearranged_twiddle_stride3;
-#endif
-  } arm_cfft_instance_f32;
-
-
-
-  arm_status arm_cfft_init_f32(
-  arm_cfft_instance_f32 * S,
-  uint16_t fftLen);
-
-  void arm_cfft_f32(
-  const arm_cfft_instance_f32 * S,
-        float32_t * p1,
-        uint8_t ifftFlag,
-        uint8_t bitReverseFlag);
-
-
-  /**
-   * @brief Instance structure for the Double Precision Floating-point CFFT/CIFFT function.
-   */
-  typedef struct
-  {
-          uint16_t fftLen;                   /**< length of the FFT. */
-    const float64_t *pTwiddle;         /**< points to the Twiddle factor table. */
-    const uint16_t *pBitRevTable;      /**< points to the bit reversal table. */
-          uint16_t bitRevLength;             /**< bit reversal table length. */
-  } arm_cfft_instance_f64;
-
-  arm_status arm_cfft_init_f64(
-  arm_cfft_instance_f64 * S,
-  uint16_t fftLen);
-  
-  void arm_cfft_f64(
-  const arm_cfft_instance_f64 * S,
-        float64_t * p1,
-        uint8_t ifftFlag,
-        uint8_t bitReverseFlag);
-
-  /**
-   * @brief Instance structure for the Q15 RFFT/RIFFT function.
-   */
-  typedef struct
-  {
-          uint32_t fftLenReal;                      /**< length of the real FFT. */
-          uint8_t ifftFlagR;                        /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */
-          uint8_t bitReverseFlagR;                  /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */
-          uint32_t twidCoefRModifier;               /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
-    const q15_t *pTwiddleAReal;                     /**< points to the real twiddle factor table. */
-    const q15_t *pTwiddleBReal;                     /**< points to the imag twiddle factor table. */
-#if defined(ARM_MATH_MVEI)
-    arm_cfft_instance_q15 cfftInst;
-#else
-    const arm_cfft_instance_q15 *pCfft;       /**< points to the complex FFT instance. */
-#endif
-  } arm_rfft_instance_q15;
-
-  arm_status arm_rfft_init_q15(
-        arm_rfft_instance_q15 * S,
-        uint32_t fftLenReal,
-        uint32_t ifftFlagR,
-        uint32_t bitReverseFlag);
-
-  void arm_rfft_q15(
-  const arm_rfft_instance_q15 * S,
-        q15_t * pSrc,
-        q15_t * pDst);
-
-  /**
-   * @brief Instance structure for the Q31 RFFT/RIFFT function.
-   */
-  typedef struct
-  {
-          uint32_t fftLenReal;                        /**< length of the real FFT. */
-          uint8_t ifftFlagR;                          /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */
-          uint8_t bitReverseFlagR;                    /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */
-          uint32_t twidCoefRModifier;                 /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
-    const q31_t *pTwiddleAReal;                       /**< points to the real twiddle factor table. */
-    const q31_t *pTwiddleBReal;                       /**< points to the imag twiddle factor table. */
-#if defined(ARM_MATH_MVEI)
-    arm_cfft_instance_q31 cfftInst;
-#else
-    const arm_cfft_instance_q31 *pCfft;         /**< points to the complex FFT instance. */
-#endif
-  } arm_rfft_instance_q31;
-
-  arm_status arm_rfft_init_q31(
-        arm_rfft_instance_q31 * S,
-        uint32_t fftLenReal,
-        uint32_t ifftFlagR,
-        uint32_t bitReverseFlag);
-
-  void arm_rfft_q31(
-  const arm_rfft_instance_q31 * S,
-        q31_t * pSrc,
-        q31_t * pDst);
-
-  /**
-   * @brief Instance structure for the floating-point RFFT/RIFFT function.
-   */
-  typedef struct
-  {
-          uint32_t fftLenReal;                        /**< length of the real FFT. */
-          uint16_t fftLenBy2;                         /**< length of the complex FFT. */
-          uint8_t ifftFlagR;                          /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */
-          uint8_t bitReverseFlagR;                    /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */
-          uint32_t twidCoefRModifier;                     /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
-    const float32_t *pTwiddleAReal;                   /**< points to the real twiddle factor table. */
-    const float32_t *pTwiddleBReal;                   /**< points to the imag twiddle factor table. */
-          arm_cfft_radix4_instance_f32 *pCfft;        /**< points to the complex FFT instance. */
-  } arm_rfft_instance_f32;
-
-  arm_status arm_rfft_init_f32(
-        arm_rfft_instance_f32 * S,
-        arm_cfft_radix4_instance_f32 * S_CFFT,
-        uint32_t fftLenReal,
-        uint32_t ifftFlagR,
-        uint32_t bitReverseFlag);
-
-  void arm_rfft_f32(
-  const arm_rfft_instance_f32 * S,
-        float32_t * pSrc,
-        float32_t * pDst);
-
-  /**
-   * @brief Instance structure for the Double Precision Floating-point RFFT/RIFFT function.
-   */
-typedef struct
-  {
-          arm_cfft_instance_f64 Sint;      /**< Internal CFFT structure. */
-          uint16_t fftLenRFFT;             /**< length of the real sequence */
-    const float64_t * pTwiddleRFFT;        /**< Twiddle factors real stage  */
-  } arm_rfft_fast_instance_f64 ;
-
-arm_status arm_rfft_fast_init_f64 (
-         arm_rfft_fast_instance_f64 * S,
-         uint16_t fftLen);
-
-
-void arm_rfft_fast_f64(
-    arm_rfft_fast_instance_f64 * S,
-    float64_t * p, float64_t * pOut,
-    uint8_t ifftFlag);
-
-
-  /**
-   * @brief Instance structure for the floating-point RFFT/RIFFT function.
-   */
-typedef struct
-  {
-          arm_cfft_instance_f32 Sint;      /**< Internal CFFT structure. */
-          uint16_t fftLenRFFT;             /**< length of the real sequence */
-    const float32_t * pTwiddleRFFT;        /**< Twiddle factors real stage  */
-  } arm_rfft_fast_instance_f32 ;
-
-arm_status arm_rfft_fast_init_f32 (
-         arm_rfft_fast_instance_f32 * S,
-         uint16_t fftLen);
-
-
-  void arm_rfft_fast_f32(
-        const arm_rfft_fast_instance_f32 * S,
-        float32_t * p, float32_t * pOut,
-        uint8_t ifftFlag);
-
-  /**
-   * @brief Instance structure for the floating-point DCT4/IDCT4 function.
-   */
-  typedef struct
-  {
-          uint16_t N;                          /**< length of the DCT4. */
-          uint16_t Nby2;                       /**< half of the length of the DCT4. */
-          float32_t normalize;                 /**< normalizing factor. */
-    const float32_t *pTwiddle;                 /**< points to the twiddle factor table. */
-    const float32_t *pCosFactor;               /**< points to the cosFactor table. */
-          arm_rfft_instance_f32 *pRfft;        /**< points to the real FFT instance. */
-          arm_cfft_radix4_instance_f32 *pCfft; /**< points to the complex FFT instance. */
-  } arm_dct4_instance_f32;
-
-
-  /**
-   * @brief  Initialization function for the floating-point DCT4/IDCT4.
-   * @param[in,out] S          points to an instance of floating-point DCT4/IDCT4 structure.
-   * @param[in]     S_RFFT     points to an instance of floating-point RFFT/RIFFT structure.
-   * @param[in]     S_CFFT     points to an instance of floating-point CFFT/CIFFT structure.
-   * @param[in]     N          length of the DCT4.
-   * @param[in]     Nby2       half of the length of the DCT4.
-   * @param[in]     normalize  normalizing factor.
-   * @return      arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLenReal</code> is not a supported transform length.
-   */
-  arm_status arm_dct4_init_f32(
-        arm_dct4_instance_f32 * S,
-        arm_rfft_instance_f32 * S_RFFT,
-        arm_cfft_radix4_instance_f32 * S_CFFT,
-        uint16_t N,
-        uint16_t Nby2,
-        float32_t normalize);
-
-
-  /**
-   * @brief Processing function for the floating-point DCT4/IDCT4.
-   * @param[in]     S              points to an instance of the floating-point DCT4/IDCT4 structure.
-   * @param[in]     pState         points to state buffer.
-   * @param[in,out] pInlineBuffer  points to the in-place input and output buffer.
-   */
-  void arm_dct4_f32(
-  const arm_dct4_instance_f32 * S,
-        float32_t * pState,
-        float32_t * pInlineBuffer);
-
-
-  /**
-   * @brief Instance structure for the Q31 DCT4/IDCT4 function.
-   */
-  typedef struct
-  {
-          uint16_t N;                          /**< length of the DCT4. */
-          uint16_t Nby2;                       /**< half of the length of the DCT4. */
-          q31_t normalize;                     /**< normalizing factor. */
-    const q31_t *pTwiddle;                     /**< points to the twiddle factor table. */
-    const q31_t *pCosFactor;                   /**< points to the cosFactor table. */
-          arm_rfft_instance_q31 *pRfft;        /**< points to the real FFT instance. */
-          arm_cfft_radix4_instance_q31 *pCfft; /**< points to the complex FFT instance. */
-  } arm_dct4_instance_q31;
-
-
-  /**
-   * @brief  Initialization function for the Q31 DCT4/IDCT4.
-   * @param[in,out] S          points to an instance of Q31 DCT4/IDCT4 structure.
-   * @param[in]     S_RFFT     points to an instance of Q31 RFFT/RIFFT structure
-   * @param[in]     S_CFFT     points to an instance of Q31 CFFT/CIFFT structure
-   * @param[in]     N          length of the DCT4.
-   * @param[in]     Nby2       half of the length of the DCT4.
-   * @param[in]     normalize  normalizing factor.
-   * @return      arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>N</code> is not a supported transform length.
-   */
-  arm_status arm_dct4_init_q31(
-        arm_dct4_instance_q31 * S,
-        arm_rfft_instance_q31 * S_RFFT,
-        arm_cfft_radix4_instance_q31 * S_CFFT,
-        uint16_t N,
-        uint16_t Nby2,
-        q31_t normalize);
-
-
-  /**
-   * @brief Processing function for the Q31 DCT4/IDCT4.
-   * @param[in]     S              points to an instance of the Q31 DCT4 structure.
-   * @param[in]     pState         points to state buffer.
-   * @param[in,out] pInlineBuffer  points to the in-place input and output buffer.
-   */
-  void arm_dct4_q31(
-  const arm_dct4_instance_q31 * S,
-        q31_t * pState,
-        q31_t * pInlineBuffer);
-
-
-  /**
-   * @brief Instance structure for the Q15 DCT4/IDCT4 function.
-   */
-  typedef struct
-  {
-          uint16_t N;                          /**< length of the DCT4. */
-          uint16_t Nby2;                       /**< half of the length of the DCT4. */
-          q15_t normalize;                     /**< normalizing factor. */
-    const q15_t *pTwiddle;                     /**< points to the twiddle factor table. */
-    const q15_t *pCosFactor;                   /**< points to the cosFactor table. */
-          arm_rfft_instance_q15 *pRfft;        /**< points to the real FFT instance. */
-          arm_cfft_radix4_instance_q15 *pCfft; /**< points to the complex FFT instance. */
-  } arm_dct4_instance_q15;
-
-
-  /**
-   * @brief  Initialization function for the Q15 DCT4/IDCT4.
-   * @param[in,out] S          points to an instance of Q15 DCT4/IDCT4 structure.
-   * @param[in]     S_RFFT     points to an instance of Q15 RFFT/RIFFT structure.
-   * @param[in]     S_CFFT     points to an instance of Q15 CFFT/CIFFT structure.
-   * @param[in]     N          length of the DCT4.
-   * @param[in]     Nby2       half of the length of the DCT4.
-   * @param[in]     normalize  normalizing factor.
-   * @return      arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>N</code> is not a supported transform length.
-   */
-  arm_status arm_dct4_init_q15(
-        arm_dct4_instance_q15 * S,
-        arm_rfft_instance_q15 * S_RFFT,
-        arm_cfft_radix4_instance_q15 * S_CFFT,
-        uint16_t N,
-        uint16_t Nby2,
-        q15_t normalize);
-
-
-  /**
-   * @brief Processing function for the Q15 DCT4/IDCT4.
-   * @param[in]     S              points to an instance of the Q15 DCT4 structure.
-   * @param[in]     pState         points to state buffer.
-   * @param[in,out] pInlineBuffer  points to the in-place input and output buffer.
-   */
-  void arm_dct4_q15(
-  const arm_dct4_instance_q15 * S,
-        q15_t * pState,
-        q15_t * pInlineBuffer);
-
-
-  /**
-   * @brief Floating-point vector addition.
-   * @param[in]  pSrcA      points to the first input vector
-   * @param[in]  pSrcB      points to the second input vector
-   * @param[out] pDst       points to the output vector
-   * @param[in]  blockSize  number of samples in each vector
-   */
-  void arm_add_f32(
-  const float32_t * pSrcA,
-  const float32_t * pSrcB,
-        float32_t * pDst,
-        uint32_t blockSize);
-
-
-
-  /**
-   * @brief Q7 vector addition.
-   * @param[in]  pSrcA      points to the first input vector
-   * @param[in]  pSrcB      points to the second input vector
-   * @param[out] pDst       points to the output vector
-   * @param[in]  blockSize  number of samples in each vector
-   */
-  void arm_add_q7(
-  const q7_t * pSrcA,
-  const q7_t * pSrcB,
-        q7_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Q15 vector addition.
-   * @param[in]  pSrcA      points to the first input vector
-   * @param[in]  pSrcB      points to the second input vector
-   * @param[out] pDst       points to the output vector
-   * @param[in]  blockSize  number of samples in each vector
-   */
-  void arm_add_q15(
-  const q15_t * pSrcA,
-  const q15_t * pSrcB,
-        q15_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Q31 vector addition.
-   * @param[in]  pSrcA      points to the first input vector
-   * @param[in]  pSrcB      points to the second input vector
-   * @param[out] pDst       points to the output vector
-   * @param[in]  blockSize  number of samples in each vector
-   */
-  void arm_add_q31(
-  const q31_t * pSrcA,
-  const q31_t * pSrcB,
-        q31_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Floating-point vector subtraction.
-   * @param[in]  pSrcA      points to the first input vector
-   * @param[in]  pSrcB      points to the second input vector
-   * @param[out] pDst       points to the output vector
-   * @param[in]  blockSize  number of samples in each vector
-   */
-  void arm_sub_f32(
-  const float32_t * pSrcA,
-  const float32_t * pSrcB,
-        float32_t * pDst,
-        uint32_t blockSize);
-
-
-
-  /**
-   * @brief Q7 vector subtraction.
-   * @param[in]  pSrcA      points to the first input vector
-   * @param[in]  pSrcB      points to the second input vector
-   * @param[out] pDst       points to the output vector
-   * @param[in]  blockSize  number of samples in each vector
-   */
-  void arm_sub_q7(
-  const q7_t * pSrcA,
-  const q7_t * pSrcB,
-        q7_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Q15 vector subtraction.
-   * @param[in]  pSrcA      points to the first input vector
-   * @param[in]  pSrcB      points to the second input vector
-   * @param[out] pDst       points to the output vector
-   * @param[in]  blockSize  number of samples in each vector
-   */
-  void arm_sub_q15(
-  const q15_t * pSrcA,
-  const q15_t * pSrcB,
-        q15_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Q31 vector subtraction.
-   * @param[in]  pSrcA      points to the first input vector
-   * @param[in]  pSrcB      points to the second input vector
-   * @param[out] pDst       points to the output vector
-   * @param[in]  blockSize  number of samples in each vector
-   */
-  void arm_sub_q31(
-  const q31_t * pSrcA,
-  const q31_t * pSrcB,
-        q31_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Multiplies a floating-point vector by a scalar.
-   * @param[in]  pSrc       points to the input vector
-   * @param[in]  scale      scale factor to be applied
-   * @param[out] pDst       points to the output vector
-   * @param[in]  blockSize  number of samples in the vector
-   */
-  void arm_scale_f32(
-  const float32_t * pSrc,
-        float32_t scale,
-        float32_t * pDst,
-        uint32_t blockSize);
-
-
-
-  /**
-   * @brief Multiplies a Q7 vector by a scalar.
-   * @param[in]  pSrc        points to the input vector
-   * @param[in]  scaleFract  fractional portion of the scale value
-   * @param[in]  shift       number of bits to shift the result by
-   * @param[out] pDst        points to the output vector
-   * @param[in]  blockSize   number of samples in the vector
-   */
-  void arm_scale_q7(
-  const q7_t * pSrc,
-        q7_t scaleFract,
-        int8_t shift,
-        q7_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Multiplies a Q15 vector by a scalar.
-   * @param[in]  pSrc        points to the input vector
-   * @param[in]  scaleFract  fractional portion of the scale value
-   * @param[in]  shift       number of bits to shift the result by
-   * @param[out] pDst        points to the output vector
-   * @param[in]  blockSize   number of samples in the vector
-   */
-  void arm_scale_q15(
-  const q15_t * pSrc,
-        q15_t scaleFract,
-        int8_t shift,
-        q15_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Multiplies a Q31 vector by a scalar.
-   * @param[in]  pSrc        points to the input vector
-   * @param[in]  scaleFract  fractional portion of the scale value
-   * @param[in]  shift       number of bits to shift the result by
-   * @param[out] pDst        points to the output vector
-   * @param[in]  blockSize   number of samples in the vector
-   */
-  void arm_scale_q31(
-  const q31_t * pSrc,
-        q31_t scaleFract,
-        int8_t shift,
-        q31_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Q7 vector absolute value.
-   * @param[in]  pSrc       points to the input buffer
-   * @param[out] pDst       points to the output buffer
-   * @param[in]  blockSize  number of samples in each vector
-   */
-  void arm_abs_q7(
-  const q7_t * pSrc,
-        q7_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Floating-point vector absolute value.
-   * @param[in]  pSrc       points to the input buffer
-   * @param[out] pDst       points to the output buffer
-   * @param[in]  blockSize  number of samples in each vector
-   */
-  void arm_abs_f32(
-  const float32_t * pSrc,
-        float32_t * pDst,
-        uint32_t blockSize);
-
-
-
-
-  /**
-   * @brief Q15 vector absolute value.
-   * @param[in]  pSrc       points to the input buffer
-   * @param[out] pDst       points to the output buffer
-   * @param[in]  blockSize  number of samples in each vector
-   */
-  void arm_abs_q15(
-  const q15_t * pSrc,
-        q15_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Q31 vector absolute value.
-   * @param[in]  pSrc       points to the input buffer
-   * @param[out] pDst       points to the output buffer
-   * @param[in]  blockSize  number of samples in each vector
-   */
-  void arm_abs_q31(
-  const q31_t * pSrc,
-        q31_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Dot product of floating-point vectors.
-   * @param[in]  pSrcA      points to the first input vector
-   * @param[in]  pSrcB      points to the second input vector
-   * @param[in]  blockSize  number of samples in each vector
-   * @param[out] result     output result returned here
-   */
-  void arm_dot_prod_f32(
-  const float32_t * pSrcA,
-  const float32_t * pSrcB,
-        uint32_t blockSize,
-        float32_t * result);
-
-
-
-  /**
-   * @brief Dot product of Q7 vectors.
-   * @param[in]  pSrcA      points to the first input vector
-   * @param[in]  pSrcB      points to the second input vector
-   * @param[in]  blockSize  number of samples in each vector
-   * @param[out] result     output result returned here
-   */
-  void arm_dot_prod_q7(
-  const q7_t * pSrcA,
-  const q7_t * pSrcB,
-        uint32_t blockSize,
-        q31_t * result);
-
-
-  /**
-   * @brief Dot product of Q15 vectors.
-   * @param[in]  pSrcA      points to the first input vector
-   * @param[in]  pSrcB      points to the second input vector
-   * @param[in]  blockSize  number of samples in each vector
-   * @param[out] result     output result returned here
-   */
-  void arm_dot_prod_q15(
-  const q15_t * pSrcA,
-  const q15_t * pSrcB,
-        uint32_t blockSize,
-        q63_t * result);
-
-
-  /**
-   * @brief Dot product of Q31 vectors.
-   * @param[in]  pSrcA      points to the first input vector
-   * @param[in]  pSrcB      points to the second input vector
-   * @param[in]  blockSize  number of samples in each vector
-   * @param[out] result     output result returned here
-   */
-  void arm_dot_prod_q31(
-  const q31_t * pSrcA,
-  const q31_t * pSrcB,
-        uint32_t blockSize,
-        q63_t * result);
-
-
-  /**
-   * @brief  Shifts the elements of a Q7 vector a specified number of bits.
-   * @param[in]  pSrc       points to the input vector
-   * @param[in]  shiftBits  number of bits to shift.  A positive value shifts left; a negative value shifts right.
-   * @param[out] pDst       points to the output vector
-   * @param[in]  blockSize  number of samples in the vector
-   */
-  void arm_shift_q7(
-  const q7_t * pSrc,
-        int8_t shiftBits,
-        q7_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Shifts the elements of a Q15 vector a specified number of bits.
-   * @param[in]  pSrc       points to the input vector
-   * @param[in]  shiftBits  number of bits to shift.  A positive value shifts left; a negative value shifts right.
-   * @param[out] pDst       points to the output vector
-   * @param[in]  blockSize  number of samples in the vector
-   */
-  void arm_shift_q15(
-  const q15_t * pSrc,
-        int8_t shiftBits,
-        q15_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Shifts the elements of a Q31 vector a specified number of bits.
-   * @param[in]  pSrc       points to the input vector
-   * @param[in]  shiftBits  number of bits to shift.  A positive value shifts left; a negative value shifts right.
-   * @param[out] pDst       points to the output vector
-   * @param[in]  blockSize  number of samples in the vector
-   */
-  void arm_shift_q31(
-  const q31_t * pSrc,
-        int8_t shiftBits,
-        q31_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Adds a constant offset to a floating-point vector.
-   * @param[in]  pSrc       points to the input vector
-   * @param[in]  offset     is the offset to be added
-   * @param[out] pDst       points to the output vector
-   * @param[in]  blockSize  number of samples in the vector
-   */
-  void arm_offset_f32(
-  const float32_t * pSrc,
-        float32_t offset,
-        float32_t * pDst,
-        uint32_t blockSize);
-
-
-
-  /**
-   * @brief  Adds a constant offset to a Q7 vector.
-   * @param[in]  pSrc       points to the input vector
-   * @param[in]  offset     is the offset to be added
-   * @param[out] pDst       points to the output vector
-   * @param[in]  blockSize  number of samples in the vector
-   */
-  void arm_offset_q7(
-  const q7_t * pSrc,
-        q7_t offset,
-        q7_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Adds a constant offset to a Q15 vector.
-   * @param[in]  pSrc       points to the input vector
-   * @param[in]  offset     is the offset to be added
-   * @param[out] pDst       points to the output vector
-   * @param[in]  blockSize  number of samples in the vector
-   */
-  void arm_offset_q15(
-  const q15_t * pSrc,
-        q15_t offset,
-        q15_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Adds a constant offset to a Q31 vector.
-   * @param[in]  pSrc       points to the input vector
-   * @param[in]  offset     is the offset to be added
-   * @param[out] pDst       points to the output vector
-   * @param[in]  blockSize  number of samples in the vector
-   */
-  void arm_offset_q31(
-  const q31_t * pSrc,
-        q31_t offset,
-        q31_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Negates the elements of a floating-point vector.
-   * @param[in]  pSrc       points to the input vector
-   * @param[out] pDst       points to the output vector
-   * @param[in]  blockSize  number of samples in the vector
-   */
-  void arm_negate_f32(
-  const float32_t * pSrc,
-        float32_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Negates the elements of a Q7 vector.
-   * @param[in]  pSrc       points to the input vector
-   * @param[out] pDst       points to the output vector
-   * @param[in]  blockSize  number of samples in the vector
-   */
-  void arm_negate_q7(
-  const q7_t * pSrc,
-        q7_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Negates the elements of a Q15 vector.
-   * @param[in]  pSrc       points to the input vector
-   * @param[out] pDst       points to the output vector
-   * @param[in]  blockSize  number of samples in the vector
-   */
-  void arm_negate_q15(
-  const q15_t * pSrc,
-        q15_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Negates the elements of a Q31 vector.
-   * @param[in]  pSrc       points to the input vector
-   * @param[out] pDst       points to the output vector
-   * @param[in]  blockSize  number of samples in the vector
-   */
-  void arm_negate_q31(
-  const q31_t * pSrc,
-        q31_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Copies the elements of a floating-point vector.
-   * @param[in]  pSrc       input pointer
-   * @param[out] pDst       output pointer
-   * @param[in]  blockSize  number of samples to process
-   */
-  void arm_copy_f32(
-  const float32_t * pSrc,
-        float32_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Copies the elements of a Q7 vector.
-   * @param[in]  pSrc       input pointer
-   * @param[out] pDst       output pointer
-   * @param[in]  blockSize  number of samples to process
-   */
-  void arm_copy_q7(
-  const q7_t * pSrc,
-        q7_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Copies the elements of a Q15 vector.
-   * @param[in]  pSrc       input pointer
-   * @param[out] pDst       output pointer
-   * @param[in]  blockSize  number of samples to process
-   */
-  void arm_copy_q15(
-  const q15_t * pSrc,
-        q15_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Copies the elements of a Q31 vector.
-   * @param[in]  pSrc       input pointer
-   * @param[out] pDst       output pointer
-   * @param[in]  blockSize  number of samples to process
-   */
-  void arm_copy_q31(
-  const q31_t * pSrc,
-        q31_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Fills a constant value into a floating-point vector.
-   * @param[in]  value      input value to be filled
-   * @param[out] pDst       output pointer
-   * @param[in]  blockSize  number of samples to process
-   */
-  void arm_fill_f32(
-        float32_t value,
-        float32_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Fills a constant value into a Q7 vector.
-   * @param[in]  value      input value to be filled
-   * @param[out] pDst       output pointer
-   * @param[in]  blockSize  number of samples to process
-   */
-  void arm_fill_q7(
-        q7_t value,
-        q7_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Fills a constant value into a Q15 vector.
-   * @param[in]  value      input value to be filled
-   * @param[out] pDst       output pointer
-   * @param[in]  blockSize  number of samples to process
-   */
-  void arm_fill_q15(
-        q15_t value,
-        q15_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Fills a constant value into a Q31 vector.
-   * @param[in]  value      input value to be filled
-   * @param[out] pDst       output pointer
-   * @param[in]  blockSize  number of samples to process
-   */
-  void arm_fill_q31(
-        q31_t value,
-        q31_t * pDst,
-        uint32_t blockSize);
-
-
-/**
- * @brief Convolution of floating-point sequences.
- * @param[in]  pSrcA    points to the first input sequence.
- * @param[in]  srcALen  length of the first input sequence.
- * @param[in]  pSrcB    points to the second input sequence.
- * @param[in]  srcBLen  length of the second input sequence.
- * @param[out] pDst     points to the location where the output result is written.  Length srcALen+srcBLen-1.
- */
-  void arm_conv_f32(
-  const float32_t * pSrcA,
-        uint32_t srcALen,
-  const float32_t * pSrcB,
-        uint32_t srcBLen,
-        float32_t * pDst);
-
-
-  /**
-   * @brief Convolution of Q15 sequences.
-   * @param[in]  pSrcA      points to the first input sequence.
-   * @param[in]  srcALen    length of the first input sequence.
-   * @param[in]  pSrcB      points to the second input sequence.
-   * @param[in]  srcBLen    length of the second input sequence.
-   * @param[out] pDst       points to the block of output data  Length srcALen+srcBLen-1.
-   * @param[in]  pScratch1  points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
-   * @param[in]  pScratch2  points to scratch buffer of size min(srcALen, srcBLen).
-   */
-  void arm_conv_opt_q15(
-  const q15_t * pSrcA,
-        uint32_t srcALen,
-  const q15_t * pSrcB,
-        uint32_t srcBLen,
-        q15_t * pDst,
-        q15_t * pScratch1,
-        q15_t * pScratch2);
-
-
-/**
- * @brief Convolution of Q15 sequences.
- * @param[in]  pSrcA    points to the first input sequence.
- * @param[in]  srcALen  length of the first input sequence.
- * @param[in]  pSrcB    points to the second input sequence.
- * @param[in]  srcBLen  length of the second input sequence.
- * @param[out] pDst     points to the location where the output result is written.  Length srcALen+srcBLen-1.
- */
-  void arm_conv_q15(
-  const q15_t * pSrcA,
-        uint32_t srcALen,
-  const q15_t * pSrcB,
-        uint32_t srcBLen,
-        q15_t * pDst);
-
-
-  /**
-   * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4
-   * @param[in]  pSrcA    points to the first input sequence.
-   * @param[in]  srcALen  length of the first input sequence.
-   * @param[in]  pSrcB    points to the second input sequence.
-   * @param[in]  srcBLen  length of the second input sequence.
-   * @param[out] pDst     points to the block of output data  Length srcALen+srcBLen-1.
-   */
-  void arm_conv_fast_q15(
-  const q15_t * pSrcA,
-        uint32_t srcALen,
-  const q15_t * pSrcB,
-        uint32_t srcBLen,
-        q15_t * pDst);
-
-
-  /**
-   * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4
-   * @param[in]  pSrcA      points to the first input sequence.
-   * @param[in]  srcALen    length of the first input sequence.
-   * @param[in]  pSrcB      points to the second input sequence.
-   * @param[in]  srcBLen    length of the second input sequence.
-   * @param[out] pDst       points to the block of output data  Length srcALen+srcBLen-1.
-   * @param[in]  pScratch1  points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
-   * @param[in]  pScratch2  points to scratch buffer of size min(srcALen, srcBLen).
-   */
-  void arm_conv_fast_opt_q15(
-  const q15_t * pSrcA,
-        uint32_t srcALen,
-  const q15_t * pSrcB,
-        uint32_t srcBLen,
-        q15_t * pDst,
-        q15_t * pScratch1,
-        q15_t * pScratch2);
-
-
-  /**
-   * @brief Convolution of Q31 sequences.
-   * @param[in]  pSrcA    points to the first input sequence.
-   * @param[in]  srcALen  length of the first input sequence.
-   * @param[in]  pSrcB    points to the second input sequence.
-   * @param[in]  srcBLen  length of the second input sequence.
-   * @param[out] pDst     points to the block of output data  Length srcALen+srcBLen-1.
-   */
-  void arm_conv_q31(
-  const q31_t * pSrcA,
-        uint32_t srcALen,
-  const q31_t * pSrcB,
-        uint32_t srcBLen,
-        q31_t * pDst);
-
-
-  /**
-   * @brief Convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4
-   * @param[in]  pSrcA    points to the first input sequence.
-   * @param[in]  srcALen  length of the first input sequence.
-   * @param[in]  pSrcB    points to the second input sequence.
-   * @param[in]  srcBLen  length of the second input sequence.
-   * @param[out] pDst     points to the block of output data  Length srcALen+srcBLen-1.
-   */
-  void arm_conv_fast_q31(
-  const q31_t * pSrcA,
-        uint32_t srcALen,
-  const q31_t * pSrcB,
-        uint32_t srcBLen,
-        q31_t * pDst);
-
-
-    /**
-   * @brief Convolution of Q7 sequences.
-   * @param[in]  pSrcA      points to the first input sequence.
-   * @param[in]  srcALen    length of the first input sequence.
-   * @param[in]  pSrcB      points to the second input sequence.
-   * @param[in]  srcBLen    length of the second input sequence.
-   * @param[out] pDst       points to the block of output data  Length srcALen+srcBLen-1.
-   * @param[in]  pScratch1  points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
-   * @param[in]  pScratch2  points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen).
-   */
-  void arm_conv_opt_q7(
-  const q7_t * pSrcA,
-        uint32_t srcALen,
-  const q7_t * pSrcB,
-        uint32_t srcBLen,
-        q7_t * pDst,
-        q15_t * pScratch1,
-        q15_t * pScratch2);
-
-
-  /**
-   * @brief Convolution of Q7 sequences.
-   * @param[in]  pSrcA    points to the first input sequence.
-   * @param[in]  srcALen  length of the first input sequence.
-   * @param[in]  pSrcB    points to the second input sequence.
-   * @param[in]  srcBLen  length of the second input sequence.
-   * @param[out] pDst     points to the block of output data  Length srcALen+srcBLen-1.
-   */
-  void arm_conv_q7(
-  const q7_t * pSrcA,
-        uint32_t srcALen,
-  const q7_t * pSrcB,
-        uint32_t srcBLen,
-        q7_t * pDst);
-
-
-  /**
-   * @brief Partial convolution of floating-point sequences.
-   * @param[in]  pSrcA       points to the first input sequence.
-   * @param[in]  srcALen     length of the first input sequence.
-   * @param[in]  pSrcB       points to the second input sequence.
-   * @param[in]  srcBLen     length of the second input sequence.
-   * @param[out] pDst        points to the block of output data
-   * @param[in]  firstIndex  is the first output sample to start with.
-   * @param[in]  numPoints   is the number of output points to be computed.
-   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
-   */
-  arm_status arm_conv_partial_f32(
-  const float32_t * pSrcA,
-        uint32_t srcALen,
-  const float32_t * pSrcB,
-        uint32_t srcBLen,
-        float32_t * pDst,
-        uint32_t firstIndex,
-        uint32_t numPoints);
-
-
-  /**
-   * @brief Partial convolution of Q15 sequences.
-   * @param[in]  pSrcA       points to the first input sequence.
-   * @param[in]  srcALen     length of the first input sequence.
-   * @param[in]  pSrcB       points to the second input sequence.
-   * @param[in]  srcBLen     length of the second input sequence.
-   * @param[out] pDst        points to the block of output data
-   * @param[in]  firstIndex  is the first output sample to start with.
-   * @param[in]  numPoints   is the number of output points to be computed.
-   * @param[in]  pScratch1   points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
-   * @param[in]  pScratch2   points to scratch buffer of size min(srcALen, srcBLen).
-   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
-   */
-  arm_status arm_conv_partial_opt_q15(
-  const q15_t * pSrcA,
-        uint32_t srcALen,
-  const q15_t * pSrcB,
-        uint32_t srcBLen,
-        q15_t * pDst,
-        uint32_t firstIndex,
-        uint32_t numPoints,
-        q15_t * pScratch1,
-        q15_t * pScratch2);
-
-
-  /**
-   * @brief Partial convolution of Q15 sequences.
-   * @param[in]  pSrcA       points to the first input sequence.
-   * @param[in]  srcALen     length of the first input sequence.
-   * @param[in]  pSrcB       points to the second input sequence.
-   * @param[in]  srcBLen     length of the second input sequence.
-   * @param[out] pDst        points to the block of output data
-   * @param[in]  firstIndex  is the first output sample to start with.
-   * @param[in]  numPoints   is the number of output points to be computed.
-   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
-   */
-  arm_status arm_conv_partial_q15(
-  const q15_t * pSrcA,
-        uint32_t srcALen,
-  const q15_t * pSrcB,
-        uint32_t srcBLen,
-        q15_t * pDst,
-        uint32_t firstIndex,
-        uint32_t numPoints);
-
-
-  /**
-   * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4
-   * @param[in]  pSrcA       points to the first input sequence.
-   * @param[in]  srcALen     length of the first input sequence.
-   * @param[in]  pSrcB       points to the second input sequence.
-   * @param[in]  srcBLen     length of the second input sequence.
-   * @param[out] pDst        points to the block of output data
-   * @param[in]  firstIndex  is the first output sample to start with.
-   * @param[in]  numPoints   is the number of output points to be computed.
-   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
-   */
-  arm_status arm_conv_partial_fast_q15(
-  const q15_t * pSrcA,
-        uint32_t srcALen,
-  const q15_t * pSrcB,
-        uint32_t srcBLen,
-        q15_t * pDst,
-        uint32_t firstIndex,
-        uint32_t numPoints);
-
-
-  /**
-   * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4
-   * @param[in]  pSrcA       points to the first input sequence.
-   * @param[in]  srcALen     length of the first input sequence.
-   * @param[in]  pSrcB       points to the second input sequence.
-   * @param[in]  srcBLen     length of the second input sequence.
-   * @param[out] pDst        points to the block of output data
-   * @param[in]  firstIndex  is the first output sample to start with.
-   * @param[in]  numPoints   is the number of output points to be computed.
-   * @param[in]  pScratch1   points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
-   * @param[in]  pScratch2   points to scratch buffer of size min(srcALen, srcBLen).
-   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
-   */
-  arm_status arm_conv_partial_fast_opt_q15(
-  const q15_t * pSrcA,
-        uint32_t srcALen,
-  const q15_t * pSrcB,
-        uint32_t srcBLen,
-        q15_t * pDst,
-        uint32_t firstIndex,
-        uint32_t numPoints,
-        q15_t * pScratch1,
-        q15_t * pScratch2);
-
-
-  /**
-   * @brief Partial convolution of Q31 sequences.
-   * @param[in]  pSrcA       points to the first input sequence.
-   * @param[in]  srcALen     length of the first input sequence.
-   * @param[in]  pSrcB       points to the second input sequence.
-   * @param[in]  srcBLen     length of the second input sequence.
-   * @param[out] pDst        points to the block of output data
-   * @param[in]  firstIndex  is the first output sample to start with.
-   * @param[in]  numPoints   is the number of output points to be computed.
-   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
-   */
-  arm_status arm_conv_partial_q31(
-  const q31_t * pSrcA,
-        uint32_t srcALen,
-  const q31_t * pSrcB,
-        uint32_t srcBLen,
-        q31_t * pDst,
-        uint32_t firstIndex,
-        uint32_t numPoints);
-
-
-  /**
-   * @brief Partial convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4
-   * @param[in]  pSrcA       points to the first input sequence.
-   * @param[in]  srcALen     length of the first input sequence.
-   * @param[in]  pSrcB       points to the second input sequence.
-   * @param[in]  srcBLen     length of the second input sequence.
-   * @param[out] pDst        points to the block of output data
-   * @param[in]  firstIndex  is the first output sample to start with.
-   * @param[in]  numPoints   is the number of output points to be computed.
-   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
-   */
-  arm_status arm_conv_partial_fast_q31(
-  const q31_t * pSrcA,
-        uint32_t srcALen,
-  const q31_t * pSrcB,
-        uint32_t srcBLen,
-        q31_t * pDst,
-        uint32_t firstIndex,
-        uint32_t numPoints);
-
-
-  /**
-   * @brief Partial convolution of Q7 sequences
-   * @param[in]  pSrcA       points to the first input sequence.
-   * @param[in]  srcALen     length of the first input sequence.
-   * @param[in]  pSrcB       points to the second input sequence.
-   * @param[in]  srcBLen     length of the second input sequence.
-   * @param[out] pDst        points to the block of output data
-   * @param[in]  firstIndex  is the first output sample to start with.
-   * @param[in]  numPoints   is the number of output points to be computed.
-   * @param[in]  pScratch1   points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
-   * @param[in]  pScratch2   points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen).
-   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
-   */
-  arm_status arm_conv_partial_opt_q7(
-  const q7_t * pSrcA,
-        uint32_t srcALen,
-  const q7_t * pSrcB,
-        uint32_t srcBLen,
-        q7_t * pDst,
-        uint32_t firstIndex,
-        uint32_t numPoints,
-        q15_t * pScratch1,
-        q15_t * pScratch2);
-
-
-/**
-   * @brief Partial convolution of Q7 sequences.
-   * @param[in]  pSrcA       points to the first input sequence.
-   * @param[in]  srcALen     length of the first input sequence.
-   * @param[in]  pSrcB       points to the second input sequence.
-   * @param[in]  srcBLen     length of the second input sequence.
-   * @param[out] pDst        points to the block of output data
-   * @param[in]  firstIndex  is the first output sample to start with.
-   * @param[in]  numPoints   is the number of output points to be computed.
-   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
-   */
-  arm_status arm_conv_partial_q7(
-  const q7_t * pSrcA,
-        uint32_t srcALen,
-  const q7_t * pSrcB,
-        uint32_t srcBLen,
-        q7_t * pDst,
-        uint32_t firstIndex,
-        uint32_t numPoints);
-
-
-  /**
-   * @brief Instance structure for the Q15 FIR decimator.
-   */
-  typedef struct
-  {
-          uint8_t M;                  /**< decimation factor. */
-          uint16_t numTaps;           /**< number of coefficients in the filter. */
-    const q15_t *pCoeffs;             /**< points to the coefficient array. The array is of length numTaps.*/
-          q15_t *pState;              /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
-  } arm_fir_decimate_instance_q15;
-
-  /**
-   * @brief Instance structure for the Q31 FIR decimator.
-   */
-  typedef struct
-  {
-          uint8_t M;                  /**< decimation factor. */
-          uint16_t numTaps;           /**< number of coefficients in the filter. */
-    const q31_t *pCoeffs;             /**< points to the coefficient array. The array is of length numTaps.*/
-          q31_t *pState;              /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
-  } arm_fir_decimate_instance_q31;
-
-/**
-  @brief Instance structure for floating-point FIR decimator.
- */
-typedef struct
-  {
-          uint8_t M;                  /**< decimation factor. */
-          uint16_t numTaps;           /**< number of coefficients in the filter. */
-    const float32_t *pCoeffs;         /**< points to the coefficient array. The array is of length numTaps.*/
-          float32_t *pState;          /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
-  } arm_fir_decimate_instance_f32;
-
-
-/**
-  @brief         Processing function for floating-point FIR decimator.
-  @param[in]     S         points to an instance of the floating-point FIR decimator structure
-  @param[in]     pSrc      points to the block of input data
-  @param[out]    pDst      points to the block of output data
-  @param[in]     blockSize number of samples to process
- */
-void arm_fir_decimate_f32(
-  const arm_fir_decimate_instance_f32 * S,
-  const float32_t * pSrc,
-        float32_t * pDst,
-        uint32_t blockSize);
-
-
-/**
-  @brief         Initialization function for the floating-point FIR decimator.
-  @param[in,out] S          points to an instance of the floating-point FIR decimator structure
-  @param[in]     numTaps    number of coefficients in the filter
-  @param[in]     M          decimation factor
-  @param[in]     pCoeffs    points to the filter coefficients
-  @param[in]     pState     points to the state buffer
-  @param[in]     blockSize  number of input samples to process per call
-  @return        execution status
-                   - \ref ARM_MATH_SUCCESS      : Operation successful
-                   - \ref ARM_MATH_LENGTH_ERROR : <code>blockSize</code> is not a multiple of <code>M</code>
- */
-arm_status arm_fir_decimate_init_f32(
-        arm_fir_decimate_instance_f32 * S,
-        uint16_t numTaps,
-        uint8_t M,
-  const float32_t * pCoeffs,
-        float32_t * pState,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Processing function for the Q15 FIR decimator.
-   * @param[in]  S          points to an instance of the Q15 FIR decimator structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[out] pDst       points to the block of output data
-   * @param[in]  blockSize  number of input samples to process per call.
-   */
-  void arm_fir_decimate_q15(
-  const arm_fir_decimate_instance_q15 * S,
-  const q15_t * pSrc,
-        q15_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Processing function for the Q15 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4.
-   * @param[in]  S          points to an instance of the Q15 FIR decimator structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[out] pDst       points to the block of output data
-   * @param[in]  blockSize  number of input samples to process per call.
-   */
-  void arm_fir_decimate_fast_q15(
-  const arm_fir_decimate_instance_q15 * S,
-  const q15_t * pSrc,
-        q15_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Initialization function for the Q15 FIR decimator.
-   * @param[in,out] S          points to an instance of the Q15 FIR decimator structure.
-   * @param[in]     numTaps    number of coefficients in the filter.
-   * @param[in]     M          decimation factor.
-   * @param[in]     pCoeffs    points to the filter coefficients.
-   * @param[in]     pState     points to the state buffer.
-   * @param[in]     blockSize  number of input samples to process per call.
-   * @return    The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if
-   * <code>blockSize</code> is not a multiple of <code>M</code>.
-   */
-  arm_status arm_fir_decimate_init_q15(
-        arm_fir_decimate_instance_q15 * S,
-        uint16_t numTaps,
-        uint8_t M,
-  const q15_t * pCoeffs,
-        q15_t * pState,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Processing function for the Q31 FIR decimator.
-   * @param[in]  S     points to an instance of the Q31 FIR decimator structure.
-   * @param[in]  pSrc  points to the block of input data.
-   * @param[out] pDst  points to the block of output data
-   * @param[in] blockSize number of input samples to process per call.
-   */
-  void arm_fir_decimate_q31(
-  const arm_fir_decimate_instance_q31 * S,
-  const q31_t * pSrc,
-        q31_t * pDst,
-        uint32_t blockSize);
-
-  /**
-   * @brief Processing function for the Q31 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4.
-   * @param[in]  S          points to an instance of the Q31 FIR decimator structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[out] pDst       points to the block of output data
-   * @param[in]  blockSize  number of input samples to process per call.
-   */
-  void arm_fir_decimate_fast_q31(
-  const arm_fir_decimate_instance_q31 * S,
-  const q31_t * pSrc,
-        q31_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Initialization function for the Q31 FIR decimator.
-   * @param[in,out] S          points to an instance of the Q31 FIR decimator structure.
-   * @param[in]     numTaps    number of coefficients in the filter.
-   * @param[in]     M          decimation factor.
-   * @param[in]     pCoeffs    points to the filter coefficients.
-   * @param[in]     pState     points to the state buffer.
-   * @param[in]     blockSize  number of input samples to process per call.
-   * @return    The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if
-   * <code>blockSize</code> is not a multiple of <code>M</code>.
-   */
-  arm_status arm_fir_decimate_init_q31(
-        arm_fir_decimate_instance_q31 * S,
-        uint16_t numTaps,
-        uint8_t M,
-  const q31_t * pCoeffs,
-        q31_t * pState,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Instance structure for the Q15 FIR interpolator.
-   */
-  typedef struct
-  {
-        uint8_t L;                      /**< upsample factor. */
-        uint16_t phaseLength;           /**< length of each polyphase filter component. */
-  const q15_t *pCoeffs;                 /**< points to the coefficient array. The array is of length L*phaseLength. */
-        q15_t *pState;                  /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */
-  } arm_fir_interpolate_instance_q15;
-
-  /**
-   * @brief Instance structure for the Q31 FIR interpolator.
-   */
-  typedef struct
-  {
-        uint8_t L;                      /**< upsample factor. */
-        uint16_t phaseLength;           /**< length of each polyphase filter component. */
-  const q31_t *pCoeffs;                 /**< points to the coefficient array. The array is of length L*phaseLength. */
-        q31_t *pState;                  /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */
-  } arm_fir_interpolate_instance_q31;
-
-  /**
-   * @brief Instance structure for the floating-point FIR interpolator.
-   */
-  typedef struct
-  {
-        uint8_t L;                     /**< upsample factor. */
-        uint16_t phaseLength;          /**< length of each polyphase filter component. */
-  const float32_t *pCoeffs;            /**< points to the coefficient array. The array is of length L*phaseLength. */
-        float32_t *pState;             /**< points to the state variable array. The array is of length phaseLength+numTaps-1. */
-  } arm_fir_interpolate_instance_f32;
-
-
-  /**
-   * @brief Processing function for the Q15 FIR interpolator.
-   * @param[in]  S          points to an instance of the Q15 FIR interpolator structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[out] pDst       points to the block of output data.
-   * @param[in]  blockSize  number of input samples to process per call.
-   */
-  void arm_fir_interpolate_q15(
-  const arm_fir_interpolate_instance_q15 * S,
-  const q15_t * pSrc,
-        q15_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Initialization function for the Q15 FIR interpolator.
-   * @param[in,out] S          points to an instance of the Q15 FIR interpolator structure.
-   * @param[in]     L          upsample factor.
-   * @param[in]     numTaps    number of filter coefficients in the filter.
-   * @param[in]     pCoeffs    points to the filter coefficient buffer.
-   * @param[in]     pState     points to the state buffer.
-   * @param[in]     blockSize  number of input samples to process per call.
-   * @return        The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if
-   * the filter length <code>numTaps</code> is not a multiple of the interpolation factor <code>L</code>.
-   */
-  arm_status arm_fir_interpolate_init_q15(
-        arm_fir_interpolate_instance_q15 * S,
-        uint8_t L,
-        uint16_t numTaps,
-  const q15_t * pCoeffs,
-        q15_t * pState,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Processing function for the Q31 FIR interpolator.
-   * @param[in]  S          points to an instance of the Q15 FIR interpolator structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[out] pDst       points to the block of output data.
-   * @param[in]  blockSize  number of input samples to process per call.
-   */
-  void arm_fir_interpolate_q31(
-  const arm_fir_interpolate_instance_q31 * S,
-  const q31_t * pSrc,
-        q31_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Initialization function for the Q31 FIR interpolator.
-   * @param[in,out] S          points to an instance of the Q31 FIR interpolator structure.
-   * @param[in]     L          upsample factor.
-   * @param[in]     numTaps    number of filter coefficients in the filter.
-   * @param[in]     pCoeffs    points to the filter coefficient buffer.
-   * @param[in]     pState     points to the state buffer.
-   * @param[in]     blockSize  number of input samples to process per call.
-   * @return        The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if
-   * the filter length <code>numTaps</code> is not a multiple of the interpolation factor <code>L</code>.
-   */
-  arm_status arm_fir_interpolate_init_q31(
-        arm_fir_interpolate_instance_q31 * S,
-        uint8_t L,
-        uint16_t numTaps,
-  const q31_t * pCoeffs,
-        q31_t * pState,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Processing function for the floating-point FIR interpolator.
-   * @param[in]  S          points to an instance of the floating-point FIR interpolator structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[out] pDst       points to the block of output data.
-   * @param[in]  blockSize  number of input samples to process per call.
-   */
-  void arm_fir_interpolate_f32(
-  const arm_fir_interpolate_instance_f32 * S,
-  const float32_t * pSrc,
-        float32_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Initialization function for the floating-point FIR interpolator.
-   * @param[in,out] S          points to an instance of the floating-point FIR interpolator structure.
-   * @param[in]     L          upsample factor.
-   * @param[in]     numTaps    number of filter coefficients in the filter.
-   * @param[in]     pCoeffs    points to the filter coefficient buffer.
-   * @param[in]     pState     points to the state buffer.
-   * @param[in]     blockSize  number of input samples to process per call.
-   * @return        The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if
-   * the filter length <code>numTaps</code> is not a multiple of the interpolation factor <code>L</code>.
-   */
-  arm_status arm_fir_interpolate_init_f32(
-        arm_fir_interpolate_instance_f32 * S,
-        uint8_t L,
-        uint16_t numTaps,
-  const float32_t * pCoeffs,
-        float32_t * pState,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Instance structure for the high precision Q31 Biquad cascade filter.
-   */
-  typedef struct
-  {
-          uint8_t numStages;       /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */
-          q63_t *pState;           /**< points to the array of state coefficients.  The array is of length 4*numStages. */
-    const q31_t *pCoeffs;          /**< points to the array of coefficients.  The array is of length 5*numStages. */
-          uint8_t postShift;       /**< additional shift, in bits, applied to each output sample. */
-  } arm_biquad_cas_df1_32x64_ins_q31;
-
-
-  /**
-   * @param[in]  S          points to an instance of the high precision Q31 Biquad cascade filter structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[out] pDst       points to the block of output data
-   * @param[in]  blockSize  number of samples to process.
-   */
-  void arm_biquad_cas_df1_32x64_q31(
-  const arm_biquad_cas_df1_32x64_ins_q31 * S,
-  const q31_t * pSrc,
-        q31_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @param[in,out] S          points to an instance of the high precision Q31 Biquad cascade filter structure.
-   * @param[in]     numStages  number of 2nd order stages in the filter.
-   * @param[in]     pCoeffs    points to the filter coefficients.
-   * @param[in]     pState     points to the state buffer.
-   * @param[in]     postShift  shift to be applied to the output. Varies according to the coefficients format
-   */
-  void arm_biquad_cas_df1_32x64_init_q31(
-        arm_biquad_cas_df1_32x64_ins_q31 * S,
-        uint8_t numStages,
-  const q31_t * pCoeffs,
-        q63_t * pState,
-        uint8_t postShift);
-
-
-  /**
-   * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter.
-   */
-  typedef struct
-  {
-          uint8_t numStages;         /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */
-          float32_t *pState;         /**< points to the array of state coefficients.  The array is of length 2*numStages. */
-    const float32_t *pCoeffs;        /**< points to the array of coefficients.  The array is of length 5*numStages. */
-  } arm_biquad_cascade_df2T_instance_f32;
-
-  /**
-   * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter.
-   */
-  typedef struct
-  {
-          uint8_t numStages;         /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */
-          float32_t *pState;         /**< points to the array of state coefficients.  The array is of length 4*numStages. */
-    const float32_t *pCoeffs;        /**< points to the array of coefficients.  The array is of length 5*numStages. */
-  } arm_biquad_cascade_stereo_df2T_instance_f32;
-
-  /**
-   * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter.
-   */
-  typedef struct
-  {
-          uint8_t numStages;         /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */
-          float64_t *pState;         /**< points to the array of state coefficients.  The array is of length 2*numStages. */
-    const float64_t *pCoeffs;        /**< points to the array of coefficients.  The array is of length 5*numStages. */
-  } arm_biquad_cascade_df2T_instance_f64;
-
-
-  /**
-   * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter.
-   * @param[in]  S          points to an instance of the filter data structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[out] pDst       points to the block of output data
-   * @param[in]  blockSize  number of samples to process.
-   */
-  void arm_biquad_cascade_df2T_f32(
-  const arm_biquad_cascade_df2T_instance_f32 * S,
-  const float32_t * pSrc,
-        float32_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. 2 channels
-   * @param[in]  S          points to an instance of the filter data structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[out] pDst       points to the block of output data
-   * @param[in]  blockSize  number of samples to process.
-   */
-  void arm_biquad_cascade_stereo_df2T_f32(
-  const arm_biquad_cascade_stereo_df2T_instance_f32 * S,
-  const float32_t * pSrc,
-        float32_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter.
-   * @param[in]  S          points to an instance of the filter data structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[out] pDst       points to the block of output data
-   * @param[in]  blockSize  number of samples to process.
-   */
-  void arm_biquad_cascade_df2T_f64(
-  const arm_biquad_cascade_df2T_instance_f64 * S,
-  const float64_t * pSrc,
-        float64_t * pDst,
-        uint32_t blockSize);
-
-
-#if defined(ARM_MATH_NEON) 
-void arm_biquad_cascade_df2T_compute_coefs_f32(
-  arm_biquad_cascade_df2T_instance_f32 * S,
-  uint8_t numStages,
-  float32_t * pCoeffs);
-#endif
-  /**
-   * @brief  Initialization function for the floating-point transposed direct form II Biquad cascade filter.
-   * @param[in,out] S          points to an instance of the filter data structure.
-   * @param[in]     numStages  number of 2nd order stages in the filter.
-   * @param[in]     pCoeffs    points to the filter coefficients.
-   * @param[in]     pState     points to the state buffer.
-   */
-  void arm_biquad_cascade_df2T_init_f32(
-        arm_biquad_cascade_df2T_instance_f32 * S,
-        uint8_t numStages,
-  const float32_t * pCoeffs,
-        float32_t * pState);
-
-
-  /**
-   * @brief  Initialization function for the floating-point transposed direct form II Biquad cascade filter.
-   * @param[in,out] S          points to an instance of the filter data structure.
-   * @param[in]     numStages  number of 2nd order stages in the filter.
-   * @param[in]     pCoeffs    points to the filter coefficients.
-   * @param[in]     pState     points to the state buffer.
-   */
-  void arm_biquad_cascade_stereo_df2T_init_f32(
-        arm_biquad_cascade_stereo_df2T_instance_f32 * S,
-        uint8_t numStages,
-  const float32_t * pCoeffs,
-        float32_t * pState);
-
-
-  /**
-   * @brief  Initialization function for the floating-point transposed direct form II Biquad cascade filter.
-   * @param[in,out] S          points to an instance of the filter data structure.
-   * @param[in]     numStages  number of 2nd order stages in the filter.
-   * @param[in]     pCoeffs    points to the filter coefficients.
-   * @param[in]     pState     points to the state buffer.
-   */
-  void arm_biquad_cascade_df2T_init_f64(
-        arm_biquad_cascade_df2T_instance_f64 * S,
-        uint8_t numStages,
-        const float64_t * pCoeffs,
-        float64_t * pState);
-
-
-  /**
-   * @brief Instance structure for the Q15 FIR lattice filter.
-   */
-  typedef struct
-  {
-          uint16_t numStages;                  /**< number of filter stages. */
-          q15_t *pState;                       /**< points to the state variable array. The array is of length numStages. */
-    const q15_t *pCoeffs;                      /**< points to the coefficient array. The array is of length numStages. */
-  } arm_fir_lattice_instance_q15;
-
-  /**
-   * @brief Instance structure for the Q31 FIR lattice filter.
-   */
-  typedef struct
-  {
-          uint16_t numStages;                  /**< number of filter stages. */
-          q31_t *pState;                       /**< points to the state variable array. The array is of length numStages. */
-    const q31_t *pCoeffs;                      /**< points to the coefficient array. The array is of length numStages. */
-  } arm_fir_lattice_instance_q31;
-
-  /**
-   * @brief Instance structure for the floating-point FIR lattice filter.
-   */
-  typedef struct
-  {
-          uint16_t numStages;                  /**< number of filter stages. */
-          float32_t *pState;                   /**< points to the state variable array. The array is of length numStages. */
-    const float32_t *pCoeffs;                  /**< points to the coefficient array. The array is of length numStages. */
-  } arm_fir_lattice_instance_f32;
-
-
-  /**
-   * @brief Initialization function for the Q15 FIR lattice filter.
-   * @param[in] S          points to an instance of the Q15 FIR lattice structure.
-   * @param[in] numStages  number of filter stages.
-   * @param[in] pCoeffs    points to the coefficient buffer.  The array is of length numStages.
-   * @param[in] pState     points to the state buffer.  The array is of length numStages.
-   */
-  void arm_fir_lattice_init_q15(
-        arm_fir_lattice_instance_q15 * S,
-        uint16_t numStages,
-  const q15_t * pCoeffs,
-        q15_t * pState);
-
-
-  /**
-   * @brief Processing function for the Q15 FIR lattice filter.
-   * @param[in]  S          points to an instance of the Q15 FIR lattice structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[out] pDst       points to the block of output data.
-   * @param[in]  blockSize  number of samples to process.
-   */
-  void arm_fir_lattice_q15(
-  const arm_fir_lattice_instance_q15 * S,
-  const q15_t * pSrc,
-        q15_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Initialization function for the Q31 FIR lattice filter.
-   * @param[in] S          points to an instance of the Q31 FIR lattice structure.
-   * @param[in] numStages  number of filter stages.
-   * @param[in] pCoeffs    points to the coefficient buffer.  The array is of length numStages.
-   * @param[in] pState     points to the state buffer.   The array is of length numStages.
-   */
-  void arm_fir_lattice_init_q31(
-        arm_fir_lattice_instance_q31 * S,
-        uint16_t numStages,
-  const q31_t * pCoeffs,
-        q31_t * pState);
-
-
-  /**
-   * @brief Processing function for the Q31 FIR lattice filter.
-   * @param[in]  S          points to an instance of the Q31 FIR lattice structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[out] pDst       points to the block of output data
-   * @param[in]  blockSize  number of samples to process.
-   */
-  void arm_fir_lattice_q31(
-  const arm_fir_lattice_instance_q31 * S,
-  const q31_t * pSrc,
-        q31_t * pDst,
-        uint32_t blockSize);
-
-
-/**
- * @brief Initialization function for the floating-point FIR lattice filter.
- * @param[in] S          points to an instance of the floating-point FIR lattice structure.
- * @param[in] numStages  number of filter stages.
- * @param[in] pCoeffs    points to the coefficient buffer.  The array is of length numStages.
- * @param[in] pState     points to the state buffer.  The array is of length numStages.
- */
-  void arm_fir_lattice_init_f32(
-        arm_fir_lattice_instance_f32 * S,
-        uint16_t numStages,
-  const float32_t * pCoeffs,
-        float32_t * pState);
-
-
-  /**
-   * @brief Processing function for the floating-point FIR lattice filter.
-   * @param[in]  S          points to an instance of the floating-point FIR lattice structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[out] pDst       points to the block of output data
-   * @param[in]  blockSize  number of samples to process.
-   */
-  void arm_fir_lattice_f32(
-  const arm_fir_lattice_instance_f32 * S,
-  const float32_t * pSrc,
-        float32_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Instance structure for the Q15 IIR lattice filter.
-   */
-  typedef struct
-  {
-          uint16_t numStages;                  /**< number of stages in the filter. */
-          q15_t *pState;                       /**< points to the state variable array. The array is of length numStages+blockSize. */
-          q15_t *pkCoeffs;                     /**< points to the reflection coefficient array. The array is of length numStages. */
-          q15_t *pvCoeffs;                     /**< points to the ladder coefficient array. The array is of length numStages+1. */
-  } arm_iir_lattice_instance_q15;
-
-  /**
-   * @brief Instance structure for the Q31 IIR lattice filter.
-   */
-  typedef struct
-  {
-          uint16_t numStages;                  /**< number of stages in the filter. */
-          q31_t *pState;                       /**< points to the state variable array. The array is of length numStages+blockSize. */
-          q31_t *pkCoeffs;                     /**< points to the reflection coefficient array. The array is of length numStages. */
-          q31_t *pvCoeffs;                     /**< points to the ladder coefficient array. The array is of length numStages+1. */
-  } arm_iir_lattice_instance_q31;
-
-  /**
-   * @brief Instance structure for the floating-point IIR lattice filter.
-   */
-  typedef struct
-  {
-          uint16_t numStages;                  /**< number of stages in the filter. */
-          float32_t *pState;                   /**< points to the state variable array. The array is of length numStages+blockSize. */
-          float32_t *pkCoeffs;                 /**< points to the reflection coefficient array. The array is of length numStages. */
-          float32_t *pvCoeffs;                 /**< points to the ladder coefficient array. The array is of length numStages+1. */
-  } arm_iir_lattice_instance_f32;
-
-
-  /**
-   * @brief Processing function for the floating-point IIR lattice filter.
-   * @param[in]  S          points to an instance of the floating-point IIR lattice structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[out] pDst       points to the block of output data.
-   * @param[in]  blockSize  number of samples to process.
-   */
-  void arm_iir_lattice_f32(
-  const arm_iir_lattice_instance_f32 * S,
-  const float32_t * pSrc,
-        float32_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Initialization function for the floating-point IIR lattice filter.
-   * @param[in] S          points to an instance of the floating-point IIR lattice structure.
-   * @param[in] numStages  number of stages in the filter.
-   * @param[in] pkCoeffs   points to the reflection coefficient buffer.  The array is of length numStages.
-   * @param[in] pvCoeffs   points to the ladder coefficient buffer.  The array is of length numStages+1.
-   * @param[in] pState     points to the state buffer.  The array is of length numStages+blockSize-1.
-   * @param[in] blockSize  number of samples to process.
-   */
-  void arm_iir_lattice_init_f32(
-        arm_iir_lattice_instance_f32 * S,
-        uint16_t numStages,
-        float32_t * pkCoeffs,
-        float32_t * pvCoeffs,
-        float32_t * pState,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Processing function for the Q31 IIR lattice filter.
-   * @param[in]  S          points to an instance of the Q31 IIR lattice structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[out] pDst       points to the block of output data.
-   * @param[in]  blockSize  number of samples to process.
-   */
-  void arm_iir_lattice_q31(
-  const arm_iir_lattice_instance_q31 * S,
-  const q31_t * pSrc,
-        q31_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Initialization function for the Q31 IIR lattice filter.
-   * @param[in] S          points to an instance of the Q31 IIR lattice structure.
-   * @param[in] numStages  number of stages in the filter.
-   * @param[in] pkCoeffs   points to the reflection coefficient buffer.  The array is of length numStages.
-   * @param[in] pvCoeffs   points to the ladder coefficient buffer.  The array is of length numStages+1.
-   * @param[in] pState     points to the state buffer.  The array is of length numStages+blockSize.
-   * @param[in] blockSize  number of samples to process.
-   */
-  void arm_iir_lattice_init_q31(
-        arm_iir_lattice_instance_q31 * S,
-        uint16_t numStages,
-        q31_t * pkCoeffs,
-        q31_t * pvCoeffs,
-        q31_t * pState,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Processing function for the Q15 IIR lattice filter.
-   * @param[in]  S          points to an instance of the Q15 IIR lattice structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[out] pDst       points to the block of output data.
-   * @param[in]  blockSize  number of samples to process.
-   */
-  void arm_iir_lattice_q15(
-  const arm_iir_lattice_instance_q15 * S,
-  const q15_t * pSrc,
-        q15_t * pDst,
-        uint32_t blockSize);
-
-
-/**
- * @brief Initialization function for the Q15 IIR lattice filter.
- * @param[in] S          points to an instance of the fixed-point Q15 IIR lattice structure.
- * @param[in] numStages  number of stages in the filter.
- * @param[in] pkCoeffs   points to reflection coefficient buffer.  The array is of length numStages.
- * @param[in] pvCoeffs   points to ladder coefficient buffer.  The array is of length numStages+1.
- * @param[in] pState     points to state buffer.  The array is of length numStages+blockSize.
- * @param[in] blockSize  number of samples to process per call.
- */
-  void arm_iir_lattice_init_q15(
-        arm_iir_lattice_instance_q15 * S,
-        uint16_t numStages,
-        q15_t * pkCoeffs,
-        q15_t * pvCoeffs,
-        q15_t * pState,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Instance structure for the floating-point LMS filter.
-   */
-  typedef struct
-  {
-          uint16_t numTaps;    /**< number of coefficients in the filter. */
-          float32_t *pState;   /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
-          float32_t *pCoeffs;  /**< points to the coefficient array. The array is of length numTaps. */
-          float32_t mu;        /**< step size that controls filter coefficient updates. */
-  } arm_lms_instance_f32;
-
-
-  /**
-   * @brief Processing function for floating-point LMS filter.
-   * @param[in]  S          points to an instance of the floating-point LMS filter structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[in]  pRef       points to the block of reference data.
-   * @param[out] pOut       points to the block of output data.
-   * @param[out] pErr       points to the block of error data.
-   * @param[in]  blockSize  number of samples to process.
-   */
-  void arm_lms_f32(
-  const arm_lms_instance_f32 * S,
-  const float32_t * pSrc,
-        float32_t * pRef,
-        float32_t * pOut,
-        float32_t * pErr,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Initialization function for floating-point LMS filter.
-   * @param[in] S          points to an instance of the floating-point LMS filter structure.
-   * @param[in] numTaps    number of filter coefficients.
-   * @param[in] pCoeffs    points to the coefficient buffer.
-   * @param[in] pState     points to state buffer.
-   * @param[in] mu         step size that controls filter coefficient updates.
-   * @param[in] blockSize  number of samples to process.
-   */
-  void arm_lms_init_f32(
-        arm_lms_instance_f32 * S,
-        uint16_t numTaps,
-        float32_t * pCoeffs,
-        float32_t * pState,
-        float32_t mu,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Instance structure for the Q15 LMS filter.
-   */
-  typedef struct
-  {
-          uint16_t numTaps;    /**< number of coefficients in the filter. */
-          q15_t *pState;       /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
-          q15_t *pCoeffs;      /**< points to the coefficient array. The array is of length numTaps. */
-          q15_t mu;            /**< step size that controls filter coefficient updates. */
-          uint32_t postShift;  /**< bit shift applied to coefficients. */
-  } arm_lms_instance_q15;
-
-
-  /**
-   * @brief Initialization function for the Q15 LMS filter.
-   * @param[in] S          points to an instance of the Q15 LMS filter structure.
-   * @param[in] numTaps    number of filter coefficients.
-   * @param[in] pCoeffs    points to the coefficient buffer.
-   * @param[in] pState     points to the state buffer.
-   * @param[in] mu         step size that controls filter coefficient updates.
-   * @param[in] blockSize  number of samples to process.
-   * @param[in] postShift  bit shift applied to coefficients.
-   */
-  void arm_lms_init_q15(
-        arm_lms_instance_q15 * S,
-        uint16_t numTaps,
-        q15_t * pCoeffs,
-        q15_t * pState,
-        q15_t mu,
-        uint32_t blockSize,
-        uint32_t postShift);
-
-
-  /**
-   * @brief Processing function for Q15 LMS filter.
-   * @param[in]  S          points to an instance of the Q15 LMS filter structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[in]  pRef       points to the block of reference data.
-   * @param[out] pOut       points to the block of output data.
-   * @param[out] pErr       points to the block of error data.
-   * @param[in]  blockSize  number of samples to process.
-   */
-  void arm_lms_q15(
-  const arm_lms_instance_q15 * S,
-  const q15_t * pSrc,
-        q15_t * pRef,
-        q15_t * pOut,
-        q15_t * pErr,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Instance structure for the Q31 LMS filter.
-   */
-  typedef struct
-  {
-          uint16_t numTaps;    /**< number of coefficients in the filter. */
-          q31_t *pState;       /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
-          q31_t *pCoeffs;      /**< points to the coefficient array. The array is of length numTaps. */
-          q31_t mu;            /**< step size that controls filter coefficient updates. */
-          uint32_t postShift;  /**< bit shift applied to coefficients. */
-  } arm_lms_instance_q31;
-
-
-  /**
-   * @brief Processing function for Q31 LMS filter.
-   * @param[in]  S          points to an instance of the Q15 LMS filter structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[in]  pRef       points to the block of reference data.
-   * @param[out] pOut       points to the block of output data.
-   * @param[out] pErr       points to the block of error data.
-   * @param[in]  blockSize  number of samples to process.
-   */
-  void arm_lms_q31(
-  const arm_lms_instance_q31 * S,
-  const q31_t * pSrc,
-        q31_t * pRef,
-        q31_t * pOut,
-        q31_t * pErr,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Initialization function for Q31 LMS filter.
-   * @param[in] S          points to an instance of the Q31 LMS filter structure.
-   * @param[in] numTaps    number of filter coefficients.
-   * @param[in] pCoeffs    points to coefficient buffer.
-   * @param[in] pState     points to state buffer.
-   * @param[in] mu         step size that controls filter coefficient updates.
-   * @param[in] blockSize  number of samples to process.
-   * @param[in] postShift  bit shift applied to coefficients.
-   */
-  void arm_lms_init_q31(
-        arm_lms_instance_q31 * S,
-        uint16_t numTaps,
-        q31_t * pCoeffs,
-        q31_t * pState,
-        q31_t mu,
-        uint32_t blockSize,
-        uint32_t postShift);
-
-
-  /**
-   * @brief Instance structure for the floating-point normalized LMS filter.
-   */
-  typedef struct
-  {
-          uint16_t numTaps;     /**< number of coefficients in the filter. */
-          float32_t *pState;    /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
-          float32_t *pCoeffs;   /**< points to the coefficient array. The array is of length numTaps. */
-          float32_t mu;         /**< step size that control filter coefficient updates. */
-          float32_t energy;     /**< saves previous frame energy. */
-          float32_t x0;         /**< saves previous input sample. */
-  } arm_lms_norm_instance_f32;
-
-
-  /**
-   * @brief Processing function for floating-point normalized LMS filter.
-   * @param[in]  S          points to an instance of the floating-point normalized LMS filter structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[in]  pRef       points to the block of reference data.
-   * @param[out] pOut       points to the block of output data.
-   * @param[out] pErr       points to the block of error data.
-   * @param[in]  blockSize  number of samples to process.
-   */
-  void arm_lms_norm_f32(
-        arm_lms_norm_instance_f32 * S,
-  const float32_t * pSrc,
-        float32_t * pRef,
-        float32_t * pOut,
-        float32_t * pErr,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Initialization function for floating-point normalized LMS filter.
-   * @param[in] S          points to an instance of the floating-point LMS filter structure.
-   * @param[in] numTaps    number of filter coefficients.
-   * @param[in] pCoeffs    points to coefficient buffer.
-   * @param[in] pState     points to state buffer.
-   * @param[in] mu         step size that controls filter coefficient updates.
-   * @param[in] blockSize  number of samples to process.
-   */
-  void arm_lms_norm_init_f32(
-        arm_lms_norm_instance_f32 * S,
-        uint16_t numTaps,
-        float32_t * pCoeffs,
-        float32_t * pState,
-        float32_t mu,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Instance structure for the Q31 normalized LMS filter.
-   */
-  typedef struct
-  {
-          uint16_t numTaps;     /**< number of coefficients in the filter. */
-          q31_t *pState;        /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
-          q31_t *pCoeffs;       /**< points to the coefficient array. The array is of length numTaps. */
-          q31_t mu;             /**< step size that controls filter coefficient updates. */
-          uint8_t postShift;    /**< bit shift applied to coefficients. */
-    const q31_t *recipTable;    /**< points to the reciprocal initial value table. */
-          q31_t energy;         /**< saves previous frame energy. */
-          q31_t x0;             /**< saves previous input sample. */
-  } arm_lms_norm_instance_q31;
-
-
-  /**
-   * @brief Processing function for Q31 normalized LMS filter.
-   * @param[in]  S          points to an instance of the Q31 normalized LMS filter structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[in]  pRef       points to the block of reference data.
-   * @param[out] pOut       points to the block of output data.
-   * @param[out] pErr       points to the block of error data.
-   * @param[in]  blockSize  number of samples to process.
-   */
-  void arm_lms_norm_q31(
-        arm_lms_norm_instance_q31 * S,
-  const q31_t * pSrc,
-        q31_t * pRef,
-        q31_t * pOut,
-        q31_t * pErr,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Initialization function for Q31 normalized LMS filter.
-   * @param[in] S          points to an instance of the Q31 normalized LMS filter structure.
-   * @param[in] numTaps    number of filter coefficients.
-   * @param[in] pCoeffs    points to coefficient buffer.
-   * @param[in] pState     points to state buffer.
-   * @param[in] mu         step size that controls filter coefficient updates.
-   * @param[in] blockSize  number of samples to process.
-   * @param[in] postShift  bit shift applied to coefficients.
-   */
-  void arm_lms_norm_init_q31(
-        arm_lms_norm_instance_q31 * S,
-        uint16_t numTaps,
-        q31_t * pCoeffs,
-        q31_t * pState,
-        q31_t mu,
-        uint32_t blockSize,
-        uint8_t postShift);
-
-
-  /**
-   * @brief Instance structure for the Q15 normalized LMS filter.
-   */
-  typedef struct
-  {
-          uint16_t numTaps;     /**< Number of coefficients in the filter. */
-          q15_t *pState;        /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
-          q15_t *pCoeffs;       /**< points to the coefficient array. The array is of length numTaps. */
-          q15_t mu;             /**< step size that controls filter coefficient updates. */
-          uint8_t postShift;    /**< bit shift applied to coefficients. */
-    const q15_t *recipTable;    /**< Points to the reciprocal initial value table. */
-          q15_t energy;         /**< saves previous frame energy. */
-          q15_t x0;             /**< saves previous input sample. */
-  } arm_lms_norm_instance_q15;
-
-
-  /**
-   * @brief Processing function for Q15 normalized LMS filter.
-   * @param[in]  S          points to an instance of the Q15 normalized LMS filter structure.
-   * @param[in]  pSrc       points to the block of input data.
-   * @param[in]  pRef       points to the block of reference data.
-   * @param[out] pOut       points to the block of output data.
-   * @param[out] pErr       points to the block of error data.
-   * @param[in]  blockSize  number of samples to process.
-   */
-  void arm_lms_norm_q15(
-        arm_lms_norm_instance_q15 * S,
-  const q15_t * pSrc,
-        q15_t * pRef,
-        q15_t * pOut,
-        q15_t * pErr,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Initialization function for Q15 normalized LMS filter.
-   * @param[in] S          points to an instance of the Q15 normalized LMS filter structure.
-   * @param[in] numTaps    number of filter coefficients.
-   * @param[in] pCoeffs    points to coefficient buffer.
-   * @param[in] pState     points to state buffer.
-   * @param[in] mu         step size that controls filter coefficient updates.
-   * @param[in] blockSize  number of samples to process.
-   * @param[in] postShift  bit shift applied to coefficients.
-   */
-  void arm_lms_norm_init_q15(
-        arm_lms_norm_instance_q15 * S,
-        uint16_t numTaps,
-        q15_t * pCoeffs,
-        q15_t * pState,
-        q15_t mu,
-        uint32_t blockSize,
-        uint8_t postShift);
-
-
-  /**
-   * @brief Correlation of floating-point sequences.
-   * @param[in]  pSrcA    points to the first input sequence.
-   * @param[in]  srcALen  length of the first input sequence.
-   * @param[in]  pSrcB    points to the second input sequence.
-   * @param[in]  srcBLen  length of the second input sequence.
-   * @param[out] pDst     points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.
-   */
-  void arm_correlate_f32(
-  const float32_t * pSrcA,
-        uint32_t srcALen,
-  const float32_t * pSrcB,
-        uint32_t srcBLen,
-        float32_t * pDst);
-
-
-/**
- @brief Correlation of Q15 sequences
- @param[in]  pSrcA     points to the first input sequence
- @param[in]  srcALen   length of the first input sequence
- @param[in]  pSrcB     points to the second input sequence
- @param[in]  srcBLen   length of the second input sequence
- @param[out] pDst      points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.
- @param[in]  pScratch  points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
-*/
-void arm_correlate_opt_q15(
-  const q15_t * pSrcA,
-        uint32_t srcALen,
-  const q15_t * pSrcB,
-        uint32_t srcBLen,
-        q15_t * pDst,
-        q15_t * pScratch);
-
-
-/**
-  @brief Correlation of Q15 sequences.
-  @param[in]  pSrcA    points to the first input sequence
-  @param[in]  srcALen  length of the first input sequence
-  @param[in]  pSrcB    points to the second input sequence
-  @param[in]  srcBLen  length of the second input sequence
-  @param[out] pDst     points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.
- */
-  void arm_correlate_q15(
-  const q15_t * pSrcA,
-        uint32_t srcALen,
-  const q15_t * pSrcB,
-        uint32_t srcBLen,
-        q15_t * pDst);
-
-
-/**
-  @brief         Correlation of Q15 sequences (fast version).
-  @param[in]     pSrcA      points to the first input sequence
-  @param[in]     srcALen    length of the first input sequence
-  @param[in]     pSrcB      points to the second input sequence
-  @param[in]     srcBLen    length of the second input sequence
-  @param[out]    pDst       points to the location where the output result is written.  Length 2 * max(srcALen, srcBLen) - 1.
-  @return        none
- */
-void arm_correlate_fast_q15(
-  const q15_t * pSrcA,
-        uint32_t srcALen,
-  const q15_t * pSrcB,
-        uint32_t srcBLen,
-        q15_t * pDst);
-
-
-/**
-  @brief Correlation of Q15 sequences (fast version).
-  @param[in]  pSrcA     points to the first input sequence.
-  @param[in]  srcALen   length of the first input sequence.
-  @param[in]  pSrcB     points to the second input sequence.
-  @param[in]  srcBLen   length of the second input sequence.
-  @param[out] pDst      points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.
-  @param[in]  pScratch  points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
- */
-void arm_correlate_fast_opt_q15(
-  const q15_t * pSrcA,
-        uint32_t srcALen,
-  const q15_t * pSrcB,
-        uint32_t srcBLen,
-        q15_t * pDst,
-        q15_t * pScratch);
-
-
-  /**
-   * @brief Correlation of Q31 sequences.
-   * @param[in]  pSrcA    points to the first input sequence.
-   * @param[in]  srcALen  length of the first input sequence.
-   * @param[in]  pSrcB    points to the second input sequence.
-   * @param[in]  srcBLen  length of the second input sequence.
-   * @param[out] pDst     points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.
-   */
-  void arm_correlate_q31(
-  const q31_t * pSrcA,
-        uint32_t srcALen,
-  const q31_t * pSrcB,
-        uint32_t srcBLen,
-        q31_t * pDst);
-
-
-/**
-  @brief Correlation of Q31 sequences (fast version).
-  @param[in]  pSrcA    points to the first input sequence
-  @param[in]  srcALen  length of the first input sequence
-  @param[in]  pSrcB    points to the second input sequence
-  @param[in]  srcBLen  length of the second input sequence
-  @param[out] pDst     points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.
- */
-void arm_correlate_fast_q31(
-  const q31_t * pSrcA,
-        uint32_t srcALen,
-  const q31_t * pSrcB,
-        uint32_t srcBLen,
-        q31_t * pDst);
-
-
- /**
-   * @brief Correlation of Q7 sequences.
-   * @param[in]  pSrcA      points to the first input sequence.
-   * @param[in]  srcALen    length of the first input sequence.
-   * @param[in]  pSrcB      points to the second input sequence.
-   * @param[in]  srcBLen    length of the second input sequence.
-   * @param[out] pDst       points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.
-   * @param[in]  pScratch1  points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
-   * @param[in]  pScratch2  points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen).
-   */
-  void arm_correlate_opt_q7(
-  const q7_t * pSrcA,
-        uint32_t srcALen,
-  const q7_t * pSrcB,
-        uint32_t srcBLen,
-        q7_t * pDst,
-        q15_t * pScratch1,
-        q15_t * pScratch2);
-
-
-  /**
-   * @brief Correlation of Q7 sequences.
-   * @param[in]  pSrcA    points to the first input sequence.
-   * @param[in]  srcALen  length of the first input sequence.
-   * @param[in]  pSrcB    points to the second input sequence.
-   * @param[in]  srcBLen  length of the second input sequence.
-   * @param[out] pDst     points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.
-   */
-  void arm_correlate_q7(
-  const q7_t * pSrcA,
-        uint32_t srcALen,
-  const q7_t * pSrcB,
-        uint32_t srcBLen,
-        q7_t * pDst);
-
-
-  /**
-   * @brief Instance structure for the floating-point sparse FIR filter.
-   */
-  typedef struct
-  {
-          uint16_t numTaps;             /**< number of coefficients in the filter. */
-          uint16_t stateIndex;          /**< state buffer index.  Points to the oldest sample in the state buffer. */
-          float32_t *pState;            /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */
-    const float32_t *pCoeffs;           /**< points to the coefficient array. The array is of length numTaps.*/
-          uint16_t maxDelay;            /**< maximum offset specified by the pTapDelay array. */
-          int32_t *pTapDelay;           /**< points to the array of delay values.  The array is of length numTaps. */
-  } arm_fir_sparse_instance_f32;
-
-  /**
-   * @brief Instance structure for the Q31 sparse FIR filter.
-   */
-  typedef struct
-  {
-          uint16_t numTaps;             /**< number of coefficients in the filter. */
-          uint16_t stateIndex;          /**< state buffer index.  Points to the oldest sample in the state buffer. */
-          q31_t *pState;                /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */
-    const q31_t *pCoeffs;               /**< points to the coefficient array. The array is of length numTaps.*/
-          uint16_t maxDelay;            /**< maximum offset specified by the pTapDelay array. */
-          int32_t *pTapDelay;           /**< points to the array of delay values.  The array is of length numTaps. */
-  } arm_fir_sparse_instance_q31;
-
-  /**
-   * @brief Instance structure for the Q15 sparse FIR filter.
-   */
-  typedef struct
-  {
-          uint16_t numTaps;             /**< number of coefficients in the filter. */
-          uint16_t stateIndex;          /**< state buffer index.  Points to the oldest sample in the state buffer. */
-          q15_t *pState;                /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */
-    const q15_t *pCoeffs;               /**< points to the coefficient array. The array is of length numTaps.*/
-          uint16_t maxDelay;            /**< maximum offset specified by the pTapDelay array. */
-          int32_t *pTapDelay;           /**< points to the array of delay values.  The array is of length numTaps. */
-  } arm_fir_sparse_instance_q15;
-
-  /**
-   * @brief Instance structure for the Q7 sparse FIR filter.
-   */
-  typedef struct
-  {
-          uint16_t numTaps;             /**< number of coefficients in the filter. */
-          uint16_t stateIndex;          /**< state buffer index.  Points to the oldest sample in the state buffer. */
-          q7_t *pState;                 /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */
-    const q7_t *pCoeffs;                /**< points to the coefficient array. The array is of length numTaps.*/
-          uint16_t maxDelay;            /**< maximum offset specified by the pTapDelay array. */
-          int32_t *pTapDelay;           /**< points to the array of delay values.  The array is of length numTaps. */
-  } arm_fir_sparse_instance_q7;
-
-
-  /**
-   * @brief Processing function for the floating-point sparse FIR filter.
-   * @param[in]  S           points to an instance of the floating-point sparse FIR structure.
-   * @param[in]  pSrc        points to the block of input data.
-   * @param[out] pDst        points to the block of output data
-   * @param[in]  pScratchIn  points to a temporary buffer of size blockSize.
-   * @param[in]  blockSize   number of input samples to process per call.
-   */
-  void arm_fir_sparse_f32(
-        arm_fir_sparse_instance_f32 * S,
-  const float32_t * pSrc,
-        float32_t * pDst,
-        float32_t * pScratchIn,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Initialization function for the floating-point sparse FIR filter.
-   * @param[in,out] S          points to an instance of the floating-point sparse FIR structure.
-   * @param[in]     numTaps    number of nonzero coefficients in the filter.
-   * @param[in]     pCoeffs    points to the array of filter coefficients.
-   * @param[in]     pState     points to the state buffer.
-   * @param[in]     pTapDelay  points to the array of offset times.
-   * @param[in]     maxDelay   maximum offset time supported.
-   * @param[in]     blockSize  number of samples that will be processed per block.
-   */
-  void arm_fir_sparse_init_f32(
-        arm_fir_sparse_instance_f32 * S,
-        uint16_t numTaps,
-  const float32_t * pCoeffs,
-        float32_t * pState,
-        int32_t * pTapDelay,
-        uint16_t maxDelay,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Processing function for the Q31 sparse FIR filter.
-   * @param[in]  S           points to an instance of the Q31 sparse FIR structure.
-   * @param[in]  pSrc        points to the block of input data.
-   * @param[out] pDst        points to the block of output data
-   * @param[in]  pScratchIn  points to a temporary buffer of size blockSize.
-   * @param[in]  blockSize   number of input samples to process per call.
-   */
-  void arm_fir_sparse_q31(
-        arm_fir_sparse_instance_q31 * S,
-  const q31_t * pSrc,
-        q31_t * pDst,
-        q31_t * pScratchIn,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Initialization function for the Q31 sparse FIR filter.
-   * @param[in,out] S          points to an instance of the Q31 sparse FIR structure.
-   * @param[in]     numTaps    number of nonzero coefficients in the filter.
-   * @param[in]     pCoeffs    points to the array of filter coefficients.
-   * @param[in]     pState     points to the state buffer.
-   * @param[in]     pTapDelay  points to the array of offset times.
-   * @param[in]     maxDelay   maximum offset time supported.
-   * @param[in]     blockSize  number of samples that will be processed per block.
-   */
-  void arm_fir_sparse_init_q31(
-        arm_fir_sparse_instance_q31 * S,
-        uint16_t numTaps,
-  const q31_t * pCoeffs,
-        q31_t * pState,
-        int32_t * pTapDelay,
-        uint16_t maxDelay,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Processing function for the Q15 sparse FIR filter.
-   * @param[in]  S            points to an instance of the Q15 sparse FIR structure.
-   * @param[in]  pSrc         points to the block of input data.
-   * @param[out] pDst         points to the block of output data
-   * @param[in]  pScratchIn   points to a temporary buffer of size blockSize.
-   * @param[in]  pScratchOut  points to a temporary buffer of size blockSize.
-   * @param[in]  blockSize    number of input samples to process per call.
-   */
-  void arm_fir_sparse_q15(
-        arm_fir_sparse_instance_q15 * S,
-  const q15_t * pSrc,
-        q15_t * pDst,
-        q15_t * pScratchIn,
-        q31_t * pScratchOut,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Initialization function for the Q15 sparse FIR filter.
-   * @param[in,out] S          points to an instance of the Q15 sparse FIR structure.
-   * @param[in]     numTaps    number of nonzero coefficients in the filter.
-   * @param[in]     pCoeffs    points to the array of filter coefficients.
-   * @param[in]     pState     points to the state buffer.
-   * @param[in]     pTapDelay  points to the array of offset times.
-   * @param[in]     maxDelay   maximum offset time supported.
-   * @param[in]     blockSize  number of samples that will be processed per block.
-   */
-  void arm_fir_sparse_init_q15(
-        arm_fir_sparse_instance_q15 * S,
-        uint16_t numTaps,
-  const q15_t * pCoeffs,
-        q15_t * pState,
-        int32_t * pTapDelay,
-        uint16_t maxDelay,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Processing function for the Q7 sparse FIR filter.
-   * @param[in]  S            points to an instance of the Q7 sparse FIR structure.
-   * @param[in]  pSrc         points to the block of input data.
-   * @param[out] pDst         points to the block of output data
-   * @param[in]  pScratchIn   points to a temporary buffer of size blockSize.
-   * @param[in]  pScratchOut  points to a temporary buffer of size blockSize.
-   * @param[in]  blockSize    number of input samples to process per call.
-   */
-  void arm_fir_sparse_q7(
-        arm_fir_sparse_instance_q7 * S,
-  const q7_t * pSrc,
-        q7_t * pDst,
-        q7_t * pScratchIn,
-        q31_t * pScratchOut,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Initialization function for the Q7 sparse FIR filter.
-   * @param[in,out] S          points to an instance of the Q7 sparse FIR structure.
-   * @param[in]     numTaps    number of nonzero coefficients in the filter.
-   * @param[in]     pCoeffs    points to the array of filter coefficients.
-   * @param[in]     pState     points to the state buffer.
-   * @param[in]     pTapDelay  points to the array of offset times.
-   * @param[in]     maxDelay   maximum offset time supported.
-   * @param[in]     blockSize  number of samples that will be processed per block.
-   */
-  void arm_fir_sparse_init_q7(
-        arm_fir_sparse_instance_q7 * S,
-        uint16_t numTaps,
-  const q7_t * pCoeffs,
-        q7_t * pState,
-        int32_t * pTapDelay,
-        uint16_t maxDelay,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Floating-point sin_cos function.
-   * @param[in]  theta   input value in degrees
-   * @param[out] pSinVal  points to the processed sine output.
-   * @param[out] pCosVal  points to the processed cos output.
-   */
-  void arm_sin_cos_f32(
-        float32_t theta,
-        float32_t * pSinVal,
-        float32_t * pCosVal);
-
-
-  /**
-   * @brief  Q31 sin_cos function.
-   * @param[in]  theta    scaled input value in degrees
-   * @param[out] pSinVal  points to the processed sine output.
-   * @param[out] pCosVal  points to the processed cosine output.
-   */
-  void arm_sin_cos_q31(
-        q31_t theta,
-        q31_t * pSinVal,
-        q31_t * pCosVal);
-
-
-  /**
-   * @brief  Floating-point complex conjugate.
-   * @param[in]  pSrc        points to the input vector
-   * @param[out] pDst        points to the output vector
-   * @param[in]  numSamples  number of complex samples in each vector
-   */
-  void arm_cmplx_conj_f32(
-  const float32_t * pSrc,
-        float32_t * pDst,
-        uint32_t numSamples);
-
-  /**
-   * @brief  Q31 complex conjugate.
-   * @param[in]  pSrc        points to the input vector
-   * @param[out] pDst        points to the output vector
-   * @param[in]  numSamples  number of complex samples in each vector
-   */
-  void arm_cmplx_conj_q31(
-  const q31_t * pSrc,
-        q31_t * pDst,
-        uint32_t numSamples);
-
-
-  /**
-   * @brief  Q15 complex conjugate.
-   * @param[in]  pSrc        points to the input vector
-   * @param[out] pDst        points to the output vector
-   * @param[in]  numSamples  number of complex samples in each vector
-   */
-  void arm_cmplx_conj_q15(
-  const q15_t * pSrc,
-        q15_t * pDst,
-        uint32_t numSamples);
-
-
-  /**
-   * @brief  Floating-point complex magnitude squared
-   * @param[in]  pSrc        points to the complex input vector
-   * @param[out] pDst        points to the real output vector
-   * @param[in]  numSamples  number of complex samples in the input vector
-   */
-  void arm_cmplx_mag_squared_f32(
-  const float32_t * pSrc,
-        float32_t * pDst,
-        uint32_t numSamples);
-
-
-  /**
-   * @brief  Q31 complex magnitude squared
-   * @param[in]  pSrc        points to the complex input vector
-   * @param[out] pDst        points to the real output vector
-   * @param[in]  numSamples  number of complex samples in the input vector
-   */
-  void arm_cmplx_mag_squared_q31(
-  const q31_t * pSrc,
-        q31_t * pDst,
-        uint32_t numSamples);
-
-
-  /**
-   * @brief  Q15 complex magnitude squared
-   * @param[in]  pSrc        points to the complex input vector
-   * @param[out] pDst        points to the real output vector
-   * @param[in]  numSamples  number of complex samples in the input vector
-   */
-  void arm_cmplx_mag_squared_q15(
-  const q15_t * pSrc,
-        q15_t * pDst,
-        uint32_t numSamples);
-
-
- /**
-   * @ingroup groupController
-   */
-
-  /**
-   * @defgroup PID PID Motor Control
-   *
-   * A Proportional Integral Derivative (PID) controller is a generic feedback control
-   * loop mechanism widely used in industrial control systems.
-   * A PID controller is the most commonly used type of feedback controller.
-   *
-   * This set of functions implements (PID) controllers
-   * for Q15, Q31, and floating-point data types.  The functions operate on a single sample
-   * of data and each call to the function returns a single processed value.
-   * <code>S</code> points to an instance of the PID control data structure.  <code>in</code>
-   * is the input sample value. The functions return the output value.
-   *
-   * \par Algorithm:
-   * <pre>
-   *    y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2]
-   *    A0 = Kp + Ki + Kd
-   *    A1 = (-Kp ) - (2 * Kd )
-   *    A2 = Kd
-   * </pre>
-   *
-   * \par
-   * where \c Kp is proportional constant, \c Ki is Integral constant and \c Kd is Derivative constant
-   *
-   * \par
-   * \image html PID.gif "Proportional Integral Derivative Controller"
-   *
-   * \par
-   * The PID controller calculates an "error" value as the difference between
-   * the measured output and the reference input.
-   * The controller attempts to minimize the error by adjusting the process control inputs.
-   * The proportional value determines the reaction to the current error,
-   * the integral value determines the reaction based on the sum of recent errors,
-   * and the derivative value determines the reaction based on the rate at which the error has been changing.
-   *
-   * \par Instance Structure
-   * The Gains A0, A1, A2 and state variables for a PID controller are stored together in an instance data structure.
-   * A separate instance structure must be defined for each PID Controller.
-   * There are separate instance structure declarations for each of the 3 supported data types.
-   *
-   * \par Reset Functions
-   * There is also an associated reset function for each data type which clears the state array.
-   *
-   * \par Initialization Functions
-   * There is also an associated initialization function for each data type.
-   * The initialization function performs the following operations:
-   * - Initializes the Gains A0, A1, A2 from Kp,Ki, Kd gains.
-   * - Zeros out the values in the state buffer.
-   *
-   * \par
-   * Instance structure cannot be placed into a const data section and it is recommended to use the initialization function.
-   *
-   * \par Fixed-Point Behavior
-   * Care must be taken when using the fixed-point versions of the PID Controller functions.
-   * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered.
-   * Refer to the function specific documentation below for usage guidelines.
-   */
-
-  /**
-   * @addtogroup PID
-   * @{
-   */
-
-  /**
-   * @brief         Process function for the floating-point PID Control.
-   * @param[in,out] S   is an instance of the floating-point PID Control structure
-   * @param[in]     in  input sample to process
-   * @return        processed output sample.
-   */
-  __STATIC_FORCEINLINE float32_t arm_pid_f32(
-  arm_pid_instance_f32 * S,
-  float32_t in)
-  {
-    float32_t out;
-
-    /* y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2]  */
-    out = (S->A0 * in) +
-      (S->A1 * S->state[0]) + (S->A2 * S->state[1]) + (S->state[2]);
-
-    /* Update state */
-    S->state[1] = S->state[0];
-    S->state[0] = in;
-    S->state[2] = out;
-
-    /* return to application */
-    return (out);
-
-  }
-
-/**
-  @brief         Process function for the Q31 PID Control.
-  @param[in,out] S  points to an instance of the Q31 PID Control structure
-  @param[in]     in  input sample to process
-  @return        processed output sample.
-
-  \par Scaling and Overflow Behavior
-         The function is implemented using an internal 64-bit accumulator.
-         The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit.
-         Thus, if the accumulator result overflows it wraps around rather than clip.
-         In order to avoid overflows completely the input signal must be scaled down by 2 bits as there are four additions.
-         After all multiply-accumulates are performed, the 2.62 accumulator is truncated to 1.32 format and then saturated to 1.31 format.
- */
-__STATIC_FORCEINLINE q31_t arm_pid_q31(
-  arm_pid_instance_q31 * S,
-  q31_t in)
-  {
-    q63_t acc;
-    q31_t out;
-
-    /* acc = A0 * x[n]  */
-    acc = (q63_t) S->A0 * in;
-
-    /* acc += A1 * x[n-1] */
-    acc += (q63_t) S->A1 * S->state[0];
-
-    /* acc += A2 * x[n-2]  */
-    acc += (q63_t) S->A2 * S->state[1];
-
-    /* convert output to 1.31 format to add y[n-1] */
-    out = (q31_t) (acc >> 31U);
-
-    /* out += y[n-1] */
-    out += S->state[2];
-
-    /* Update state */
-    S->state[1] = S->state[0];
-    S->state[0] = in;
-    S->state[2] = out;
-
-    /* return to application */
-    return (out);
-  }
-
-
-/**
-  @brief         Process function for the Q15 PID Control.
-  @param[in,out] S   points to an instance of the Q15 PID Control structure
-  @param[in]     in  input sample to process
-  @return        processed output sample.
-
-  \par Scaling and Overflow Behavior
-         The function is implemented using a 64-bit internal accumulator.
-         Both Gains and state variables are represented in 1.15 format and multiplications yield a 2.30 result.
-         The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format.
-         There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved.
-         After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits.
-         Lastly, the accumulator is saturated to yield a result in 1.15 format.
- */
-__STATIC_FORCEINLINE q15_t arm_pid_q15(
-  arm_pid_instance_q15 * S,
-  q15_t in)
-  {
-    q63_t acc;
-    q15_t out;
-
-#if defined (ARM_MATH_DSP)
-    /* Implementation of PID controller */
-
-    /* acc = A0 * x[n]  */
-    acc = (q31_t) __SMUAD((uint32_t)S->A0, (uint32_t)in);
-
-    /* acc += A1 * x[n-1] + A2 * x[n-2]  */
-    acc = (q63_t)__SMLALD((uint32_t)S->A1, (uint32_t)read_q15x2 (S->state), (uint64_t)acc);
-#else
-    /* acc = A0 * x[n]  */
-    acc = ((q31_t) S->A0) * in;
-
-    /* acc += A1 * x[n-1] + A2 * x[n-2]  */
-    acc += (q31_t) S->A1 * S->state[0];
-    acc += (q31_t) S->A2 * S->state[1];
-#endif
-
-    /* acc += y[n-1] */
-    acc += (q31_t) S->state[2] << 15;
-
-    /* saturate the output */
-    out = (q15_t) (__SSAT((q31_t)(acc >> 15), 16));
-
-    /* Update state */
-    S->state[1] = S->state[0];
-    S->state[0] = in;
-    S->state[2] = out;
-
-    /* return to application */
-    return (out);
-  }
-
-  /**
-   * @} end of PID group
-   */
-
-
-  /**
-   * @brief Floating-point matrix inverse.
-   * @param[in]  src   points to the instance of the input floating-point matrix structure.
-   * @param[out] dst   points to the instance of the output floating-point matrix structure.
-   * @return The function returns ARM_MATH_SIZE_MISMATCH, if the dimensions do not match.
-   * If the input matrix is singular (does not have an inverse), then the algorithm terminates and returns error status ARM_MATH_SINGULAR.
-   */
-  arm_status arm_mat_inverse_f32(
-  const arm_matrix_instance_f32 * src,
-  arm_matrix_instance_f32 * dst);
-
-
-  /**
-   * @brief Floating-point matrix inverse.
-   * @param[in]  src   points to the instance of the input floating-point matrix structure.
-   * @param[out] dst   points to the instance of the output floating-point matrix structure.
-   * @return The function returns ARM_MATH_SIZE_MISMATCH, if the dimensions do not match.
-   * If the input matrix is singular (does not have an inverse), then the algorithm terminates and returns error status ARM_MATH_SINGULAR.
-   */
-  arm_status arm_mat_inverse_f64(
-  const arm_matrix_instance_f64 * src,
-  arm_matrix_instance_f64 * dst);
-
-
-
-  /**
-   * @ingroup groupController
-   */
-
-  /**
-   * @defgroup clarke Vector Clarke Transform
-   * Forward Clarke transform converts the instantaneous stator phases into a two-coordinate time invariant vector.
-   * Generally the Clarke transform uses three-phase currents <code>Ia, Ib and Ic</code> to calculate currents
-   * in the two-phase orthogonal stator axis <code>Ialpha</code> and <code>Ibeta</code>.
-   * When <code>Ialpha</code> is superposed with <code>Ia</code> as shown in the figure below
-   * \image html clarke.gif Stator current space vector and its components in (a,b).
-   * and <code>Ia + Ib + Ic = 0</code>, in this condition <code>Ialpha</code> and <code>Ibeta</code>
-   * can be calculated using only <code>Ia</code> and <code>Ib</code>.
-   *
-   * The function operates on a single sample of data and each call to the function returns the processed output.
-   * The library provides separate functions for Q31 and floating-point data types.
-   * \par Algorithm
-   * \image html clarkeFormula.gif
-   * where <code>Ia</code> and <code>Ib</code> are the instantaneous stator phases and
-   * <code>pIalpha</code> and <code>pIbeta</code> are the two coordinates of time invariant vector.
-   * \par Fixed-Point Behavior
-   * Care must be taken when using the Q31 version of the Clarke transform.
-   * In particular, the overflow and saturation behavior of the accumulator used must be considered.
-   * Refer to the function specific documentation below for usage guidelines.
-   */
-
-  /**
-   * @addtogroup clarke
-   * @{
-   */
-
-  /**
-   *
-   * @brief  Floating-point Clarke transform
-   * @param[in]  Ia       input three-phase coordinate <code>a</code>
-   * @param[in]  Ib       input three-phase coordinate <code>b</code>
-   * @param[out] pIalpha  points to output two-phase orthogonal vector axis alpha
-   * @param[out] pIbeta   points to output two-phase orthogonal vector axis beta
-   * @return        none
-   */
-  __STATIC_FORCEINLINE void arm_clarke_f32(
-  float32_t Ia,
-  float32_t Ib,
-  float32_t * pIalpha,
-  float32_t * pIbeta)
-  {
-    /* Calculate pIalpha using the equation, pIalpha = Ia */
-    *pIalpha = Ia;
-
-    /* Calculate pIbeta using the equation, pIbeta = (1/sqrt(3)) * Ia + (2/sqrt(3)) * Ib */
-    *pIbeta = (0.57735026919f * Ia + 1.15470053838f * Ib);
-  }
-
-
-/**
-  @brief  Clarke transform for Q31 version
-  @param[in]  Ia       input three-phase coordinate <code>a</code>
-  @param[in]  Ib       input three-phase coordinate <code>b</code>
-  @param[out] pIalpha  points to output two-phase orthogonal vector axis alpha
-  @param[out] pIbeta   points to output two-phase orthogonal vector axis beta
-  @return     none
-
-  \par Scaling and Overflow Behavior
-         The function is implemented using an internal 32-bit accumulator.
-         The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format.
-         There is saturation on the addition, hence there is no risk of overflow.
- */
-__STATIC_FORCEINLINE void arm_clarke_q31(
-  q31_t Ia,
-  q31_t Ib,
-  q31_t * pIalpha,
-  q31_t * pIbeta)
-  {
-    q31_t product1, product2;                    /* Temporary variables used to store intermediate results */
-
-    /* Calculating pIalpha from Ia by equation pIalpha = Ia */
-    *pIalpha = Ia;
-
-    /* Intermediate product is calculated by (1/(sqrt(3)) * Ia) */
-    product1 = (q31_t) (((q63_t) Ia * 0x24F34E8B) >> 30);
-
-    /* Intermediate product is calculated by (2/sqrt(3) * Ib) */
-    product2 = (q31_t) (((q63_t) Ib * 0x49E69D16) >> 30);
-
-    /* pIbeta is calculated by adding the intermediate products */
-    *pIbeta = __QADD(product1, product2);
-  }
-
-  /**
-   * @} end of clarke group
-   */
-
-
-  /**
-   * @ingroup groupController
-   */
-
-  /**
-   * @defgroup inv_clarke Vector Inverse Clarke Transform
-   * Inverse Clarke transform converts the two-coordinate time invariant vector into instantaneous stator phases.
-   *
-   * The function operates on a single sample of data and each call to the function returns the processed output.
-   * The library provides separate functions for Q31 and floating-point data types.
-   * \par Algorithm
-   * \image html clarkeInvFormula.gif
-   * where <code>pIa</code> and <code>pIb</code> are the instantaneous stator phases and
-   * <code>Ialpha</code> and <code>Ibeta</code> are the two coordinates of time invariant vector.
-   * \par Fixed-Point Behavior
-   * Care must be taken when using the Q31 version of the Clarke transform.
-   * In particular, the overflow and saturation behavior of the accumulator used must be considered.
-   * Refer to the function specific documentation below for usage guidelines.
-   */
-
-  /**
-   * @addtogroup inv_clarke
-   * @{
-   */
-
-   /**
-   * @brief  Floating-point Inverse Clarke transform
-   * @param[in]  Ialpha  input two-phase orthogonal vector axis alpha
-   * @param[in]  Ibeta   input two-phase orthogonal vector axis beta
-   * @param[out] pIa     points to output three-phase coordinate <code>a</code>
-   * @param[out] pIb     points to output three-phase coordinate <code>b</code>
-   * @return     none
-   */
-  __STATIC_FORCEINLINE void arm_inv_clarke_f32(
-  float32_t Ialpha,
-  float32_t Ibeta,
-  float32_t * pIa,
-  float32_t * pIb)
-  {
-    /* Calculating pIa from Ialpha by equation pIa = Ialpha */
-    *pIa = Ialpha;
-
-    /* Calculating pIb from Ialpha and Ibeta by equation pIb = -(1/2) * Ialpha + (sqrt(3)/2) * Ibeta */
-    *pIb = -0.5f * Ialpha + 0.8660254039f * Ibeta;
-  }
-
-
-/**
-  @brief  Inverse Clarke transform for Q31 version
-  @param[in]  Ialpha  input two-phase orthogonal vector axis alpha
-  @param[in]  Ibeta   input two-phase orthogonal vector axis beta
-  @param[out] pIa     points to output three-phase coordinate <code>a</code>
-  @param[out] pIb     points to output three-phase coordinate <code>b</code>
-  @return     none
-
-  \par Scaling and Overflow Behavior
-         The function is implemented using an internal 32-bit accumulator.
-         The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format.
-         There is saturation on the subtraction, hence there is no risk of overflow.
- */
-__STATIC_FORCEINLINE void arm_inv_clarke_q31(
-  q31_t Ialpha,
-  q31_t Ibeta,
-  q31_t * pIa,
-  q31_t * pIb)
-  {
-    q31_t product1, product2;                    /* Temporary variables used to store intermediate results */
-
-    /* Calculating pIa from Ialpha by equation pIa = Ialpha */
-    *pIa = Ialpha;
-
-    /* Intermediate product is calculated by (1/(2*sqrt(3)) * Ia) */
-    product1 = (q31_t) (((q63_t) (Ialpha) * (0x40000000)) >> 31);
-
-    /* Intermediate product is calculated by (1/sqrt(3) * pIb) */
-    product2 = (q31_t) (((q63_t) (Ibeta) * (0x6ED9EBA1)) >> 31);
-
-    /* pIb is calculated by subtracting the products */
-    *pIb = __QSUB(product2, product1);
-  }
-
-  /**
-   * @} end of inv_clarke group
-   */
-
-
-
-  /**
-   * @ingroup groupController
-   */
-
-  /**
-   * @defgroup park Vector Park Transform
-   *
-   * Forward Park transform converts the input two-coordinate vector to flux and torque components.
-   * The Park transform can be used to realize the transformation of the <code>Ialpha</code> and the <code>Ibeta</code> currents
-   * from the stationary to the moving reference frame and control the spatial relationship between
-   * the stator vector current and rotor flux vector.
-   * If we consider the d axis aligned with the rotor flux, the diagram below shows the
-   * current vector and the relationship from the two reference frames:
-   * \image html park.gif "Stator current space vector and its component in (a,b) and in the d,q rotating reference frame"
-   *
-   * The function operates on a single sample of data and each call to the function returns the processed output.
-   * The library provides separate functions for Q31 and floating-point data types.
-   * \par Algorithm
-   * \image html parkFormula.gif
-   * where <code>Ialpha</code> and <code>Ibeta</code> are the stator vector components,
-   * <code>pId</code> and <code>pIq</code> are rotor vector components and <code>cosVal</code> and <code>sinVal</code> are the
-   * cosine and sine values of theta (rotor flux position).
-   * \par Fixed-Point Behavior
-   * Care must be taken when using the Q31 version of the Park transform.
-   * In particular, the overflow and saturation behavior of the accumulator used must be considered.
-   * Refer to the function specific documentation below for usage guidelines.
-   */
-
-  /**
-   * @addtogroup park
-   * @{
-   */
-
-  /**
-   * @brief Floating-point Park transform
-   * @param[in]  Ialpha  input two-phase vector coordinate alpha
-   * @param[in]  Ibeta   input two-phase vector coordinate beta
-   * @param[out] pId     points to output   rotor reference frame d
-   * @param[out] pIq     points to output   rotor reference frame q
-   * @param[in]  sinVal  sine value of rotation angle theta
-   * @param[in]  cosVal  cosine value of rotation angle theta
-   * @return     none
-   *
-   * The function implements the forward Park transform.
-   *
-   */
-  __STATIC_FORCEINLINE void arm_park_f32(
-  float32_t Ialpha,
-  float32_t Ibeta,
-  float32_t * pId,
-  float32_t * pIq,
-  float32_t sinVal,
-  float32_t cosVal)
-  {
-    /* Calculate pId using the equation, pId = Ialpha * cosVal + Ibeta * sinVal */
-    *pId = Ialpha * cosVal + Ibeta * sinVal;
-
-    /* Calculate pIq using the equation, pIq = - Ialpha * sinVal + Ibeta * cosVal */
-    *pIq = -Ialpha * sinVal + Ibeta * cosVal;
-  }
-
-
-/**
-  @brief  Park transform for Q31 version
-  @param[in]  Ialpha  input two-phase vector coordinate alpha
-  @param[in]  Ibeta   input two-phase vector coordinate beta
-  @param[out] pId     points to output rotor reference frame d
-  @param[out] pIq     points to output rotor reference frame q
-  @param[in]  sinVal  sine value of rotation angle theta
-  @param[in]  cosVal  cosine value of rotation angle theta
-  @return     none
-
-  \par Scaling and Overflow Behavior
-         The function is implemented using an internal 32-bit accumulator.
-         The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format.
-         There is saturation on the addition and subtraction, hence there is no risk of overflow.
- */
-__STATIC_FORCEINLINE void arm_park_q31(
-  q31_t Ialpha,
-  q31_t Ibeta,
-  q31_t * pId,
-  q31_t * pIq,
-  q31_t sinVal,
-  q31_t cosVal)
-  {
-    q31_t product1, product2;                    /* Temporary variables used to store intermediate results */
-    q31_t product3, product4;                    /* Temporary variables used to store intermediate results */
-
-    /* Intermediate product is calculated by (Ialpha * cosVal) */
-    product1 = (q31_t) (((q63_t) (Ialpha) * (cosVal)) >> 31);
-
-    /* Intermediate product is calculated by (Ibeta * sinVal) */
-    product2 = (q31_t) (((q63_t) (Ibeta) * (sinVal)) >> 31);
-
-
-    /* Intermediate product is calculated by (Ialpha * sinVal) */
-    product3 = (q31_t) (((q63_t) (Ialpha) * (sinVal)) >> 31);
-
-    /* Intermediate product is calculated by (Ibeta * cosVal) */
-    product4 = (q31_t) (((q63_t) (Ibeta) * (cosVal)) >> 31);
-
-    /* Calculate pId by adding the two intermediate products 1 and 2 */
-    *pId = __QADD(product1, product2);
-
-    /* Calculate pIq by subtracting the two intermediate products 3 from 4 */
-    *pIq = __QSUB(product4, product3);
-  }
-
-  /**
-   * @} end of park group
-   */
-
-
-  /**
-   * @ingroup groupController
-   */
-
-  /**
-   * @defgroup inv_park Vector Inverse Park transform
-   * Inverse Park transform converts the input flux and torque components to two-coordinate vector.
-   *
-   * The function operates on a single sample of data and each call to the function returns the processed output.
-   * The library provides separate functions for Q31 and floating-point data types.
-   * \par Algorithm
-   * \image html parkInvFormula.gif
-   * where <code>pIalpha</code> and <code>pIbeta</code> are the stator vector components,
-   * <code>Id</code> and <code>Iq</code> are rotor vector components and <code>cosVal</code> and <code>sinVal</code> are the
-   * cosine and sine values of theta (rotor flux position).
-   * \par Fixed-Point Behavior
-   * Care must be taken when using the Q31 version of the Park transform.
-   * In particular, the overflow and saturation behavior of the accumulator used must be considered.
-   * Refer to the function specific documentation below for usage guidelines.
-   */
-
-  /**
-   * @addtogroup inv_park
-   * @{
-   */
-
-   /**
-   * @brief  Floating-point Inverse Park transform
-   * @param[in]  Id       input coordinate of rotor reference frame d
-   * @param[in]  Iq       input coordinate of rotor reference frame q
-   * @param[out] pIalpha  points to output two-phase orthogonal vector axis alpha
-   * @param[out] pIbeta   points to output two-phase orthogonal vector axis beta
-   * @param[in]  sinVal   sine value of rotation angle theta
-   * @param[in]  cosVal   cosine value of rotation angle theta
-   * @return     none
-   */
-  __STATIC_FORCEINLINE void arm_inv_park_f32(
-  float32_t Id,
-  float32_t Iq,
-  float32_t * pIalpha,
-  float32_t * pIbeta,
-  float32_t sinVal,
-  float32_t cosVal)
-  {
-    /* Calculate pIalpha using the equation, pIalpha = Id * cosVal - Iq * sinVal */
-    *pIalpha = Id * cosVal - Iq * sinVal;
-
-    /* Calculate pIbeta using the equation, pIbeta = Id * sinVal + Iq * cosVal */
-    *pIbeta = Id * sinVal + Iq * cosVal;
-  }
-
-
-/**
-  @brief  Inverse Park transform for   Q31 version
-  @param[in]  Id       input coordinate of rotor reference frame d
-  @param[in]  Iq       input coordinate of rotor reference frame q
-  @param[out] pIalpha  points to output two-phase orthogonal vector axis alpha
-  @param[out] pIbeta   points to output two-phase orthogonal vector axis beta
-  @param[in]  sinVal   sine value of rotation angle theta
-  @param[in]  cosVal   cosine value of rotation angle theta
-  @return     none
-
-  @par Scaling and Overflow Behavior
-         The function is implemented using an internal 32-bit accumulator.
-         The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format.
-         There is saturation on the addition, hence there is no risk of overflow.
- */
-__STATIC_FORCEINLINE void arm_inv_park_q31(
-  q31_t Id,
-  q31_t Iq,
-  q31_t * pIalpha,
-  q31_t * pIbeta,
-  q31_t sinVal,
-  q31_t cosVal)
-  {
-    q31_t product1, product2;                    /* Temporary variables used to store intermediate results */
-    q31_t product3, product4;                    /* Temporary variables used to store intermediate results */
-
-    /* Intermediate product is calculated by (Id * cosVal) */
-    product1 = (q31_t) (((q63_t) (Id) * (cosVal)) >> 31);
-
-    /* Intermediate product is calculated by (Iq * sinVal) */
-    product2 = (q31_t) (((q63_t) (Iq) * (sinVal)) >> 31);
-
-
-    /* Intermediate product is calculated by (Id * sinVal) */
-    product3 = (q31_t) (((q63_t) (Id) * (sinVal)) >> 31);
-
-    /* Intermediate product is calculated by (Iq * cosVal) */
-    product4 = (q31_t) (((q63_t) (Iq) * (cosVal)) >> 31);
-
-    /* Calculate pIalpha by using the two intermediate products 1 and 2 */
-    *pIalpha = __QSUB(product1, product2);
-
-    /* Calculate pIbeta by using the two intermediate products 3 and 4 */
-    *pIbeta = __QADD(product4, product3);
-  }
-
-  /**
-   * @} end of Inverse park group
-   */
-
-
-  /**
-   * @ingroup groupInterpolation
-   */
-
-  /**
-   * @defgroup LinearInterpolate Linear Interpolation
-   *
-   * Linear interpolation is a method of curve fitting using linear polynomials.
-   * Linear interpolation works by effectively drawing a straight line between two neighboring samples and returning the appropriate point along that line
-   *
-   * \par
-   * \image html LinearInterp.gif "Linear interpolation"
-   *
-   * \par
-   * A  Linear Interpolate function calculates an output value(y), for the input(x)
-   * using linear interpolation of the input values x0, x1( nearest input values) and the output values y0 and y1(nearest output values)
-   *
-   * \par Algorithm:
-   * <pre>
-   *       y = y0 + (x - x0) * ((y1 - y0)/(x1-x0))
-   *       where x0, x1 are nearest values of input x
-   *             y0, y1 are nearest values to output y
-   * </pre>
-   *
-   * \par
-   * This set of functions implements Linear interpolation process
-   * for Q7, Q15, Q31, and floating-point data types.  The functions operate on a single
-   * sample of data and each call to the function returns a single processed value.
-   * <code>S</code> points to an instance of the Linear Interpolate function data structure.
-   * <code>x</code> is the input sample value. The functions returns the output value.
-   *
-   * \par
-   * if x is outside of the table boundary, Linear interpolation returns first value of the table
-   * if x is below input range and returns last value of table if x is above range.
-   */
-
-  /**
-   * @addtogroup LinearInterpolate
-   * @{
-   */
-
-  /**
-   * @brief  Process function for the floating-point Linear Interpolation Function.
-   * @param[in,out] S  is an instance of the floating-point Linear Interpolation structure
-   * @param[in]     x  input sample to process
-   * @return y processed output sample.
-   *
-   */
-  __STATIC_FORCEINLINE float32_t arm_linear_interp_f32(
-  arm_linear_interp_instance_f32 * S,
-  float32_t x)
-  {
-    float32_t y;
-    float32_t x0, x1;                            /* Nearest input values */
-    float32_t y0, y1;                            /* Nearest output values */
-    float32_t xSpacing = S->xSpacing;            /* spacing between input values */
-    int32_t i;                                   /* Index variable */
-    float32_t *pYData = S->pYData;               /* pointer to output table */
-
-    /* Calculation of index */
-    i = (int32_t) ((x - S->x1) / xSpacing);
-
-    if (i < 0)
-    {
-      /* Iniatilize output for below specified range as least output value of table */
-      y = pYData[0];
-    }
-    else if ((uint32_t)i >= (S->nValues - 1))
-    {
-      /* Iniatilize output for above specified range as last output value of table */
-      y = pYData[S->nValues - 1];
-    }
-    else
-    {
-      /* Calculation of nearest input values */
-      x0 = S->x1 +  i      * xSpacing;
-      x1 = S->x1 + (i + 1) * xSpacing;
-
-      /* Read of nearest output values */
-      y0 = pYData[i];
-      y1 = pYData[i + 1];
-
-      /* Calculation of output */
-      y = y0 + (x - x0) * ((y1 - y0) / (x1 - x0));
-
-    }
-
-    /* returns output value */
-    return (y);
-  }
-
-
-   /**
-   *
-   * @brief  Process function for the Q31 Linear Interpolation Function.
-   * @param[in] pYData   pointer to Q31 Linear Interpolation table
-   * @param[in] x        input sample to process
-   * @param[in] nValues  number of table values
-   * @return y processed output sample.
-   *
-   * \par
-   * Input sample <code>x</code> is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part.
-   * This function can support maximum of table size 2^12.
-   *
-   */
-  __STATIC_FORCEINLINE q31_t arm_linear_interp_q31(
-  q31_t * pYData,
-  q31_t x,
-  uint32_t nValues)
-  {
-    q31_t y;                                     /* output */
-    q31_t y0, y1;                                /* Nearest output values */
-    q31_t fract;                                 /* fractional part */
-    int32_t index;                               /* Index to read nearest output values */
-
-    /* Input is in 12.20 format */
-    /* 12 bits for the table index */
-    /* Index value calculation */
-    index = ((x & (q31_t)0xFFF00000) >> 20);
-
-    if (index >= (int32_t)(nValues - 1))
-    {
-      return (pYData[nValues - 1]);
-    }
-    else if (index < 0)
-    {
-      return (pYData[0]);
-    }
-    else
-    {
-      /* 20 bits for the fractional part */
-      /* shift left by 11 to keep fract in 1.31 format */
-      fract = (x & 0x000FFFFF) << 11;
-
-      /* Read two nearest output values from the index in 1.31(q31) format */
-      y0 = pYData[index];
-      y1 = pYData[index + 1];
-
-      /* Calculation of y0 * (1-fract) and y is in 2.30 format */
-      y = ((q31_t) ((q63_t) y0 * (0x7FFFFFFF - fract) >> 32));
-
-      /* Calculation of y0 * (1-fract) + y1 *fract and y is in 2.30 format */
-      y += ((q31_t) (((q63_t) y1 * fract) >> 32));
-
-      /* Convert y to 1.31 format */
-      return (y << 1U);
-    }
-  }
-
-
-  /**
-   *
-   * @brief  Process function for the Q15 Linear Interpolation Function.
-   * @param[in] pYData   pointer to Q15 Linear Interpolation table
-   * @param[in] x        input sample to process
-   * @param[in] nValues  number of table values
-   * @return y processed output sample.
-   *
-   * \par
-   * Input sample <code>x</code> is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part.
-   * This function can support maximum of table size 2^12.
-   *
-   */
-  __STATIC_FORCEINLINE q15_t arm_linear_interp_q15(
-  q15_t * pYData,
-  q31_t x,
-  uint32_t nValues)
-  {
-    q63_t y;                                     /* output */
-    q15_t y0, y1;                                /* Nearest output values */
-    q31_t fract;                                 /* fractional part */
-    int32_t index;                               /* Index to read nearest output values */
-
-    /* Input is in 12.20 format */
-    /* 12 bits for the table index */
-    /* Index value calculation */
-    index = ((x & (int32_t)0xFFF00000) >> 20);
-
-    if (index >= (int32_t)(nValues - 1))
-    {
-      return (pYData[nValues - 1]);
-    }
-    else if (index < 0)
-    {
-      return (pYData[0]);
-    }
-    else
-    {
-      /* 20 bits for the fractional part */
-      /* fract is in 12.20 format */
-      fract = (x & 0x000FFFFF);
-
-      /* Read two nearest output values from the index */
-      y0 = pYData[index];
-      y1 = pYData[index + 1];
-
-      /* Calculation of y0 * (1-fract) and y is in 13.35 format */
-      y = ((q63_t) y0 * (0xFFFFF - fract));
-
-      /* Calculation of (y0 * (1-fract) + y1 * fract) and y is in 13.35 format */
-      y += ((q63_t) y1 * (fract));
-
-      /* convert y to 1.15 format */
-      return (q15_t) (y >> 20);
-    }
-  }
-
-
-  /**
-   *
-   * @brief  Process function for the Q7 Linear Interpolation Function.
-   * @param[in] pYData   pointer to Q7 Linear Interpolation table
-   * @param[in] x        input sample to process
-   * @param[in] nValues  number of table values
-   * @return y processed output sample.
-   *
-   * \par
-   * Input sample <code>x</code> is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part.
-   * This function can support maximum of table size 2^12.
-   */
-  __STATIC_FORCEINLINE q7_t arm_linear_interp_q7(
-  q7_t * pYData,
-  q31_t x,
-  uint32_t nValues)
-  {
-    q31_t y;                                     /* output */
-    q7_t y0, y1;                                 /* Nearest output values */
-    q31_t fract;                                 /* fractional part */
-    uint32_t index;                              /* Index to read nearest output values */
-
-    /* Input is in 12.20 format */
-    /* 12 bits for the table index */
-    /* Index value calculation */
-    if (x < 0)
-    {
-      return (pYData[0]);
-    }
-    index = (x >> 20) & 0xfff;
-
-    if (index >= (nValues - 1))
-    {
-      return (pYData[nValues - 1]);
-    }
-    else
-    {
-      /* 20 bits for the fractional part */
-      /* fract is in 12.20 format */
-      fract = (x & 0x000FFFFF);
-
-      /* Read two nearest output values from the index and are in 1.7(q7) format */
-      y0 = pYData[index];
-      y1 = pYData[index + 1];
-
-      /* Calculation of y0 * (1-fract ) and y is in 13.27(q27) format */
-      y = ((y0 * (0xFFFFF - fract)));
-
-      /* Calculation of y1 * fract + y0 * (1-fract) and y is in 13.27(q27) format */
-      y += (y1 * fract);
-
-      /* convert y to 1.7(q7) format */
-      return (q7_t) (y >> 20);
-     }
-  }
-
-  /**
-   * @} end of LinearInterpolate group
-   */
-
-  /**
-   * @brief  Fast approximation to the trigonometric sine function for floating-point data.
-   * @param[in] x  input value in radians.
-   * @return  sin(x).
-   */
-  float32_t arm_sin_f32(
-  float32_t x);
-
-
-  /**
-   * @brief  Fast approximation to the trigonometric sine function for Q31 data.
-   * @param[in] x  Scaled input value in radians.
-   * @return  sin(x).
-   */
-  q31_t arm_sin_q31(
-  q31_t x);
-
-
-  /**
-   * @brief  Fast approximation to the trigonometric sine function for Q15 data.
-   * @param[in] x  Scaled input value in radians.
-   * @return  sin(x).
-   */
-  q15_t arm_sin_q15(
-  q15_t x);
-
-
-  /**
-   * @brief  Fast approximation to the trigonometric cosine function for floating-point data.
-   * @param[in] x  input value in radians.
-   * @return  cos(x).
-   */
-  float32_t arm_cos_f32(
-  float32_t x);
-
-
-  /**
-   * @brief Fast approximation to the trigonometric cosine function for Q31 data.
-   * @param[in] x  Scaled input value in radians.
-   * @return  cos(x).
-   */
-  q31_t arm_cos_q31(
-  q31_t x);
-
-
-  /**
-   * @brief  Fast approximation to the trigonometric cosine function for Q15 data.
-   * @param[in] x  Scaled input value in radians.
-   * @return  cos(x).
-   */
-  q15_t arm_cos_q15(
-  q15_t x);
-
-
-/**
-  @brief         Floating-point vector of log values.
-  @param[in]     pSrc       points to the input vector
-  @param[out]    pDst       points to the output vector
-  @param[in]     blockSize  number of samples in each vector
-  @return        none
- */
-  void arm_vlog_f32(
-  const float32_t * pSrc,
-        float32_t * pDst,
-        uint32_t blockSize);
-
-/**
-  @brief         Floating-point vector of exp values.
-  @param[in]     pSrc       points to the input vector
-  @param[out]    pDst       points to the output vector
-  @param[in]     blockSize  number of samples in each vector
-  @return        none
- */
-  void arm_vexp_f32(
-  const float32_t * pSrc,
-        float32_t * pDst,
-        uint32_t blockSize);
-
-  /**
-   * @ingroup groupFastMath
-   */
-
-
-  /**
-   * @defgroup SQRT Square Root
-   *
-   * Computes the square root of a number.
-   * There are separate functions for Q15, Q31, and floating-point data types.
-   * The square root function is computed using the Newton-Raphson algorithm.
-   * This is an iterative algorithm of the form:
-   * <pre>
-   *      x1 = x0 - f(x0)/f'(x0)
-   * </pre>
-   * where <code>x1</code> is the current estimate,
-   * <code>x0</code> is the previous estimate, and
-   * <code>f'(x0)</code> is the derivative of <code>f()</code> evaluated at <code>x0</code>.
-   * For the square root function, the algorithm reduces to:
-   * <pre>
-   *     x0 = in/2                         [initial guess]
-   *     x1 = 1/2 * ( x0 + in / x0)        [each iteration]
-   * </pre>
-   */
-
-
-  /**
-   * @addtogroup SQRT
-   * @{
-   */
-
-/**
-  @brief         Floating-point square root function.
-  @param[in]     in    input value
-  @param[out]    pOut  square root of input value
-  @return        execution status
-                   - \ref ARM_MATH_SUCCESS        : input value is positive
-                   - \ref ARM_MATH_ARGUMENT_ERROR : input value is negative; *pOut is set to 0
- */
-__STATIC_FORCEINLINE arm_status arm_sqrt_f32(
-  float32_t in,
-  float32_t * pOut)
-  {
-    if (in >= 0.0f)
-    {
-#if defined ( __CC_ARM )
-  #if defined __TARGET_FPU_VFP
-      *pOut = __sqrtf(in);
-  #else
-      *pOut = sqrtf(in);
-  #endif
-
-#elif defined ( __ICCARM__ )
-  #if defined __ARMVFP__
-      __ASM("VSQRT.F32 %0,%1" : "=t"(*pOut) : "t"(in));
-  #else
-      *pOut = sqrtf(in);
-  #endif
-
-#else
-      *pOut = sqrtf(in);
-#endif
-
-      return (ARM_MATH_SUCCESS);
-    }
-    else
-    {
-      *pOut = 0.0f;
-      return (ARM_MATH_ARGUMENT_ERROR);
-    }
-  }
-
-
-/**
-  @brief         Q31 square root function.
-  @param[in]     in    input value.  The range of the input value is [0 +1) or 0x00000000 to 0x7FFFFFFF
-  @param[out]    pOut  points to square root of input value
-  @return        execution status
-                   - \ref ARM_MATH_SUCCESS        : input value is positive
-                   - \ref ARM_MATH_ARGUMENT_ERROR : input value is negative; *pOut is set to 0
- */
-arm_status arm_sqrt_q31(
-  q31_t in,
-  q31_t * pOut);
-
-
-/**
-  @brief         Q15 square root function.
-  @param[in]     in    input value.  The range of the input value is [0 +1) or 0x0000 to 0x7FFF
-  @param[out]    pOut  points to square root of input value
-  @return        execution status
-                   - \ref ARM_MATH_SUCCESS        : input value is positive
-                   - \ref ARM_MATH_ARGUMENT_ERROR : input value is negative; *pOut is set to 0
- */
-arm_status arm_sqrt_q15(
-  q15_t in,
-  q15_t * pOut);
-
-  /**
-   * @brief  Vector Floating-point square root function.
-   * @param[in]  pIn   input vector.
-   * @param[out] pOut  vector of square roots of input elements.
-   * @param[in]  len   length of input vector.
-   * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if
-   * <code>in</code> is negative value and returns zero output for negative values.
-   */
-  void arm_vsqrt_f32(
-  float32_t * pIn,
-  float32_t * pOut,
-  uint16_t len);
-
-  void arm_vsqrt_q31(
-  q31_t * pIn,
-  q31_t * pOut,
-  uint16_t len);
-
-  void arm_vsqrt_q15(
-  q15_t * pIn,
-  q15_t * pOut,
-  uint16_t len);
-
-  /**
-   * @} end of SQRT group
-   */
-
-
-  /**
-   * @brief floating-point Circular write function.
-   */
-  __STATIC_FORCEINLINE void arm_circularWrite_f32(
-  int32_t * circBuffer,
-  int32_t L,
-  uint16_t * writeOffset,
-  int32_t bufferInc,
-  const int32_t * src,
-  int32_t srcInc,
-  uint32_t blockSize)
-  {
-    uint32_t i = 0U;
-    int32_t wOffset;
-
-    /* Copy the value of Index pointer that points
-     * to the current location where the input samples to be copied */
-    wOffset = *writeOffset;
-
-    /* Loop over the blockSize */
-    i = blockSize;
-
-    while (i > 0U)
-    {
-      /* copy the input sample to the circular buffer */
-      circBuffer[wOffset] = *src;
-
-      /* Update the input pointer */
-      src += srcInc;
-
-      /* Circularly update wOffset.  Watch out for positive and negative value */
-      wOffset += bufferInc;
-      if (wOffset >= L)
-        wOffset -= L;
-
-      /* Decrement the loop counter */
-      i--;
-    }
-
-    /* Update the index pointer */
-    *writeOffset = (uint16_t)wOffset;
-  }
-
-
-
-  /**
-   * @brief floating-point Circular Read function.
-   */
-  __STATIC_FORCEINLINE void arm_circularRead_f32(
-  int32_t * circBuffer,
-  int32_t L,
-  int32_t * readOffset,
-  int32_t bufferInc,
-  int32_t * dst,
-  int32_t * dst_base,
-  int32_t dst_length,
-  int32_t dstInc,
-  uint32_t blockSize)
-  {
-    uint32_t i = 0U;
-    int32_t rOffset;
-    int32_t* dst_end;
-
-    /* Copy the value of Index pointer that points
-     * to the current location from where the input samples to be read */
-    rOffset = *readOffset;
-    dst_end = dst_base + dst_length;
-
-    /* Loop over the blockSize */
-    i = blockSize;
-
-    while (i > 0U)
-    {
-      /* copy the sample from the circular buffer to the destination buffer */
-      *dst = circBuffer[rOffset];
-
-      /* Update the input pointer */
-      dst += dstInc;
-
-      if (dst == dst_end)
-      {
-        dst = dst_base;
-      }
-
-      /* Circularly update rOffset.  Watch out for positive and negative value  */
-      rOffset += bufferInc;
-
-      if (rOffset >= L)
-      {
-        rOffset -= L;
-      }
-
-      /* Decrement the loop counter */
-      i--;
-    }
-
-    /* Update the index pointer */
-    *readOffset = rOffset;
-  }
-
-
-  /**
-   * @brief Q15 Circular write function.
-   */
-  __STATIC_FORCEINLINE void arm_circularWrite_q15(
-  q15_t * circBuffer,
-  int32_t L,
-  uint16_t * writeOffset,
-  int32_t bufferInc,
-  const q15_t * src,
-  int32_t srcInc,
-  uint32_t blockSize)
-  {
-    uint32_t i = 0U;
-    int32_t wOffset;
-
-    /* Copy the value of Index pointer that points
-     * to the current location where the input samples to be copied */
-    wOffset = *writeOffset;
-
-    /* Loop over the blockSize */
-    i = blockSize;
-
-    while (i > 0U)
-    {
-      /* copy the input sample to the circular buffer */
-      circBuffer[wOffset] = *src;
-
-      /* Update the input pointer */
-      src += srcInc;
-
-      /* Circularly update wOffset.  Watch out for positive and negative value */
-      wOffset += bufferInc;
-      if (wOffset >= L)
-        wOffset -= L;
-
-      /* Decrement the loop counter */
-      i--;
-    }
-
-    /* Update the index pointer */
-    *writeOffset = (uint16_t)wOffset;
-  }
-
-
-  /**
-   * @brief Q15 Circular Read function.
-   */
-  __STATIC_FORCEINLINE void arm_circularRead_q15(
-  q15_t * circBuffer,
-  int32_t L,
-  int32_t * readOffset,
-  int32_t bufferInc,
-  q15_t * dst,
-  q15_t * dst_base,
-  int32_t dst_length,
-  int32_t dstInc,
-  uint32_t blockSize)
-  {
-    uint32_t i = 0;
-    int32_t rOffset;
-    q15_t* dst_end;
-
-    /* Copy the value of Index pointer that points
-     * to the current location from where the input samples to be read */
-    rOffset = *readOffset;
-
-    dst_end = dst_base + dst_length;
-
-    /* Loop over the blockSize */
-    i = blockSize;
-
-    while (i > 0U)
-    {
-      /* copy the sample from the circular buffer to the destination buffer */
-      *dst = circBuffer[rOffset];
-
-      /* Update the input pointer */
-      dst += dstInc;
-
-      if (dst == dst_end)
-      {
-        dst = dst_base;
-      }
-
-      /* Circularly update wOffset.  Watch out for positive and negative value */
-      rOffset += bufferInc;
-
-      if (rOffset >= L)
-      {
-        rOffset -= L;
-      }
-
-      /* Decrement the loop counter */
-      i--;
-    }
-
-    /* Update the index pointer */
-    *readOffset = rOffset;
-  }
-
-
-  /**
-   * @brief Q7 Circular write function.
-   */
-  __STATIC_FORCEINLINE void arm_circularWrite_q7(
-  q7_t * circBuffer,
-  int32_t L,
-  uint16_t * writeOffset,
-  int32_t bufferInc,
-  const q7_t * src,
-  int32_t srcInc,
-  uint32_t blockSize)
-  {
-    uint32_t i = 0U;
-    int32_t wOffset;
-
-    /* Copy the value of Index pointer that points
-     * to the current location where the input samples to be copied */
-    wOffset = *writeOffset;
-
-    /* Loop over the blockSize */
-    i = blockSize;
-
-    while (i > 0U)
-    {
-      /* copy the input sample to the circular buffer */
-      circBuffer[wOffset] = *src;
-
-      /* Update the input pointer */
-      src += srcInc;
-
-      /* Circularly update wOffset.  Watch out for positive and negative value */
-      wOffset += bufferInc;
-      if (wOffset >= L)
-        wOffset -= L;
-
-      /* Decrement the loop counter */
-      i--;
-    }
-
-    /* Update the index pointer */
-    *writeOffset = (uint16_t)wOffset;
-  }
-
-
-  /**
-   * @brief Q7 Circular Read function.
-   */
-  __STATIC_FORCEINLINE void arm_circularRead_q7(
-  q7_t * circBuffer,
-  int32_t L,
-  int32_t * readOffset,
-  int32_t bufferInc,
-  q7_t * dst,
-  q7_t * dst_base,
-  int32_t dst_length,
-  int32_t dstInc,
-  uint32_t blockSize)
-  {
-    uint32_t i = 0;
-    int32_t rOffset;
-    q7_t* dst_end;
-
-    /* Copy the value of Index pointer that points
-     * to the current location from where the input samples to be read */
-    rOffset = *readOffset;
-
-    dst_end = dst_base + dst_length;
-
-    /* Loop over the blockSize */
-    i = blockSize;
-
-    while (i > 0U)
-    {
-      /* copy the sample from the circular buffer to the destination buffer */
-      *dst = circBuffer[rOffset];
-
-      /* Update the input pointer */
-      dst += dstInc;
-
-      if (dst == dst_end)
-      {
-        dst = dst_base;
-      }
-
-      /* Circularly update rOffset.  Watch out for positive and negative value */
-      rOffset += bufferInc;
-
-      if (rOffset >= L)
-      {
-        rOffset -= L;
-      }
-
-      /* Decrement the loop counter */
-      i--;
-    }
-
-    /* Update the index pointer */
-    *readOffset = rOffset;
-  }
-
-
-  /**
-   * @brief  Sum of the squares of the elements of a Q31 vector.
-   * @param[in]  pSrc       is input pointer
-   * @param[in]  blockSize  is the number of samples to process
-   * @param[out] pResult    is output value.
-   */
-  void arm_power_q31(
-  const q31_t * pSrc,
-        uint32_t blockSize,
-        q63_t * pResult);
-
-
-  /**
-   * @brief  Sum of the squares of the elements of a floating-point vector.
-   * @param[in]  pSrc       is input pointer
-   * @param[in]  blockSize  is the number of samples to process
-   * @param[out] pResult    is output value.
-   */
-  void arm_power_f32(
-  const float32_t * pSrc,
-        uint32_t blockSize,
-        float32_t * pResult);
-
-
-  /**
-   * @brief  Sum of the squares of the elements of a Q15 vector.
-   * @param[in]  pSrc       is input pointer
-   * @param[in]  blockSize  is the number of samples to process
-   * @param[out] pResult    is output value.
-   */
-  void arm_power_q15(
-  const q15_t * pSrc,
-        uint32_t blockSize,
-        q63_t * pResult);
-
-
-  /**
-   * @brief  Sum of the squares of the elements of a Q7 vector.
-   * @param[in]  pSrc       is input pointer
-   * @param[in]  blockSize  is the number of samples to process
-   * @param[out] pResult    is output value.
-   */
-  void arm_power_q7(
-  const q7_t * pSrc,
-        uint32_t blockSize,
-        q31_t * pResult);
-
-
-  /**
-   * @brief  Mean value of a Q7 vector.
-   * @param[in]  pSrc       is input pointer
-   * @param[in]  blockSize  is the number of samples to process
-   * @param[out] pResult    is output value.
-   */
-  void arm_mean_q7(
-  const q7_t * pSrc,
-        uint32_t blockSize,
-        q7_t * pResult);
-
-
-  /**
-   * @brief  Mean value of a Q15 vector.
-   * @param[in]  pSrc       is input pointer
-   * @param[in]  blockSize  is the number of samples to process
-   * @param[out] pResult    is output value.
-   */
-  void arm_mean_q15(
-  const q15_t * pSrc,
-        uint32_t blockSize,
-        q15_t * pResult);
-
-
-  /**
-   * @brief  Mean value of a Q31 vector.
-   * @param[in]  pSrc       is input pointer
-   * @param[in]  blockSize  is the number of samples to process
-   * @param[out] pResult    is output value.
-   */
-  void arm_mean_q31(
-  const q31_t * pSrc,
-        uint32_t blockSize,
-        q31_t * pResult);
-
-
-  /**
-   * @brief  Mean value of a floating-point vector.
-   * @param[in]  pSrc       is input pointer
-   * @param[in]  blockSize  is the number of samples to process
-   * @param[out] pResult    is output value.
-   */
-  void arm_mean_f32(
-  const float32_t * pSrc,
-        uint32_t blockSize,
-        float32_t * pResult);
-
-
-  /**
-   * @brief  Variance of the elements of a floating-point vector.
-   * @param[in]  pSrc       is input pointer
-   * @param[in]  blockSize  is the number of samples to process
-   * @param[out] pResult    is output value.
-   */
-  void arm_var_f32(
-  const float32_t * pSrc,
-        uint32_t blockSize,
-        float32_t * pResult);
-
-
-  /**
-   * @brief  Variance of the elements of a Q31 vector.
-   * @param[in]  pSrc       is input pointer
-   * @param[in]  blockSize  is the number of samples to process
-   * @param[out] pResult    is output value.
-   */
-  void arm_var_q31(
-  const q31_t * pSrc,
-        uint32_t blockSize,
-        q31_t * pResult);
-
-
-  /**
-   * @brief  Variance of the elements of a Q15 vector.
-   * @param[in]  pSrc       is input pointer
-   * @param[in]  blockSize  is the number of samples to process
-   * @param[out] pResult    is output value.
-   */
-  void arm_var_q15(
-  const q15_t * pSrc,
-        uint32_t blockSize,
-        q15_t * pResult);
-
-
-  /**
-   * @brief  Root Mean Square of the elements of a floating-point vector.
-   * @param[in]  pSrc       is input pointer
-   * @param[in]  blockSize  is the number of samples to process
-   * @param[out] pResult    is output value.
-   */
-  void arm_rms_f32(
-  const float32_t * pSrc,
-        uint32_t blockSize,
-        float32_t * pResult);
-
-
-  /**
-   * @brief  Root Mean Square of the elements of a Q31 vector.
-   * @param[in]  pSrc       is input pointer
-   * @param[in]  blockSize  is the number of samples to process
-   * @param[out] pResult    is output value.
-   */
-  void arm_rms_q31(
-  const q31_t * pSrc,
-        uint32_t blockSize,
-        q31_t * pResult);
-
-
-  /**
-   * @brief  Root Mean Square of the elements of a Q15 vector.
-   * @param[in]  pSrc       is input pointer
-   * @param[in]  blockSize  is the number of samples to process
-   * @param[out] pResult    is output value.
-   */
-  void arm_rms_q15(
-  const q15_t * pSrc,
-        uint32_t blockSize,
-        q15_t * pResult);
-
-
-  /**
-   * @brief  Standard deviation of the elements of a floating-point vector.
-   * @param[in]  pSrc       is input pointer
-   * @param[in]  blockSize  is the number of samples to process
-   * @param[out] pResult    is output value.
-   */
-  void arm_std_f32(
-  const float32_t * pSrc,
-        uint32_t blockSize,
-        float32_t * pResult);
-
-
-  /**
-   * @brief  Standard deviation of the elements of a Q31 vector.
-   * @param[in]  pSrc       is input pointer
-   * @param[in]  blockSize  is the number of samples to process
-   * @param[out] pResult    is output value.
-   */
-  void arm_std_q31(
-  const q31_t * pSrc,
-        uint32_t blockSize,
-        q31_t * pResult);
-
-
-  /**
-   * @brief  Standard deviation of the elements of a Q15 vector.
-   * @param[in]  pSrc       is input pointer
-   * @param[in]  blockSize  is the number of samples to process
-   * @param[out] pResult    is output value.
-   */
-  void arm_std_q15(
-  const q15_t * pSrc,
-        uint32_t blockSize,
-        q15_t * pResult);
-
-
-  /**
-   * @brief  Floating-point complex magnitude
-   * @param[in]  pSrc        points to the complex input vector
-   * @param[out] pDst        points to the real output vector
-   * @param[in]  numSamples  number of complex samples in the input vector
-   */
-  void arm_cmplx_mag_f32(
-  const float32_t * pSrc,
-        float32_t * pDst,
-        uint32_t numSamples);
-
-
-  /**
-   * @brief  Q31 complex magnitude
-   * @param[in]  pSrc        points to the complex input vector
-   * @param[out] pDst        points to the real output vector
-   * @param[in]  numSamples  number of complex samples in the input vector
-   */
-  void arm_cmplx_mag_q31(
-  const q31_t * pSrc,
-        q31_t * pDst,
-        uint32_t numSamples);
-
-
-  /**
-   * @brief  Q15 complex magnitude
-   * @param[in]  pSrc        points to the complex input vector
-   * @param[out] pDst        points to the real output vector
-   * @param[in]  numSamples  number of complex samples in the input vector
-   */
-  void arm_cmplx_mag_q15(
-  const q15_t * pSrc,
-        q15_t * pDst,
-        uint32_t numSamples);
-
-
-  /**
-   * @brief  Q15 complex dot product
-   * @param[in]  pSrcA       points to the first input vector
-   * @param[in]  pSrcB       points to the second input vector
-   * @param[in]  numSamples  number of complex samples in each vector
-   * @param[out] realResult  real part of the result returned here
-   * @param[out] imagResult  imaginary part of the result returned here
-   */
-  void arm_cmplx_dot_prod_q15(
-  const q15_t * pSrcA,
-  const q15_t * pSrcB,
-        uint32_t numSamples,
-        q31_t * realResult,
-        q31_t * imagResult);
-
-
-  /**
-   * @brief  Q31 complex dot product
-   * @param[in]  pSrcA       points to the first input vector
-   * @param[in]  pSrcB       points to the second input vector
-   * @param[in]  numSamples  number of complex samples in each vector
-   * @param[out] realResult  real part of the result returned here
-   * @param[out] imagResult  imaginary part of the result returned here
-   */
-  void arm_cmplx_dot_prod_q31(
-  const q31_t * pSrcA,
-  const q31_t * pSrcB,
-        uint32_t numSamples,
-        q63_t * realResult,
-        q63_t * imagResult);
-
-
-  /**
-   * @brief  Floating-point complex dot product
-   * @param[in]  pSrcA       points to the first input vector
-   * @param[in]  pSrcB       points to the second input vector
-   * @param[in]  numSamples  number of complex samples in each vector
-   * @param[out] realResult  real part of the result returned here
-   * @param[out] imagResult  imaginary part of the result returned here
-   */
-  void arm_cmplx_dot_prod_f32(
-  const float32_t * pSrcA,
-  const float32_t * pSrcB,
-        uint32_t numSamples,
-        float32_t * realResult,
-        float32_t * imagResult);
-
-
-  /**
-   * @brief  Q15 complex-by-real multiplication
-   * @param[in]  pSrcCmplx   points to the complex input vector
-   * @param[in]  pSrcReal    points to the real input vector
-   * @param[out] pCmplxDst   points to the complex output vector
-   * @param[in]  numSamples  number of samples in each vector
-   */
-  void arm_cmplx_mult_real_q15(
-  const q15_t * pSrcCmplx,
-  const q15_t * pSrcReal,
-        q15_t * pCmplxDst,
-        uint32_t numSamples);
-
-
-  /**
-   * @brief  Q31 complex-by-real multiplication
-   * @param[in]  pSrcCmplx   points to the complex input vector
-   * @param[in]  pSrcReal    points to the real input vector
-   * @param[out] pCmplxDst   points to the complex output vector
-   * @param[in]  numSamples  number of samples in each vector
-   */
-  void arm_cmplx_mult_real_q31(
-  const q31_t * pSrcCmplx,
-  const q31_t * pSrcReal,
-        q31_t * pCmplxDst,
-        uint32_t numSamples);
-
-
-  /**
-   * @brief  Floating-point complex-by-real multiplication
-   * @param[in]  pSrcCmplx   points to the complex input vector
-   * @param[in]  pSrcReal    points to the real input vector
-   * @param[out] pCmplxDst   points to the complex output vector
-   * @param[in]  numSamples  number of samples in each vector
-   */
-  void arm_cmplx_mult_real_f32(
-  const float32_t * pSrcCmplx,
-  const float32_t * pSrcReal,
-        float32_t * pCmplxDst,
-        uint32_t numSamples);
-
-
-  /**
-   * @brief  Minimum value of a Q7 vector.
-   * @param[in]  pSrc       is input pointer
-   * @param[in]  blockSize  is the number of samples to process
-   * @param[out] result     is output pointer
-   * @param[in]  index      is the array index of the minimum value in the input buffer.
-   */
-  void arm_min_q7(
-  const q7_t * pSrc,
-        uint32_t blockSize,
-        q7_t * result,
-        uint32_t * index);
-
-
-  /**
-   * @brief  Minimum value of a Q15 vector.
-   * @param[in]  pSrc       is input pointer
-   * @param[in]  blockSize  is the number of samples to process
-   * @param[out] pResult    is output pointer
-   * @param[in]  pIndex     is the array index of the minimum value in the input buffer.
-   */
-  void arm_min_q15(
-  const q15_t * pSrc,
-        uint32_t blockSize,
-        q15_t * pResult,
-        uint32_t * pIndex);
-
-
-  /**
-   * @brief  Minimum value of a Q31 vector.
-   * @param[in]  pSrc       is input pointer
-   * @param[in]  blockSize  is the number of samples to process
-   * @param[out] pResult    is output pointer
-   * @param[out] pIndex     is the array index of the minimum value in the input buffer.
-   */
-  void arm_min_q31(
-  const q31_t * pSrc,
-        uint32_t blockSize,
-        q31_t * pResult,
-        uint32_t * pIndex);
-
-
-  /**
-   * @brief  Minimum value of a floating-point vector.
-   * @param[in]  pSrc       is input pointer
-   * @param[in]  blockSize  is the number of samples to process
-   * @param[out] pResult    is output pointer
-   * @param[out] pIndex     is the array index of the minimum value in the input buffer.
-   */
-  void arm_min_f32(
-  const float32_t * pSrc,
-        uint32_t blockSize,
-        float32_t * pResult,
-        uint32_t * pIndex);
-
-
-/**
- * @brief Maximum value of a Q7 vector.
- * @param[in]  pSrc       points to the input buffer
- * @param[in]  blockSize  length of the input vector
- * @param[out] pResult    maximum value returned here
- * @param[out] pIndex     index of maximum value returned here
- */
-  void arm_max_q7(
-  const q7_t * pSrc,
-        uint32_t blockSize,
-        q7_t * pResult,
-        uint32_t * pIndex);
-
-
-/**
- * @brief Maximum value of a Q15 vector.
- * @param[in]  pSrc       points to the input buffer
- * @param[in]  blockSize  length of the input vector
- * @param[out] pResult    maximum value returned here
- * @param[out] pIndex     index of maximum value returned here
- */
-  void arm_max_q15(
-  const q15_t * pSrc,
-        uint32_t blockSize,
-        q15_t * pResult,
-        uint32_t * pIndex);
-
-
-/**
- * @brief Maximum value of a Q31 vector.
- * @param[in]  pSrc       points to the input buffer
- * @param[in]  blockSize  length of the input vector
- * @param[out] pResult    maximum value returned here
- * @param[out] pIndex     index of maximum value returned here
- */
-  void arm_max_q31(
-  const q31_t * pSrc,
-        uint32_t blockSize,
-        q31_t * pResult,
-        uint32_t * pIndex);
-
-
-/**
- * @brief Maximum value of a floating-point vector.
- * @param[in]  pSrc       points to the input buffer
- * @param[in]  blockSize  length of the input vector
- * @param[out] pResult    maximum value returned here
- * @param[out] pIndex     index of maximum value returned here
- */
-  void arm_max_f32(
-  const float32_t * pSrc,
-        uint32_t blockSize,
-        float32_t * pResult,
-        uint32_t * pIndex);
-
-  /**
-    @brief         Maximum value of a floating-point vector.
-    @param[in]     pSrc       points to the input vector
-    @param[in]     blockSize  number of samples in input vector
-    @param[out]    pResult    maximum value returned here
-    @return        none
-   */
-  void arm_max_no_idx_f32(
-      const float32_t *pSrc,
-      uint32_t   blockSize,
-      float32_t *pResult);
-
-  /**
-   * @brief  Q15 complex-by-complex multiplication
-   * @param[in]  pSrcA       points to the first input vector
-   * @param[in]  pSrcB       points to the second input vector
-   * @param[out] pDst        points to the output vector
-   * @param[in]  numSamples  number of complex samples in each vector
-   */
-  void arm_cmplx_mult_cmplx_q15(
-  const q15_t * pSrcA,
-  const q15_t * pSrcB,
-        q15_t * pDst,
-        uint32_t numSamples);
-
-
-  /**
-   * @brief  Q31 complex-by-complex multiplication
-   * @param[in]  pSrcA       points to the first input vector
-   * @param[in]  pSrcB       points to the second input vector
-   * @param[out] pDst        points to the output vector
-   * @param[in]  numSamples  number of complex samples in each vector
-   */
-  void arm_cmplx_mult_cmplx_q31(
-  const q31_t * pSrcA,
-  const q31_t * pSrcB,
-        q31_t * pDst,
-        uint32_t numSamples);
-
-
-  /**
-   * @brief  Floating-point complex-by-complex multiplication
-   * @param[in]  pSrcA       points to the first input vector
-   * @param[in]  pSrcB       points to the second input vector
-   * @param[out] pDst        points to the output vector
-   * @param[in]  numSamples  number of complex samples in each vector
-   */
-  void arm_cmplx_mult_cmplx_f32(
-  const float32_t * pSrcA,
-  const float32_t * pSrcB,
-        float32_t * pDst,
-        uint32_t numSamples);
-
-
-  /**
-   * @brief Converts the elements of the floating-point vector to Q31 vector.
-   * @param[in]  pSrc       points to the floating-point input vector
-   * @param[out] pDst       points to the Q31 output vector
-   * @param[in]  blockSize  length of the input vector
-   */
-  void arm_float_to_q31(
-  const float32_t * pSrc,
-        q31_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Converts the elements of the floating-point vector to Q15 vector.
-   * @param[in]  pSrc       points to the floating-point input vector
-   * @param[out] pDst       points to the Q15 output vector
-   * @param[in]  blockSize  length of the input vector
-   */
-  void arm_float_to_q15(
-  const float32_t * pSrc,
-        q15_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief Converts the elements of the floating-point vector to Q7 vector.
-   * @param[in]  pSrc       points to the floating-point input vector
-   * @param[out] pDst       points to the Q7 output vector
-   * @param[in]  blockSize  length of the input vector
-   */
-  void arm_float_to_q7(
-  const float32_t * pSrc,
-        q7_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Converts the elements of the Q31 vector to floating-point vector.
-   * @param[in]  pSrc       is input pointer
-   * @param[out] pDst       is output pointer
-   * @param[in]  blockSize  is the number of samples to process
-   */
-  void arm_q31_to_float(
-  const q31_t * pSrc,
-        float32_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Converts the elements of the Q31 vector to Q15 vector.
-   * @param[in]  pSrc       is input pointer
-   * @param[out] pDst       is output pointer
-   * @param[in]  blockSize  is the number of samples to process
-   */
-  void arm_q31_to_q15(
-  const q31_t * pSrc,
-        q15_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Converts the elements of the Q31 vector to Q7 vector.
-   * @param[in]  pSrc       is input pointer
-   * @param[out] pDst       is output pointer
-   * @param[in]  blockSize  is the number of samples to process
-   */
-  void arm_q31_to_q7(
-  const q31_t * pSrc,
-        q7_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Converts the elements of the Q15 vector to floating-point vector.
-   * @param[in]  pSrc       is input pointer
-   * @param[out] pDst       is output pointer
-   * @param[in]  blockSize  is the number of samples to process
-   */
-  void arm_q15_to_float(
-  const q15_t * pSrc,
-        float32_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Converts the elements of the Q15 vector to Q31 vector.
-   * @param[in]  pSrc       is input pointer
-   * @param[out] pDst       is output pointer
-   * @param[in]  blockSize  is the number of samples to process
-   */
-  void arm_q15_to_q31(
-  const q15_t * pSrc,
-        q31_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Converts the elements of the Q15 vector to Q7 vector.
-   * @param[in]  pSrc       is input pointer
-   * @param[out] pDst       is output pointer
-   * @param[in]  blockSize  is the number of samples to process
-   */
-  void arm_q15_to_q7(
-  const q15_t * pSrc,
-        q7_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Converts the elements of the Q7 vector to floating-point vector.
-   * @param[in]  pSrc       is input pointer
-   * @param[out] pDst       is output pointer
-   * @param[in]  blockSize  is the number of samples to process
-   */
-  void arm_q7_to_float(
-  const q7_t * pSrc,
-        float32_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Converts the elements of the Q7 vector to Q31 vector.
-   * @param[in]  pSrc       input pointer
-   * @param[out] pDst       output pointer
-   * @param[in]  blockSize  number of samples to process
-   */
-  void arm_q7_to_q31(
-  const q7_t * pSrc,
-        q31_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Converts the elements of the Q7 vector to Q15 vector.
-   * @param[in]  pSrc       input pointer
-   * @param[out] pDst       output pointer
-   * @param[in]  blockSize  number of samples to process
-   */
-  void arm_q7_to_q15(
-  const q7_t * pSrc,
-        q15_t * pDst,
-        uint32_t blockSize);
-
-/**
- * @brief Struct for specifying SVM Kernel
- */
-typedef enum
-{
-    ARM_ML_KERNEL_LINEAR = 0,
-             /**< Linear kernel */
-    ARM_ML_KERNEL_POLYNOMIAL = 1,
-             /**< Polynomial kernel */
-    ARM_ML_KERNEL_RBF = 2,
-             /**< Radial Basis Function kernel */
-    ARM_ML_KERNEL_SIGMOID = 3
-             /**< Sigmoid kernel */
-} arm_ml_kernel_type;
-
-
-/**
- * @brief Instance structure for linear SVM prediction function.
- */
-typedef struct
-{
-  uint32_t        nbOfSupportVectors;     /**< Number of support vectors */
-  uint32_t        vectorDimension;        /**< Dimension of vector space */
-  float32_t       intercept;              /**< Intercept */
-  const float32_t *dualCoefficients;      /**< Dual coefficients */
-  const float32_t *supportVectors;        /**< Support vectors */
-  const int32_t   *classes;               /**< The two SVM classes */
-} arm_svm_linear_instance_f32;
-
-
-/**
- * @brief Instance structure for polynomial SVM prediction function.
- */
-typedef struct
-{
-  uint32_t        nbOfSupportVectors;     /**< Number of support vectors */
-  uint32_t        vectorDimension;        /**< Dimension of vector space */
-  float32_t       intercept;              /**< Intercept */
-  const float32_t *dualCoefficients;      /**< Dual coefficients */
-  const float32_t *supportVectors;        /**< Support vectors */
-  const int32_t   *classes;               /**< The two SVM classes */
-  int32_t         degree;                 /**< Polynomial degree */
-  float32_t       coef0;                  /**< Polynomial constant */
-  float32_t       gamma;                  /**< Gamma factor */
-} arm_svm_polynomial_instance_f32;
-
-/**
- * @brief Instance structure for rbf SVM prediction function.
- */
-typedef struct
-{
-  uint32_t        nbOfSupportVectors;     /**< Number of support vectors */
-  uint32_t        vectorDimension;        /**< Dimension of vector space */
-  float32_t       intercept;              /**< Intercept */
-  const float32_t *dualCoefficients;      /**< Dual coefficients */
-  const float32_t *supportVectors;        /**< Support vectors */
-  const int32_t   *classes;               /**< The two SVM classes */
-  float32_t       gamma;                  /**< Gamma factor */
-} arm_svm_rbf_instance_f32;
-
-/**
- * @brief Instance structure for sigmoid SVM prediction function.
- */
-typedef struct
-{
-  uint32_t        nbOfSupportVectors;     /**< Number of support vectors */
-  uint32_t        vectorDimension;        /**< Dimension of vector space */
-  float32_t       intercept;              /**< Intercept */
-  const float32_t *dualCoefficients;      /**< Dual coefficients */
-  const float32_t *supportVectors;        /**< Support vectors */
-  const int32_t   *classes;               /**< The two SVM classes */
-  float32_t       coef0;                  /**< Independant constant */
-  float32_t       gamma;                  /**< Gamma factor */
-} arm_svm_sigmoid_instance_f32;
-
-/**
- * @brief        SVM linear instance init function
- * @param[in]    S                      Parameters for SVM functions
- * @param[in]    nbOfSupportVectors     Number of support vectors
- * @param[in]    vectorDimension        Dimension of vector space
- * @param[in]    intercept              Intercept
- * @param[in]    dualCoefficients       Array of dual coefficients
- * @param[in]    supportVectors         Array of support vectors
- * @param[in]    classes                Array of 2 classes ID
- * @return none.
- *
- */
-
-
-void arm_svm_linear_init_f32(arm_svm_linear_instance_f32 *S, 
-  uint32_t nbOfSupportVectors,
-  uint32_t vectorDimension,
-  float32_t intercept,
-  const float32_t *dualCoefficients,
-  const float32_t *supportVectors,
-  const int32_t  *classes);
-
-/**
- * @brief SVM linear prediction
- * @param[in]    S          Pointer to an instance of the linear SVM structure.
- * @param[in]    in         Pointer to input vector
- * @param[out]   pResult    Decision value
- * @return none.
- *
- */
-  
-void arm_svm_linear_predict_f32(const arm_svm_linear_instance_f32 *S, 
-   const float32_t * in, 
-   int32_t * pResult);
-
-
-/**
- * @brief        SVM polynomial instance init function
- * @param[in]    S                      points to an instance of the polynomial SVM structure.
- * @param[in]    nbOfSupportVectors     Number of support vectors
- * @param[in]    vectorDimension        Dimension of vector space
- * @param[in]    intercept              Intercept
- * @param[in]    dualCoefficients       Array of dual coefficients
- * @param[in]    supportVectors         Array of support vectors
- * @param[in]    classes                Array of 2 classes ID
- * @param[in]    degree                 Polynomial degree
- * @param[in]    coef0                  coeff0 (scikit-learn terminology)
- * @param[in]    gamma                  gamma (scikit-learn terminology)
- * @return none.
- *
- */
-
-
-void arm_svm_polynomial_init_f32(arm_svm_polynomial_instance_f32 *S, 
-  uint32_t nbOfSupportVectors,
-  uint32_t vectorDimension,
-  float32_t intercept,
-  const float32_t *dualCoefficients,
-  const float32_t *supportVectors,
-  const int32_t   *classes,
-  int32_t      degree,
-  float32_t coef0,
-  float32_t gamma
-  );
-
-/**
- * @brief SVM polynomial prediction
- * @param[in]    S          Pointer to an instance of the polynomial SVM structure.
- * @param[in]    in         Pointer to input vector
- * @param[out]   pResult    Decision value
- * @return none.
- *
- */
-void arm_svm_polynomial_predict_f32(const arm_svm_polynomial_instance_f32 *S, 
-   const float32_t * in, 
-   int32_t * pResult);
-
-
-/**
- * @brief        SVM radial basis function instance init function
- * @param[in]    S                      points to an instance of the polynomial SVM structure.
- * @param[in]    nbOfSupportVectors     Number of support vectors
- * @param[in]    vectorDimension        Dimension of vector space
- * @param[in]    intercept              Intercept
- * @param[in]    dualCoefficients       Array of dual coefficients
- * @param[in]    supportVectors         Array of support vectors
- * @param[in]    classes                Array of 2 classes ID
- * @param[in]    gamma                  gamma (scikit-learn terminology)
- * @return none.
- *
- */
-
-void arm_svm_rbf_init_f32(arm_svm_rbf_instance_f32 *S, 
-  uint32_t nbOfSupportVectors,
-  uint32_t vectorDimension,
-  float32_t intercept,
-  const float32_t *dualCoefficients,
-  const float32_t *supportVectors,
-  const int32_t   *classes,
-  float32_t gamma
-  );
-
-/**
- * @brief SVM rbf prediction
- * @param[in]    S         Pointer to an instance of the rbf SVM structure.
- * @param[in]    in        Pointer to input vector
- * @param[out]   pResult   decision value
- * @return none.
- *
- */
-void arm_svm_rbf_predict_f32(const arm_svm_rbf_instance_f32 *S, 
-   const float32_t * in, 
-   int32_t * pResult);
-
-/**
- * @brief        SVM sigmoid instance init function
- * @param[in]    S                      points to an instance of the rbf SVM structure.
- * @param[in]    nbOfSupportVectors     Number of support vectors
- * @param[in]    vectorDimension        Dimension of vector space
- * @param[in]    intercept              Intercept
- * @param[in]    dualCoefficients       Array of dual coefficients
- * @param[in]    supportVectors         Array of support vectors
- * @param[in]    classes                Array of 2 classes ID
- * @param[in]    coef0                  coeff0 (scikit-learn terminology)
- * @param[in]    gamma                  gamma (scikit-learn terminology)
- * @return none.
- *
- */
-
-void arm_svm_sigmoid_init_f32(arm_svm_sigmoid_instance_f32 *S, 
-  uint32_t nbOfSupportVectors,
-  uint32_t vectorDimension,
-  float32_t intercept,
-  const float32_t *dualCoefficients,
-  const float32_t *supportVectors,
-  const int32_t   *classes,
-  float32_t coef0,
-  float32_t gamma
-  );
-
-/**
- * @brief SVM sigmoid prediction
- * @param[in]    S        Pointer to an instance of the rbf SVM structure.
- * @param[in]    in       Pointer to input vector
- * @param[out]   pResult  Decision value
- * @return none.
- *
- */
-void arm_svm_sigmoid_predict_f32(const arm_svm_sigmoid_instance_f32 *S, 
-   const float32_t * in, 
-   int32_t * pResult);
-
-
-
-/**
- * @brief Instance structure for Naive Gaussian Bayesian estimator.
- */
-typedef struct
-{
-  uint32_t vectorDimension;  /**< Dimension of vector space */
-  uint32_t numberOfClasses;  /**< Number of different classes  */
-  const float32_t *theta;          /**< Mean values for the Gaussians */
-  const float32_t *sigma;          /**< Variances for the Gaussians */
-  const float32_t *classPriors;    /**< Class prior probabilities */
-  float32_t epsilon;         /**< Additive value to variances */
-} arm_gaussian_naive_bayes_instance_f32;
-
-/**
- * @brief Naive Gaussian Bayesian Estimator
- *
- * @param[in]  S         points to a naive bayes instance structure
- * @param[in]  in        points to the elements of the input vector.
- * @param[in]  pBuffer   points to a buffer of length numberOfClasses
- * @return The predicted class
- *
- */
-
-
-uint32_t arm_gaussian_naive_bayes_predict_f32(const arm_gaussian_naive_bayes_instance_f32 *S, 
-   const float32_t * in, 
-   float32_t *pBuffer);
-
-/**
- * @brief Computation of the LogSumExp
- *
- * In probabilistic computations, the dynamic of the probability values can be very
- * wide because they come from gaussian functions.
- * To avoid underflow and overflow issues, the values are represented by their log.
- * In this representation, multiplying the original exp values is easy : their logs are added.
- * But adding the original exp values is requiring some special handling and it is the
- * goal of the LogSumExp function.
- *
- * If the values are x1...xn, the function is computing:
- *
- * ln(exp(x1) + ... + exp(xn)) and the computation is done in such a way that
- * rounding issues are minimised.
- *
- * The max xm of the values is extracted and the function is computing:
- * xm + ln(exp(x1 - xm) + ... + exp(xn - xm))
- *
- * @param[in]  *in         Pointer to an array of input values.
- * @param[in]  blockSize   Number of samples in the input array.
- * @return LogSumExp
- *
- */
-
-
-float32_t arm_logsumexp_f32(const float32_t *in, uint32_t blockSize);
-
-/**
- * @brief Dot product with log arithmetic
- *
- * Vectors are containing the log of the samples
- *
- * @param[in]       pSrcA points to the first input vector
- * @param[in]       pSrcB points to the second input vector
- * @param[in]       blockSize number of samples in each vector
- * @param[in]       pTmpBuffer temporary buffer of length blockSize
- * @return The log of the dot product .
- *
- */
-
-
-float32_t arm_logsumexp_dot_prod_f32(const float32_t * pSrcA,
-  const float32_t * pSrcB,
-  uint32_t blockSize,
-  float32_t *pTmpBuffer);
-
-/**
- * @brief Entropy
- *
- * @param[in]  pSrcA        Array of input values.
- * @param[in]  blockSize    Number of samples in the input array.
- * @return     Entropy      -Sum(p ln p)
- *
- */
-
-
-float32_t arm_entropy_f32(const float32_t * pSrcA,uint32_t blockSize);
-
-
-/**
- * @brief Entropy
- *
- * @param[in]  pSrcA        Array of input values.
- * @param[in]  blockSize    Number of samples in the input array.
- * @return     Entropy      -Sum(p ln p)
- *
- */
-
-
-float64_t arm_entropy_f64(const float64_t * pSrcA, uint32_t blockSize);
-
-
-/**
- * @brief Kullback-Leibler
- *
- * @param[in]  pSrcA         Pointer to an array of input values for probability distribution A.
- * @param[in]  pSrcB         Pointer to an array of input values for probability distribution B.
- * @param[in]  blockSize     Number of samples in the input array.
- * @return Kullback-Leibler  Divergence D(A || B)
- *
- */
-float32_t arm_kullback_leibler_f32(const float32_t * pSrcA
-  ,const float32_t * pSrcB
-  ,uint32_t blockSize);
-
-
-/**
- * @brief Kullback-Leibler
- *
- * @param[in]  pSrcA         Pointer to an array of input values for probability distribution A.
- * @param[in]  pSrcB         Pointer to an array of input values for probability distribution B.
- * @param[in]  blockSize     Number of samples in the input array.
- * @return Kullback-Leibler  Divergence D(A || B)
- *
- */
-float64_t arm_kullback_leibler_f64(const float64_t * pSrcA, 
-                const float64_t * pSrcB, 
-                uint32_t blockSize);
-
-
-/**
- * @brief Weighted sum
- *
- *
- * @param[in]    *in           Array of input values.
- * @param[in]    *weigths      Weights
- * @param[in]    blockSize     Number of samples in the input array.
- * @return Weighted sum
- *
- */
-float32_t arm_weighted_sum_f32(const float32_t *in
-  , const float32_t *weigths
-  , uint32_t blockSize);
-
-
-/**
- * @brief Barycenter
- *
- *
- * @param[in]    in         List of vectors
- * @param[in]    weights    Weights of the vectors
- * @param[out]   out        Barycenter
- * @param[in]    nbVectors  Number of vectors
- * @param[in]    vecDim     Dimension of space (vector dimension)
- * @return       None
- *
- */
-void arm_barycenter_f32(const float32_t *in
-  , const float32_t *weights
-  , float32_t *out
-  , uint32_t nbVectors
-  , uint32_t vecDim);
-
-/**
- * @brief        Euclidean distance between two vectors
- * @param[in]    pA         First vector
- * @param[in]    pB         Second vector
- * @param[in]    blockSize  vector length
- * @return distance
- *
- */
-
-float32_t arm_euclidean_distance_f32(const float32_t *pA,const float32_t *pB, uint32_t blockSize);
-
-/**
- * @brief        Bray-Curtis distance between two vectors
- * @param[in]    pA         First vector
- * @param[in]    pB         Second vector
- * @param[in]    blockSize  vector length
- * @return distance
- *
- */
-float32_t arm_braycurtis_distance_f32(const float32_t *pA,const float32_t *pB, uint32_t blockSize);
-
-/**
- * @brief        Canberra distance between two vectors
- *
- * This function may divide by zero when samples pA[i] and pB[i] are both zero.
- * The result of the computation will be correct. So the division per zero may be
- * ignored.
- *
- * @param[in]    pA         First vector
- * @param[in]    pB         Second vector
- * @param[in]    blockSize  vector length
- * @return distance
- *
- */
-float32_t arm_canberra_distance_f32(const float32_t *pA,const float32_t *pB, uint32_t blockSize);
-
-
-/**
- * @brief        Chebyshev distance between two vectors
- * @param[in]    pA         First vector
- * @param[in]    pB         Second vector
- * @param[in]    blockSize  vector length
- * @return distance
- *
- */
-float32_t arm_chebyshev_distance_f32(const float32_t *pA,const float32_t *pB, uint32_t blockSize);
-
-
-/**
- * @brief        Cityblock (Manhattan) distance between two vectors
- * @param[in]    pA         First vector
- * @param[in]    pB         Second vector
- * @param[in]    blockSize  vector length
- * @return distance
- *
- */
-float32_t arm_cityblock_distance_f32(const float32_t *pA,const float32_t *pB, uint32_t blockSize);
-
-/**
- * @brief        Correlation distance between two vectors
- *
- * The input vectors are modified in place !
- *
- * @param[in]    pA         First vector
- * @param[in]    pB         Second vector
- * @param[in]    blockSize  vector length
- * @return distance
- *
- */
-float32_t arm_correlation_distance_f32(float32_t *pA,float32_t *pB, uint32_t blockSize);
-
-/**
- * @brief        Cosine distance between two vectors
- *
- * @param[in]    pA         First vector
- * @param[in]    pB         Second vector
- * @param[in]    blockSize  vector length
- * @return distance
- *
- */
-
-float32_t arm_cosine_distance_f32(const float32_t *pA,const float32_t *pB, uint32_t blockSize);
-
-/**
- * @brief        Jensen-Shannon distance between two vectors
- *
- * This function is assuming that elements of second vector are > 0
- * and 0 only when the corresponding element of first vector is 0.
- * Otherwise the result of the computation does not make sense
- * and for speed reasons, the cases returning NaN or Infinity are not
- * managed.
- *
- * When the function is computing x log (x / y) with x 0 and y 0,
- * it will compute the right value (0) but a division per zero will occur
- * and shoudl be ignored in client code.
- *
- * @param[in]    pA         First vector
- * @param[in]    pB         Second vector
- * @param[in]    blockSize  vector length
- * @return distance
- *
- */
-
-float32_t arm_jensenshannon_distance_f32(const float32_t *pA,const float32_t *pB,uint32_t blockSize);
-
-/**
- * @brief        Minkowski distance between two vectors
- *
- * @param[in]    pA         First vector
- * @param[in]    pB         Second vector
- * @param[in]    n          Norm order (>= 2)
- * @param[in]    blockSize  vector length
- * @return distance
- *
- */
-
-
-
-float32_t arm_minkowski_distance_f32(const float32_t *pA,const float32_t *pB, int32_t order, uint32_t blockSize);
-
-/**
- * @brief        Dice distance between two vectors
- *
- * @param[in]    pA              First vector of packed booleans
- * @param[in]    pB              Second vector of packed booleans
- * @param[in]    order           Distance order
- * @param[in]    blockSize       Number of samples
- * @return distance
- *
- */
-
-
-float32_t arm_dice_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools);
-
-/**
- * @brief        Hamming distance between two vectors
- *
- * @param[in]    pA              First vector of packed booleans
- * @param[in]    pB              Second vector of packed booleans
- * @param[in]    numberOfBools   Number of booleans
- * @return distance
- *
- */
-
-float32_t arm_hamming_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools);
-
-/**
- * @brief        Jaccard distance between two vectors
- *
- * @param[in]    pA              First vector of packed booleans
- * @param[in]    pB              Second vector of packed booleans
- * @param[in]    numberOfBools   Number of booleans
- * @return distance
- *
- */
-
-float32_t arm_jaccard_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools);
-
-/**
- * @brief        Kulsinski distance between two vectors
- *
- * @param[in]    pA              First vector of packed booleans
- * @param[in]    pB              Second vector of packed booleans
- * @param[in]    numberOfBools   Number of booleans
- * @return distance
- *
- */
-
-float32_t arm_kulsinski_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools);
-
-/**
- * @brief        Roger Stanimoto distance between two vectors
- *
- * @param[in]    pA              First vector of packed booleans
- * @param[in]    pB              Second vector of packed booleans
- * @param[in]    numberOfBools   Number of booleans
- * @return distance
- *
- */
-
-float32_t arm_rogerstanimoto_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools);
-
-/**
- * @brief        Russell-Rao distance between two vectors
- *
- * @param[in]    pA              First vector of packed booleans
- * @param[in]    pB              Second vector of packed booleans
- * @param[in]    numberOfBools   Number of booleans
- * @return distance
- *
- */
-
-float32_t arm_russellrao_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools);
-
-/**
- * @brief        Sokal-Michener distance between two vectors
- *
- * @param[in]    pA              First vector of packed booleans
- * @param[in]    pB              Second vector of packed booleans
- * @param[in]    numberOfBools   Number of booleans
- * @return distance
- *
- */
-
-float32_t arm_sokalmichener_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools);
-
-/**
- * @brief        Sokal-Sneath distance between two vectors
- *
- * @param[in]    pA              First vector of packed booleans
- * @param[in]    pB              Second vector of packed booleans
- * @param[in]    numberOfBools   Number of booleans
- * @return distance
- *
- */
-
-float32_t arm_sokalsneath_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools);
-
-/**
- * @brief        Yule distance between two vectors
- *
- * @param[in]    pA              First vector of packed booleans
- * @param[in]    pB              Second vector of packed booleans
- * @param[in]    numberOfBools   Number of booleans
- * @return distance
- *
- */
-
-float32_t arm_yule_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools);
-
-
-  /**
-   * @ingroup groupInterpolation
-   */
-
-  /**
-   * @defgroup BilinearInterpolate Bilinear Interpolation
-   *
-   * Bilinear interpolation is an extension of linear interpolation applied to a two dimensional grid.
-   * The underlying function <code>f(x, y)</code> is sampled on a regular grid and the interpolation process
-   * determines values between the grid points.
-   * Bilinear interpolation is equivalent to two step linear interpolation, first in the x-dimension and then in the y-dimension.
-   * Bilinear interpolation is often used in image processing to rescale images.
-   * The CMSIS DSP library provides bilinear interpolation functions for Q7, Q15, Q31, and floating-point data types.
-   *
-   * <b>Algorithm</b>
-   * \par
-   * The instance structure used by the bilinear interpolation functions describes a two dimensional data table.
-   * For floating-point, the instance structure is defined as:
-   * <pre>
-   *   typedef struct
-   *   {
-   *     uint16_t numRows;
-   *     uint16_t numCols;
-   *     float32_t *pData;
-   * } arm_bilinear_interp_instance_f32;
-   * </pre>
-   *
-   * \par
-   * where <code>numRows</code> specifies the number of rows in the table;
-   * <code>numCols</code> specifies the number of columns in the table;
-   * and <code>pData</code> points to an array of size <code>numRows*numCols</code> values.
-   * The data table <code>pTable</code> is organized in row order and the supplied data values fall on integer indexes.
-   * That is, table element (x,y) is located at <code>pTable[x + y*numCols]</code> where x and y are integers.
-   *
-   * \par
-   * Let <code>(x, y)</code> specify the desired interpolation point.  Then define:
-   * <pre>
-   *     XF = floor(x)
-   *     YF = floor(y)
-   * </pre>
-   * \par
-   * The interpolated output point is computed as:
-   * <pre>
-   *  f(x, y) = f(XF, YF) * (1-(x-XF)) * (1-(y-YF))
-   *           + f(XF+1, YF) * (x-XF)*(1-(y-YF))
-   *           + f(XF, YF+1) * (1-(x-XF))*(y-YF)
-   *           + f(XF+1, YF+1) * (x-XF)*(y-YF)
-   * </pre>
-   * Note that the coordinates (x, y) contain integer and fractional components.
-   * The integer components specify which portion of the table to use while the
-   * fractional components control the interpolation processor.
-   *
-   * \par
-   * if (x,y) are outside of the table boundary, Bilinear interpolation returns zero output.
-   */
-
-
-  /**
-   * @addtogroup BilinearInterpolate
-   * @{
-   */
-
-  /**
-  * @brief  Floating-point bilinear interpolation.
-  * @param[in,out] S  points to an instance of the interpolation structure.
-  * @param[in]     X  interpolation coordinate.
-  * @param[in]     Y  interpolation coordinate.
-  * @return out interpolated value.
-  */
-  __STATIC_FORCEINLINE float32_t arm_bilinear_interp_f32(
-  const arm_bilinear_interp_instance_f32 * S,
-  float32_t X,
-  float32_t Y)
-  {
-    float32_t out;
-    float32_t f00, f01, f10, f11;
-    float32_t *pData = S->pData;
-    int32_t xIndex, yIndex, index;
-    float32_t xdiff, ydiff;
-    float32_t b1, b2, b3, b4;
-
-    xIndex = (int32_t) X;
-    yIndex = (int32_t) Y;
-
-    /* Care taken for table outside boundary */
-    /* Returns zero output when values are outside table boundary */
-    if (xIndex < 0 || xIndex > (S->numCols - 2) || yIndex < 0 || yIndex > (S->numRows - 2))
-    {
-      return (0);
-    }
-
-    /* Calculation of index for two nearest points in X-direction */
-    index = (xIndex ) + (yIndex ) * S->numCols;
-
-
-    /* Read two nearest points in X-direction */
-    f00 = pData[index];
-    f01 = pData[index + 1];
-
-    /* Calculation of index for two nearest points in Y-direction */
-    index = (xIndex ) + (yIndex+1) * S->numCols;
-
-
-    /* Read two nearest points in Y-direction */
-    f10 = pData[index];
-    f11 = pData[index + 1];
-
-    /* Calculation of intermediate values */
-    b1 = f00;
-    b2 = f01 - f00;
-    b3 = f10 - f00;
-    b4 = f00 - f01 - f10 + f11;
-
-    /* Calculation of fractional part in X */
-    xdiff = X - xIndex;
-
-    /* Calculation of fractional part in Y */
-    ydiff = Y - yIndex;
-
-    /* Calculation of bi-linear interpolated output */
-    out = b1 + b2 * xdiff + b3 * ydiff + b4 * xdiff * ydiff;
-
-    /* return to application */
-    return (out);
-  }
-
-
-  /**
-  * @brief  Q31 bilinear interpolation.
-  * @param[in,out] S  points to an instance of the interpolation structure.
-  * @param[in]     X  interpolation coordinate in 12.20 format.
-  * @param[in]     Y  interpolation coordinate in 12.20 format.
-  * @return out interpolated value.
-  */
-  __STATIC_FORCEINLINE q31_t arm_bilinear_interp_q31(
-  arm_bilinear_interp_instance_q31 * S,
-  q31_t X,
-  q31_t Y)
-  {
-    q31_t out;                                   /* Temporary output */
-    q31_t acc = 0;                               /* output */
-    q31_t xfract, yfract;                        /* X, Y fractional parts */
-    q31_t x1, x2, y1, y2;                        /* Nearest output values */
-    int32_t rI, cI;                              /* Row and column indices */
-    q31_t *pYData = S->pData;                    /* pointer to output table values */
-    uint32_t nCols = S->numCols;                 /* num of rows */
-
-    /* Input is in 12.20 format */
-    /* 12 bits for the table index */
-    /* Index value calculation */
-    rI = ((X & (q31_t)0xFFF00000) >> 20);
-
-    /* Input is in 12.20 format */
-    /* 12 bits for the table index */
-    /* Index value calculation */
-    cI = ((Y & (q31_t)0xFFF00000) >> 20);
-
-    /* Care taken for table outside boundary */
-    /* Returns zero output when values are outside table boundary */
-    if (rI < 0 || rI > (S->numCols - 2) || cI < 0 || cI > (S->numRows - 2))
-    {
-      return (0);
-    }
-
-    /* 20 bits for the fractional part */
-    /* shift left xfract by 11 to keep 1.31 format */
-    xfract = (X & 0x000FFFFF) << 11U;
-
-    /* Read two nearest output values from the index */
-    x1 = pYData[(rI) + (int32_t)nCols * (cI)    ];
-    x2 = pYData[(rI) + (int32_t)nCols * (cI) + 1];
-
-    /* 20 bits for the fractional part */
-    /* shift left yfract by 11 to keep 1.31 format */
-    yfract = (Y & 0x000FFFFF) << 11U;
-
-    /* Read two nearest output values from the index */
-    y1 = pYData[(rI) + (int32_t)nCols * (cI + 1)    ];
-    y2 = pYData[(rI) + (int32_t)nCols * (cI + 1) + 1];
-
-    /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 3.29(q29) format */
-    out = ((q31_t) (((q63_t) x1  * (0x7FFFFFFF - xfract)) >> 32));
-    acc = ((q31_t) (((q63_t) out * (0x7FFFFFFF - yfract)) >> 32));
-
-    /* x2 * (xfract) * (1-yfract)  in 3.29(q29) and adding to acc */
-    out = ((q31_t) ((q63_t) x2 * (0x7FFFFFFF - yfract) >> 32));
-    acc += ((q31_t) ((q63_t) out * (xfract) >> 32));
-
-    /* y1 * (1 - xfract) * (yfract)  in 3.29(q29) and adding to acc */
-    out = ((q31_t) ((q63_t) y1 * (0x7FFFFFFF - xfract) >> 32));
-    acc += ((q31_t) ((q63_t) out * (yfract) >> 32));
-
-    /* y2 * (xfract) * (yfract)  in 3.29(q29) and adding to acc */
-    out = ((q31_t) ((q63_t) y2 * (xfract) >> 32));
-    acc += ((q31_t) ((q63_t) out * (yfract) >> 32));
-
-    /* Convert acc to 1.31(q31) format */
-    return ((q31_t)(acc << 2));
-  }
-
-
-  /**
-  * @brief  Q15 bilinear interpolation.
-  * @param[in,out] S  points to an instance of the interpolation structure.
-  * @param[in]     X  interpolation coordinate in 12.20 format.
-  * @param[in]     Y  interpolation coordinate in 12.20 format.
-  * @return out interpolated value.
-  */
-  __STATIC_FORCEINLINE q15_t arm_bilinear_interp_q15(
-  arm_bilinear_interp_instance_q15 * S,
-  q31_t X,
-  q31_t Y)
-  {
-    q63_t acc = 0;                               /* output */
-    q31_t out;                                   /* Temporary output */
-    q15_t x1, x2, y1, y2;                        /* Nearest output values */
-    q31_t xfract, yfract;                        /* X, Y fractional parts */
-    int32_t rI, cI;                              /* Row and column indices */
-    q15_t *pYData = S->pData;                    /* pointer to output table values */
-    uint32_t nCols = S->numCols;                 /* num of rows */
-
-    /* Input is in 12.20 format */
-    /* 12 bits for the table index */
-    /* Index value calculation */
-    rI = ((X & (q31_t)0xFFF00000) >> 20);
-
-    /* Input is in 12.20 format */
-    /* 12 bits for the table index */
-    /* Index value calculation */
-    cI = ((Y & (q31_t)0xFFF00000) >> 20);
-
-    /* Care taken for table outside boundary */
-    /* Returns zero output when values are outside table boundary */
-    if (rI < 0 || rI > (S->numCols - 2) || cI < 0 || cI > (S->numRows - 2))
-    {
-      return (0);
-    }
-
-    /* 20 bits for the fractional part */
-    /* xfract should be in 12.20 format */
-    xfract = (X & 0x000FFFFF);
-
-    /* Read two nearest output values from the index */
-    x1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI)    ];
-    x2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) + 1];
-
-    /* 20 bits for the fractional part */
-    /* yfract should be in 12.20 format */
-    yfract = (Y & 0x000FFFFF);
-
-    /* Read two nearest output values from the index */
-    y1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1)    ];
-    y2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) + 1];
-
-    /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 13.51 format */
-
-    /* x1 is in 1.15(q15), xfract in 12.20 format and out is in 13.35 format */
-    /* convert 13.35 to 13.31 by right shifting  and out is in 1.31 */
-    out = (q31_t) (((q63_t) x1 * (0x0FFFFF - xfract)) >> 4U);
-    acc = ((q63_t) out * (0x0FFFFF - yfract));
-
-    /* x2 * (xfract) * (1-yfract)  in 1.51 and adding to acc */
-    out = (q31_t) (((q63_t) x2 * (0x0FFFFF - yfract)) >> 4U);
-    acc += ((q63_t) out * (xfract));
-
-    /* y1 * (1 - xfract) * (yfract)  in 1.51 and adding to acc */
-    out = (q31_t) (((q63_t) y1 * (0x0FFFFF - xfract)) >> 4U);
-    acc += ((q63_t) out * (yfract));
-
-    /* y2 * (xfract) * (yfract)  in 1.51 and adding to acc */
-    out = (q31_t) (((q63_t) y2 * (xfract)) >> 4U);
-    acc += ((q63_t) out * (yfract));
-
-    /* acc is in 13.51 format and down shift acc by 36 times */
-    /* Convert out to 1.15 format */
-    return ((q15_t)(acc >> 36));
-  }
-
-
-  /**
-  * @brief  Q7 bilinear interpolation.
-  * @param[in,out] S  points to an instance of the interpolation structure.
-  * @param[in]     X  interpolation coordinate in 12.20 format.
-  * @param[in]     Y  interpolation coordinate in 12.20 format.
-  * @return out interpolated value.
-  */
-  __STATIC_FORCEINLINE q7_t arm_bilinear_interp_q7(
-  arm_bilinear_interp_instance_q7 * S,
-  q31_t X,
-  q31_t Y)
-  {
-    q63_t acc = 0;                               /* output */
-    q31_t out;                                   /* Temporary output */
-    q31_t xfract, yfract;                        /* X, Y fractional parts */
-    q7_t x1, x2, y1, y2;                         /* Nearest output values */
-    int32_t rI, cI;                              /* Row and column indices */
-    q7_t *pYData = S->pData;                     /* pointer to output table values */
-    uint32_t nCols = S->numCols;                 /* num of rows */
-
-    /* Input is in 12.20 format */
-    /* 12 bits for the table index */
-    /* Index value calculation */
-    rI = ((X & (q31_t)0xFFF00000) >> 20);
-
-    /* Input is in 12.20 format */
-    /* 12 bits for the table index */
-    /* Index value calculation */
-    cI = ((Y & (q31_t)0xFFF00000) >> 20);
-
-    /* Care taken for table outside boundary */
-    /* Returns zero output when values are outside table boundary */
-    if (rI < 0 || rI > (S->numCols - 2) || cI < 0 || cI > (S->numRows - 2))
-    {
-      return (0);
-    }
-
-    /* 20 bits for the fractional part */
-    /* xfract should be in 12.20 format */
-    xfract = (X & (q31_t)0x000FFFFF);
-
-    /* Read two nearest output values from the index */
-    x1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI)    ];
-    x2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) + 1];
-
-    /* 20 bits for the fractional part */
-    /* yfract should be in 12.20 format */
-    yfract = (Y & (q31_t)0x000FFFFF);
-
-    /* Read two nearest output values from the index */
-    y1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1)    ];
-    y2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) + 1];
-
-    /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 16.47 format */
-    out = ((x1 * (0xFFFFF - xfract)));
-    acc = (((q63_t) out * (0xFFFFF - yfract)));
-
-    /* x2 * (xfract) * (1-yfract)  in 2.22 and adding to acc */
-    out = ((x2 * (0xFFFFF - yfract)));
-    acc += (((q63_t) out * (xfract)));
-
-    /* y1 * (1 - xfract) * (yfract)  in 2.22 and adding to acc */
-    out = ((y1 * (0xFFFFF - xfract)));
-    acc += (((q63_t) out * (yfract)));
-
-    /* y2 * (xfract) * (yfract)  in 2.22 and adding to acc */
-    out = ((y2 * (yfract)));
-    acc += (((q63_t) out * (xfract)));
-
-    /* acc in 16.47 format and down shift by 40 to convert to 1.7 format */
-    return ((q7_t)(acc >> 40));
-  }
-
-  /**
-   * @} end of BilinearInterpolate group
-   */
-
-
-/* SMMLAR */
-#define multAcc_32x32_keep32_R(a, x, y) \
-    a = (q31_t) (((((q63_t) a) << 32) + ((q63_t) x * y) + 0x80000000LL ) >> 32)
-
-/* SMMLSR */
-#define multSub_32x32_keep32_R(a, x, y) \
-    a = (q31_t) (((((q63_t) a) << 32) - ((q63_t) x * y) + 0x80000000LL ) >> 32)
-
-/* SMMULR */
-#define mult_32x32_keep32_R(a, x, y) \
-    a = (q31_t) (((q63_t) x * y + 0x80000000LL ) >> 32)
-
-/* SMMLA */
-#define multAcc_32x32_keep32(a, x, y) \
-    a += (q31_t) (((q63_t) x * y) >> 32)
-
-/* SMMLS */
-#define multSub_32x32_keep32(a, x, y) \
-    a -= (q31_t) (((q63_t) x * y) >> 32)
-
-/* SMMUL */
-#define mult_32x32_keep32(a, x, y) \
-    a = (q31_t) (((q63_t) x * y ) >> 32)
-
-
-#if   defined ( __CC_ARM )
-  /* Enter low optimization region - place directly above function definition */
-  #if defined( __ARM_ARCH_7EM__ )
-    #define LOW_OPTIMIZATION_ENTER \
-       _Pragma ("push")         \
-       _Pragma ("O1")
-  #else
-    #define LOW_OPTIMIZATION_ENTER
-  #endif
-
-  /* Exit low optimization region - place directly after end of function definition */
-  #if defined ( __ARM_ARCH_7EM__ )
-    #define LOW_OPTIMIZATION_EXIT \
-       _Pragma ("pop")
-  #else
-    #define LOW_OPTIMIZATION_EXIT
-  #endif
-
-  /* Enter low optimization region - place directly above function definition */
-  #define IAR_ONLY_LOW_OPTIMIZATION_ENTER
-
-  /* Exit low optimization region - place directly after end of function definition */
-  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
-
-#elif defined (__ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 )
-  #define LOW_OPTIMIZATION_ENTER
-  #define LOW_OPTIMIZATION_EXIT
-  #define IAR_ONLY_LOW_OPTIMIZATION_ENTER
-  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
-
-#elif defined ( __GNUC__ )
-  #define LOW_OPTIMIZATION_ENTER \
-       __attribute__(( optimize("-O1") ))
-  #define LOW_OPTIMIZATION_EXIT
-  #define IAR_ONLY_LOW_OPTIMIZATION_ENTER
-  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
-
-#elif defined ( __ICCARM__ )
-  /* Enter low optimization region - place directly above function definition */
-  #if defined ( __ARM_ARCH_7EM__ )
-    #define LOW_OPTIMIZATION_ENTER \
-       _Pragma ("optimize=low")
-  #else
-    #define LOW_OPTIMIZATION_ENTER
-  #endif
-
-  /* Exit low optimization region - place directly after end of function definition */
-  #define LOW_OPTIMIZATION_EXIT
-
-  /* Enter low optimization region - place directly above function definition */
-  #if defined ( __ARM_ARCH_7EM__ )
-    #define IAR_ONLY_LOW_OPTIMIZATION_ENTER \
-       _Pragma ("optimize=low")
-  #else
-    #define IAR_ONLY_LOW_OPTIMIZATION_ENTER
-  #endif
-
-  /* Exit low optimization region - place directly after end of function definition */
-  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
-
-#elif defined ( __TI_ARM__ )
-  #define LOW_OPTIMIZATION_ENTER
-  #define LOW_OPTIMIZATION_EXIT
-  #define IAR_ONLY_LOW_OPTIMIZATION_ENTER
-  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
-
-#elif defined ( __CSMC__ )
-  #define LOW_OPTIMIZATION_ENTER
-  #define LOW_OPTIMIZATION_EXIT
-  #define IAR_ONLY_LOW_OPTIMIZATION_ENTER
-  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
-
-#elif defined ( __TASKING__ )
-  #define LOW_OPTIMIZATION_ENTER
-  #define LOW_OPTIMIZATION_EXIT
-  #define IAR_ONLY_LOW_OPTIMIZATION_ENTER
-  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
-       
-#elif defined ( _MSC_VER ) || defined(__GNUC_PYTHON__)
-      #define LOW_OPTIMIZATION_ENTER
-      #define LOW_OPTIMIZATION_EXIT
-      #define IAR_ONLY_LOW_OPTIMIZATION_ENTER 
-      #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
-#endif
-
-
-
-/* Compiler specific diagnostic adjustment */
-#if   defined ( __CC_ARM )
-
-#elif defined ( __ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 )
-
-#elif defined ( __GNUC__ )
-#pragma GCC diagnostic pop
-
-#elif defined ( __ICCARM__ )
-
-#elif defined ( __TI_ARM__ )
+//#define TABLE_SPACING_Q31     0x400000
+//#define TABLE_SPACING_Q15     0x80
 
-#elif defined ( __CSMC__ )
 
-#elif defined ( __TASKING__ )
 
-#elif defined ( _MSC_VER )
 
-#else
-  #error Unknown compiler
-#endif
 
 #ifdef   __cplusplus
 }
diff --git a/CMSIS/DSP/Include/arm_math_f16.h b/CMSIS/DSP/Include/arm_math_f16.h
index 0b8c19c..19dabed 100755
--- a/CMSIS/DSP/Include/arm_math_f16.h
+++ b/CMSIS/DSP/Include/arm_math_f16.h
@@ -32,277 +32,22 @@
 {
 #endif
 
-#if !defined( __CC_ARM )
-
-/**
- * @brief 16-bit floating-point type definition.
- * This is already defined in arm_mve.h
- *
- * This is not fully supported on ARM AC5.
- */
-
-/*
-
-Check if the type __fp16 is available.
-If it is not available, f16 version of the kernels
-won't be built.
-
-*/
-#if !(__ARM_FEATURE_MVE & 2) && !(__ARM_NEON)
-  #if defined(__ARM_FP16_FORMAT_IEEE) || defined(__ARM_FP16_FORMAT_ALTERNATIVE)
-  typedef __fp16 float16_t;
-  #define ARM_FLOAT16_SUPPORTED
-  #endif
-#else
-  /* HW Float16 not yet well supported on some configs */
-  #if !defined(__CMSIS_GCC_H) && !defined(DISABLEFLOAT16)
-    #define ARM_FLOAT16_SUPPORTED
-  #endif
-#endif
-
-#if defined(ARM_MATH_NEON) || defined(ARM_MATH_MVEF) /* floating point vector*/
-  
-#if defined(ARM_MATH_MVE_FLOAT16) || defined(ARM_MATH_NEON_FLOAT16)
-  /**
-   * @brief 16-bit floating-point 128-bit vector data type
-   */
-  typedef __ALIGNED(2) float16x8_t f16x8_t;
-
-  /**
-   * @brief 16-bit floating-point 128-bit vector pair data type
-   */
-  typedef float16x8x2_t f16x8x2_t;
-
-  /**
-   * @brief 16-bit floating-point 128-bit vector quadruplet data type
-   */
-  typedef float16x8x4_t f16x8x4_t;
-
-  /**
-   * @brief 16-bit ubiquitous 128-bit vector data type
-   */
-  typedef union _any16x8_t
-  {
-      float16x8_t     f;
-      int16x8_t       i;
-  } any16x8_t;
-#endif
-
-#endif
-
-#if defined(ARM_MATH_NEON)
- 
-
-#if defined(ARM_MATH_NEON_FLOAT16)
-  /**
-   * @brief 16-bit float 64-bit vector data type.
-   */
-  typedef  __ALIGNED(2) float16x4_t f16x4_t;
-
-  /**
-   * @brief 16-bit floating-point 128-bit vector triplet data type
-   */
-  typedef float16x8x3_t f16x8x3_t;
-
-  /**
-   * @brief 16-bit floating-point 64-bit vector pair data type
-   */
-  typedef float16x4x2_t f16x4x2_t;
-
-  /**
-   * @brief 16-bit floating-point 64-bit vector triplet data type
-   */
-  typedef float16x4x3_t f16x4x3_t;
-
-  /**
-   * @brief 16-bit floating-point 64-bit vector quadruplet data type
-   */
-  typedef float16x4x4_t f16x4x4_t;
-
-  /**
-   * @brief 16-bit ubiquitous 64-bit vector data type
-   */
-  typedef union _any16x4_t
-  {
-      float16x4_t     f;
-      int16x4_t       i;
-  } any16x4_t;
-#endif 
-
-#endif
-
-
-
-#if defined(ARM_FLOAT16_SUPPORTED)
-#define F16_MAX   ((float16_t)FLT_MAX)
-#define F16_MIN   (-(float16_t)FLT_MAX)
-
-#define F16_ABSMAX   ((float16_t)FLT_MAX)
-#define F16_ABSMIN   ((float16_t)0.0)
-
-  /**
-   * @brief Floating-point vector addition.
-   * @param[in]  pSrcA      points to the first input vector
-   * @param[in]  pSrcB      points to the second input vector
-   * @param[out] pDst       points to the output vector
-   * @param[in]  blockSize  number of samples in each vector
-   */
-  void arm_add_f16(
-  const float16_t * pSrcA,
-  const float16_t * pSrcB,
-        float16_t * pDst,
-        uint32_t blockSize);
-
-  /**
-   * @brief Floating-point vector subtraction.
-   * @param[in]  pSrcA      points to the first input vector
-   * @param[in]  pSrcB      points to the second input vector
-   * @param[out] pDst       points to the output vector
-   * @param[in]  blockSize  number of samples in each vector
-   */
-  void arm_sub_f16(
-  const float16_t * pSrcA,
-  const float16_t * pSrcB,
-        float16_t * pDst,
-        uint32_t blockSize);
-
-    /**
-   * @brief Multiplies a floating-point vector by a scalar.
-   * @param[in]  pSrc       points to the input vector
-   * @param[in]  scale      scale factor to be applied
-   * @param[out] pDst       points to the output vector
-   * @param[in]  blockSize  number of samples in the vector
-   */
-  void arm_scale_f16(
-  const float16_t * pSrc,
-        float16_t scale,
-        float16_t * pDst,
-        uint32_t blockSize);
-
-    /**
-   * @brief Floating-point vector absolute value.
-   * @param[in]  pSrc       points to the input buffer
-   * @param[out] pDst       points to the output buffer
-   * @param[in]  blockSize  number of samples in each vector
-   */
-  void arm_abs_f16(
-  const float16_t * pSrc,
-        float16_t * pDst,
-        uint32_t blockSize);
-
-
-  /**
-   * @brief  Adds a constant offset to a floating-point vector.
-   * @param[in]  pSrc       points to the input vector
-   * @param[in]  offset     is the offset to be added
-   * @param[out] pDst       points to the output vector
-   * @param[in]  blockSize  number of samples in the vector
-   */
-  void arm_offset_f16(
-  const float16_t * pSrc,
-        float16_t offset,
-        float16_t * pDst,
-        uint32_t blockSize);
-
-  /**
-   * @brief Dot product of floating-point vectors.
-   * @param[in]  pSrcA      points to the first input vector
-   * @param[in]  pSrcB      points to the second input vector
-   * @param[in]  blockSize  number of samples in each vector
-   * @param[out] result     output result returned here
-   */
-  void arm_dot_prod_f16(
-  const float16_t * pSrcA,
-  const float16_t * pSrcB,
-        uint32_t blockSize,
-        float16_t * result);
-
-  /**
-   * @brief Floating-point vector multiplication.
-   * @param[in]  pSrcA      points to the first input vector
-   * @param[in]  pSrcB      points to the second input vector
-   * @param[out] pDst       points to the output vector
-   * @param[in]  blockSize  number of samples in each vector
-   */
-  void arm_mult_f16(
-  const float16_t * pSrcA,
-  const float16_t * pSrcB,
-        float16_t * pDst,
-        uint32_t blockSize);
-
-  /**
-   * @brief  Negates the elements of a floating-point vector.
-   * @param[in]  pSrc       points to the input vector
-   * @param[out] pDst       points to the output vector
-   * @param[in]  blockSize  number of samples in the vector
-   */
-  void arm_negate_f16(
-  const float16_t * pSrc,
-        float16_t * pDst,
-        uint32_t blockSize);
-
-  /**
-   * @brief Instance structure for the floating-point CFFT/CIFFT function.
-   */
-  typedef struct
-  {
-          uint16_t fftLen;                   /**< length of the FFT. */
-          uint8_t ifftFlag;                  /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */
-          uint8_t bitReverseFlag;            /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */
-    const float16_t *pTwiddle;               /**< points to the Twiddle factor table. */
-    const uint16_t *pBitRevTable;            /**< points to the bit reversal table. */
-          uint16_t twidCoefModifier;         /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
-          uint16_t bitRevFactor;             /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */
-          float16_t onebyfftLen;             /**< value of 1/fftLen. */
-  } arm_cfft_radix2_instance_f16;
-
-  /**
-   * @brief Instance structure for the floating-point CFFT/CIFFT function.
-   */
-  typedef struct
-  {
-          uint16_t fftLen;                   /**< length of the FFT. */
-          uint8_t ifftFlag;                  /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */
-          uint8_t bitReverseFlag;            /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */
-    const float16_t *pTwiddle;               /**< points to the Twiddle factor table. */
-    const uint16_t *pBitRevTable;            /**< points to the bit reversal table. */
-          uint16_t twidCoefModifier;         /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
-          uint16_t bitRevFactor;             /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */
-          float16_t onebyfftLen;             /**< value of 1/fftLen. */
-  } arm_cfft_radix4_instance_f16;
-
-  /**
-   * @brief Instance structure for the floating-point CFFT/CIFFT function.
-   */
-  typedef struct
-  {
-          uint16_t fftLen;                   /**< length of the FFT. */
-    const float16_t *pTwiddle;         /**< points to the Twiddle factor table. */
-    const uint16_t *pBitRevTable;      /**< points to the bit reversal table. */
-          uint16_t bitRevLength;             /**< bit reversal table length. */
-#if defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE)
-   const uint32_t *rearranged_twiddle_tab_stride1_arr;        /**< Per stage reordered twiddle pointer (offset 1) */                                                       \
-   const uint32_t *rearranged_twiddle_tab_stride2_arr;        /**< Per stage reordered twiddle pointer (offset 2) */                                                       \
-   const uint32_t *rearranged_twiddle_tab_stride3_arr;        /**< Per stage reordered twiddle pointer (offset 3) */                                                       \
-   const float16_t *rearranged_twiddle_stride1; /**< reordered twiddle offset 1 storage */                                                                   \
-   const float16_t *rearranged_twiddle_stride2; /**< reordered twiddle offset 2 storage */                                                                   \
-   const float16_t *rearranged_twiddle_stride3;
-#endif
-  } arm_cfft_instance_f16;
-
-
-  arm_status arm_cfft_init_f16(
-  arm_cfft_instance_f16 * S,
-  uint16_t fftLen);
-
-  void arm_cfft_f16(
-  const arm_cfft_instance_f16 * S,
-        float16_t * p1,
-        uint8_t ifftFlag,
-        uint8_t bitReverseFlag);
-  
-#endif /* ARM_FLOAT16_SUPPORTED*/
-#endif /* !defined( __CC_ARM ) */
+#include "arm_math_types_f16.h"
+#include "dsp/none.h"
+#include "dsp/utils.h"
+#include "dsp/basic_math_functions_f16.h"
+#include "dsp/interpolation_functions_f16.h"
+#include "dsp/bayes_functions_f16.h"
+#include "dsp/matrix_functions_f16.h"
+#include "dsp/complex_math_functions_f16.h"
+#include "dsp/statistics_functions_f16.h"
+#include "dsp/controller_functions_f16.h"
+#include "dsp/support_functions_f16.h"
+#include "dsp/distance_functions_f16.h"
+#include "dsp/svm_functions_f16.h"
+#include "dsp/fast_math_functions_f16.h"
+#include "dsp/transform_functions_f16.h"
+#include "dsp/filtering_functions_f16.h"
 
 #ifdef   __cplusplus
 }
diff --git a/CMSIS/DSP/Include/arm_math_memory.h b/CMSIS/DSP/Include/arm_math_memory.h
new file mode 100755
index 0000000..c7158dc
--- /dev/null
+++ b/CMSIS/DSP/Include/arm_math_memory.h
@@ -0,0 +1,240 @@
+/******************************************************************************
+ * @file     arm_math_memory.h
+ * @brief    Public header file for CMSIS DSP Library
+ * @version  V1.9.0
+ * @date     20. July 2020
+ ******************************************************************************/
+/*
+ * 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.
+ */
+
+#ifndef _ARM_MATH_MEMORY_H_
+
+#define _ARM_MATH_MEMORY_H_
+
+#include "arm_math_types.h"
+
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+/**
+  @brief definition to read/write two 16 bit values.
+  @deprecated
+ */
+#if   defined ( __CC_ARM )
+  #define __SIMD32_TYPE int32_t __packed
+#elif defined ( __ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 )
+  #define __SIMD32_TYPE int32_t
+#elif defined ( __GNUC__ )
+  #define __SIMD32_TYPE int32_t
+#elif defined ( __ICCARM__ )
+  #define __SIMD32_TYPE int32_t __packed
+#elif defined ( __TI_ARM__ )
+  #define __SIMD32_TYPE int32_t
+#elif defined ( __CSMC__ )
+  #define __SIMD32_TYPE int32_t
+#elif defined ( __TASKING__ )
+  #define __SIMD32_TYPE __un(aligned) int32_t
+#elif defined(_MSC_VER )
+  #define __SIMD32_TYPE int32_t
+#else
+  #error Unknown compiler
+#endif
+
+#define __SIMD32(addr)        (*(__SIMD32_TYPE **) & (addr))
+#define __SIMD32_CONST(addr)  ( (__SIMD32_TYPE * )   (addr))
+#define _SIMD32_OFFSET(addr)  (*(__SIMD32_TYPE * )   (addr))
+#define __SIMD64(addr)        (*(      int64_t **) & (addr))
+
+
+/* SIMD replacement */
+
+
+/**
+  @brief         Read 2 Q15 from Q15 pointer.
+  @param[in]     pQ15      points to input value
+  @return        Q31 value
+ */
+__STATIC_FORCEINLINE q31_t read_q15x2 (
+  q15_t * pQ15)
+{
+  q31_t val;
+
+#ifdef __ARM_FEATURE_UNALIGNED
+  memcpy (&val, pQ15, 4);
+#else
+  val = (pQ15[1] << 16) | (pQ15[0] & 0x0FFFF) ;
+#endif
+
+  return (val);
+}
+
+/**
+  @brief         Read 2 Q15 from Q15 pointer and increment pointer afterwards.
+  @param[in]     pQ15      points to input value
+  @return        Q31 value
+ */
+__STATIC_FORCEINLINE q31_t read_q15x2_ia (
+  q15_t ** pQ15)
+{
+  q31_t val;
+
+#ifdef __ARM_FEATURE_UNALIGNED
+  memcpy (&val, *pQ15, 4);
+#else
+  val = ((*pQ15)[1] << 16) | ((*pQ15)[0] & 0x0FFFF);
+#endif
+
+ *pQ15 += 2;
+ return (val);
+}
+
+/**
+  @brief         Read 2 Q15 from Q15 pointer and decrement pointer afterwards.
+  @param[in]     pQ15      points to input value
+  @return        Q31 value
+ */
+__STATIC_FORCEINLINE q31_t read_q15x2_da (
+  q15_t ** pQ15)
+{
+  q31_t val;
+
+#ifdef __ARM_FEATURE_UNALIGNED
+  memcpy (&val, *pQ15, 4);
+#else
+  val = ((*pQ15)[1] << 16) | ((*pQ15)[0] & 0x0FFFF);
+#endif
+
+  *pQ15 -= 2;
+  return (val);
+}
+
+/**
+  @brief         Write 2 Q15 to Q15 pointer and increment pointer afterwards.
+  @param[in]     pQ15      points to input value
+  @param[in]     value     Q31 value
+  @return        none
+ */
+__STATIC_FORCEINLINE void write_q15x2_ia (
+  q15_t ** pQ15,
+  q31_t    value)
+{
+  q31_t val = value;
+#ifdef __ARM_FEATURE_UNALIGNED
+  memcpy (*pQ15, &val, 4);
+#else
+  (*pQ15)[0] = (val & 0x0FFFF);
+  (*pQ15)[1] = (val >> 16) & 0x0FFFF;
+#endif
+
+ *pQ15 += 2;
+}
+
+/**
+  @brief         Write 2 Q15 to Q15 pointer.
+  @param[in]     pQ15      points to input value
+  @param[in]     value     Q31 value
+  @return        none
+ */
+__STATIC_FORCEINLINE void write_q15x2 (
+  q15_t * pQ15,
+  q31_t   value)
+{
+  q31_t val = value;
+
+#ifdef __ARM_FEATURE_UNALIGNED
+  memcpy (pQ15, &val, 4);
+#else
+  pQ15[0] = val & 0x0FFFF;
+  pQ15[1] = val >> 16;
+#endif
+}
+
+
+/**
+  @brief         Read 4 Q7 from Q7 pointer and increment pointer afterwards.
+  @param[in]     pQ7       points to input value
+  @return        Q31 value
+ */
+__STATIC_FORCEINLINE q31_t read_q7x4_ia (
+  q7_t ** pQ7)
+{
+  q31_t val;
+
+
+#ifdef __ARM_FEATURE_UNALIGNED
+  memcpy (&val, *pQ7, 4);
+#else
+  val =(((*pQ7)[3] & 0x0FF) << 24)  | (((*pQ7)[2] & 0x0FF) << 16)  | (((*pQ7)[1] & 0x0FF) << 8)  | ((*pQ7)[0] & 0x0FF);
+#endif 
+
+  *pQ7 += 4;
+
+  return (val);
+}
+
+/**
+  @brief         Read 4 Q7 from Q7 pointer and decrement pointer afterwards.
+  @param[in]     pQ7       points to input value
+  @return        Q31 value
+ */
+__STATIC_FORCEINLINE q31_t read_q7x4_da (
+  q7_t ** pQ7)
+{
+  q31_t val;
+#ifdef __ARM_FEATURE_UNALIGNED
+  memcpy (&val, *pQ7, 4);
+#else
+  val = ((((*pQ7)[3]) & 0x0FF) << 24) | ((((*pQ7)[2]) & 0x0FF) << 16)   | ((((*pQ7)[1]) & 0x0FF) << 8)  | ((*pQ7)[0] & 0x0FF);
+#endif 
+  *pQ7 -= 4;
+
+  return (val);
+}
+
+/**
+  @brief         Write 4 Q7 to Q7 pointer and increment pointer afterwards.
+  @param[in]     pQ7       points to input value
+  @param[in]     value     Q31 value
+  @return        none
+ */
+__STATIC_FORCEINLINE void write_q7x4_ia (
+  q7_t ** pQ7,
+  q31_t   value)
+{
+  q31_t val = value;
+#ifdef __ARM_FEATURE_UNALIGNED
+  memcpy (*pQ7, &val, 4);
+#else
+  (*pQ7)[0] = val & 0x0FF;
+  (*pQ7)[1] = (val >> 8) & 0x0FF;
+  (*pQ7)[2] = (val >> 16) & 0x0FF;
+  (*pQ7)[3] = (val >> 24) & 0x0FF;
+
+#endif
+  *pQ7 += 4;
+}
+
+
+#ifdef   __cplusplus
+}
+#endif
+
+#endif /*ifndef _ARM_MATH_MEMORY_H_ */
diff --git a/CMSIS/DSP/Include/arm_math_types.h b/CMSIS/DSP/Include/arm_math_types.h
new file mode 100755
index 0000000..95a17e3
--- /dev/null
+++ b/CMSIS/DSP/Include/arm_math_types.h
@@ -0,0 +1,598 @@
+/******************************************************************************
+ * @file     arm_math_types.h
+ * @brief    Public header file for CMSIS DSP Library
+ * @version  V1.9.0
+ * @date     20. July 2020
+ ******************************************************************************/
+/*
+ * 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.
+ */
+
+#ifndef _ARM_MATH_TYPES_H_
+
+#define _ARM_MATH_TYPES_H_
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+/* Compiler specific diagnostic adjustment */
+#if   defined ( __CC_ARM )
+
+#elif defined ( __ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 )
+
+#elif defined ( __GNUC__ )
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wsign-conversion"
+  #pragma GCC diagnostic ignored "-Wconversion"
+  #pragma GCC diagnostic ignored "-Wunused-parameter"
+
+#elif defined ( __ICCARM__ )
+
+#elif defined ( __TI_ARM__ )
+
+#elif defined ( __CSMC__ )
+
+#elif defined ( __TASKING__ )
+
+#elif defined ( _MSC_VER )
+
+#else
+  #error Unknown compiler
+#endif
+
+
+/* Included for instrinsics definitions */
+#if defined (_MSC_VER ) 
+#include <stdint.h>
+#define __STATIC_FORCEINLINE static __forceinline
+#define __STATIC_INLINE static __inline
+#define __ALIGNED(x) __declspec(align(x))
+
+#elif defined (__GNUC_PYTHON__)
+#include <stdint.h>
+#define  __ALIGNED(x) __attribute__((aligned(x)))
+#define __STATIC_FORCEINLINE static __attribute__((inline))
+#define __STATIC_INLINE static __attribute__((inline))
+#pragma GCC diagnostic ignored "-Wunused-function"
+#pragma GCC diagnostic ignored "-Wattributes"
+
+#else
+#include "cmsis_compiler.h"
+#endif
+
+
+
+#include <string.h>
+#include <math.h>
+#include <float.h>
+#include <limits.h>
+
+/* evaluate ARM DSP feature */
+#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1))
+  #define ARM_MATH_DSP                   1
+#endif
+
+#if defined(ARM_MATH_NEON)
+#include <arm_neon.h>
+#if __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
+  #if !defined(ARM_MATH_NEON_FLOAT16)
+  #define ARM_MATH_NEON_FLOAT16
+  #endif
+#endif
+#endif
+
+#if !defined(ARM_MATH_AUTOVECTORIZE)
+
+#if __ARM_FEATURE_MVE
+  #if !defined(ARM_MATH_MVEI)
+    #define ARM_MATH_MVEI
+  #endif
+#endif
+
+#if (__ARM_FEATURE_MVE & 2)
+  #if !defined(ARM_MATH_MVEF)
+    #define ARM_MATH_MVEF
+  #endif
+  #if !defined(ARM_MATH_MVE_FLOAT16)
+  /* HW Float16 not yet well supported on gcc for M55 */
+    #if !defined(__CMSIS_GCC_H)
+       #define ARM_MATH_MVE_FLOAT16
+    #endif
+  #endif
+#endif
+
+#endif /*!defined(ARM_MATH_AUTOVECTORIZE)*/
+
+
+#if defined (ARM_MATH_HELIUM)
+  #if !defined(ARM_MATH_MVEF)
+    #define ARM_MATH_MVEF
+  #endif
+
+  #if !defined(ARM_MATH_MVEI)
+    #define ARM_MATH_MVEI
+  #endif
+
+  #if !defined(ARM_MATH_MVE_FLOAT16)
+    /* HW Float16 not yet well supported on gcc for M55 */
+    #if !defined(__CMSIS_GCC_H)
+       #define ARM_MATH_MVE_FLOAT16
+    #endif
+  #endif
+#endif
+
+
+
+#if   defined ( __CC_ARM )
+  /* Enter low optimization region - place directly above function definition */
+  #if defined( __ARM_ARCH_7EM__ )
+    #define LOW_OPTIMIZATION_ENTER \
+       _Pragma ("push")         \
+       _Pragma ("O1")
+  #else
+    #define LOW_OPTIMIZATION_ENTER
+  #endif
+
+  /* Exit low optimization region - place directly after end of function definition */
+  #if defined ( __ARM_ARCH_7EM__ )
+    #define LOW_OPTIMIZATION_EXIT \
+       _Pragma ("pop")
+  #else
+    #define LOW_OPTIMIZATION_EXIT
+  #endif
+
+  /* Enter low optimization region - place directly above function definition */
+  #define IAR_ONLY_LOW_OPTIMIZATION_ENTER
+
+  /* Exit low optimization region - place directly after end of function definition */
+  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
+
+#elif defined (__ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 )
+  #define LOW_OPTIMIZATION_ENTER
+  #define LOW_OPTIMIZATION_EXIT
+  #define IAR_ONLY_LOW_OPTIMIZATION_ENTER
+  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
+
+#elif defined ( __GNUC__ )
+  #define LOW_OPTIMIZATION_ENTER \
+       __attribute__(( optimize("-O1") ))
+  #define LOW_OPTIMIZATION_EXIT
+  #define IAR_ONLY_LOW_OPTIMIZATION_ENTER
+  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
+
+#elif defined ( __ICCARM__ )
+  /* Enter low optimization region - place directly above function definition */
+  #if defined ( __ARM_ARCH_7EM__ )
+    #define LOW_OPTIMIZATION_ENTER \
+       _Pragma ("optimize=low")
+  #else
+    #define LOW_OPTIMIZATION_ENTER
+  #endif
+
+  /* Exit low optimization region - place directly after end of function definition */
+  #define LOW_OPTIMIZATION_EXIT
+
+  /* Enter low optimization region - place directly above function definition */
+  #if defined ( __ARM_ARCH_7EM__ )
+    #define IAR_ONLY_LOW_OPTIMIZATION_ENTER \
+       _Pragma ("optimize=low")
+  #else
+    #define IAR_ONLY_LOW_OPTIMIZATION_ENTER
+  #endif
+
+  /* Exit low optimization region - place directly after end of function definition */
+  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
+
+#elif defined ( __TI_ARM__ )
+  #define LOW_OPTIMIZATION_ENTER
+  #define LOW_OPTIMIZATION_EXIT
+  #define IAR_ONLY_LOW_OPTIMIZATION_ENTER
+  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
+
+#elif defined ( __CSMC__ )
+  #define LOW_OPTIMIZATION_ENTER
+  #define LOW_OPTIMIZATION_EXIT
+  #define IAR_ONLY_LOW_OPTIMIZATION_ENTER
+  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
+
+#elif defined ( __TASKING__ )
+  #define LOW_OPTIMIZATION_ENTER
+  #define LOW_OPTIMIZATION_EXIT
+  #define IAR_ONLY_LOW_OPTIMIZATION_ENTER
+  #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
+       
+#elif defined ( _MSC_VER ) || defined(__GNUC_PYTHON__)
+      #define LOW_OPTIMIZATION_ENTER
+      #define LOW_OPTIMIZATION_EXIT
+      #define IAR_ONLY_LOW_OPTIMIZATION_ENTER 
+      #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
+#endif
+
+
+
+/* Compiler specific diagnostic adjustment */
+#if   defined ( __CC_ARM )
+
+#elif defined ( __ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 )
+
+#elif defined ( __GNUC__ )
+#pragma GCC diagnostic pop
+
+#elif defined ( __ICCARM__ )
+
+#elif defined ( __TI_ARM__ )
+
+#elif defined ( __CSMC__ )
+
+#elif defined ( __TASKING__ )
+
+#elif defined ( _MSC_VER )
+
+#else
+  #error Unknown compiler
+#endif
+
+#ifdef   __cplusplus
+}
+#endif
+
+#if __ARM_FEATURE_MVE
+#include <arm_mve.h>
+#endif
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+ /**
+   * @brief 8-bit fractional data type in 1.7 format.
+   */
+  typedef int8_t q7_t;
+
+  /**
+   * @brief 16-bit fractional data type in 1.15 format.
+   */
+  typedef int16_t q15_t;
+
+  /**
+   * @brief 32-bit fractional data type in 1.31 format.
+   */
+  typedef int32_t q31_t;
+
+  /**
+   * @brief 64-bit fractional data type in 1.63 format.
+   */
+  typedef int64_t q63_t;
+
+  /**
+   * @brief 32-bit floating-point type definition.
+   */
+  typedef float float32_t;
+
+  /**
+   * @brief 64-bit floating-point type definition.
+   */
+  typedef double float64_t;
+
+  /**
+   * @brief vector types
+   */
+#if defined(ARM_MATH_NEON) || defined (ARM_MATH_MVEI)
+  /**
+   * @brief 64-bit fractional 128-bit vector data type in 1.63 format
+   */
+  typedef int64x2_t q63x2_t;
+
+  /**
+   * @brief 32-bit fractional 128-bit vector data type in 1.31 format.
+   */
+  typedef int32x4_t q31x4_t;
+
+  /**
+   * @brief 16-bit fractional 128-bit vector data type with 16-bit alignement in 1.15 format.
+   */
+  typedef __ALIGNED(2) int16x8_t q15x8_t;
+
+ /**
+   * @brief 8-bit fractional 128-bit vector data type with 8-bit alignement in 1.7 format.
+   */
+  typedef __ALIGNED(1) int8x16_t q7x16_t;
+
+    /**
+   * @brief 32-bit fractional 128-bit vector pair data type in 1.31 format.
+   */
+  typedef int32x4x2_t q31x4x2_t;
+
+  /**
+   * @brief 32-bit fractional 128-bit vector quadruplet data type in 1.31 format.
+   */
+  typedef int32x4x4_t q31x4x4_t;
+
+  /**
+   * @brief 16-bit fractional 128-bit vector pair data type in 1.15 format.
+   */
+  typedef int16x8x2_t q15x8x2_t;
+
+  /**
+   * @brief 16-bit fractional 128-bit vector quadruplet data type in 1.15 format.
+   */
+  typedef int16x8x4_t q15x8x4_t;
+
+  /**
+   * @brief 8-bit fractional 128-bit vector pair data type in 1.7 format.
+   */
+  typedef int8x16x2_t q7x16x2_t;
+
+  /**
+   * @brief 8-bit fractional 128-bit vector quadruplet data type in 1.7 format.
+   */
+   typedef int8x16x4_t q7x16x4_t;
+
+  /**
+   * @brief 32-bit fractional data type in 9.23 format.
+   */
+  typedef int32_t q23_t;
+
+  /**
+   * @brief 32-bit fractional 128-bit vector data type in 9.23 format.
+   */
+  typedef int32x4_t q23x4_t;
+
+  /**
+   * @brief 64-bit status 128-bit vector data type.
+   */
+  typedef int64x2_t status64x2_t;
+
+  /**
+   * @brief 32-bit status 128-bit vector data type.
+   */
+  typedef int32x4_t status32x4_t;
+
+  /**
+   * @brief 16-bit status 128-bit vector data type.
+   */
+  typedef int16x8_t status16x8_t;
+
+  /**
+   * @brief 8-bit status 128-bit vector data type.
+   */
+  typedef int8x16_t status8x16_t;
+
+
+#endif
+
+#if defined(ARM_MATH_NEON) || defined(ARM_MATH_MVEF) /* floating point vector*/
+  /**
+   * @brief 32-bit floating-point 128-bit vector type
+   */
+  typedef float32x4_t f32x4_t;
+
+  /**
+   * @brief 32-bit floating-point 128-bit vector pair data type
+   */
+  typedef float32x4x2_t f32x4x2_t;
+
+  /**
+   * @brief 32-bit floating-point 128-bit vector quadruplet data type
+   */
+  typedef float32x4x4_t f32x4x4_t;
+
+  /**
+   * @brief 32-bit ubiquitous 128-bit vector data type
+   */
+  typedef union _any32x4_t
+  {
+      float32x4_t     f;
+      int32x4_t       i;
+  } any32x4_t;
+
+#endif
+
+#if defined(ARM_MATH_NEON)
+  /**
+   * @brief 32-bit fractional 64-bit vector data type in 1.31 format.
+   */
+  typedef int32x2_t  q31x2_t;
+
+  /**
+   * @brief 16-bit fractional 64-bit vector data type in 1.15 format.
+   */
+  typedef  __ALIGNED(2) int16x4_t q15x4_t;
+
+  /**
+   * @brief 8-bit fractional 64-bit vector data type in 1.7 format.
+   */
+  typedef  __ALIGNED(1) int8x8_t q7x8_t;
+
+  /**
+   * @brief 32-bit float 64-bit vector data type.
+   */
+  typedef float32x2_t  f32x2_t;
+
+  /**
+   * @brief 32-bit floating-point 128-bit vector triplet data type
+   */
+  typedef float32x4x3_t f32x4x3_t;
+
+
+  /**
+   * @brief 32-bit fractional 128-bit vector triplet data type in 1.31 format
+   */
+  typedef int32x4x3_t q31x4x3_t;
+
+  /**
+   * @brief 16-bit fractional 128-bit vector triplet data type in 1.15 format
+   */
+  typedef int16x8x3_t q15x8x3_t;
+
+  /**
+   * @brief 8-bit fractional 128-bit vector triplet data type in 1.7 format
+   */
+  typedef int8x16x3_t q7x16x3_t;
+
+  /**
+   * @brief 32-bit floating-point 64-bit vector pair data type
+   */
+  typedef float32x2x2_t f32x2x2_t;
+
+  /**
+   * @brief 32-bit floating-point 64-bit vector triplet data type
+   */
+  typedef float32x2x3_t f32x2x3_t;
+
+  /**
+   * @brief 32-bit floating-point 64-bit vector quadruplet data type
+   */
+  typedef float32x2x4_t f32x2x4_t;
+
+
+  /**
+   * @brief 32-bit fractional 64-bit vector pair data type in 1.31 format
+   */
+  typedef int32x2x2_t q31x2x2_t;
+
+  /**
+   * @brief 32-bit fractional 64-bit vector triplet data type in 1.31 format
+   */
+  typedef int32x2x3_t q31x2x3_t;
+
+  /**
+   * @brief 32-bit fractional 64-bit vector quadruplet data type in 1.31 format
+   */
+  typedef int32x4x3_t q31x2x4_t;
+
+  /**
+   * @brief 16-bit fractional 64-bit vector pair data type in 1.15 format
+   */
+  typedef int16x4x2_t q15x4x2_t;
+
+  /**
+   * @brief 16-bit fractional 64-bit vector triplet data type in 1.15 format
+   */
+  typedef int16x4x2_t q15x4x3_t;
+
+  /**
+   * @brief 16-bit fractional 64-bit vector quadruplet data type in 1.15 format
+   */
+  typedef int16x4x3_t q15x4x4_t;
+
+  /**
+   * @brief 8-bit fractional 64-bit vector pair data type in 1.7 format
+   */
+  typedef int8x8x2_t q7x8x2_t;
+
+  /**
+   * @brief 8-bit fractional 64-bit vector triplet data type in 1.7 format
+   */
+  typedef int8x8x3_t q7x8x3_t;
+
+  /**
+   * @brief 8-bit fractional 64-bit vector quadruplet data type in 1.7 format
+   */
+  typedef int8x8x4_t q7x8x4_t;
+
+  /**
+   * @brief 32-bit ubiquitous 64-bit vector data type
+   */
+  typedef union _any32x2_t
+  {
+      float32x2_t     f;
+      int32x2_t       i;
+  } any32x2_t;
+
+
+  /**
+   * @brief 32-bit status 64-bit vector data type.
+   */
+  typedef int32x4_t status32x2_t;
+
+  /**
+   * @brief 16-bit status 64-bit vector data type.
+   */
+  typedef int16x8_t status16x4_t;
+
+  /**
+   * @brief 8-bit status 64-bit vector data type.
+   */
+  typedef int8x16_t status8x8_t;
+
+#endif
+
+
+
+
+
+#define F64_MAX   ((float64_t)DBL_MAX)
+#define F32_MAX   ((float32_t)FLT_MAX)
+
+
+
+#define F64_MIN   (-DBL_MAX)
+#define F32_MIN   (-FLT_MAX)
+
+
+
+#define F64_ABSMAX   ((float64_t)DBL_MAX)
+#define F32_ABSMAX   ((float32_t)FLT_MAX)
+
+
+
+#define F64_ABSMIN   ((float64_t)0.0)
+#define F32_ABSMIN   ((float32_t)0.0)
+
+
+#define Q31_MAX   ((q31_t)(0x7FFFFFFFL))
+#define Q15_MAX   ((q15_t)(0x7FFF))
+#define Q7_MAX    ((q7_t)(0x7F))
+#define Q31_MIN   ((q31_t)(0x80000000L))
+#define Q15_MIN   ((q15_t)(0x8000))
+#define Q7_MIN    ((q7_t)(0x80))
+
+#define Q31_ABSMAX   ((q31_t)(0x7FFFFFFFL))
+#define Q15_ABSMAX   ((q15_t)(0x7FFF))
+#define Q7_ABSMAX    ((q7_t)(0x7F))
+#define Q31_ABSMIN   ((q31_t)0)
+#define Q15_ABSMIN   ((q15_t)0)
+#define Q7_ABSMIN    ((q7_t)0)
+
+  /* Dimension C vector space */
+  #define CMPLX_DIM 2
+
+  /**
+   * @brief Error status returned by some functions in the library.
+   */
+
+  typedef enum
+  {
+    ARM_MATH_SUCCESS        =  0,        /**< No error */
+    ARM_MATH_ARGUMENT_ERROR = -1,        /**< One or more arguments are incorrect */
+    ARM_MATH_LENGTH_ERROR   = -2,        /**< Length of data buffer is incorrect */
+    ARM_MATH_SIZE_MISMATCH  = -3,        /**< Size of matrices is not compatible with the operation */
+    ARM_MATH_NANINF         = -4,        /**< Not-a-number (NaN) or infinity is generated */
+    ARM_MATH_SINGULAR       = -5,        /**< Input matrix is singular and cannot be inverted */
+    ARM_MATH_TEST_FAILURE   = -6         /**< Test Failed */
+  } arm_status;
+
+
+#ifdef   __cplusplus
+}
+#endif
+
+#endif /*ifndef _ARM_MATH_TYPES_H_ */
diff --git a/CMSIS/DSP/Include/arm_math_types_f16.h b/CMSIS/DSP/Include/arm_math_types_f16.h
new file mode 100755
index 0000000..6916e45
--- /dev/null
+++ b/CMSIS/DSP/Include/arm_math_types_f16.h
@@ -0,0 +1,154 @@
+/******************************************************************************
+ * @file     arm_math_types_f16.h
+ * @brief    Public header file for f16 function of the CMSIS DSP Library
+ * @version  V1.9.0
+ * @date     20. July 2020
+ ******************************************************************************/
+/*
+ * 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.
+ */
+
+#ifndef _ARM_MATH_TYPES_F16_H
+#define _ARM_MATH_TYPES_F16_H
+
+#include "arm_math_types.h"
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+#if !defined( __CC_ARM )
+
+/**
+ * @brief 16-bit floating-point type definition.
+ * This is already defined in arm_mve.h
+ *
+ * This is not fully supported on ARM AC5.
+ */
+
+/*
+
+Check if the type __fp16 is available.
+If it is not available, f16 version of the kernels
+won't be built.
+
+*/
+#if !(__ARM_FEATURE_MVE & 2) && !(__ARM_NEON)
+  #if defined(__ARM_FP16_FORMAT_IEEE) || defined(__ARM_FP16_FORMAT_ALTERNATIVE)
+  typedef __fp16 float16_t;
+  #define ARM_FLOAT16_SUPPORTED
+  #endif
+#else
+  /* HW Float16 not yet well supported on some configs */
+  #if !defined(DISABLEFLOAT16)
+    #define ARM_FLOAT16_SUPPORTED
+  #endif
+#endif
+
+#if defined(ARM_MATH_NEON) || defined(ARM_MATH_MVEF) /* floating point vector*/
+  
+#if defined(ARM_MATH_MVE_FLOAT16) || defined(ARM_MATH_NEON_FLOAT16)
+  /**
+   * @brief 16-bit floating-point 128-bit vector data type
+   */
+  typedef __ALIGNED(2) float16x8_t f16x8_t;
+
+  /**
+   * @brief 16-bit floating-point 128-bit vector pair data type
+   */
+  typedef float16x8x2_t f16x8x2_t;
+
+  /**
+   * @brief 16-bit floating-point 128-bit vector quadruplet data type
+   */
+  typedef float16x8x4_t f16x8x4_t;
+
+  /**
+   * @brief 16-bit ubiquitous 128-bit vector data type
+   */
+  typedef union _any16x8_t
+  {
+      float16x8_t     f;
+      int16x8_t       i;
+  } any16x8_t;
+#endif
+
+#endif
+
+#if defined(ARM_MATH_NEON)
+ 
+
+#if defined(ARM_MATH_NEON_FLOAT16)
+  /**
+   * @brief 16-bit float 64-bit vector data type.
+   */
+  typedef  __ALIGNED(2) float16x4_t f16x4_t;
+
+  /**
+   * @brief 16-bit floating-point 128-bit vector triplet data type
+   */
+  typedef float16x8x3_t f16x8x3_t;
+
+  /**
+   * @brief 16-bit floating-point 64-bit vector pair data type
+   */
+  typedef float16x4x2_t f16x4x2_t;
+
+  /**
+   * @brief 16-bit floating-point 64-bit vector triplet data type
+   */
+  typedef float16x4x3_t f16x4x3_t;
+
+  /**
+   * @brief 16-bit floating-point 64-bit vector quadruplet data type
+   */
+  typedef float16x4x4_t f16x4x4_t;
+
+  /**
+   * @brief 16-bit ubiquitous 64-bit vector data type
+   */
+  typedef union _any16x4_t
+  {
+      float16x4_t     f;
+      int16x4_t       i;
+  } any16x4_t;
+#endif 
+
+#endif
+
+
+
+#if defined(ARM_FLOAT16_SUPPORTED)
+#define F16_MAX   ((float16_t)FLT_MAX)
+#define F16_MIN   (-(float16_t)FLT_MAX)
+
+#define F16_ABSMAX   ((float16_t)FLT_MAX)
+#define F16_ABSMIN   ((float16_t)0.0)
+
+
+  
+#endif /* ARM_FLOAT16_SUPPORTED*/
+#endif /* !defined( __CC_ARM ) */
+
+#ifdef   __cplusplus
+}
+#endif
+
+#endif /* _ARM_MATH_F16_H */
+
+
diff --git a/CMSIS/DSP/Include/arm_mve_tables.h b/CMSIS/DSP/Include/arm_mve_tables.h
index c9a51a0..6cf8eaf 100755
--- a/CMSIS/DSP/Include/arm_mve_tables.h
+++ b/CMSIS/DSP/Include/arm_mve_tables.h
@@ -29,7 +29,7 @@
  #ifndef _ARM_MVE_TABLES_H
  #define _ARM_MVE_TABLES_H
 
- #include "arm_math.h"
+#include "arm_math_types.h"
 
 #ifdef   __cplusplus
 extern "C"
diff --git a/CMSIS/DSP/Include/arm_mve_tables_f16.h b/CMSIS/DSP/Include/arm_mve_tables_f16.h
index f258d60..a5570cd 100755
--- a/CMSIS/DSP/Include/arm_mve_tables_f16.h
+++ b/CMSIS/DSP/Include/arm_mve_tables_f16.h
@@ -29,7 +29,7 @@
  #ifndef _ARM_MVE_TABLES_F16_H
  #define _ARM_MVE_TABLES_F16_H
 
- #include "arm_math_f16.h"
+#include "arm_math_types_f16.h"
 
 #ifdef   __cplusplus
 extern "C"
diff --git a/CMSIS/DSP/Include/arm_vec_math.h b/CMSIS/DSP/Include/arm_vec_math.h
index 0ce9464..e1f9b6f 100755
--- a/CMSIS/DSP/Include/arm_vec_math.h
+++ b/CMSIS/DSP/Include/arm_vec_math.h
@@ -25,7 +25,7 @@
 #ifndef _ARM_VEC_MATH_H
 #define _ARM_VEC_MATH_H
 
-#include "arm_math.h"
+#include "arm_math_types.h"
 #include "arm_common_tables.h"
 #include "arm_helium_utils.h"
 
diff --git a/CMSIS/DSP/Include/dsp/basic_math_functions.h b/CMSIS/DSP/Include/dsp/basic_math_functions.h
new file mode 100755
index 0000000..b82a6dd
--- /dev/null
+++ b/CMSIS/DSP/Include/dsp/basic_math_functions.h
@@ -0,0 +1,699 @@
+/******************************************************************************
+ * @file     basic_math_functions.h
+ * @brief    Public header file for CMSIS DSP Library
+ * @version  V1.9.0
+ * @date     20. July 2020
+ ******************************************************************************/
+/*
+ * 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.
+ */
+
+ 
+#ifndef _BASIC_MATH_FUNCTIONS_H_
+#define _BASIC_MATH_FUNCTIONS_H_
+
+#include "arm_math_types.h"
+#include "arm_math_memory.h"
+
+#include "dsp/none.h"
+#include "dsp/utils.h"
+
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+/**
+ * @defgroup groupMath Basic Math Functions
+ */
+
+ /**
+   * @brief Q7 vector multiplication.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_mult_q7(
+  const q7_t * pSrcA,
+  const q7_t * pSrcB,
+        q7_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Q15 vector multiplication.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_mult_q15(
+  const q15_t * pSrcA,
+  const q15_t * pSrcB,
+        q15_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Q31 vector multiplication.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_mult_q31(
+  const q31_t * pSrcA,
+  const q31_t * pSrcB,
+        q31_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Floating-point vector multiplication.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_mult_f32(
+  const float32_t * pSrcA,
+  const float32_t * pSrcB,
+        float32_t * pDst,
+        uint32_t blockSize);
+
+
+
+ /**
+   * @brief Floating-point vector addition.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_add_f32(
+  const float32_t * pSrcA,
+  const float32_t * pSrcB,
+        float32_t * pDst,
+        uint32_t blockSize);
+
+
+
+  /**
+   * @brief Q7 vector addition.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_add_q7(
+  const q7_t * pSrcA,
+  const q7_t * pSrcB,
+        q7_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Q15 vector addition.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_add_q15(
+  const q15_t * pSrcA,
+  const q15_t * pSrcB,
+        q15_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Q31 vector addition.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_add_q31(
+  const q31_t * pSrcA,
+  const q31_t * pSrcB,
+        q31_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Floating-point vector subtraction.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_sub_f32(
+  const float32_t * pSrcA,
+  const float32_t * pSrcB,
+        float32_t * pDst,
+        uint32_t blockSize);
+
+
+
+  /**
+   * @brief Q7 vector subtraction.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_sub_q7(
+  const q7_t * pSrcA,
+  const q7_t * pSrcB,
+        q7_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Q15 vector subtraction.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_sub_q15(
+  const q15_t * pSrcA,
+  const q15_t * pSrcB,
+        q15_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Q31 vector subtraction.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_sub_q31(
+  const q31_t * pSrcA,
+  const q31_t * pSrcB,
+        q31_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Multiplies a floating-point vector by a scalar.
+   * @param[in]  pSrc       points to the input vector
+   * @param[in]  scale      scale factor to be applied
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in the vector
+   */
+  void arm_scale_f32(
+  const float32_t * pSrc,
+        float32_t scale,
+        float32_t * pDst,
+        uint32_t blockSize);
+
+
+
+  /**
+   * @brief Multiplies a Q7 vector by a scalar.
+   * @param[in]  pSrc        points to the input vector
+   * @param[in]  scaleFract  fractional portion of the scale value
+   * @param[in]  shift       number of bits to shift the result by
+   * @param[out] pDst        points to the output vector
+   * @param[in]  blockSize   number of samples in the vector
+   */
+  void arm_scale_q7(
+  const q7_t * pSrc,
+        q7_t scaleFract,
+        int8_t shift,
+        q7_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Multiplies a Q15 vector by a scalar.
+   * @param[in]  pSrc        points to the input vector
+   * @param[in]  scaleFract  fractional portion of the scale value
+   * @param[in]  shift       number of bits to shift the result by
+   * @param[out] pDst        points to the output vector
+   * @param[in]  blockSize   number of samples in the vector
+   */
+  void arm_scale_q15(
+  const q15_t * pSrc,
+        q15_t scaleFract,
+        int8_t shift,
+        q15_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Multiplies a Q31 vector by a scalar.
+   * @param[in]  pSrc        points to the input vector
+   * @param[in]  scaleFract  fractional portion of the scale value
+   * @param[in]  shift       number of bits to shift the result by
+   * @param[out] pDst        points to the output vector
+   * @param[in]  blockSize   number of samples in the vector
+   */
+  void arm_scale_q31(
+  const q31_t * pSrc,
+        q31_t scaleFract,
+        int8_t shift,
+        q31_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Q7 vector absolute value.
+   * @param[in]  pSrc       points to the input buffer
+   * @param[out] pDst       points to the output buffer
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_abs_q7(
+  const q7_t * pSrc,
+        q7_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Floating-point vector absolute value.
+   * @param[in]  pSrc       points to the input buffer
+   * @param[out] pDst       points to the output buffer
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_abs_f32(
+  const float32_t * pSrc,
+        float32_t * pDst,
+        uint32_t blockSize);
+
+
+
+
+  /**
+   * @brief Q15 vector absolute value.
+   * @param[in]  pSrc       points to the input buffer
+   * @param[out] pDst       points to the output buffer
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_abs_q15(
+  const q15_t * pSrc,
+        q15_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Q31 vector absolute value.
+   * @param[in]  pSrc       points to the input buffer
+   * @param[out] pDst       points to the output buffer
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_abs_q31(
+  const q31_t * pSrc,
+        q31_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Dot product of floating-point vectors.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[in]  blockSize  number of samples in each vector
+   * @param[out] result     output result returned here
+   */
+  void arm_dot_prod_f32(
+  const float32_t * pSrcA,
+  const float32_t * pSrcB,
+        uint32_t blockSize,
+        float32_t * result);
+
+
+
+  /**
+   * @brief Dot product of Q7 vectors.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[in]  blockSize  number of samples in each vector
+   * @param[out] result     output result returned here
+   */
+  void arm_dot_prod_q7(
+  const q7_t * pSrcA,
+  const q7_t * pSrcB,
+        uint32_t blockSize,
+        q31_t * result);
+
+
+  /**
+   * @brief Dot product of Q15 vectors.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[in]  blockSize  number of samples in each vector
+   * @param[out] result     output result returned here
+   */
+  void arm_dot_prod_q15(
+  const q15_t * pSrcA,
+  const q15_t * pSrcB,
+        uint32_t blockSize,
+        q63_t * result);
+
+
+  /**
+   * @brief Dot product of Q31 vectors.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[in]  blockSize  number of samples in each vector
+   * @param[out] result     output result returned here
+   */
+  void arm_dot_prod_q31(
+  const q31_t * pSrcA,
+  const q31_t * pSrcB,
+        uint32_t blockSize,
+        q63_t * result);
+
+
+  /**
+   * @brief  Shifts the elements of a Q7 vector a specified number of bits.
+   * @param[in]  pSrc       points to the input vector
+   * @param[in]  shiftBits  number of bits to shift.  A positive value shifts left; a negative value shifts right.
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in the vector
+   */
+  void arm_shift_q7(
+  const q7_t * pSrc,
+        int8_t shiftBits,
+        q7_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Shifts the elements of a Q15 vector a specified number of bits.
+   * @param[in]  pSrc       points to the input vector
+   * @param[in]  shiftBits  number of bits to shift.  A positive value shifts left; a negative value shifts right.
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in the vector
+   */
+  void arm_shift_q15(
+  const q15_t * pSrc,
+        int8_t shiftBits,
+        q15_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Shifts the elements of a Q31 vector a specified number of bits.
+   * @param[in]  pSrc       points to the input vector
+   * @param[in]  shiftBits  number of bits to shift.  A positive value shifts left; a negative value shifts right.
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in the vector
+   */
+  void arm_shift_q31(
+  const q31_t * pSrc,
+        int8_t shiftBits,
+        q31_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Adds a constant offset to a floating-point vector.
+   * @param[in]  pSrc       points to the input vector
+   * @param[in]  offset     is the offset to be added
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in the vector
+   */
+  void arm_offset_f32(
+  const float32_t * pSrc,
+        float32_t offset,
+        float32_t * pDst,
+        uint32_t blockSize);
+
+
+
+  /**
+   * @brief  Adds a constant offset to a Q7 vector.
+   * @param[in]  pSrc       points to the input vector
+   * @param[in]  offset     is the offset to be added
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in the vector
+   */
+  void arm_offset_q7(
+  const q7_t * pSrc,
+        q7_t offset,
+        q7_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Adds a constant offset to a Q15 vector.
+   * @param[in]  pSrc       points to the input vector
+   * @param[in]  offset     is the offset to be added
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in the vector
+   */
+  void arm_offset_q15(
+  const q15_t * pSrc,
+        q15_t offset,
+        q15_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Adds a constant offset to a Q31 vector.
+   * @param[in]  pSrc       points to the input vector
+   * @param[in]  offset     is the offset to be added
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in the vector
+   */
+  void arm_offset_q31(
+  const q31_t * pSrc,
+        q31_t offset,
+        q31_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Negates the elements of a floating-point vector.
+   * @param[in]  pSrc       points to the input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in the vector
+   */
+  void arm_negate_f32(
+  const float32_t * pSrc,
+        float32_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Negates the elements of a Q7 vector.
+   * @param[in]  pSrc       points to the input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in the vector
+   */
+  void arm_negate_q7(
+  const q7_t * pSrc,
+        q7_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Negates the elements of a Q15 vector.
+   * @param[in]  pSrc       points to the input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in the vector
+   */
+  void arm_negate_q15(
+  const q15_t * pSrc,
+        q15_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Negates the elements of a Q31 vector.
+   * @param[in]  pSrc       points to the input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in the vector
+   */
+  void arm_negate_q31(
+  const q31_t * pSrc,
+        q31_t * pDst,
+        uint32_t blockSize);
+
+/**
+   * @brief         Compute the logical bitwise AND of two fixed-point vectors.
+   * @param[in]     pSrcA      points to input vector A
+   * @param[in]     pSrcB      points to input vector B
+   * @param[out]    pDst       points to output vector
+   * @param[in]     blockSize  number of samples in each vector
+   * @return        none
+   */
+  void arm_and_u16(
+    const uint16_t * pSrcA,
+    const uint16_t * pSrcB,
+          uint16_t * pDst,
+          uint32_t blockSize);
+
+  /**
+   * @brief         Compute the logical bitwise AND of two fixed-point vectors.
+   * @param[in]     pSrcA      points to input vector A
+   * @param[in]     pSrcB      points to input vector B
+   * @param[out]    pDst       points to output vector
+   * @param[in]     blockSize  number of samples in each vector
+   * @return        none
+   */
+  void arm_and_u32(
+    const uint32_t * pSrcA,
+    const uint32_t * pSrcB,
+          uint32_t * pDst,
+          uint32_t blockSize);
+
+  /**
+   * @brief         Compute the logical bitwise AND of two fixed-point vectors.
+   * @param[in]     pSrcA      points to input vector A
+   * @param[in]     pSrcB      points to input vector B
+   * @param[out]    pDst       points to output vector
+   * @param[in]     blockSize  number of samples in each vector
+   * @return        none
+   */
+  void arm_and_u8(
+    const uint8_t * pSrcA,
+    const uint8_t * pSrcB,
+          uint8_t * pDst,
+          uint32_t blockSize);
+
+  /**
+   * @brief         Compute the logical bitwise OR of two fixed-point vectors.
+   * @param[in]     pSrcA      points to input vector A
+   * @param[in]     pSrcB      points to input vector B
+   * @param[out]    pDst       points to output vector
+   * @param[in]     blockSize  number of samples in each vector
+   * @return        none
+   */
+  void arm_or_u16(
+    const uint16_t * pSrcA,
+    const uint16_t * pSrcB,
+          uint16_t * pDst,
+          uint32_t blockSize);
+
+  /**
+   * @brief         Compute the logical bitwise OR of two fixed-point vectors.
+   * @param[in]     pSrcA      points to input vector A
+   * @param[in]     pSrcB      points to input vector B
+   * @param[out]    pDst       points to output vector
+   * @param[in]     blockSize  number of samples in each vector
+   * @return        none
+   */
+  void arm_or_u32(
+    const uint32_t * pSrcA,
+    const uint32_t * pSrcB,
+          uint32_t * pDst,
+          uint32_t blockSize);
+
+  /**
+   * @brief         Compute the logical bitwise OR of two fixed-point vectors.
+   * @param[in]     pSrcA      points to input vector A
+   * @param[in]     pSrcB      points to input vector B
+   * @param[out]    pDst       points to output vector
+   * @param[in]     blockSize  number of samples in each vector
+   * @return        none
+   */
+  void arm_or_u8(
+    const uint8_t * pSrcA,
+    const uint8_t * pSrcB,
+          uint8_t * pDst,
+          uint32_t blockSize);
+
+  /**
+   * @brief         Compute the logical bitwise NOT of a fixed-point vector.
+   * @param[in]     pSrc       points to input vector 
+   * @param[out]    pDst       points to output vector
+   * @param[in]     blockSize  number of samples in each vector
+   * @return        none
+   */
+  void arm_not_u16(
+    const uint16_t * pSrc,
+          uint16_t * pDst,
+          uint32_t blockSize);
+
+  /**
+   * @brief         Compute the logical bitwise NOT of a fixed-point vector.
+   * @param[in]     pSrc       points to input vector 
+   * @param[out]    pDst       points to output vector
+   * @param[in]     blockSize  number of samples in each vector
+   * @return        none
+   */
+  void arm_not_u32(
+    const uint32_t * pSrc,
+          uint32_t * pDst,
+          uint32_t blockSize);
+
+  /**
+   * @brief         Compute the logical bitwise NOT of a fixed-point vector.
+   * @param[in]     pSrc       points to input vector 
+   * @param[out]    pDst       points to output vector
+   * @param[in]     blockSize  number of samples in each vector
+   * @return        none
+   */
+  void arm_not_u8(
+    const uint8_t * pSrc,
+          uint8_t * pDst,
+          uint32_t blockSize);
+
+/**
+   * @brief         Compute the logical bitwise XOR of two fixed-point vectors.
+   * @param[in]     pSrcA      points to input vector A
+   * @param[in]     pSrcB      points to input vector B
+   * @param[out]    pDst       points to output vector
+   * @param[in]     blockSize  number of samples in each vector
+   * @return        none
+   */
+  void arm_xor_u16(
+    const uint16_t * pSrcA,
+    const uint16_t * pSrcB,
+          uint16_t * pDst,
+          uint32_t blockSize);
+
+  /**
+   * @brief         Compute the logical bitwise XOR of two fixed-point vectors.
+   * @param[in]     pSrcA      points to input vector A
+   * @param[in]     pSrcB      points to input vector B
+   * @param[out]    pDst       points to output vector
+   * @param[in]     blockSize  number of samples in each vector
+   * @return        none
+   */
+  void arm_xor_u32(
+    const uint32_t * pSrcA,
+    const uint32_t * pSrcB,
+          uint32_t * pDst,
+          uint32_t blockSize);
+
+  /**
+   * @brief         Compute the logical bitwise XOR of two fixed-point vectors.
+   * @param[in]     pSrcA      points to input vector A
+   * @param[in]     pSrcB      points to input vector B
+   * @param[out]    pDst       points to output vector
+   * @param[in]     blockSize  number of samples in each vector
+   * @return        none
+   */
+  void arm_xor_u8(
+    const uint8_t * pSrcA,
+    const uint8_t * pSrcB,
+          uint8_t * pDst,
+    uint32_t blockSize);
+
+
+#ifdef   __cplusplus
+}
+#endif
+
+#endif /* ifndef _BASIC_MATH_FUNCTIONS_H_ */
diff --git a/CMSIS/DSP/Include/dsp/basic_math_functions_f16.h b/CMSIS/DSP/Include/dsp/basic_math_functions_f16.h
new file mode 100755
index 0000000..9110998
--- /dev/null
+++ b/CMSIS/DSP/Include/dsp/basic_math_functions_f16.h
@@ -0,0 +1,151 @@
+/******************************************************************************
+ * @file     basic_math_functions_f16.h
+ * @brief    Public header file for CMSIS DSP Library
+ * @version  V1.9.0
+ * @date     20. July 2020
+ ******************************************************************************/
+/*
+ * 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.
+ */
+
+ 
+#ifndef _BASIC_MATH_FUNCTIONS_F16_H_
+#define _BASIC_MATH_FUNCTIONS_F16_H_
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+#include "arm_math_types_f16.h"
+#include "arm_math_memory.h"
+
+#include "dsp/none.h"
+#include "dsp/utils.h"
+
+
+#if defined(ARM_FLOAT16_SUPPORTED)
+
+
+  /**
+   * @brief Floating-point vector addition.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_add_f16(
+  const float16_t * pSrcA,
+  const float16_t * pSrcB,
+        float16_t * pDst,
+        uint32_t blockSize);
+
+  /**
+   * @brief Floating-point vector subtraction.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_sub_f16(
+  const float16_t * pSrcA,
+  const float16_t * pSrcB,
+        float16_t * pDst,
+        uint32_t blockSize);
+
+    /**
+   * @brief Multiplies a floating-point vector by a scalar.
+   * @param[in]  pSrc       points to the input vector
+   * @param[in]  scale      scale factor to be applied
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in the vector
+   */
+  void arm_scale_f16(
+  const float16_t * pSrc,
+        float16_t scale,
+        float16_t * pDst,
+        uint32_t blockSize);
+
+    /**
+   * @brief Floating-point vector absolute value.
+   * @param[in]  pSrc       points to the input buffer
+   * @param[out] pDst       points to the output buffer
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_abs_f16(
+  const float16_t * pSrc,
+        float16_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Adds a constant offset to a floating-point vector.
+   * @param[in]  pSrc       points to the input vector
+   * @param[in]  offset     is the offset to be added
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in the vector
+   */
+  void arm_offset_f16(
+  const float16_t * pSrc,
+        float16_t offset,
+        float16_t * pDst,
+        uint32_t blockSize);
+
+  /**
+   * @brief Dot product of floating-point vectors.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[in]  blockSize  number of samples in each vector
+   * @param[out] result     output result returned here
+   */
+  void arm_dot_prod_f16(
+  const float16_t * pSrcA,
+  const float16_t * pSrcB,
+        uint32_t blockSize,
+        float16_t * result);
+
+  /**
+   * @brief Floating-point vector multiplication.
+   * @param[in]  pSrcA      points to the first input vector
+   * @param[in]  pSrcB      points to the second input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in each vector
+   */
+  void arm_mult_f16(
+  const float16_t * pSrcA,
+  const float16_t * pSrcB,
+        float16_t * pDst,
+        uint32_t blockSize);
+
+  /**
+   * @brief  Negates the elements of a floating-point vector.
+   * @param[in]  pSrc       points to the input vector
+   * @param[out] pDst       points to the output vector
+   * @param[in]  blockSize  number of samples in the vector
+   */
+  void arm_negate_f16(
+  const float16_t * pSrc,
+        float16_t * pDst,
+        uint32_t blockSize);
+
+#endif /* defined(ARM_FLOAT16_SUPPORTED)*/
+
+#ifdef   __cplusplus
+}
+#endif
+
+#endif /* ifndef _BASIC_MATH_FUNCTIONS_F16_H_ */
diff --git a/CMSIS/DSP/Include/dsp/bayes_functions.h b/CMSIS/DSP/Include/dsp/bayes_functions.h
new file mode 100755
index 0000000..050386c
--- /dev/null
+++ b/CMSIS/DSP/Include/dsp/bayes_functions.h
@@ -0,0 +1,86 @@
+/******************************************************************************
+ * @file     bayes_functions.h
+ * @brief    Public header file for CMSIS DSP Library
+ * @version  V1.9.0
+ * @date     20. July 2020
+ ******************************************************************************/
+/*
+ * 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.
+ */
+
+ 
+#ifndef _BAYES_FUNCTIONS_H_
+#define _BAYES_FUNCTIONS_H_
+
+#include "arm_math_types.h"
+#include "arm_math_memory.h"
+
+#include "dsp/none.h"
+#include "dsp/utils.h"
+
+#include "dsp/statistics_functions.h"
+
+/**
+ * @defgroup groupBayes Bayesian estimators
+ *
+ * Implement the naive gaussian Bayes estimator.
+ * The training must be done from scikit-learn.
+ *
+ * The parameters can be easily
+ * generated from the scikit-learn object. Some examples are given in
+ * DSP/Testing/PatternGeneration/Bayes.py
+ */
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+/**
+ * @brief Instance structure for Naive Gaussian Bayesian estimator.
+ */
+typedef struct
+{
+  uint32_t vectorDimension;  /**< Dimension of vector space */
+  uint32_t numberOfClasses;  /**< Number of different classes  */
+  const float32_t *theta;          /**< Mean values for the Gaussians */
+  const float32_t *sigma;          /**< Variances for the Gaussians */
+  const float32_t *classPriors;    /**< Class prior probabilities */
+  float32_t epsilon;         /**< Additive value to variances */
+} arm_gaussian_naive_bayes_instance_f32;
+
+/**
+ * @brief Naive Gaussian Bayesian Estimator
+ *
+ * @param[in]  S         points to a naive bayes instance structure
+ * @param[in]  in        points to the elements of the input vector.
+ * @param[in]  pBuffer   points to a buffer of length numberOfClasses
+ * @return The predicted class
+ *
+ */
+
+
+uint32_t arm_gaussian_naive_bayes_predict_f32(const arm_gaussian_naive_bayes_instance_f32 *S, 
+   const float32_t * in, 
+   float32_t *pBuffer);
+
+
+#ifdef   __cplusplus
+}
+#endif
+
+#endif /* ifndef _BAYES_FUNCTIONS_H_ */
diff --git a/CMSIS/DSP/Include/dsp/bayes_functions_f16.h b/CMSIS/DSP/Include/dsp/bayes_functions_f16.h
new file mode 100755
index 0000000..ac3b833
--- /dev/null
+++ b/CMSIS/DSP/Include/dsp/bayes_functions_f16.h
@@ -0,0 +1,40 @@
+/******************************************************************************
+ * @file     bayes_functions_f16.h
+ * @brief    Public header file for CMSIS DSP Library
+ * @version  V1.9.0
+ * @date     20. July 2020
+ ******************************************************************************/
+/*
+ * 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.
+ */
+
+ 
+#ifndef _BAYES_FUNCTIONS_F16_H_
+#define _BAYES_FUNCTIONS_F16_H_
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+#if defined(ARM_FLOAT16_SUPPORTED)
+#endif /*defined(ARM_FLOAT16_SUPPORTED)*/
+#ifdef   __cplusplus
+}
+#endif
+
+#endif /* ifndef _BAYES_FUNCTIONS_F16_H_ */
diff --git a/CMSIS/DSP/Include/dsp/complex_math_functions.h b/CMSIS/DSP/Include/dsp/complex_math_functions.h
new file mode 100755
index 0000000..4a76532
--- /dev/null
+++ b/CMSIS/DSP/Include/dsp/complex_math_functions.h
@@ -0,0 +1,294 @@
+/******************************************************************************
+ * @file     complex_math_functions.h
+ * @brief    Public header file for CMSIS DSP Library
+ * @version  V1.9.0
+ * @date     20. July 2020
+ ******************************************************************************/
+/*
+ * 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.
+ */
+
+ 
+#ifndef _COMPLEX_MATH_FUNCTIONS_H_
+#define _COMPLEX_MATH_FUNCTIONS_H_
+
+#include "arm_math_types.h"
+#include "arm_math_memory.h"
+
+#include "dsp/none.h"
+#include "dsp/utils.h"
+#include "dsp/fast_math_functions.h"
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+/**
+ * @defgroup groupCmplxMath Complex Math Functions
+ * This set of functions operates on complex data vectors.
+ * The data in the complex arrays is stored in an interleaved fashion
+ * (real, imag, real, imag, ...).
+ * In the API functions, the number of samples in a complex array refers
+ * to the number of complex values; the array contains twice this number of
+ * real values.
+ */
+
+ /**
+   * @brief  Floating-point complex conjugate.
+   * @param[in]  pSrc        points to the input vector
+   * @param[out] pDst        points to the output vector
+   * @param[in]  numSamples  number of complex samples in each vector
+   */
+  void arm_cmplx_conj_f32(
+  const float32_t * pSrc,
+        float32_t * pDst,
+        uint32_t numSamples);
+
+  /**
+   * @brief  Q31 complex conjugate.
+   * @param[in]  pSrc        points to the input vector
+   * @param[out] pDst        points to the output vector
+   * @param[in]  numSamples  number of complex samples in each vector
+   */
+  void arm_cmplx_conj_q31(
+  const q31_t * pSrc,
+        q31_t * pDst,
+        uint32_t numSamples);
+
+
+  /**
+   * @brief  Q15 complex conjugate.
+   * @param[in]  pSrc        points to the input vector
+   * @param[out] pDst        points to the output vector
+   * @param[in]  numSamples  number of complex samples in each vector
+   */
+  void arm_cmplx_conj_q15(
+  const q15_t * pSrc,
+        q15_t * pDst,
+        uint32_t numSamples);
+
+
+  /**
+   * @brief  Floating-point complex magnitude squared
+   * @param[in]  pSrc        points to the complex input vector
+   * @param[out] pDst        points to the real output vector
+   * @param[in]  numSamples  number of complex samples in the input vector
+   */
+  void arm_cmplx_mag_squared_f32(
+  const float32_t * pSrc,
+        float32_t * pDst,
+        uint32_t numSamples);
+
+
+  /**
+   * @brief  Q31 complex magnitude squared
+   * @param[in]  pSrc        points to the complex input vector
+   * @param[out] pDst        points to the real output vector
+   * @param[in]  numSamples  number of complex samples in the input vector
+   */
+  void arm_cmplx_mag_squared_q31(
+  const q31_t * pSrc,
+        q31_t * pDst,
+        uint32_t numSamples);
+
+
+  /**
+   * @brief  Q15 complex magnitude squared
+   * @param[in]  pSrc        points to the complex input vector
+   * @param[out] pDst        points to the real output vector
+   * @param[in]  numSamples  number of complex samples in the input vector
+   */
+  void arm_cmplx_mag_squared_q15(
+  const q15_t * pSrc,
+        q15_t * pDst,
+        uint32_t numSamples);
+
+
+/**
+   * @brief  Floating-point complex magnitude
+   * @param[in]  pSrc        points to the complex input vector
+   * @param[out] pDst        points to the real output vector
+   * @param[in]  numSamples  number of complex samples in the input vector
+   */
+  void arm_cmplx_mag_f32(
+  const float32_t * pSrc,
+        float32_t * pDst,
+        uint32_t numSamples);
+
+
+  /**
+   * @brief  Q31 complex magnitude
+   * @param[in]  pSrc        points to the complex input vector
+   * @param[out] pDst        points to the real output vector
+   * @param[in]  numSamples  number of complex samples in the input vector
+   */
+  void arm_cmplx_mag_q31(
+  const q31_t * pSrc,
+        q31_t * pDst,
+        uint32_t numSamples);
+
+
+  /**
+   * @brief  Q15 complex magnitude
+   * @param[in]  pSrc        points to the complex input vector
+   * @param[out] pDst        points to the real output vector
+   * @param[in]  numSamples  number of complex samples in the input vector
+   */
+  void arm_cmplx_mag_q15(
+  const q15_t * pSrc,
+        q15_t * pDst,
+        uint32_t numSamples);
+
+
+  /**
+   * @brief  Q15 complex dot product
+   * @param[in]  pSrcA       points to the first input vector
+   * @param[in]  pSrcB       points to the second input vector
+   * @param[in]  numSamples  number of complex samples in each vector
+   * @param[out] realResult  real part of the result returned here
+   * @param[out] imagResult  imaginary part of the result returned here
+   */
+  void arm_cmplx_dot_prod_q15(
+  const q15_t * pSrcA,
+  const q15_t * pSrcB,
+        uint32_t numSamples,
+        q31_t * realResult,
+        q31_t * imagResult);
+
+
+  /**
+   * @brief  Q31 complex dot product
+   * @param[in]  pSrcA       points to the first input vector
+   * @param[in]  pSrcB       points to the second input vector
+   * @param[in]  numSamples  number of complex samples in each vector
+   * @param[out] realResult  real part of the result returned here
+   * @param[out] imagResult  imaginary part of the result returned here
+   */
+  void arm_cmplx_dot_prod_q31(
+  const q31_t * pSrcA,
+  const q31_t * pSrcB,
+        uint32_t numSamples,
+        q63_t * realResult,
+        q63_t * imagResult);
+
+
+  /**
+   * @brief  Floating-point complex dot product
+   * @param[in]  pSrcA       points to the first input vector
+   * @param[in]  pSrcB       points to the second input vector
+   * @param[in]  numSamples  number of complex samples in each vector
+   * @param[out] realResult  real part of the result returned here
+   * @param[out] imagResult  imaginary part of the result returned here
+   */
+  void arm_cmplx_dot_prod_f32(
+  const float32_t * pSrcA,
+  const float32_t * pSrcB,
+        uint32_t numSamples,
+        float32_t * realResult,
+        float32_t * imagResult);
+
+
+  /**
+   * @brief  Q15 complex-by-real multiplication
+   * @param[in]  pSrcCmplx   points to the complex input vector
+   * @param[in]  pSrcReal    points to the real input vector
+   * @param[out] pCmplxDst   points to the complex output vector
+   * @param[in]  numSamples  number of samples in each vector
+   */
+  void arm_cmplx_mult_real_q15(
+  const q15_t * pSrcCmplx,
+  const q15_t * pSrcReal,
+        q15_t * pCmplxDst,
+        uint32_t numSamples);
+
+
+  /**
+   * @brief  Q31 complex-by-real multiplication
+   * @param[in]  pSrcCmplx   points to the complex input vector
+   * @param[in]  pSrcReal    points to the real input vector
+   * @param[out] pCmplxDst   points to the complex output vector
+   * @param[in]  numSamples  number of samples in each vector
+   */
+  void arm_cmplx_mult_real_q31(
+  const q31_t * pSrcCmplx,
+  const q31_t * pSrcReal,
+        q31_t * pCmplxDst,
+        uint32_t numSamples);
+
+
+  /**
+   * @brief  Floating-point complex-by-real multiplication
+   * @param[in]  pSrcCmplx   points to the complex input vector
+   * @param[in]  pSrcReal    points to the real input vector
+   * @param[out] pCmplxDst   points to the complex output vector
+   * @param[in]  numSamples  number of samples in each vector
+   */
+  void arm_cmplx_mult_real_f32(
+  const float32_t * pSrcCmplx,
+  const float32_t * pSrcReal,
+        float32_t * pCmplxDst,
+        uint32_t numSamples);
+
+  /**
+   * @brief  Q15 complex-by-complex multiplication
+   * @param[in]  pSrcA       points to the first input vector
+   * @param[in]  pSrcB       points to the second input vector
+   * @param[out] pDst        points to the output vector
+   * @param[in]  numSamples  number of complex samples in each vector
+   */
+  void arm_cmplx_mult_cmplx_q15(
+  const q15_t * pSrcA,
+  const q15_t * pSrcB,
+        q15_t * pDst,
+        uint32_t numSamples);
+
+
+  /**
+   * @brief  Q31 complex-by-complex multiplication
+   * @param[in]  pSrcA       points to the first input vector
+   * @param[in]  pSrcB       points to the second input vector
+   * @param[out] pDst        points to the output vector
+   * @param[in]  numSamples  number of complex samples in each vector
+   */
+  void arm_cmplx_mult_cmplx_q31(
+  const q31_t * pSrcA,
+  const q31_t * pSrcB,
+        q31_t * pDst,
+        uint32_t numSamples);
+
+
+  /**
+   * @brief  Floating-point complex-by-complex multiplication
+   * @param[in]  pSrcA       points to the first input vector
+   * @param[in]  pSrcB       points to the second input vector
+   * @param[out] pDst        points to the output vector
+   * @param[in]  numSamples  number of complex samples in each vector
+   */
+  void arm_cmplx_mult_cmplx_f32(
+  const float32_t * pSrcA,
+  const float32_t * pSrcB,
+        float32_t * pDst,
+        uint32_t numSamples);
+
+
+
+#ifdef   __cplusplus
+}
+#endif
+
+#endif /* ifndef _COMPLEX_MATH_FUNCTIONS_H_ */
diff --git a/CMSIS/DSP/Include/dsp/complex_math_functions_f16.h b/CMSIS/DSP/Include/dsp/complex_math_functions_f16.h
new file mode 100755
index 0000000..37068ba
--- /dev/null
+++ b/CMSIS/DSP/Include/dsp/complex_math_functions_f16.h
@@ -0,0 +1,40 @@
+/******************************************************************************
+ * @file     complex_math_functions_f16.h
+ * @brief    Public header file for CMSIS DSP Library
+ * @version  V1.9.0
+ * @date     20. July 2020
+ ******************************************************************************/
+/*
+ * 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.
+ */
+
+ 
+#ifndef _COMPLEX_MATH_FUNCTIONS_F16_H_
+#define _COMPLEX_MATH_FUNCTIONS_F16_H_
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+#if defined(ARM_FLOAT16_SUPPORTED)
+#endif /*defined(ARM_FLOAT16_SUPPORTED)*/
+#ifdef   __cplusplus
+}
+#endif
+
+#endif /* ifndef _COMPLEX_MATH_FUNCTIONS_F16_H_ */
diff --git a/CMSIS/DSP/Include/dsp/controller_functions.h b/CMSIS/DSP/Include/dsp/controller_functions.h
new file mode 100755
index 0000000..1de68b4
--- /dev/null
+++ b/CMSIS/DSP/Include/dsp/controller_functions.h
@@ -0,0 +1,790 @@
+/******************************************************************************
+ * @file     controller_functions.h
+ * @brief    Public header file for CMSIS DSP Library
+ * @version  V1.9.0
+ * @date     20. July 2020
+ ******************************************************************************/
+/*
+ * 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.
+ */
+
+ 
+#ifndef _CONTROLLER_FUNCTIONS_H_
+#define _CONTROLLER_FUNCTIONS_H_
+
+#include "arm_math_types.h"
+#include "arm_math_memory.h"
+
+#include "dsp/none.h"
+#include "dsp/utils.h"
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+  /**
+   * @brief Macros required for SINE and COSINE Controller functions
+   */
+
+#define CONTROLLER_Q31_SHIFT  (32 - 9)
+  /* 1.31(q31) Fixed value of 2/360 */
+  /* -1 to +1 is divided into 360 values so total spacing is (2/360) */
+#define INPUT_SPACING         0xB60B61
+  
+/**
+ * @defgroup groupController Controller Functions
+ */
+
+
+ /**
+   * @ingroup groupController
+   */
+
+  /**
+   * @addtogroup SinCos
+   * @{
+   */
+
+/**
+   * @brief  Floating-point sin_cos function.
+   * @param[in]  theta   input value in degrees
+   * @param[out] pSinVal  points to the processed sine output.
+   * @param[out] pCosVal  points to the processed cos output.
+   */
+  void arm_sin_cos_f32(
+        float32_t theta,
+        float32_t * pSinVal,
+        float32_t * pCosVal);
+
+
+  /**
+   * @brief  Q31 sin_cos function.
+   * @param[in]  theta    scaled input value in degrees
+   * @param[out] pSinVal  points to the processed sine output.
+   * @param[out] pCosVal  points to the processed cosine output.
+   */
+  void arm_sin_cos_q31(
+        q31_t theta,
+        q31_t * pSinVal,
+        q31_t * pCosVal);
+
+  /**
+   * @} end of SinCos group
+   */
+
+ /**
+   * @ingroup groupController
+   */
+
+/**
+   * @defgroup PID PID Motor Control
+   *
+   * A Proportional Integral Derivative (PID) controller is a generic feedback control
+   * loop mechanism widely used in industrial control systems.
+   * A PID controller is the most commonly used type of feedback controller.
+   *
+   * This set of functions implements (PID) controllers
+   * for Q15, Q31, and floating-point data types.  The functions operate on a single sample
+   * of data and each call to the function returns a single processed value.
+   * <code>S</code> points to an instance of the PID control data structure.  <code>in</code>
+   * is the input sample value. The functions return the output value.
+   *
+   * \par Algorithm:
+   * <pre>
+   *    y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2]
+   *    A0 = Kp + Ki + Kd
+   *    A1 = (-Kp ) - (2 * Kd )
+   *    A2 = Kd
+   * </pre>
+   *
+   * \par
+   * where \c Kp is proportional constant, \c Ki is Integral constant and \c Kd is Derivative constant
+   *
+   * \par
+   * \image html PID.gif "Proportional Integral Derivative Controller"
+   *
+   * \par
+   * The PID controller calculates an "error" value as the difference between
+   * the measured output and the reference input.
+   * The controller attempts to minimize the error by adjusting the process control inputs.
+   * The proportional value determines the reaction to the current error,
+   * the integral value determines the reaction based on the sum of recent errors,
+   * and the derivative value determines the reaction based on the rate at which the error has been changing.
+   *
+   * \par Instance Structure
+   * The Gains A0, A1, A2 and state variables for a PID controller are stored together in an instance data structure.
+   * A separate instance structure must be defined for each PID Controller.
+   * There are separate instance structure declarations for each of the 3 supported data types.
+   *
+   * \par Reset Functions
+   * There is also an associated reset function for each data type which clears the state array.
+   *
+   * \par Initialization Functions
+   * There is also an associated initialization function for each data type.
+   * The initialization function performs the following operations:
+   * - Initializes the Gains A0, A1, A2 from Kp,Ki, Kd gains.
+   * - Zeros out the values in the state buffer.
+   *
+   * \par
+   * Instance structure cannot be placed into a const data section and it is recommended to use the initialization function.
+   *
+   * \par Fixed-Point Behavior
+   * Care must be taken when using the fixed-point versions of the PID Controller functions.
+   * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered.
+   * Refer to the function specific documentation below for usage guidelines.
+   */
+
+
+  /**
+   * @brief Instance structure for the Q15 PID Control.
+   */
+  typedef struct
+  {
+          q15_t A0;           /**< The derived gain, A0 = Kp + Ki + Kd . */
+#if !defined (ARM_MATH_DSP)
+          q15_t A1;           /**< The derived gain A1 = -Kp - 2Kd */
+          q15_t A2;           /**< The derived gain A1 = Kd. */
+#else
+          q31_t A1;           /**< The derived gain A1 = -Kp - 2Kd | Kd.*/
+#endif
+          q15_t state[3];     /**< The state array of length 3. */
+          q15_t Kp;           /**< The proportional gain. */
+          q15_t Ki;           /**< The integral gain. */
+          q15_t Kd;           /**< The derivative gain. */
+  } arm_pid_instance_q15;
+
+  /**
+   * @brief Instance structure for the Q31 PID Control.
+   */
+  typedef struct
+  {
+          q31_t A0;            /**< The derived gain, A0 = Kp + Ki + Kd . */
+          q31_t A1;            /**< The derived gain, A1 = -Kp - 2Kd. */
+          q31_t A2;            /**< The derived gain, A2 = Kd . */
+          q31_t state[3];      /**< The state array of length 3. */
+          q31_t Kp;            /**< The proportional gain. */
+          q31_t Ki;            /**< The integral gain. */
+          q31_t Kd;            /**< The derivative gain. */
+  } arm_pid_instance_q31;
+
+  /**
+   * @brief Instance structure for the floating-point PID Control.
+   */
+  typedef struct
+  {
+          float32_t A0;          /**< The derived gain, A0 = Kp + Ki + Kd . */
+          float32_t A1;          /**< The derived gain, A1 = -Kp - 2Kd. */
+          float32_t A2;          /**< The derived gain, A2 = Kd . */
+          float32_t state[3];    /**< The state array of length 3. */
+          float32_t Kp;          /**< The proportional gain. */
+          float32_t Ki;          /**< The integral gain. */
+          float32_t Kd;          /**< The derivative gain. */
+  } arm_pid_instance_f32;
+
+
+
+  /**
+   * @brief  Initialization function for the floating-point PID Control.
+   * @param[in,out] S               points to an instance of the PID structure.
+   * @param[in]     resetStateFlag  flag to reset the state. 0 = no change in state 1 = reset the state.
+   */
+  void arm_pid_init_f32(
+        arm_pid_instance_f32 * S,
+        int32_t resetStateFlag);
+
+
+  /**
+   * @brief  Reset function for the floating-point PID Control.
+   * @param[in,out] S  is an instance of the floating-point PID Control structure
+   */
+  void arm_pid_reset_f32(
+        arm_pid_instance_f32 * S);
+
+
+  /**
+   * @brief  Initialization function for the Q31 PID Control.
+   * @param[in,out] S               points to an instance of the Q15 PID structure.
+   * @param[in]     resetStateFlag  flag to reset the state. 0 = no change in state 1 = reset the state.
+   */
+  void arm_pid_init_q31(
+        arm_pid_instance_q31 * S,
+        int32_t resetStateFlag);
+
+
+  /**
+   * @brief  Reset function for the Q31 PID Control.
+   * @param[in,out] S   points to an instance of the Q31 PID Control structure
+   */
+
+  void arm_pid_reset_q31(
+        arm_pid_instance_q31 * S);
+
+
+  /**
+   * @brief  Initialization function for the Q15 PID Control.
+   * @param[in,out] S               points to an instance of the Q15 PID structure.
+   * @param[in]     resetStateFlag  flag to reset the state. 0 = no change in state 1 = reset the state.
+   */
+  void arm_pid_init_q15(
+        arm_pid_instance_q15 * S,
+        int32_t resetStateFlag);
+
+
+  /**
+   * @brief  Reset function for the Q15 PID Control.
+   * @param[in,out] S  points to an instance of the q15 PID Control structure
+   */
+  void arm_pid_reset_q15(
+        arm_pid_instance_q15 * S);
+
+
+
+  /**
+   * @addtogroup PID
+   * @{
+   */
+
+  /**
+   * @brief         Process function for the floating-point PID Control.
+   * @param[in,out] S   is an instance of the floating-point PID Control structure
+   * @param[in]     in  input sample to process
+   * @return        processed output sample.
+   */
+  __STATIC_FORCEINLINE float32_t arm_pid_f32(
+  arm_pid_instance_f32 * S,
+  float32_t in)
+  {
+    float32_t out;
+
+    /* y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2]  */
+    out = (S->A0 * in) +
+      (S->A1 * S->state[0]) + (S->A2 * S->state[1]) + (S->state[2]);
+
+    /* Update state */
+    S->state[1] = S->state[0];
+    S->state[0] = in;
+    S->state[2] = out;
+
+    /* return to application */
+    return (out);
+
+  }
+
+/**
+  @brief         Process function for the Q31 PID Control.
+  @param[in,out] S  points to an instance of the Q31 PID Control structure
+  @param[in]     in  input sample to process
+  @return        processed output sample.
+
+  \par Scaling and Overflow Behavior
+         The function is implemented using an internal 64-bit accumulator.
+         The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit.
+         Thus, if the accumulator result overflows it wraps around rather than clip.
+         In order to avoid overflows completely the input signal must be scaled down by 2 bits as there are four additions.
+         After all multiply-accumulates are performed, the 2.62 accumulator is truncated to 1.32 format and then saturated to 1.31 format.
+ */
+__STATIC_FORCEINLINE q31_t arm_pid_q31(
+  arm_pid_instance_q31 * S,
+  q31_t in)
+  {
+    q63_t acc;
+    q31_t out;
+
+    /* acc = A0 * x[n]  */
+    acc = (q63_t) S->A0 * in;
+
+    /* acc += A1 * x[n-1] */
+    acc += (q63_t) S->A1 * S->state[0];
+
+    /* acc += A2 * x[n-2]  */
+    acc += (q63_t) S->A2 * S->state[1];
+
+    /* convert output to 1.31 format to add y[n-1] */
+    out = (q31_t) (acc >> 31U);
+
+    /* out += y[n-1] */
+    out += S->state[2];
+
+    /* Update state */
+    S->state[1] = S->state[0];
+    S->state[0] = in;
+    S->state[2] = out;
+
+    /* return to application */
+    return (out);
+  }
+
+
+/**
+  @brief         Process function for the Q15 PID Control.
+  @param[in,out] S   points to an instance of the Q15 PID Control structure
+  @param[in]     in  input sample to process
+  @return        processed output sample.
+
+  \par Scaling and Overflow Behavior
+         The function is implemented using a 64-bit internal accumulator.
+         Both Gains and state variables are represented in 1.15 format and multiplications yield a 2.30 result.
+         The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format.
+         There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved.
+         After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits.
+         Lastly, the accumulator is saturated to yield a result in 1.15 format.
+ */
+__STATIC_FORCEINLINE q15_t arm_pid_q15(
+  arm_pid_instance_q15 * S,
+  q15_t in)
+  {
+    q63_t acc;
+    q15_t out;
+
+#if defined (ARM_MATH_DSP)
+    /* Implementation of PID controller */
+
+    /* acc = A0 * x[n]  */
+    acc = (q31_t) __SMUAD((uint32_t)S->A0, (uint32_t)in);
+
+    /* acc += A1 * x[n-1] + A2 * x[n-2]  */
+    acc = (q63_t)__SMLALD((uint32_t)S->A1, (uint32_t)read_q15x2 (S->state), (uint64_t)acc);
+#else
+    /* acc = A0 * x[n]  */
+    acc = ((q31_t) S->A0) * in;
+
+    /* acc += A1 * x[n-1] + A2 * x[n-2]  */
+    acc += (q31_t) S->A1 * S->state[0];
+    acc += (q31_t) S->A2 * S->state[1];
+#endif
+
+    /* acc += y[n-1] */
+    acc += (q31_t) S->state[2] << 15;
+
+    /* saturate the output */
+    out = (q15_t) (__SSAT((q31_t)(acc >> 15), 16));
+
+    /* Update state */
+    S->state[1] = S->state[0];
+    S->state[0] = in;
+    S->state[2] = out;
+
+    /* return to application */
+    return (out);
+  }
+
+  /**
+   * @} end of PID group
+   */
+
+  /**
+   * @ingroup groupController
+   */
+
+  /**
+   * @defgroup park Vector Park Transform
+   *
+   * Forward Park transform converts the input two-coordinate vector to flux and torque components.
+   * The Park transform can be used to realize the transformation of the <code>Ialpha</code> and the <code>Ibeta</code> currents
+   * from the stationary to the moving reference frame and control the spatial relationship between
+   * the stator vector current and rotor flux vector.
+   * If we consider the d axis aligned with the rotor flux, the diagram below shows the
+   * current vector and the relationship from the two reference frames:
+   * \image html park.gif "Stator current space vector and its component in (a,b) and in the d,q rotating reference frame"
+   *
+   * The function operates on a single sample of data and each call to the function returns the processed output.
+   * The library provides separate functions for Q31 and floating-point data types.
+   * \par Algorithm
+   * \image html parkFormula.gif
+   * where <code>Ialpha</code> and <code>Ibeta</code> are the stator vector components,
+   * <code>pId</code> and <code>pIq</code> are rotor vector components and <code>cosVal</code> and <code>sinVal</code> are the
+   * cosine and sine values of theta (rotor flux position).
+   * \par Fixed-Point Behavior
+   * Care must be taken when using the Q31 version of the Park transform.
+   * In particular, the overflow and saturation behavior of the accumulator used must be considered.
+   * Refer to the function specific documentation below for usage guidelines.
+   */
+
+  /**
+   * @addtogroup park
+   * @{
+   */
+
+  /**
+   * @brief Floating-point Park transform
+   * @param[in]  Ialpha  input two-phase vector coordinate alpha
+   * @param[in]  Ibeta   input two-phase vector coordinate beta
+   * @param[out] pId     points to output   rotor reference frame d
+   * @param[out] pIq     points to output   rotor reference frame q
+   * @param[in]  sinVal  sine value of rotation angle theta
+   * @param[in]  cosVal  cosine value of rotation angle theta
+   * @return     none
+   *
+   * The function implements the forward Park transform.
+   *
+   */
+  __STATIC_FORCEINLINE void arm_park_f32(
+  float32_t Ialpha,
+  float32_t Ibeta,
+  float32_t * pId,
+  float32_t * pIq,
+  float32_t sinVal,
+  float32_t cosVal)
+  {
+    /* Calculate pId using the equation, pId = Ialpha * cosVal + Ibeta * sinVal */
+    *pId = Ialpha * cosVal + Ibeta * sinVal;
+
+    /* Calculate pIq using the equation, pIq = - Ialpha * sinVal + Ibeta * cosVal */
+    *pIq = -Ialpha * sinVal + Ibeta * cosVal;
+  }
+
+
+/**
+  @brief  Park transform for Q31 version
+  @param[in]  Ialpha  input two-phase vector coordinate alpha
+  @param[in]  Ibeta   input two-phase vector coordinate beta
+  @param[out] pId     points to output rotor reference frame d
+  @param[out] pIq     points to output rotor reference frame q
+  @param[in]  sinVal  sine value of rotation angle theta
+  @param[in]  cosVal  cosine value of rotation angle theta
+  @return     none
+
+  \par Scaling and Overflow Behavior
+         The function is implemented using an internal 32-bit accumulator.
+         The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format.
+         There is saturation on the addition and subtraction, hence there is no risk of overflow.
+ */
+__STATIC_FORCEINLINE void arm_park_q31(
+  q31_t Ialpha,
+  q31_t Ibeta,
+  q31_t * pId,
+  q31_t * pIq,
+  q31_t sinVal,
+  q31_t cosVal)
+  {
+    q31_t product1, product2;                    /* Temporary variables used to store intermediate results */
+    q31_t product3, product4;                    /* Temporary variables used to store intermediate results */
+
+    /* Intermediate product is calculated by (Ialpha * cosVal) */
+    product1 = (q31_t) (((q63_t) (Ialpha) * (cosVal)) >> 31);
+
+    /* Intermediate product is calculated by (Ibeta * sinVal) */
+    product2 = (q31_t) (((q63_t) (Ibeta) * (sinVal)) >> 31);
+
+
+    /* Intermediate product is calculated by (Ialpha * sinVal) */
+    product3 = (q31_t) (((q63_t) (Ialpha) * (sinVal)) >> 31);
+
+    /* Intermediate product is calculated by (Ibeta * cosVal) */
+    product4 = (q31_t) (((q63_t) (Ibeta) * (cosVal)) >> 31);
+
+    /* Calculate pId by adding the two intermediate products 1 and 2 */
+    *pId = __QADD(product1, product2);
+
+    /* Calculate pIq by subtracting the two intermediate products 3 from 4 */
+    *pIq = __QSUB(product4, product3);
+  }
+
+  /**
+   * @} end of park group
+   */
+
+
+  /**
+   * @ingroup groupController
+   */
+
+  /**
+   * @defgroup inv_park Vector Inverse Park transform
+   * Inverse Park transform converts the input flux and torque components to two-coordinate vector.
+   *
+   * The function operates on a single sample of data and each call to the function returns the processed output.
+   * The library provides separate functions for Q31 and floating-point data types.
+   * \par Algorithm
+   * \image html parkInvFormula.gif
+   * where <code>pIalpha</code> and <code>pIbeta</code> are the stator vector components,
+   * <code>Id</code> and <code>Iq</code> are rotor vector components and <code>cosVal</code> and <code>sinVal</code> are the
+   * cosine and sine values of theta (rotor flux position).
+   * \par Fixed-Point Behavior
+   * Care must be taken when using the Q31 version of the Park transform.
+   * In particular, the overflow and saturation behavior of the accumulator used must be considered.
+   * Refer to the function specific documentation below for usage guidelines.
+   */
+
+  /**
+   * @addtogroup inv_park
+   * @{
+   */
+
+   /**
+   * @brief  Floating-point Inverse Park transform
+   * @param[in]  Id       input coordinate of rotor reference frame d
+   * @param[in]  Iq       input coordinate of rotor reference frame q
+   * @param[out] pIalpha  points to output two-phase orthogonal vector axis alpha
+   * @param[out] pIbeta   points to output two-phase orthogonal vector axis beta
+   * @param[in]  sinVal   sine value of rotation angle theta
+   * @param[in]  cosVal   cosine value of rotation angle theta
+   * @return     none
+   */
+  __STATIC_FORCEINLINE void arm_inv_park_f32(
+  float32_t Id,
+  float32_t Iq,
+  float32_t * pIalpha,
+  float32_t * pIbeta,
+  float32_t sinVal,
+  float32_t cosVal)
+  {
+    /* Calculate pIalpha using the equation, pIalpha = Id * cosVal - Iq * sinVal */
+    *pIalpha = Id * cosVal - Iq * sinVal;
+
+    /* Calculate pIbeta using the equation, pIbeta = Id * sinVal + Iq * cosVal */
+    *pIbeta = Id * sinVal + Iq * cosVal;
+  }
+
+
+/**
+  @brief  Inverse Park transform for   Q31 version
+  @param[in]  Id       input coordinate of rotor reference frame d
+  @param[in]  Iq       input coordinate of rotor reference frame q
+  @param[out] pIalpha  points to output two-phase orthogonal vector axis alpha
+  @param[out] pIbeta   points to output two-phase orthogonal vector axis beta
+  @param[in]  sinVal   sine value of rotation angle theta
+  @param[in]  cosVal   cosine value of rotation angle theta
+  @return     none
+
+  @par Scaling and Overflow Behavior
+         The function is implemented using an internal 32-bit accumulator.
+         The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format.
+         There is saturation on the addition, hence there is no risk of overflow.
+ */
+__STATIC_FORCEINLINE void arm_inv_park_q31(
+  q31_t Id,
+  q31_t Iq,
+  q31_t * pIalpha,
+  q31_t * pIbeta,
+  q31_t sinVal,
+  q31_t cosVal)
+  {
+    q31_t product1, product2;                    /* Temporary variables used to store intermediate results */
+    q31_t product3, product4;                    /* Temporary variables used to store intermediate results */
+
+    /* Intermediate product is calculated by (Id * cosVal) */
+    product1 = (q31_t) (((q63_t) (Id) * (cosVal)) >> 31);
+
+    /* Intermediate product is calculated by (Iq * sinVal) */
+    product2 = (q31_t) (((q63_t) (Iq) * (sinVal)) >> 31);
+
+
+    /* Intermediate product is calculated by (Id * sinVal) */
+    product3 = (q31_t) (((q63_t) (Id) * (sinVal)) >> 31);
+
+    /* Intermediate product is calculated by (Iq * cosVal) */
+    product4 = (q31_t) (((q63_t) (Iq) * (cosVal)) >> 31);
+
+    /* Calculate pIalpha by using the two intermediate products 1 and 2 */
+    *pIalpha = __QSUB(product1, product2);
+
+    /* Calculate pIbeta by using the two intermediate products 3 and 4 */
+    *pIbeta = __QADD(product4, product3);
+  }
+
+  /**
+   * @} end of Inverse park group
+   */
+
+/**
+   * @ingroup groupController
+   */
+
+  /**
+   * @defgroup clarke Vector Clarke Transform
+   * Forward Clarke transform converts the instantaneous stator phases into a two-coordinate time invariant vector.
+   * Generally the Clarke transform uses three-phase currents <code>Ia, Ib and Ic</code> to calculate currents
+   * in the two-phase orthogonal stator axis <code>Ialpha</code> and <code>Ibeta</code>.
+   * When <code>Ialpha</code> is superposed with <code>Ia</code> as shown in the figure below
+   * \image html clarke.gif Stator current space vector and its components in (a,b).
+   * and <code>Ia + Ib + Ic = 0</code>, in this condition <code>Ialpha</code> and <code>Ibeta</code>
+   * can be calculated using only <code>Ia</code> and <code>Ib</code>.
+   *
+   * The function operates on a single sample of data and each call to the function returns the processed output.
+   * The library provides separate functions for Q31 and floating-point data types.
+   * \par Algorithm
+   * \image html clarkeFormula.gif
+   * where <code>Ia</code> and <code>Ib</code> are the instantaneous stator phases and
+   * <code>pIalpha</code> and <code>pIbeta</code> are the two coordinates of time invariant vector.
+   * \par Fixed-Point Behavior
+   * Care must be taken when using the Q31 version of the Clarke transform.
+   * In particular, the overflow and saturation behavior of the accumulator used must be considered.
+   * Refer to the function specific documentation below for usage guidelines.
+   */
+
+  /**
+   * @addtogroup clarke
+   * @{
+   */
+
+  /**
+   *
+   * @brief  Floating-point Clarke transform
+   * @param[in]  Ia       input three-phase coordinate <code>a</code>
+   * @param[in]  Ib       input three-phase coordinate <code>b</code>
+   * @param[out] pIalpha  points to output two-phase orthogonal vector axis alpha
+   * @param[out] pIbeta   points to output two-phase orthogonal vector axis beta
+   * @return        none
+   */
+  __STATIC_FORCEINLINE void arm_clarke_f32(
+  float32_t Ia,
+  float32_t Ib,
+  float32_t * pIalpha,
+  float32_t * pIbeta)
+  {
+    /* Calculate pIalpha using the equation, pIalpha = Ia */
+    *pIalpha = Ia;
+
+    /* Calculate pIbeta using the equation, pIbeta = (1/sqrt(3)) * Ia + (2/sqrt(3)) * Ib */
+    *pIbeta = (0.57735026919f * Ia + 1.15470053838f * Ib);
+  }
+
+
+/**
+  @brief  Clarke transform for Q31 version
+  @param[in]  Ia       input three-phase coordinate <code>a</code>
+  @param[in]  Ib       input three-phase coordinate <code>b</code>
+  @param[out] pIalpha  points to output two-phase orthogonal vector axis alpha
+  @param[out] pIbeta   points to output two-phase orthogonal vector axis beta
+  @return     none
+
+  \par Scaling and Overflow Behavior
+         The function is implemented using an internal 32-bit accumulator.
+         The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format.
+         There is saturation on the addition, hence there is no risk of overflow.
+ */
+__STATIC_FORCEINLINE void arm_clarke_q31(
+  q31_t Ia,
+  q31_t Ib,
+  q31_t * pIalpha,
+  q31_t * pIbeta)
+  {
+    q31_t product1, product2;                    /* Temporary variables used to store intermediate results */
+
+    /* Calculating pIalpha from Ia by equation pIalpha = Ia */
+    *pIalpha = Ia;
+
+    /* Intermediate product is calculated by (1/(sqrt(3)) * Ia) */
+    product1 = (q31_t) (((q63_t) Ia * 0x24F34E8B) >> 30);
+
+    /* Intermediate product is calculated by (2/sqrt(3) * Ib) */
+    product2 = (q31_t) (((q63_t) Ib * 0x49E69D16) >> 30);
+
+    /* pIbeta is calculated by adding the intermediate products */
+    *pIbeta = __QADD(product1, product2);
+  }
+
+  /**
+   * @} end of clarke group
+   */
+
+
+  /**
+   * @ingroup groupController
+   */
+
+  /**
+   * @defgroup inv_clarke Vector Inverse Clarke Transform
+   * Inverse Clarke transform converts the two-coordinate time invariant vector into instantaneous stator phases.
+   *
+   * The function operates on a single sample of data and each call to the function returns the processed output.
+   * The library provides separate functions for Q31 and floating-point data types.
+   * \par Algorithm
+   * \image html clarkeInvFormula.gif
+   * where <code>pIa</code> and <code>pIb</code> are the instantaneous stator phases and
+   * <code>Ialpha</code> and <code>Ibeta</code> are the two coordinates of time invariant vector.
+   * \par Fixed-Point Behavior
+   * Care must be taken when using the Q31 version of the Clarke transform.
+   * In particular, the overflow and saturation behavior of the accumulator used must be considered.
+   * Refer to the function specific documentation below for usage guidelines.
+   */
+
+  /**
+   * @addtogroup inv_clarke
+   * @{
+   */
+
+   /**
+   * @brief  Floating-point Inverse Clarke transform
+   * @param[in]  Ialpha  input two-phase orthogonal vector axis alpha
+   * @param[in]  Ibeta   input two-phase orthogonal vector axis beta
+   * @param[out] pIa     points to output three-phase coordinate <code>a</code>
+   * @param[out] pIb     points to output three-phase coordinate <code>b</code>
+   * @return     none
+   */
+  __STATIC_FORCEINLINE void arm_inv_clarke_f32(
+  float32_t Ialpha,
+  float32_t Ibeta,
+  float32_t * pIa,
+  float32_t * pIb)
+  {
+    /* Calculating pIa from Ialpha by equation pIa = Ialpha */
+    *pIa = Ialpha;
+
+    /* Calculating pIb from Ialpha and Ibeta by equation pIb = -(1/2) * Ialpha + (sqrt(3)/2) * Ibeta */
+    *pIb = -0.5f * Ialpha + 0.8660254039f * Ibeta;
+  }
+
+
+/**
+  @brief  Inverse Clarke transform for Q31 version
+  @param[in]  Ialpha  input two-phase orthogonal vector axis alpha
+  @param[in]  Ibeta   input two-phase orthogonal vector axis beta
+  @param[out] pIa     points to output three-phase coordinate <code>a</code>
+  @param[out] pIb     points to output three-phase coordinate <code>b</code>
+  @return     none
+
+  \par Scaling and Overflow Behavior
+         The function is implemented using an internal 32-bit accumulator.
+         The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format.
+         There is saturation on the subtraction, hence there is no risk of overflow.
+ */
+__STATIC_FORCEINLINE void arm_inv_clarke_q31(
+  q31_t Ialpha,
+  q31_t Ibeta,
+  q31_t * pIa,
+  q31_t * pIb)
+  {
+    q31_t product1, product2;                    /* Temporary variables used to store intermediate results */
+
+    /* Calculating pIa from Ialpha by equation pIa = Ialpha */
+    *pIa = Ialpha;
+
+    /* Intermediate product is calculated by (1/(2*sqrt(3)) * Ia) */
+    product1 = (q31_t) (((q63_t) (Ialpha) * (0x40000000)) >> 31);
+
+    /* Intermediate product is calculated by (1/sqrt(3) * pIb) */
+    product2 = (q31_t) (((q63_t) (Ibeta) * (0x6ED9EBA1)) >> 31);
+
+    /* pIb is calculated by subtracting the products */
+    *pIb = __QSUB(product2, product1);
+  }
+
+  /**
+   * @} end of inv_clarke group
+   */
+
+
+
+  
+#ifdef   __cplusplus
+}
+#endif
+
+#endif /* ifndef _CONTROLLER_FUNCTIONS_H_ */
diff --git a/CMSIS/DSP/Include/dsp/controller_functions_f16.h b/CMSIS/DSP/Include/dsp/controller_functions_f16.h
new file mode 100755
index 0000000..a76e1f6
--- /dev/null
+++ b/CMSIS/DSP/Include/dsp/controller_functions_f16.h
@@ -0,0 +1,40 @@
+/******************************************************************************
+ * @file     controller_functions_f16.h
+ * @brief    Public header file for CMSIS DSP Library
+ * @version  V1.9.0
+ * @date     20. July 2020
+ ******************************************************************************/
+/*
+ * 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.
+ */
+
+ 
+#ifndef _CONTROLLER_FUNCTIONS_F16_H_
+#define _CONTROLLER_FUNCTIONS_F16_H_
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+#if defined(ARM_FLOAT16_SUPPORTED)
+#endif /*defined(ARM_FLOAT16_SUPPORTED)*/
+#ifdef   __cplusplus
+}
+#endif
+
+#endif /* ifndef _CONTROLLER_FUNCTIONS_F16_H_ */
diff --git a/CMSIS/DSP/Include/dsp/distance_functions.h b/CMSIS/DSP/Include/dsp/distance_functions.h
new file mode 100755
index 0000000..daaa67e
--- /dev/null
+++ b/CMSIS/DSP/Include/dsp/distance_functions.h
@@ -0,0 +1,289 @@
+/******************************************************************************
+ * @file     distance_functions.h
+ * @brief    Public header file for CMSIS DSP Library
+ * @version  V1.9.0
+ * @date     20. July 2020
+ ******************************************************************************/
+/*
+ * 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.
+ */
+
+ 
+#ifndef _DISTANCE_FUNCTIONS_H_
+#define _DISTANCE_FUNCTIONS_H_
+
+#include "arm_math_types.h"
+#include "arm_math_memory.h"
+
+#include "dsp/none.h"
+#include "dsp/utils.h"
+
+#include "dsp/statistics_functions.h"
+#include "dsp/basic_math_functions.h"
+#include "dsp/fast_math_functions.h"
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+
+/**
+ * @defgroup groupDistance Distance functions
+ *
+ * Distance functions for use with clustering algorithms.
+ * There are distance functions for float vectors and boolean vectors.
+ *
+ */
+
+/**
+ * @brief        Euclidean distance between two vectors
+ * @param[in]    pA         First vector
+ * @param[in]    pB         Second vector
+ * @param[in]    blockSize  vector length
+ * @return distance
+ *
+ */
+
+float32_t arm_euclidean_distance_f32(const float32_t *pA,const float32_t *pB, uint32_t blockSize);
+
+/**
+ * @brief        Bray-Curtis distance between two vectors
+ * @param[in]    pA         First vector
+ * @param[in]    pB         Second vector
+ * @param[in]    blockSize  vector length
+ * @return distance
+ *
+ */
+float32_t arm_braycurtis_distance_f32(const float32_t *pA,const float32_t *pB, uint32_t blockSize);
+
+/**
+ * @brief        Canberra distance between two vectors
+ *
+ * This function may divide by zero when samples pA[i] and pB[i] are both zero.
+ * The result of the computation will be correct. So the division per zero may be
+ * ignored.
+ *
+ * @param[in]    pA         First vector
+ * @param[in]    pB         Second vector
+ * @param[in]    blockSize  vector length
+ * @return distance
+ *
+ */
+float32_t arm_canberra_distance_f32(const float32_t *pA,const float32_t *pB, uint32_t blockSize);
+
+
+/**
+ * @brief        Chebyshev distance between two vectors
+ * @param[in]    pA         First vector
+ * @param[in]    pB         Second vector
+ * @param[in]    blockSize  vector length
+ * @return distance
+ *
+ */
+float32_t arm_chebyshev_distance_f32(const float32_t *pA,const float32_t *pB, uint32_t blockSize);
+
+
+/**
+ * @brief        Cityblock (Manhattan) distance between two vectors
+ * @param[in]    pA         First vector
+ * @param[in]    pB         Second vector
+ * @param[in]    blockSize  vector length
+ * @return distance
+ *
+ */
+float32_t arm_cityblock_distance_f32(const float32_t *pA,const float32_t *pB, uint32_t blockSize);
+
+/**
+ * @brief        Correlation distance between two vectors
+ *
+ * The input vectors are modified in place !
+ *
+ * @param[in]    pA         First vector
+ * @param[in]    pB         Second vector
+ * @param[in]    blockSize  vector length
+ * @return distance
+ *
+ */
+float32_t arm_correlation_distance_f32(float32_t *pA,float32_t *pB, uint32_t blockSize);
+
+/**
+ * @brief        Cosine distance between two vectors
+ *
+ * @param[in]    pA         First vector
+ * @param[in]    pB         Second vector
+ * @param[in]    blockSize  vector length
+ * @return distance
+ *
+ */
+
+float32_t arm_cosine_distance_f32(const float32_t *pA,const float32_t *pB, uint32_t blockSize);
+
+/**
+ * @brief        Jensen-Shannon distance between two vectors
+ *
+ * This function is assuming that elements of second vector are > 0
+ * and 0 only when the corresponding element of first vector is 0.
+ * Otherwise the result of the computation does not make sense
+ * and for speed reasons, the cases returning NaN or Infinity are not
+ * managed.
+ *
+ * When the function is computing x log (x / y) with x 0 and y 0,
+ * it will compute the right value (0) but a division per zero will occur
+ * and shoudl be ignored in client code.
+ *
+ * @param[in]    pA         First vector
+ * @param[in]    pB         Second vector
+ * @param[in]    blockSize  vector length
+ * @return distance
+ *
+ */
+
+float32_t arm_jensenshannon_distance_f32(const float32_t *pA,const float32_t *pB,uint32_t blockSize);
+
+/**
+ * @brief        Minkowski distance between two vectors
+ *
+ * @param[in]    pA         First vector
+ * @param[in]    pB         Second vector
+ * @param[in]    n          Norm order (>= 2)
+ * @param[in]    blockSize  vector length
+ * @return distance
+ *
+ */
+
+
+
+float32_t arm_minkowski_distance_f32(const float32_t *pA,const float32_t *pB, int32_t order, uint32_t blockSize);
+
+/**
+ * @brief        Dice distance between two vectors
+ *
+ * @param[in]    pA              First vector of packed booleans
+ * @param[in]    pB              Second vector of packed booleans
+ * @param[in]    order           Distance order
+ * @param[in]    blockSize       Number of samples
+ * @return distance
+ *
+ */
+
+
+float32_t arm_dice_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools);
+
+/**
+ * @brief        Hamming distance between two vectors
+ *
+ * @param[in]    pA              First vector of packed booleans
+ * @param[in]    pB              Second vector of packed booleans
+ * @param[in]    numberOfBools   Number of booleans
+ * @return distance
+ *
+ */
+
+float32_t arm_hamming_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools);
+
+/**
+ * @brief        Jaccard distance between two vectors
+ *
+ * @param[in]    pA              First vector of packed booleans
+ * @param[in]    pB              Second vector of packed booleans
+ * @param[in]    numberOfBools   Number of booleans
+ * @return distance
+ *
+ */
+
+float32_t arm_jaccard_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools);
+
+/**
+ * @brief        Kulsinski distance between two vectors
+ *
+ * @param[in]    pA              First vector of packed booleans
+ * @param[in]    pB              Second vector of packed booleans
+ * @param[in]    numberOfBools   Number of booleans
+ * @return distance
+ *
+ */
+
+float32_t arm_kulsinski_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools);
+
+/**
+ * @brief        Roger Stanimoto distance between two vectors
+ *
+ * @param[in]    pA              First vector of packed booleans
+ * @param[in]    pB              Second vector of packed booleans
+ * @param[in]    numberOfBools   Number of booleans
+ * @return distance
+ *
+ */
+
+float32_t arm_rogerstanimoto_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools);
+
+/**
+ * @brief        Russell-Rao distance between two vectors
+ *
+ * @param[in]    pA              First vector of packed booleans
+ * @param[in]    pB              Second vector of packed booleans
+ * @param[in]    numberOfBools   Number of booleans
+ * @return distance
+ *
+ */
+
+float32_t arm_russellrao_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools);
+
+/**
+ * @brief        Sokal-Michener distance between two vectors
+ *
+ * @param[in]    pA              First vector of packed booleans
+ * @param[in]    pB              Second vector of packed booleans
+ * @param[in]    numberOfBools   Number of booleans
+ * @return distance
+ *
+ */
+
+float32_t arm_sokalmichener_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools);
+
+/**
+ * @brief        Sokal-Sneath distance between two vectors
+ *
+ * @param[in]    pA              First vector of packed booleans
+ * @param[in]    pB              Second vector of packed booleans
+ * @param[in]    numberOfBools   Number of booleans
+ * @return distance
+ *
+ */
+
+float32_t arm_sokalsneath_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools);
+
+/**
+ * @brief        Yule distance between two vectors
+ *
+ * @param[in]    pA              First vector of packed booleans
+ * @param[in]    pB              Second vector of packed booleans
+ * @param[in]    numberOfBools   Number of booleans
+ * @return distance
+ *
+ */
+
+float32_t arm_yule_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools);
+
+
+
+#ifdef   __cplusplus
+}
+#endif
+
+#endif /* ifndef _DISTANCE_FUNCTIONS_H_ */
diff --git a/CMSIS/DSP/Include/dsp/distance_functions_f16.h b/CMSIS/DSP/Include/dsp/distance_functions_f16.h
new file mode 100755
index 0000000..7c05a18
--- /dev/null
+++ b/CMSIS/DSP/Include/dsp/distance_functions_f16.h
@@ -0,0 +1,40 @@
+/******************************************************************************
+ * @file     distance_functions_f16.h
+ * @brief    Public header file for CMSIS DSP Library
+ * @version  V1.9.0
+ * @date     20. July 2020
+ ******************************************************************************/
+/*
+ * 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.
+ */
+
+ 
+#ifndef _DISTANCE_FUNCTIONS_F16_H_
+#define _DISTANCE_FUNCTIONS_F16_H_
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+#if defined(ARM_FLOAT16_SUPPORTED)
+#endif /*defined(ARM_FLOAT16_SUPPORTED)*/
+#ifdef   __cplusplus
+}
+#endif
+
+#endif /* ifndef _DISTANCE_FUNCTIONS_F16_H_ */
diff --git a/CMSIS/DSP/Include/dsp/fast_math_functions.h b/CMSIS/DSP/Include/dsp/fast_math_functions.h
new file mode 100755
index 0000000..42c9ca7
--- /dev/null
+++ b/CMSIS/DSP/Include/dsp/fast_math_functions.h
@@ -0,0 +1,286 @@
+/******************************************************************************
+ * @file     fast_math_functions.h
+ * @brief    Public header file for CMSIS DSP Library
+ * @version  V1.9.0
+ * @date     20. July 2020
+ ******************************************************************************/
+/*
+ * 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.
+ */
+
+ 
+#ifndef _FAST_MATH_FUNCTIONS_H_
+#define _FAST_MATH_FUNCTIONS_H_
+
+#include "arm_math_types.h"
+#include "arm_math_memory.h"
+
+#include "dsp/none.h"
+#include "dsp/utils.h"
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+  /**
+   * @brief Macros required for SINE and COSINE Fast math approximations
+   */
+
+#define FAST_MATH_TABLE_SIZE  512
+#define FAST_MATH_Q31_SHIFT   (32 - 10)
+#define FAST_MATH_Q15_SHIFT   (16 - 10)
+  
+#ifndef PI
+  #define PI               3.14159265358979f
+#endif
+
+
+/**
+ * @defgroup groupFastMath Fast Math Functions
+ * This set of functions provides a fast approximation to sine, cosine, and square root.
+ * As compared to most of the other functions in the CMSIS math library, the fast math functions
+ * operate on individual values and not arrays.
+ * There are separate functions for Q15, Q31, and floating-point data.
+ *
+ */
+
+  /**
+   * @ingroup groupFastMath
+   */
+
+/**
+  @addtogroup sin
+  @{
+ */
+
+/**
+   * @brief  Fast approximation to the trigonometric sine function for floating-point data.
+   * @param[in] x  input value in radians.
+   * @return  sin(x).
+   */
+  float32_t arm_sin_f32(
+  float32_t x);
+
+
+  /**
+   * @brief  Fast approximation to the trigonometric sine function for Q31 data.
+   * @param[in] x  Scaled input value in radians.
+   * @return  sin(x).
+   */
+  q31_t arm_sin_q31(
+  q31_t x);
+
+
+  /**
+   * @brief  Fast approximation to the trigonometric sine function for Q15 data.
+   * @param[in] x  Scaled input value in radians.
+   * @return  sin(x).
+   */
+  q15_t arm_sin_q15(
+  q15_t x);
+
+/**
+  @} end of sin group
+ */
+
+/**
+  @addtogroup cos
+  @{
+ */
+
+  /**
+   * @brief  Fast approximation to the trigonometric cosine function for floating-point data.
+   * @param[in] x  input value in radians.
+   * @return  cos(x).
+   */
+  float32_t arm_cos_f32(
+  float32_t x);
+
+
+  /**
+   * @brief Fast approximation to the trigonometric cosine function for Q31 data.
+   * @param[in] x  Scaled input value in radians.
+   * @return  cos(x).
+   */
+  q31_t arm_cos_q31(
+  q31_t x);
+
+
+  /**
+   * @brief  Fast approximation to the trigonometric cosine function for Q15 data.
+   * @param[in] x  Scaled input value in radians.
+   * @return  cos(x).
+   */
+  q15_t arm_cos_q15(
+  q15_t x);
+
+/**
+  @} end of cos group
+ */
+
+
+/**
+  @brief         Floating-point vector of log values.
+  @param[in]     pSrc       points to the input vector
+  @param[out]    pDst       points to the output vector
+  @param[in]     blockSize  number of samples in each vector
+  @return        none
+ */
+  void arm_vlog_f32(
+  const float32_t * pSrc,
+        float32_t * pDst,
+        uint32_t blockSize);
+
+/**
+  @brief         Floating-point vector of exp values.
+  @param[in]     pSrc       points to the input vector
+  @param[out]    pDst       points to the output vector
+  @param[in]     blockSize  number of samples in each vector
+  @return        none
+ */
+  void arm_vexp_f32(
+  const float32_t * pSrc,
+        float32_t * pDst,
+        uint32_t blockSize);
+
+ /**
+   * @defgroup SQRT Square Root
+   *
+   * Computes the square root of a number.
+   * There are separate functions for Q15, Q31, and floating-point data types.
+   * The square root function is computed using the Newton-Raphson algorithm.
+   * This is an iterative algorithm of the form:
+   * <pre>
+   *      x1 = x0 - f(x0)/f'(x0)
+   * </pre>
+   * where <code>x1</code> is the current estimate,
+   * <code>x0</code> is the previous estimate, and
+   * <code>f'(x0)</code> is the derivative of <code>f()</code> evaluated at <code>x0</code>.
+   * For the square root function, the algorithm reduces to:
+   * <pre>
+   *     x0 = in/2                         [initial guess]
+   *     x1 = 1/2 * ( x0 + in / x0)        [each iteration]
+   * </pre>
+   */
+
+
+  /**
+   * @addtogroup SQRT
+   * @{
+   */
+
+/**
+  @brief         Floating-point square root function.
+  @param[in]     in    input value
+  @param[out]    pOut  square root of input value
+  @return        execution status
+                   - \ref ARM_MATH_SUCCESS        : input value is positive
+                   - \ref ARM_MATH_ARGUMENT_ERROR : input value is negative; *pOut is set to 0
+ */
+__STATIC_FORCEINLINE arm_status arm_sqrt_f32(
+  float32_t in,
+  float32_t * pOut)
+  {
+    if (in >= 0.0f)
+    {
+#if defined ( __CC_ARM )
+  #if defined __TARGET_FPU_VFP
+      *pOut = __sqrtf(in);
+  #else
+      *pOut = sqrtf(in);
+  #endif
+
+#elif defined ( __ICCARM__ )
+  #if defined __ARMVFP__
+      __ASM("VSQRT.F32 %0,%1" : "=t"(*pOut) : "t"(in));
+  #else
+      *pOut = sqrtf(in);
+  #endif
+
+#else
+      *pOut = sqrtf(in);
+#endif
+
+      return (ARM_MATH_SUCCESS);
+    }
+    else
+    {
+      *pOut = 0.0f;
+      return (ARM_MATH_ARGUMENT_ERROR);
+    }
+  }
+
+
+/**
+  @brief         Q31 square root function.
+  @param[in]     in    input value.  The range of the input value is [0 +1) or 0x00000000 to 0x7FFFFFFF
+  @param[out]    pOut  points to square root of input value
+  @return        execution status
+                   - \ref ARM_MATH_SUCCESS        : input value is positive
+                   - \ref ARM_MATH_ARGUMENT_ERROR : input value is negative; *pOut is set to 0
+ */
+arm_status arm_sqrt_q31(
+  q31_t in,
+  q31_t * pOut);
+
+
+/**
+  @brief         Q15 square root function.
+  @param[in]     in    input value.  The range of the input value is [0 +1) or 0x0000 to 0x7FFF
+  @param[out]    pOut  points to square root of input value
+  @return        execution status
+                   - \ref ARM_MATH_SUCCESS        : input value is positive
+                   - \ref ARM_MATH_ARGUMENT_ERROR : input value is negative; *pOut is set to 0
+ */
+arm_status arm_sqrt_q15(
+  q15_t in,
+  q15_t * pOut);
+
+  /**
+   * @brief  Vector Floating-point square root function.
+   * @param[in]  pIn   input vector.
+   * @param[out] pOut  vector of square roots of input elements.
+   * @param[in]  len   length of input vector.
+   * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if
+   * <code>in</code> is negative value and returns zero output for negative values.
+   */
+  void arm_vsqrt_f32(
+  float32_t * pIn,
+  float32_t * pOut,
+  uint16_t len);
+
+  void arm_vsqrt_q31(
+  q31_t * pIn,
+  q31_t * pOut,
+  uint16_t len);
+
+  void arm_vsqrt_q15(
+  q15_t * pIn,
+  q15_t * pOut,
+  uint16_t len);
+
+  /**
+   * @} end of SQRT group
+   */
+
+
+#ifdef   __cplusplus
+}
+#endif
+
+#endif /* ifndef _FAST_MATH_FUNCTIONS_H_ */
diff --git a/CMSIS/DSP/Include/dsp/fast_math_functions_f16.h b/CMSIS/DSP/Include/dsp/fast_math_functions_f16.h
new file mode 100755
index 0000000..e3da907
--- /dev/null
+++ b/CMSIS/DSP/Include/dsp/fast_math_functions_f16.h
@@ -0,0 +1,40 @@
+/******************************************************************************
+ * @file     fast_math_functions_f16.h
+ * @brief    Public header file for CMSIS DSP Library
+ * @version  V1.9.0
+ * @date     20. July 2020
+ ******************************************************************************/
+/*
+ * 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.
+ */
+
+ 
+#ifndef _FAST_MATH_FUNCTIONS_F16_H_
+#define _FAST_MATH_FUNCTIONS_F16_H_
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+#if defined(ARM_FLOAT16_SUPPORTED)
+#endif /*defined(ARM_FLOAT16_SUPPORTED)*/
+#ifdef   __cplusplus
+}
+#endif
+
+#endif /* ifndef _FAST_MATH_FUNCTIONS_F16_H_ */
diff --git a/CMSIS/DSP/Include/dsp/filtering_functions.h b/CMSIS/DSP/Include/dsp/filtering_functions.h
new file mode 100755
index 0000000..0cbd7cf
--- /dev/null
+++ b/CMSIS/DSP/Include/dsp/filtering_functions.h
@@ -0,0 +1,2439 @@
+/******************************************************************************
+ * @file     filtering_functions.h
+ * @brief    Public header file for CMSIS DSP Library
+ * @version  V1.9.0
+ * @date     20. July 2020
+ ******************************************************************************/
+/*
+ * 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.
+ */
+
+ 
+#ifndef _FILTERING_FUNCTIONS_H_
+#define _FILTERING_FUNCTIONS_H_
+
+#include "arm_math_types.h"
+#include "arm_math_memory.h"
+
+#include "dsp/none.h"
+#include "dsp/utils.h"
+
+#include "dsp/support_functions.h"
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+#define DELTA_Q31          ((q31_t)(0x100))
+#define DELTA_Q15          ((q15_t)0x5)
+
+/**
+ * @defgroup groupFilters Filtering Functions
+ */
+    
+  /**
+   * @brief Instance structure for the Q7 FIR filter.
+   */
+  typedef struct
+  {
+          uint16_t numTaps;        /**< number of filter coefficients in the filter. */
+          q7_t *pState;            /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
+    const q7_t *pCoeffs;           /**< points to the coefficient array. The array is of length numTaps.*/
+  } arm_fir_instance_q7;
+
+  /**
+   * @brief Instance structure for the Q15 FIR filter.
+   */
+  typedef struct
+  {
+          uint16_t numTaps;         /**< number of filter coefficients in the filter. */
+          q15_t *pState;            /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
+    const q15_t *pCoeffs;           /**< points to the coefficient array. The array is of length numTaps.*/
+  } arm_fir_instance_q15;
+
+  /**
+   * @brief Instance structure for the Q31 FIR filter.
+   */
+  typedef struct
+  {
+          uint16_t numTaps;         /**< number of filter coefficients in the filter. */
+          q31_t *pState;            /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
+    const q31_t *pCoeffs;           /**< points to the coefficient array. The array is of length numTaps. */
+  } arm_fir_instance_q31;
+
+  /**
+   * @brief Instance structure for the floating-point FIR filter.
+   */
+  typedef struct
+  {
+          uint16_t numTaps;     /**< number of filter coefficients in the filter. */
+          float32_t *pState;    /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
+    const float32_t *pCoeffs;   /**< points to the coefficient array. The array is of length numTaps. */
+  } arm_fir_instance_f32;
+
+  /**
+   * @brief Processing function for the Q7 FIR filter.
+   * @param[in]  S          points to an instance of the Q7 FIR filter structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_fir_q7(
+  const arm_fir_instance_q7 * S,
+  const q7_t * pSrc,
+        q7_t * pDst,
+        uint32_t blockSize);
+
+  /**
+   * @brief  Initialization function for the Q7 FIR filter.
+   * @param[in,out] S          points to an instance of the Q7 FIR structure.
+   * @param[in]     numTaps    Number of filter coefficients in the filter.
+   * @param[in]     pCoeffs    points to the filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     blockSize  number of samples that are processed.
+   *
+   * For the MVE version, the coefficient length must be a multiple of 16.
+   * You can pad with zeros if you have less coefficients.
+   */
+  void arm_fir_init_q7(
+        arm_fir_instance_q7 * S,
+        uint16_t numTaps,
+  const q7_t * pCoeffs,
+        q7_t * pState,
+        uint32_t blockSize);
+
+  /**
+   * @brief Processing function for the Q15 FIR filter.
+   * @param[in]  S          points to an instance of the Q15 FIR structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_fir_q15(
+  const arm_fir_instance_q15 * S,
+  const q15_t * pSrc,
+        q15_t * pDst,
+        uint32_t blockSize);
+
+  /**
+   * @brief Processing function for the fast Q15 FIR filter (fast version).
+   * @param[in]  S          points to an instance of the Q15 FIR filter structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_fir_fast_q15(
+  const arm_fir_instance_q15 * S,
+  const q15_t * pSrc,
+        q15_t * pDst,
+        uint32_t blockSize);
+
+  /**
+   * @brief  Initialization function for the Q15 FIR filter.
+   * @param[in,out] S          points to an instance of the Q15 FIR filter structure.
+   * @param[in]     numTaps    Number of filter coefficients in the filter. Must be even and greater than or equal to 4.
+   * @param[in]     pCoeffs    points to the filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     blockSize  number of samples that are processed at a time.
+   * @return     The function returns either
+   * <code>ARM_MATH_SUCCESS</code> if initialization was successful or
+   * <code>ARM_MATH_ARGUMENT_ERROR</code> if <code>numTaps</code> is not a supported value.
+   *
+   * For the MVE version, the coefficient length must be a multiple of 8.
+   * You can pad with zeros if you have less coefficients.
+   *
+   */
+  arm_status arm_fir_init_q15(
+        arm_fir_instance_q15 * S,
+        uint16_t numTaps,
+  const q15_t * pCoeffs,
+        q15_t * pState,
+        uint32_t blockSize);
+
+  /**
+   * @brief Processing function for the Q31 FIR filter.
+   * @param[in]  S          points to an instance of the Q31 FIR filter structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_fir_q31(
+  const arm_fir_instance_q31 * S,
+  const q31_t * pSrc,
+        q31_t * pDst,
+        uint32_t blockSize);
+
+  /**
+   * @brief Processing function for the fast Q31 FIR filter (fast version).
+   * @param[in]  S          points to an instance of the Q31 FIR filter structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_fir_fast_q31(
+  const arm_fir_instance_q31 * S,
+  const q31_t * pSrc,
+        q31_t * pDst,
+        uint32_t blockSize);
+
+  /**
+   * @brief  Initialization function for the Q31 FIR filter.
+   * @param[in,out] S          points to an instance of the Q31 FIR structure.
+   * @param[in]     numTaps    Number of filter coefficients in the filter.
+   * @param[in]     pCoeffs    points to the filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     blockSize  number of samples that are processed at a time.
+   *
+   * For the MVE version, the coefficient length must be a multiple of 4.
+   * You can pad with zeros if you have less coefficients.
+   */
+  void arm_fir_init_q31(
+        arm_fir_instance_q31 * S,
+        uint16_t numTaps,
+  const q31_t * pCoeffs,
+        q31_t * pState,
+        uint32_t blockSize);
+
+  /**
+   * @brief Processing function for the floating-point FIR filter.
+   * @param[in]  S          points to an instance of the floating-point FIR structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_fir_f32(
+  const arm_fir_instance_f32 * S,
+  const float32_t * pSrc,
+        float32_t * pDst,
+        uint32_t blockSize);
+
+  /**
+   * @brief  Initialization function for the floating-point FIR filter.
+   * @param[in,out] S          points to an instance of the floating-point FIR filter structure.
+   * @param[in]     numTaps    Number of filter coefficients in the filter.
+   * @param[in]     pCoeffs    points to the filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     blockSize  number of samples that are processed at a time.
+   */
+  void arm_fir_init_f32(
+        arm_fir_instance_f32 * S,
+        uint16_t numTaps,
+  const float32_t * pCoeffs,
+        float32_t * pState,
+        uint32_t blockSize);
+
+  /**
+   * @brief Instance structure for the Q15 Biquad cascade filter.
+   */
+  typedef struct
+  {
+          int8_t numStages;        /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */
+          q15_t *pState;           /**< Points to the array of state coefficients.  The array is of length 4*numStages. */
+    const q15_t *pCoeffs;          /**< Points to the array of coefficients.  The array is of length 5*numStages. */
+          int8_t postShift;        /**< Additional shift, in bits, applied to each output sample. */
+  } arm_biquad_casd_df1_inst_q15;
+
+  /**
+   * @brief Instance structure for the Q31 Biquad cascade filter.
+   */
+  typedef struct
+  {
+          uint32_t numStages;      /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */
+          q31_t *pState;           /**< Points to the array of state coefficients.  The array is of length 4*numStages. */
+    const q31_t *pCoeffs;          /**< Points to the array of coefficients.  The array is of length 5*numStages. */
+          uint8_t postShift;       /**< Additional shift, in bits, applied to each output sample. */
+  } arm_biquad_casd_df1_inst_q31;
+
+  /**
+   * @brief Instance structure for the floating-point Biquad cascade filter.
+   */
+  typedef struct
+  {
+          uint32_t numStages;      /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */
+          float32_t *pState;       /**< Points to the array of state coefficients.  The array is of length 4*numStages. */
+    const float32_t *pCoeffs;      /**< Points to the array of coefficients.  The array is of length 5*numStages. */
+  } arm_biquad_casd_df1_inst_f32;
+
+#if defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE)
+  /**
+   * @brief Instance structure for the modified Biquad coefs required by vectorized code.
+   */
+  typedef struct
+  {
+      float32_t coeffs[8][4]; /**< Points to the array of modified coefficients.  The array is of length 32. There is one per stage */
+  } arm_biquad_mod_coef_f32;
+#endif 
+
+  /**
+   * @brief Processing function for the Q15 Biquad cascade filter.
+   * @param[in]  S          points to an instance of the Q15 Biquad cascade structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_biquad_cascade_df1_q15(
+  const arm_biquad_casd_df1_inst_q15 * S,
+  const q15_t * pSrc,
+        q15_t * pDst,
+        uint32_t blockSize);
+
+  /**
+   * @brief  Initialization function for the Q15 Biquad cascade filter.
+   * @param[in,out] S          points to an instance of the Q15 Biquad cascade structure.
+   * @param[in]     numStages  number of 2nd order stages in the filter.
+   * @param[in]     pCoeffs    points to the filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     postShift  Shift to be applied to the output. Varies according to the coefficients format
+   */
+  void arm_biquad_cascade_df1_init_q15(
+        arm_biquad_casd_df1_inst_q15 * S,
+        uint8_t numStages,
+  const q15_t * pCoeffs,
+        q15_t * pState,
+        int8_t postShift);
+
+  /**
+   * @brief Fast but less precise processing function for the Q15 Biquad cascade filter for Cortex-M3 and Cortex-M4.
+   * @param[in]  S          points to an instance of the Q15 Biquad cascade structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_biquad_cascade_df1_fast_q15(
+  const arm_biquad_casd_df1_inst_q15 * S,
+  const q15_t * pSrc,
+        q15_t * pDst,
+        uint32_t blockSize);
+
+  /**
+   * @brief Processing function for the Q31 Biquad cascade filter
+   * @param[in]  S          points to an instance of the Q31 Biquad cascade structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_biquad_cascade_df1_q31(
+  const arm_biquad_casd_df1_inst_q31 * S,
+  const q31_t * pSrc,
+        q31_t * pDst,
+        uint32_t blockSize);
+
+  /**
+   * @brief Fast but less precise processing function for the Q31 Biquad cascade filter for Cortex-M3 and Cortex-M4.
+   * @param[in]  S          points to an instance of the Q31 Biquad cascade structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_biquad_cascade_df1_fast_q31(
+  const arm_biquad_casd_df1_inst_q31 * S,
+  const q31_t * pSrc,
+        q31_t * pDst,
+        uint32_t blockSize);
+
+  /**
+   * @brief  Initialization function for the Q31 Biquad cascade filter.
+   * @param[in,out] S          points to an instance of the Q31 Biquad cascade structure.
+   * @param[in]     numStages  number of 2nd order stages in the filter.
+   * @param[in]     pCoeffs    points to the filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     postShift  Shift to be applied to the output. Varies according to the coefficients format
+   */
+  void arm_biquad_cascade_df1_init_q31(
+        arm_biquad_casd_df1_inst_q31 * S,
+        uint8_t numStages,
+  const q31_t * pCoeffs,
+        q31_t * pState,
+        int8_t postShift);
+
+  /**
+   * @brief Processing function for the floating-point Biquad cascade filter.
+   * @param[in]  S          points to an instance of the floating-point Biquad cascade structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_biquad_cascade_df1_f32(
+  const arm_biquad_casd_df1_inst_f32 * S,
+  const float32_t * pSrc,
+        float32_t * pDst,
+        uint32_t blockSize);
+
+  /**
+   * @brief  Initialization function for the floating-point Biquad cascade filter.
+   * @param[in,out] S          points to an instance of the floating-point Biquad cascade structure.
+   * @param[in]     numStages  number of 2nd order stages in the filter.
+   * @param[in]     pCoeffs    points to the filter coefficients.
+   * @param[in]     pCoeffsMod points to the modified filter coefficients (only MVE version).
+   * @param[in]     pState     points to the state buffer.
+   */
+#if defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE)
+  void arm_biquad_cascade_df1_mve_init_f32(
+      arm_biquad_casd_df1_inst_f32 * S,
+      uint8_t numStages,
+      const float32_t * pCoeffs, 
+      arm_biquad_mod_coef_f32 * pCoeffsMod, 
+      float32_t * pState);
+#endif
+  
+  void arm_biquad_cascade_df1_init_f32(
+        arm_biquad_casd_df1_inst_f32 * S,
+        uint8_t numStages,
+  const float32_t * pCoeffs,
+        float32_t * pState);
+
+
+/**
+ * @brief Convolution of floating-point sequences.
+ * @param[in]  pSrcA    points to the first input sequence.
+ * @param[in]  srcALen  length of the first input sequence.
+ * @param[in]  pSrcB    points to the second input sequence.
+ * @param[in]  srcBLen  length of the second input sequence.
+ * @param[out] pDst     points to the location where the output result is written.  Length srcALen+srcBLen-1.
+ */
+  void arm_conv_f32(
+  const float32_t * pSrcA,
+        uint32_t srcALen,
+  const float32_t * pSrcB,
+        uint32_t srcBLen,
+        float32_t * pDst);
+
+
+  /**
+   * @brief Convolution of Q15 sequences.
+   * @param[in]  pSrcA      points to the first input sequence.
+   * @param[in]  srcALen    length of the first input sequence.
+   * @param[in]  pSrcB      points to the second input sequence.
+   * @param[in]  srcBLen    length of the second input sequence.
+   * @param[out] pDst       points to the block of output data  Length srcALen+srcBLen-1.
+   * @param[in]  pScratch1  points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
+   * @param[in]  pScratch2  points to scratch buffer of size min(srcALen, srcBLen).
+   */
+  void arm_conv_opt_q15(
+  const q15_t * pSrcA,
+        uint32_t srcALen,
+  const q15_t * pSrcB,
+        uint32_t srcBLen,
+        q15_t * pDst,
+        q15_t * pScratch1,
+        q15_t * pScratch2);
+
+
+/**
+ * @brief Convolution of Q15 sequences.
+ * @param[in]  pSrcA    points to the first input sequence.
+ * @param[in]  srcALen  length of the first input sequence.
+ * @param[in]  pSrcB    points to the second input sequence.
+ * @param[in]  srcBLen  length of the second input sequence.
+ * @param[out] pDst     points to the location where the output result is written.  Length srcALen+srcBLen-1.
+ */
+  void arm_conv_q15(
+  const q15_t * pSrcA,
+        uint32_t srcALen,
+  const q15_t * pSrcB,
+        uint32_t srcBLen,
+        q15_t * pDst);
+
+
+  /**
+   * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4
+   * @param[in]  pSrcA    points to the first input sequence.
+   * @param[in]  srcALen  length of the first input sequence.
+   * @param[in]  pSrcB    points to the second input sequence.
+   * @param[in]  srcBLen  length of the second input sequence.
+   * @param[out] pDst     points to the block of output data  Length srcALen+srcBLen-1.
+   */
+  void arm_conv_fast_q15(
+  const q15_t * pSrcA,
+        uint32_t srcALen,
+  const q15_t * pSrcB,
+        uint32_t srcBLen,
+        q15_t * pDst);
+
+
+  /**
+   * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4
+   * @param[in]  pSrcA      points to the first input sequence.
+   * @param[in]  srcALen    length of the first input sequence.
+   * @param[in]  pSrcB      points to the second input sequence.
+   * @param[in]  srcBLen    length of the second input sequence.
+   * @param[out] pDst       points to the block of output data  Length srcALen+srcBLen-1.
+   * @param[in]  pScratch1  points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
+   * @param[in]  pScratch2  points to scratch buffer of size min(srcALen, srcBLen).
+   */
+  void arm_conv_fast_opt_q15(
+  const q15_t * pSrcA,
+        uint32_t srcALen,
+  const q15_t * pSrcB,
+        uint32_t srcBLen,
+        q15_t * pDst,
+        q15_t * pScratch1,
+        q15_t * pScratch2);
+
+
+  /**
+   * @brief Convolution of Q31 sequences.
+   * @param[in]  pSrcA    points to the first input sequence.
+   * @param[in]  srcALen  length of the first input sequence.
+   * @param[in]  pSrcB    points to the second input sequence.
+   * @param[in]  srcBLen  length of the second input sequence.
+   * @param[out] pDst     points to the block of output data  Length srcALen+srcBLen-1.
+   */
+  void arm_conv_q31(
+  const q31_t * pSrcA,
+        uint32_t srcALen,
+  const q31_t * pSrcB,
+        uint32_t srcBLen,
+        q31_t * pDst);
+
+
+  /**
+   * @brief Convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4
+   * @param[in]  pSrcA    points to the first input sequence.
+   * @param[in]  srcALen  length of the first input sequence.
+   * @param[in]  pSrcB    points to the second input sequence.
+   * @param[in]  srcBLen  length of the second input sequence.
+   * @param[out] pDst     points to the block of output data  Length srcALen+srcBLen-1.
+   */
+  void arm_conv_fast_q31(
+  const q31_t * pSrcA,
+        uint32_t srcALen,
+  const q31_t * pSrcB,
+        uint32_t srcBLen,
+        q31_t * pDst);
+
+
+    /**
+   * @brief Convolution of Q7 sequences.
+   * @param[in]  pSrcA      points to the first input sequence.
+   * @param[in]  srcALen    length of the first input sequence.
+   * @param[in]  pSrcB      points to the second input sequence.
+   * @param[in]  srcBLen    length of the second input sequence.
+   * @param[out] pDst       points to the block of output data  Length srcALen+srcBLen-1.
+   * @param[in]  pScratch1  points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
+   * @param[in]  pScratch2  points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen).
+   */
+  void arm_conv_opt_q7(
+  const q7_t * pSrcA,
+        uint32_t srcALen,
+  const q7_t * pSrcB,
+        uint32_t srcBLen,
+        q7_t * pDst,
+        q15_t * pScratch1,
+        q15_t * pScratch2);
+
+
+  /**
+   * @brief Convolution of Q7 sequences.
+   * @param[in]  pSrcA    points to the first input sequence.
+   * @param[in]  srcALen  length of the first input sequence.
+   * @param[in]  pSrcB    points to the second input sequence.
+   * @param[in]  srcBLen  length of the second input sequence.
+   * @param[out] pDst     points to the block of output data  Length srcALen+srcBLen-1.
+   */
+  void arm_conv_q7(
+  const q7_t * pSrcA,
+        uint32_t srcALen,
+  const q7_t * pSrcB,
+        uint32_t srcBLen,
+        q7_t * pDst);
+
+
+  /**
+   * @brief Partial convolution of floating-point sequences.
+   * @param[in]  pSrcA       points to the first input sequence.
+   * @param[in]  srcALen     length of the first input sequence.
+   * @param[in]  pSrcB       points to the second input sequence.
+   * @param[in]  srcBLen     length of the second input sequence.
+   * @param[out] pDst        points to the block of output data
+   * @param[in]  firstIndex  is the first output sample to start with.
+   * @param[in]  numPoints   is the number of output points to be computed.
+   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
+   */
+  arm_status arm_conv_partial_f32(
+  const float32_t * pSrcA,
+        uint32_t srcALen,
+  const float32_t * pSrcB,
+        uint32_t srcBLen,
+        float32_t * pDst,
+        uint32_t firstIndex,
+        uint32_t numPoints);
+
+
+  /**
+   * @brief Partial convolution of Q15 sequences.
+   * @param[in]  pSrcA       points to the first input sequence.
+   * @param[in]  srcALen     length of the first input sequence.
+   * @param[in]  pSrcB       points to the second input sequence.
+   * @param[in]  srcBLen     length of the second input sequence.
+   * @param[out] pDst        points to the block of output data
+   * @param[in]  firstIndex  is the first output sample to start with.
+   * @param[in]  numPoints   is the number of output points to be computed.
+   * @param[in]  pScratch1   points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
+   * @param[in]  pScratch2   points to scratch buffer of size min(srcALen, srcBLen).
+   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
+   */
+  arm_status arm_conv_partial_opt_q15(
+  const q15_t * pSrcA,
+        uint32_t srcALen,
+  const q15_t * pSrcB,
+        uint32_t srcBLen,
+        q15_t * pDst,
+        uint32_t firstIndex,
+        uint32_t numPoints,
+        q15_t * pScratch1,
+        q15_t * pScratch2);
+
+
+  /**
+   * @brief Partial convolution of Q15 sequences.
+   * @param[in]  pSrcA       points to the first input sequence.
+   * @param[in]  srcALen     length of the first input sequence.
+   * @param[in]  pSrcB       points to the second input sequence.
+   * @param[in]  srcBLen     length of the second input sequence.
+   * @param[out] pDst        points to the block of output data
+   * @param[in]  firstIndex  is the first output sample to start with.
+   * @param[in]  numPoints   is the number of output points to be computed.
+   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
+   */
+  arm_status arm_conv_partial_q15(
+  const q15_t * pSrcA,
+        uint32_t srcALen,
+  const q15_t * pSrcB,
+        uint32_t srcBLen,
+        q15_t * pDst,
+        uint32_t firstIndex,
+        uint32_t numPoints);
+
+
+  /**
+   * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4
+   * @param[in]  pSrcA       points to the first input sequence.
+   * @param[in]  srcALen     length of the first input sequence.
+   * @param[in]  pSrcB       points to the second input sequence.
+   * @param[in]  srcBLen     length of the second input sequence.
+   * @param[out] pDst        points to the block of output data
+   * @param[in]  firstIndex  is the first output sample to start with.
+   * @param[in]  numPoints   is the number of output points to be computed.
+   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
+   */
+  arm_status arm_conv_partial_fast_q15(
+  const q15_t * pSrcA,
+        uint32_t srcALen,
+  const q15_t * pSrcB,
+        uint32_t srcBLen,
+        q15_t * pDst,
+        uint32_t firstIndex,
+        uint32_t numPoints);
+
+
+  /**
+   * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4
+   * @param[in]  pSrcA       points to the first input sequence.
+   * @param[in]  srcALen     length of the first input sequence.
+   * @param[in]  pSrcB       points to the second input sequence.
+   * @param[in]  srcBLen     length of the second input sequence.
+   * @param[out] pDst        points to the block of output data
+   * @param[in]  firstIndex  is the first output sample to start with.
+   * @param[in]  numPoints   is the number of output points to be computed.
+   * @param[in]  pScratch1   points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
+   * @param[in]  pScratch2   points to scratch buffer of size min(srcALen, srcBLen).
+   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
+   */
+  arm_status arm_conv_partial_fast_opt_q15(
+  const q15_t * pSrcA,
+        uint32_t srcALen,
+  const q15_t * pSrcB,
+        uint32_t srcBLen,
+        q15_t * pDst,
+        uint32_t firstIndex,
+        uint32_t numPoints,
+        q15_t * pScratch1,
+        q15_t * pScratch2);
+
+
+  /**
+   * @brief Partial convolution of Q31 sequences.
+   * @param[in]  pSrcA       points to the first input sequence.
+   * @param[in]  srcALen     length of the first input sequence.
+   * @param[in]  pSrcB       points to the second input sequence.
+   * @param[in]  srcBLen     length of the second input sequence.
+   * @param[out] pDst        points to the block of output data
+   * @param[in]  firstIndex  is the first output sample to start with.
+   * @param[in]  numPoints   is the number of output points to be computed.
+   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
+   */
+  arm_status arm_conv_partial_q31(
+  const q31_t * pSrcA,
+        uint32_t srcALen,
+  const q31_t * pSrcB,
+        uint32_t srcBLen,
+        q31_t * pDst,
+        uint32_t firstIndex,
+        uint32_t numPoints);
+
+
+  /**
+   * @brief Partial convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4
+   * @param[in]  pSrcA       points to the first input sequence.
+   * @param[in]  srcALen     length of the first input sequence.
+   * @param[in]  pSrcB       points to the second input sequence.
+   * @param[in]  srcBLen     length of the second input sequence.
+   * @param[out] pDst        points to the block of output data
+   * @param[in]  firstIndex  is the first output sample to start with.
+   * @param[in]  numPoints   is the number of output points to be computed.
+   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
+   */
+  arm_status arm_conv_partial_fast_q31(
+  const q31_t * pSrcA,
+        uint32_t srcALen,
+  const q31_t * pSrcB,
+        uint32_t srcBLen,
+        q31_t * pDst,
+        uint32_t firstIndex,
+        uint32_t numPoints);
+
+
+  /**
+   * @brief Partial convolution of Q7 sequences
+   * @param[in]  pSrcA       points to the first input sequence.
+   * @param[in]  srcALen     length of the first input sequence.
+   * @param[in]  pSrcB       points to the second input sequence.
+   * @param[in]  srcBLen     length of the second input sequence.
+   * @param[out] pDst        points to the block of output data
+   * @param[in]  firstIndex  is the first output sample to start with.
+   * @param[in]  numPoints   is the number of output points to be computed.
+   * @param[in]  pScratch1   points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
+   * @param[in]  pScratch2   points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen).
+   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
+   */
+  arm_status arm_conv_partial_opt_q7(
+  const q7_t * pSrcA,
+        uint32_t srcALen,
+  const q7_t * pSrcB,
+        uint32_t srcBLen,
+        q7_t * pDst,
+        uint32_t firstIndex,
+        uint32_t numPoints,
+        q15_t * pScratch1,
+        q15_t * pScratch2);
+
+
+/**
+   * @brief Partial convolution of Q7 sequences.
+   * @param[in]  pSrcA       points to the first input sequence.
+   * @param[in]  srcALen     length of the first input sequence.
+   * @param[in]  pSrcB       points to the second input sequence.
+   * @param[in]  srcBLen     length of the second input sequence.
+   * @param[out] pDst        points to the block of output data
+   * @param[in]  firstIndex  is the first output sample to start with.
+   * @param[in]  numPoints   is the number of output points to be computed.
+   * @return  Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2].
+   */
+  arm_status arm_conv_partial_q7(
+  const q7_t * pSrcA,
+        uint32_t srcALen,
+  const q7_t * pSrcB,
+        uint32_t srcBLen,
+        q7_t * pDst,
+        uint32_t firstIndex,
+        uint32_t numPoints);
+
+
+  /**
+   * @brief Instance structure for the Q15 FIR decimator.
+   */
+  typedef struct
+  {
+          uint8_t M;                  /**< decimation factor. */
+          uint16_t numTaps;           /**< number of coefficients in the filter. */
+    const q15_t *pCoeffs;             /**< points to the coefficient array. The array is of length numTaps.*/
+          q15_t *pState;              /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
+  } arm_fir_decimate_instance_q15;
+
+  /**
+   * @brief Instance structure for the Q31 FIR decimator.
+   */
+  typedef struct
+  {
+          uint8_t M;                  /**< decimation factor. */
+          uint16_t numTaps;           /**< number of coefficients in the filter. */
+    const q31_t *pCoeffs;             /**< points to the coefficient array. The array is of length numTaps.*/
+          q31_t *pState;              /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
+  } arm_fir_decimate_instance_q31;
+
+/**
+  @brief Instance structure for floating-point FIR decimator.
+ */
+typedef struct
+  {
+          uint8_t M;                  /**< decimation factor. */
+          uint16_t numTaps;           /**< number of coefficients in the filter. */
+    const float32_t *pCoeffs;         /**< points to the coefficient array. The array is of length numTaps.*/
+          float32_t *pState;          /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
+  } arm_fir_decimate_instance_f32;
+
+
+/**
+  @brief         Processing function for floating-point FIR decimator.
+  @param[in]     S         points to an instance of the floating-point FIR decimator structure
+  @param[in]     pSrc      points to the block of input data
+  @param[out]    pDst      points to the block of output data
+  @param[in]     blockSize number of samples to process
+ */
+void arm_fir_decimate_f32(
+  const arm_fir_decimate_instance_f32 * S,
+  const float32_t * pSrc,
+        float32_t * pDst,
+        uint32_t blockSize);
+
+
+/**
+  @brief         Initialization function for the floating-point FIR decimator.
+  @param[in,out] S          points to an instance of the floating-point FIR decimator structure
+  @param[in]     numTaps    number of coefficients in the filter
+  @param[in]     M          decimation factor
+  @param[in]     pCoeffs    points to the filter coefficients
+  @param[in]     pState     points to the state buffer
+  @param[in]     blockSize  number of input samples to process per call
+  @return        execution status
+                   - \ref ARM_MATH_SUCCESS      : Operation successful
+                   - \ref ARM_MATH_LENGTH_ERROR : <code>blockSize</code> is not a multiple of <code>M</code>
+ */
+arm_status arm_fir_decimate_init_f32(
+        arm_fir_decimate_instance_f32 * S,
+        uint16_t numTaps,
+        uint8_t M,
+  const float32_t * pCoeffs,
+        float32_t * pState,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Processing function for the Q15 FIR decimator.
+   * @param[in]  S          points to an instance of the Q15 FIR decimator structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data
+   * @param[in]  blockSize  number of input samples to process per call.
+   */
+  void arm_fir_decimate_q15(
+  const arm_fir_decimate_instance_q15 * S,
+  const q15_t * pSrc,
+        q15_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Processing function for the Q15 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4.
+   * @param[in]  S          points to an instance of the Q15 FIR decimator structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data
+   * @param[in]  blockSize  number of input samples to process per call.
+   */
+  void arm_fir_decimate_fast_q15(
+  const arm_fir_decimate_instance_q15 * S,
+  const q15_t * pSrc,
+        q15_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Initialization function for the Q15 FIR decimator.
+   * @param[in,out] S          points to an instance of the Q15 FIR decimator structure.
+   * @param[in]     numTaps    number of coefficients in the filter.
+   * @param[in]     M          decimation factor.
+   * @param[in]     pCoeffs    points to the filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     blockSize  number of input samples to process per call.
+   * @return    The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if
+   * <code>blockSize</code> is not a multiple of <code>M</code>.
+   */
+  arm_status arm_fir_decimate_init_q15(
+        arm_fir_decimate_instance_q15 * S,
+        uint16_t numTaps,
+        uint8_t M,
+  const q15_t * pCoeffs,
+        q15_t * pState,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Processing function for the Q31 FIR decimator.
+   * @param[in]  S     points to an instance of the Q31 FIR decimator structure.
+   * @param[in]  pSrc  points to the block of input data.
+   * @param[out] pDst  points to the block of output data
+   * @param[in] blockSize number of input samples to process per call.
+   */
+  void arm_fir_decimate_q31(
+  const arm_fir_decimate_instance_q31 * S,
+  const q31_t * pSrc,
+        q31_t * pDst,
+        uint32_t blockSize);
+
+  /**
+   * @brief Processing function for the Q31 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4.
+   * @param[in]  S          points to an instance of the Q31 FIR decimator structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data
+   * @param[in]  blockSize  number of input samples to process per call.
+   */
+  void arm_fir_decimate_fast_q31(
+  const arm_fir_decimate_instance_q31 * S,
+  const q31_t * pSrc,
+        q31_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Initialization function for the Q31 FIR decimator.
+   * @param[in,out] S          points to an instance of the Q31 FIR decimator structure.
+   * @param[in]     numTaps    number of coefficients in the filter.
+   * @param[in]     M          decimation factor.
+   * @param[in]     pCoeffs    points to the filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     blockSize  number of input samples to process per call.
+   * @return    The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if
+   * <code>blockSize</code> is not a multiple of <code>M</code>.
+   */
+  arm_status arm_fir_decimate_init_q31(
+        arm_fir_decimate_instance_q31 * S,
+        uint16_t numTaps,
+        uint8_t M,
+  const q31_t * pCoeffs,
+        q31_t * pState,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Instance structure for the Q15 FIR interpolator.
+   */
+  typedef struct
+  {
+        uint8_t L;                      /**< upsample factor. */
+        uint16_t phaseLength;           /**< length of each polyphase filter component. */
+  const q15_t *pCoeffs;                 /**< points to the coefficient array. The array is of length L*phaseLength. */
+        q15_t *pState;                  /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */
+  } arm_fir_interpolate_instance_q15;
+
+  /**
+   * @brief Instance structure for the Q31 FIR interpolator.
+   */
+  typedef struct
+  {
+        uint8_t L;                      /**< upsample factor. */
+        uint16_t phaseLength;           /**< length of each polyphase filter component. */
+  const q31_t *pCoeffs;                 /**< points to the coefficient array. The array is of length L*phaseLength. */
+        q31_t *pState;                  /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */
+  } arm_fir_interpolate_instance_q31;
+
+  /**
+   * @brief Instance structure for the floating-point FIR interpolator.
+   */
+  typedef struct
+  {
+        uint8_t L;                     /**< upsample factor. */
+        uint16_t phaseLength;          /**< length of each polyphase filter component. */
+  const float32_t *pCoeffs;            /**< points to the coefficient array. The array is of length L*phaseLength. */
+        float32_t *pState;             /**< points to the state variable array. The array is of length phaseLength+numTaps-1. */
+  } arm_fir_interpolate_instance_f32;
+
+
+  /**
+   * @brief Processing function for the Q15 FIR interpolator.
+   * @param[in]  S          points to an instance of the Q15 FIR interpolator structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of input samples to process per call.
+   */
+  void arm_fir_interpolate_q15(
+  const arm_fir_interpolate_instance_q15 * S,
+  const q15_t * pSrc,
+        q15_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Initialization function for the Q15 FIR interpolator.
+   * @param[in,out] S          points to an instance of the Q15 FIR interpolator structure.
+   * @param[in]     L          upsample factor.
+   * @param[in]     numTaps    number of filter coefficients in the filter.
+   * @param[in]     pCoeffs    points to the filter coefficient buffer.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     blockSize  number of input samples to process per call.
+   * @return        The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if
+   * the filter length <code>numTaps</code> is not a multiple of the interpolation factor <code>L</code>.
+   */
+  arm_status arm_fir_interpolate_init_q15(
+        arm_fir_interpolate_instance_q15 * S,
+        uint8_t L,
+        uint16_t numTaps,
+  const q15_t * pCoeffs,
+        q15_t * pState,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Processing function for the Q31 FIR interpolator.
+   * @param[in]  S          points to an instance of the Q15 FIR interpolator structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of input samples to process per call.
+   */
+  void arm_fir_interpolate_q31(
+  const arm_fir_interpolate_instance_q31 * S,
+  const q31_t * pSrc,
+        q31_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Initialization function for the Q31 FIR interpolator.
+   * @param[in,out] S          points to an instance of the Q31 FIR interpolator structure.
+   * @param[in]     L          upsample factor.
+   * @param[in]     numTaps    number of filter coefficients in the filter.
+   * @param[in]     pCoeffs    points to the filter coefficient buffer.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     blockSize  number of input samples to process per call.
+   * @return        The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if
+   * the filter length <code>numTaps</code> is not a multiple of the interpolation factor <code>L</code>.
+   */
+  arm_status arm_fir_interpolate_init_q31(
+        arm_fir_interpolate_instance_q31 * S,
+        uint8_t L,
+        uint16_t numTaps,
+  const q31_t * pCoeffs,
+        q31_t * pState,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Processing function for the floating-point FIR interpolator.
+   * @param[in]  S          points to an instance of the floating-point FIR interpolator structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of input samples to process per call.
+   */
+  void arm_fir_interpolate_f32(
+  const arm_fir_interpolate_instance_f32 * S,
+  const float32_t * pSrc,
+        float32_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Initialization function for the floating-point FIR interpolator.
+   * @param[in,out] S          points to an instance of the floating-point FIR interpolator structure.
+   * @param[in]     L          upsample factor.
+   * @param[in]     numTaps    number of filter coefficients in the filter.
+   * @param[in]     pCoeffs    points to the filter coefficient buffer.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     blockSize  number of input samples to process per call.
+   * @return        The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if
+   * the filter length <code>numTaps</code> is not a multiple of the interpolation factor <code>L</code>.
+   */
+  arm_status arm_fir_interpolate_init_f32(
+        arm_fir_interpolate_instance_f32 * S,
+        uint8_t L,
+        uint16_t numTaps,
+  const float32_t * pCoeffs,
+        float32_t * pState,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Instance structure for the high precision Q31 Biquad cascade filter.
+   */
+  typedef struct
+  {
+          uint8_t numStages;       /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */
+          q63_t *pState;           /**< points to the array of state coefficients.  The array is of length 4*numStages. */
+    const q31_t *pCoeffs;          /**< points to the array of coefficients.  The array is of length 5*numStages. */
+          uint8_t postShift;       /**< additional shift, in bits, applied to each output sample. */
+  } arm_biquad_cas_df1_32x64_ins_q31;
+
+
+  /**
+   * @param[in]  S          points to an instance of the high precision Q31 Biquad cascade filter structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_biquad_cas_df1_32x64_q31(
+  const arm_biquad_cas_df1_32x64_ins_q31 * S,
+  const q31_t * pSrc,
+        q31_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @param[in,out] S          points to an instance of the high precision Q31 Biquad cascade filter structure.
+   * @param[in]     numStages  number of 2nd order stages in the filter.
+   * @param[in]     pCoeffs    points to the filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     postShift  shift to be applied to the output. Varies according to the coefficients format
+   */
+  void arm_biquad_cas_df1_32x64_init_q31(
+        arm_biquad_cas_df1_32x64_ins_q31 * S,
+        uint8_t numStages,
+  const q31_t * pCoeffs,
+        q63_t * pState,
+        uint8_t postShift);
+
+
+  /**
+   * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter.
+   */
+  typedef struct
+  {
+          uint8_t numStages;         /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */
+          float32_t *pState;         /**< points to the array of state coefficients.  The array is of length 2*numStages. */
+    const float32_t *pCoeffs;        /**< points to the array of coefficients.  The array is of length 5*numStages. */
+  } arm_biquad_cascade_df2T_instance_f32;
+
+  /**
+   * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter.
+   */
+  typedef struct
+  {
+          uint8_t numStages;         /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */
+          float32_t *pState;         /**< points to the array of state coefficients.  The array is of length 4*numStages. */
+    const float32_t *pCoeffs;        /**< points to the array of coefficients.  The array is of length 5*numStages. */
+  } arm_biquad_cascade_stereo_df2T_instance_f32;
+
+  /**
+   * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter.
+   */
+  typedef struct
+  {
+          uint8_t numStages;         /**< number of 2nd order stages in the filter.  Overall order is 2*numStages. */
+          float64_t *pState;         /**< points to the array of state coefficients.  The array is of length 2*numStages. */
+    const float64_t *pCoeffs;        /**< points to the array of coefficients.  The array is of length 5*numStages. */
+  } arm_biquad_cascade_df2T_instance_f64;
+
+
+  /**
+   * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter.
+   * @param[in]  S          points to an instance of the filter data structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_biquad_cascade_df2T_f32(
+  const arm_biquad_cascade_df2T_instance_f32 * S,
+  const float32_t * pSrc,
+        float32_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. 2 channels
+   * @param[in]  S          points to an instance of the filter data structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_biquad_cascade_stereo_df2T_f32(
+  const arm_biquad_cascade_stereo_df2T_instance_f32 * S,
+  const float32_t * pSrc,
+        float32_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter.
+   * @param[in]  S          points to an instance of the filter data structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_biquad_cascade_df2T_f64(
+  const arm_biquad_cascade_df2T_instance_f64 * S,
+  const float64_t * pSrc,
+        float64_t * pDst,
+        uint32_t blockSize);
+
+
+#if defined(ARM_MATH_NEON) 
+void arm_biquad_cascade_df2T_compute_coefs_f32(
+  arm_biquad_cascade_df2T_instance_f32 * S,
+  uint8_t numStages,
+  float32_t * pCoeffs);
+#endif
+  /**
+   * @brief  Initialization function for the floating-point transposed direct form II Biquad cascade filter.
+   * @param[in,out] S          points to an instance of the filter data structure.
+   * @param[in]     numStages  number of 2nd order stages in the filter.
+   * @param[in]     pCoeffs    points to the filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   */
+  void arm_biquad_cascade_df2T_init_f32(
+        arm_biquad_cascade_df2T_instance_f32 * S,
+        uint8_t numStages,
+  const float32_t * pCoeffs,
+        float32_t * pState);
+
+
+  /**
+   * @brief  Initialization function for the floating-point transposed direct form II Biquad cascade filter.
+   * @param[in,out] S          points to an instance of the filter data structure.
+   * @param[in]     numStages  number of 2nd order stages in the filter.
+   * @param[in]     pCoeffs    points to the filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   */
+  void arm_biquad_cascade_stereo_df2T_init_f32(
+        arm_biquad_cascade_stereo_df2T_instance_f32 * S,
+        uint8_t numStages,
+  const float32_t * pCoeffs,
+        float32_t * pState);
+
+
+  /**
+   * @brief  Initialization function for the floating-point transposed direct form II Biquad cascade filter.
+   * @param[in,out] S          points to an instance of the filter data structure.
+   * @param[in]     numStages  number of 2nd order stages in the filter.
+   * @param[in]     pCoeffs    points to the filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   */
+  void arm_biquad_cascade_df2T_init_f64(
+        arm_biquad_cascade_df2T_instance_f64 * S,
+        uint8_t numStages,
+        const float64_t * pCoeffs,
+        float64_t * pState);
+
+
+  /**
+   * @brief Instance structure for the Q15 FIR lattice filter.
+   */
+  typedef struct
+  {
+          uint16_t numStages;                  /**< number of filter stages. */
+          q15_t *pState;                       /**< points to the state variable array. The array is of length numStages. */
+    const q15_t *pCoeffs;                      /**< points to the coefficient array. The array is of length numStages. */
+  } arm_fir_lattice_instance_q15;
+
+  /**
+   * @brief Instance structure for the Q31 FIR lattice filter.
+   */
+  typedef struct
+  {
+          uint16_t numStages;                  /**< number of filter stages. */
+          q31_t *pState;                       /**< points to the state variable array. The array is of length numStages. */
+    const q31_t *pCoeffs;                      /**< points to the coefficient array. The array is of length numStages. */
+  } arm_fir_lattice_instance_q31;
+
+  /**
+   * @brief Instance structure for the floating-point FIR lattice filter.
+   */
+  typedef struct
+  {
+          uint16_t numStages;                  /**< number of filter stages. */
+          float32_t *pState;                   /**< points to the state variable array. The array is of length numStages. */
+    const float32_t *pCoeffs;                  /**< points to the coefficient array. The array is of length numStages. */
+  } arm_fir_lattice_instance_f32;
+
+
+  /**
+   * @brief Initialization function for the Q15 FIR lattice filter.
+   * @param[in] S          points to an instance of the Q15 FIR lattice structure.
+   * @param[in] numStages  number of filter stages.
+   * @param[in] pCoeffs    points to the coefficient buffer.  The array is of length numStages.
+   * @param[in] pState     points to the state buffer.  The array is of length numStages.
+   */
+  void arm_fir_lattice_init_q15(
+        arm_fir_lattice_instance_q15 * S,
+        uint16_t numStages,
+  const q15_t * pCoeffs,
+        q15_t * pState);
+
+
+  /**
+   * @brief Processing function for the Q15 FIR lattice filter.
+   * @param[in]  S          points to an instance of the Q15 FIR lattice structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_fir_lattice_q15(
+  const arm_fir_lattice_instance_q15 * S,
+  const q15_t * pSrc,
+        q15_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Initialization function for the Q31 FIR lattice filter.
+   * @param[in] S          points to an instance of the Q31 FIR lattice structure.
+   * @param[in] numStages  number of filter stages.
+   * @param[in] pCoeffs    points to the coefficient buffer.  The array is of length numStages.
+   * @param[in] pState     points to the state buffer.   The array is of length numStages.
+   */
+  void arm_fir_lattice_init_q31(
+        arm_fir_lattice_instance_q31 * S,
+        uint16_t numStages,
+  const q31_t * pCoeffs,
+        q31_t * pState);
+
+
+  /**
+   * @brief Processing function for the Q31 FIR lattice filter.
+   * @param[in]  S          points to an instance of the Q31 FIR lattice structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_fir_lattice_q31(
+  const arm_fir_lattice_instance_q31 * S,
+  const q31_t * pSrc,
+        q31_t * pDst,
+        uint32_t blockSize);
+
+
+/**
+ * @brief Initialization function for the floating-point FIR lattice filter.
+ * @param[in] S          points to an instance of the floating-point FIR lattice structure.
+ * @param[in] numStages  number of filter stages.
+ * @param[in] pCoeffs    points to the coefficient buffer.  The array is of length numStages.
+ * @param[in] pState     points to the state buffer.  The array is of length numStages.
+ */
+  void arm_fir_lattice_init_f32(
+        arm_fir_lattice_instance_f32 * S,
+        uint16_t numStages,
+  const float32_t * pCoeffs,
+        float32_t * pState);
+
+
+  /**
+   * @brief Processing function for the floating-point FIR lattice filter.
+   * @param[in]  S          points to an instance of the floating-point FIR lattice structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_fir_lattice_f32(
+  const arm_fir_lattice_instance_f32 * S,
+  const float32_t * pSrc,
+        float32_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Instance structure for the Q15 IIR lattice filter.
+   */
+  typedef struct
+  {
+          uint16_t numStages;                  /**< number of stages in the filter. */
+          q15_t *pState;                       /**< points to the state variable array. The array is of length numStages+blockSize. */
+          q15_t *pkCoeffs;                     /**< points to the reflection coefficient array. The array is of length numStages. */
+          q15_t *pvCoeffs;                     /**< points to the ladder coefficient array. The array is of length numStages+1. */
+  } arm_iir_lattice_instance_q15;
+
+  /**
+   * @brief Instance structure for the Q31 IIR lattice filter.
+   */
+  typedef struct
+  {
+          uint16_t numStages;                  /**< number of stages in the filter. */
+          q31_t *pState;                       /**< points to the state variable array. The array is of length numStages+blockSize. */
+          q31_t *pkCoeffs;                     /**< points to the reflection coefficient array. The array is of length numStages. */
+          q31_t *pvCoeffs;                     /**< points to the ladder coefficient array. The array is of length numStages+1. */
+  } arm_iir_lattice_instance_q31;
+
+  /**
+   * @brief Instance structure for the floating-point IIR lattice filter.
+   */
+  typedef struct
+  {
+          uint16_t numStages;                  /**< number of stages in the filter. */
+          float32_t *pState;                   /**< points to the state variable array. The array is of length numStages+blockSize. */
+          float32_t *pkCoeffs;                 /**< points to the reflection coefficient array. The array is of length numStages. */
+          float32_t *pvCoeffs;                 /**< points to the ladder coefficient array. The array is of length numStages+1. */
+  } arm_iir_lattice_instance_f32;
+
+
+  /**
+   * @brief Processing function for the floating-point IIR lattice filter.
+   * @param[in]  S          points to an instance of the floating-point IIR lattice structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_iir_lattice_f32(
+  const arm_iir_lattice_instance_f32 * S,
+  const float32_t * pSrc,
+        float32_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Initialization function for the floating-point IIR lattice filter.
+   * @param[in] S          points to an instance of the floating-point IIR lattice structure.
+   * @param[in] numStages  number of stages in the filter.
+   * @param[in] pkCoeffs   points to the reflection coefficient buffer.  The array is of length numStages.
+   * @param[in] pvCoeffs   points to the ladder coefficient buffer.  The array is of length numStages+1.
+   * @param[in] pState     points to the state buffer.  The array is of length numStages+blockSize-1.
+   * @param[in] blockSize  number of samples to process.
+   */
+  void arm_iir_lattice_init_f32(
+        arm_iir_lattice_instance_f32 * S,
+        uint16_t numStages,
+        float32_t * pkCoeffs,
+        float32_t * pvCoeffs,
+        float32_t * pState,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Processing function for the Q31 IIR lattice filter.
+   * @param[in]  S          points to an instance of the Q31 IIR lattice structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_iir_lattice_q31(
+  const arm_iir_lattice_instance_q31 * S,
+  const q31_t * pSrc,
+        q31_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Initialization function for the Q31 IIR lattice filter.
+   * @param[in] S          points to an instance of the Q31 IIR lattice structure.
+   * @param[in] numStages  number of stages in the filter.
+   * @param[in] pkCoeffs   points to the reflection coefficient buffer.  The array is of length numStages.
+   * @param[in] pvCoeffs   points to the ladder coefficient buffer.  The array is of length numStages+1.
+   * @param[in] pState     points to the state buffer.  The array is of length numStages+blockSize.
+   * @param[in] blockSize  number of samples to process.
+   */
+  void arm_iir_lattice_init_q31(
+        arm_iir_lattice_instance_q31 * S,
+        uint16_t numStages,
+        q31_t * pkCoeffs,
+        q31_t * pvCoeffs,
+        q31_t * pState,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Processing function for the Q15 IIR lattice filter.
+   * @param[in]  S          points to an instance of the Q15 IIR lattice structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_iir_lattice_q15(
+  const arm_iir_lattice_instance_q15 * S,
+  const q15_t * pSrc,
+        q15_t * pDst,
+        uint32_t blockSize);
+
+
+/**
+ * @brief Initialization function for the Q15 IIR lattice filter.
+ * @param[in] S          points to an instance of the fixed-point Q15 IIR lattice structure.
+ * @param[in] numStages  number of stages in the filter.
+ * @param[in] pkCoeffs   points to reflection coefficient buffer.  The array is of length numStages.
+ * @param[in] pvCoeffs   points to ladder coefficient buffer.  The array is of length numStages+1.
+ * @param[in] pState     points to state buffer.  The array is of length numStages+blockSize.
+ * @param[in] blockSize  number of samples to process per call.
+ */
+  void arm_iir_lattice_init_q15(
+        arm_iir_lattice_instance_q15 * S,
+        uint16_t numStages,
+        q15_t * pkCoeffs,
+        q15_t * pvCoeffs,
+        q15_t * pState,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Instance structure for the floating-point LMS filter.
+   */
+  typedef struct
+  {
+          uint16_t numTaps;    /**< number of coefficients in the filter. */
+          float32_t *pState;   /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
+          float32_t *pCoeffs;  /**< points to the coefficient array. The array is of length numTaps. */
+          float32_t mu;        /**< step size that controls filter coefficient updates. */
+  } arm_lms_instance_f32;
+
+
+  /**
+   * @brief Processing function for floating-point LMS filter.
+   * @param[in]  S          points to an instance of the floating-point LMS filter structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[in]  pRef       points to the block of reference data.
+   * @param[out] pOut       points to the block of output data.
+   * @param[out] pErr       points to the block of error data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_lms_f32(
+  const arm_lms_instance_f32 * S,
+  const float32_t * pSrc,
+        float32_t * pRef,
+        float32_t * pOut,
+        float32_t * pErr,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Initialization function for floating-point LMS filter.
+   * @param[in] S          points to an instance of the floating-point LMS filter structure.
+   * @param[in] numTaps    number of filter coefficients.
+   * @param[in] pCoeffs    points to the coefficient buffer.
+   * @param[in] pState     points to state buffer.
+   * @param[in] mu         step size that controls filter coefficient updates.
+   * @param[in] blockSize  number of samples to process.
+   */
+  void arm_lms_init_f32(
+        arm_lms_instance_f32 * S,
+        uint16_t numTaps,
+        float32_t * pCoeffs,
+        float32_t * pState,
+        float32_t mu,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Instance structure for the Q15 LMS filter.
+   */
+  typedef struct
+  {
+          uint16_t numTaps;    /**< number of coefficients in the filter. */
+          q15_t *pState;       /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
+          q15_t *pCoeffs;      /**< points to the coefficient array. The array is of length numTaps. */
+          q15_t mu;            /**< step size that controls filter coefficient updates. */
+          uint32_t postShift;  /**< bit shift applied to coefficients. */
+  } arm_lms_instance_q15;
+
+
+  /**
+   * @brief Initialization function for the Q15 LMS filter.
+   * @param[in] S          points to an instance of the Q15 LMS filter structure.
+   * @param[in] numTaps    number of filter coefficients.
+   * @param[in] pCoeffs    points to the coefficient buffer.
+   * @param[in] pState     points to the state buffer.
+   * @param[in] mu         step size that controls filter coefficient updates.
+   * @param[in] blockSize  number of samples to process.
+   * @param[in] postShift  bit shift applied to coefficients.
+   */
+  void arm_lms_init_q15(
+        arm_lms_instance_q15 * S,
+        uint16_t numTaps,
+        q15_t * pCoeffs,
+        q15_t * pState,
+        q15_t mu,
+        uint32_t blockSize,
+        uint32_t postShift);
+
+
+  /**
+   * @brief Processing function for Q15 LMS filter.
+   * @param[in]  S          points to an instance of the Q15 LMS filter structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[in]  pRef       points to the block of reference data.
+   * @param[out] pOut       points to the block of output data.
+   * @param[out] pErr       points to the block of error data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_lms_q15(
+  const arm_lms_instance_q15 * S,
+  const q15_t * pSrc,
+        q15_t * pRef,
+        q15_t * pOut,
+        q15_t * pErr,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Instance structure for the Q31 LMS filter.
+   */
+  typedef struct
+  {
+          uint16_t numTaps;    /**< number of coefficients in the filter. */
+          q31_t *pState;       /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
+          q31_t *pCoeffs;      /**< points to the coefficient array. The array is of length numTaps. */
+          q31_t mu;            /**< step size that controls filter coefficient updates. */
+          uint32_t postShift;  /**< bit shift applied to coefficients. */
+  } arm_lms_instance_q31;
+
+
+  /**
+   * @brief Processing function for Q31 LMS filter.
+   * @param[in]  S          points to an instance of the Q15 LMS filter structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[in]  pRef       points to the block of reference data.
+   * @param[out] pOut       points to the block of output data.
+   * @param[out] pErr       points to the block of error data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_lms_q31(
+  const arm_lms_instance_q31 * S,
+  const q31_t * pSrc,
+        q31_t * pRef,
+        q31_t * pOut,
+        q31_t * pErr,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Initialization function for Q31 LMS filter.
+   * @param[in] S          points to an instance of the Q31 LMS filter structure.
+   * @param[in] numTaps    number of filter coefficients.
+   * @param[in] pCoeffs    points to coefficient buffer.
+   * @param[in] pState     points to state buffer.
+   * @param[in] mu         step size that controls filter coefficient updates.
+   * @param[in] blockSize  number of samples to process.
+   * @param[in] postShift  bit shift applied to coefficients.
+   */
+  void arm_lms_init_q31(
+        arm_lms_instance_q31 * S,
+        uint16_t numTaps,
+        q31_t * pCoeffs,
+        q31_t * pState,
+        q31_t mu,
+        uint32_t blockSize,
+        uint32_t postShift);
+
+
+  /**
+   * @brief Instance structure for the floating-point normalized LMS filter.
+   */
+  typedef struct
+  {
+          uint16_t numTaps;     /**< number of coefficients in the filter. */
+          float32_t *pState;    /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
+          float32_t *pCoeffs;   /**< points to the coefficient array. The array is of length numTaps. */
+          float32_t mu;         /**< step size that control filter coefficient updates. */
+          float32_t energy;     /**< saves previous frame energy. */
+          float32_t x0;         /**< saves previous input sample. */
+  } arm_lms_norm_instance_f32;
+
+
+  /**
+   * @brief Processing function for floating-point normalized LMS filter.
+   * @param[in]  S          points to an instance of the floating-point normalized LMS filter structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[in]  pRef       points to the block of reference data.
+   * @param[out] pOut       points to the block of output data.
+   * @param[out] pErr       points to the block of error data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_lms_norm_f32(
+        arm_lms_norm_instance_f32 * S,
+  const float32_t * pSrc,
+        float32_t * pRef,
+        float32_t * pOut,
+        float32_t * pErr,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Initialization function for floating-point normalized LMS filter.
+   * @param[in] S          points to an instance of the floating-point LMS filter structure.
+   * @param[in] numTaps    number of filter coefficients.
+   * @param[in] pCoeffs    points to coefficient buffer.
+   * @param[in] pState     points to state buffer.
+   * @param[in] mu         step size that controls filter coefficient updates.
+   * @param[in] blockSize  number of samples to process.
+   */
+  void arm_lms_norm_init_f32(
+        arm_lms_norm_instance_f32 * S,
+        uint16_t numTaps,
+        float32_t * pCoeffs,
+        float32_t * pState,
+        float32_t mu,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Instance structure for the Q31 normalized LMS filter.
+   */
+  typedef struct
+  {
+          uint16_t numTaps;     /**< number of coefficients in the filter. */
+          q31_t *pState;        /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
+          q31_t *pCoeffs;       /**< points to the coefficient array. The array is of length numTaps. */
+          q31_t mu;             /**< step size that controls filter coefficient updates. */
+          uint8_t postShift;    /**< bit shift applied to coefficients. */
+    const q31_t *recipTable;    /**< points to the reciprocal initial value table. */
+          q31_t energy;         /**< saves previous frame energy. */
+          q31_t x0;             /**< saves previous input sample. */
+  } arm_lms_norm_instance_q31;
+
+
+  /**
+   * @brief Processing function for Q31 normalized LMS filter.
+   * @param[in]  S          points to an instance of the Q31 normalized LMS filter structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[in]  pRef       points to the block of reference data.
+   * @param[out] pOut       points to the block of output data.
+   * @param[out] pErr       points to the block of error data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_lms_norm_q31(
+        arm_lms_norm_instance_q31 * S,
+  const q31_t * pSrc,
+        q31_t * pRef,
+        q31_t * pOut,
+        q31_t * pErr,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Initialization function for Q31 normalized LMS filter.
+   * @param[in] S          points to an instance of the Q31 normalized LMS filter structure.
+   * @param[in] numTaps    number of filter coefficients.
+   * @param[in] pCoeffs    points to coefficient buffer.
+   * @param[in] pState     points to state buffer.
+   * @param[in] mu         step size that controls filter coefficient updates.
+   * @param[in] blockSize  number of samples to process.
+   * @param[in] postShift  bit shift applied to coefficients.
+   */
+  void arm_lms_norm_init_q31(
+        arm_lms_norm_instance_q31 * S,
+        uint16_t numTaps,
+        q31_t * pCoeffs,
+        q31_t * pState,
+        q31_t mu,
+        uint32_t blockSize,
+        uint8_t postShift);
+
+
+  /**
+   * @brief Instance structure for the Q15 normalized LMS filter.
+   */
+  typedef struct
+  {
+          uint16_t numTaps;     /**< Number of coefficients in the filter. */
+          q15_t *pState;        /**< points to the state variable array. The array is of length numTaps+blockSize-1. */
+          q15_t *pCoeffs;       /**< points to the coefficient array. The array is of length numTaps. */
+          q15_t mu;             /**< step size that controls filter coefficient updates. */
+          uint8_t postShift;    /**< bit shift applied to coefficients. */
+    const q15_t *recipTable;    /**< Points to the reciprocal initial value table. */
+          q15_t energy;         /**< saves previous frame energy. */
+          q15_t x0;             /**< saves previous input sample. */
+  } arm_lms_norm_instance_q15;
+
+
+  /**
+   * @brief Processing function for Q15 normalized LMS filter.
+   * @param[in]  S          points to an instance of the Q15 normalized LMS filter structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[in]  pRef       points to the block of reference data.
+   * @param[out] pOut       points to the block of output data.
+   * @param[out] pErr       points to the block of error data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_lms_norm_q15(
+        arm_lms_norm_instance_q15 * S,
+  const q15_t * pSrc,
+        q15_t * pRef,
+        q15_t * pOut,
+        q15_t * pErr,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Initialization function for Q15 normalized LMS filter.
+   * @param[in] S          points to an instance of the Q15 normalized LMS filter structure.
+   * @param[in] numTaps    number of filter coefficients.
+   * @param[in] pCoeffs    points to coefficient buffer.
+   * @param[in] pState     points to state buffer.
+   * @param[in] mu         step size that controls filter coefficient updates.
+   * @param[in] blockSize  number of samples to process.
+   * @param[in] postShift  bit shift applied to coefficients.
+   */
+  void arm_lms_norm_init_q15(
+        arm_lms_norm_instance_q15 * S,
+        uint16_t numTaps,
+        q15_t * pCoeffs,
+        q15_t * pState,
+        q15_t mu,
+        uint32_t blockSize,
+        uint8_t postShift);
+
+
+  /**
+   * @brief Correlation of floating-point sequences.
+   * @param[in]  pSrcA    points to the first input sequence.
+   * @param[in]  srcALen  length of the first input sequence.
+   * @param[in]  pSrcB    points to the second input sequence.
+   * @param[in]  srcBLen  length of the second input sequence.
+   * @param[out] pDst     points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.
+   */
+  void arm_correlate_f32(
+  const float32_t * pSrcA,
+        uint32_t srcALen,
+  const float32_t * pSrcB,
+        uint32_t srcBLen,
+        float32_t * pDst);
+
+
+/**
+ @brief Correlation of Q15 sequences
+ @param[in]  pSrcA     points to the first input sequence
+ @param[in]  srcALen   length of the first input sequence
+ @param[in]  pSrcB     points to the second input sequence
+ @param[in]  srcBLen   length of the second input sequence
+ @param[out] pDst      points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.
+ @param[in]  pScratch  points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
+*/
+void arm_correlate_opt_q15(
+  const q15_t * pSrcA,
+        uint32_t srcALen,
+  const q15_t * pSrcB,
+        uint32_t srcBLen,
+        q15_t * pDst,
+        q15_t * pScratch);
+
+
+/**
+  @brief Correlation of Q15 sequences.
+  @param[in]  pSrcA    points to the first input sequence
+  @param[in]  srcALen  length of the first input sequence
+  @param[in]  pSrcB    points to the second input sequence
+  @param[in]  srcBLen  length of the second input sequence
+  @param[out] pDst     points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.
+ */
+  void arm_correlate_q15(
+  const q15_t * pSrcA,
+        uint32_t srcALen,
+  const q15_t * pSrcB,
+        uint32_t srcBLen,
+        q15_t * pDst);
+
+
+/**
+  @brief         Correlation of Q15 sequences (fast version).
+  @param[in]     pSrcA      points to the first input sequence
+  @param[in]     srcALen    length of the first input sequence
+  @param[in]     pSrcB      points to the second input sequence
+  @param[in]     srcBLen    length of the second input sequence
+  @param[out]    pDst       points to the location where the output result is written.  Length 2 * max(srcALen, srcBLen) - 1.
+  @return        none
+ */
+void arm_correlate_fast_q15(
+  const q15_t * pSrcA,
+        uint32_t srcALen,
+  const q15_t * pSrcB,
+        uint32_t srcBLen,
+        q15_t * pDst);
+
+
+/**
+  @brief Correlation of Q15 sequences (fast version).
+  @param[in]  pSrcA     points to the first input sequence.
+  @param[in]  srcALen   length of the first input sequence.
+  @param[in]  pSrcB     points to the second input sequence.
+  @param[in]  srcBLen   length of the second input sequence.
+  @param[out] pDst      points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.
+  @param[in]  pScratch  points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
+ */
+void arm_correlate_fast_opt_q15(
+  const q15_t * pSrcA,
+        uint32_t srcALen,
+  const q15_t * pSrcB,
+        uint32_t srcBLen,
+        q15_t * pDst,
+        q15_t * pScratch);
+
+
+  /**
+   * @brief Correlation of Q31 sequences.
+   * @param[in]  pSrcA    points to the first input sequence.
+   * @param[in]  srcALen  length of the first input sequence.
+   * @param[in]  pSrcB    points to the second input sequence.
+   * @param[in]  srcBLen  length of the second input sequence.
+   * @param[out] pDst     points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.
+   */
+  void arm_correlate_q31(
+  const q31_t * pSrcA,
+        uint32_t srcALen,
+  const q31_t * pSrcB,
+        uint32_t srcBLen,
+        q31_t * pDst);
+
+
+/**
+  @brief Correlation of Q31 sequences (fast version).
+  @param[in]  pSrcA    points to the first input sequence
+  @param[in]  srcALen  length of the first input sequence
+  @param[in]  pSrcB    points to the second input sequence
+  @param[in]  srcBLen  length of the second input sequence
+  @param[out] pDst     points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.
+ */
+void arm_correlate_fast_q31(
+  const q31_t * pSrcA,
+        uint32_t srcALen,
+  const q31_t * pSrcB,
+        uint32_t srcBLen,
+        q31_t * pDst);
+
+
+ /**
+   * @brief Correlation of Q7 sequences.
+   * @param[in]  pSrcA      points to the first input sequence.
+   * @param[in]  srcALen    length of the first input sequence.
+   * @param[in]  pSrcB      points to the second input sequence.
+   * @param[in]  srcBLen    length of the second input sequence.
+   * @param[out] pDst       points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.
+   * @param[in]  pScratch1  points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
+   * @param[in]  pScratch2  points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen).
+   */
+  void arm_correlate_opt_q7(
+  const q7_t * pSrcA,
+        uint32_t srcALen,
+  const q7_t * pSrcB,
+        uint32_t srcBLen,
+        q7_t * pDst,
+        q15_t * pScratch1,
+        q15_t * pScratch2);
+
+
+  /**
+   * @brief Correlation of Q7 sequences.
+   * @param[in]  pSrcA    points to the first input sequence.
+   * @param[in]  srcALen  length of the first input sequence.
+   * @param[in]  pSrcB    points to the second input sequence.
+   * @param[in]  srcBLen  length of the second input sequence.
+   * @param[out] pDst     points to the block of output data  Length 2 * max(srcALen, srcBLen) - 1.
+   */
+  void arm_correlate_q7(
+  const q7_t * pSrcA,
+        uint32_t srcALen,
+  const q7_t * pSrcB,
+        uint32_t srcBLen,
+        q7_t * pDst);
+
+
+  /**
+   * @brief Instance structure for the floating-point sparse FIR filter.
+   */
+  typedef struct
+  {
+          uint16_t numTaps;             /**< number of coefficients in the filter. */
+          uint16_t stateIndex;          /**< state buffer index.  Points to the oldest sample in the state buffer. */
+          float32_t *pState;            /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */
+    const float32_t *pCoeffs;           /**< points to the coefficient array. The array is of length numTaps.*/
+          uint16_t maxDelay;            /**< maximum offset specified by the pTapDelay array. */
+          int32_t *pTapDelay;           /**< points to the array of delay values.  The array is of length numTaps. */
+  } arm_fir_sparse_instance_f32;
+
+  /**
+   * @brief Instance structure for the Q31 sparse FIR filter.
+   */
+  typedef struct
+  {
+          uint16_t numTaps;             /**< number of coefficients in the filter. */
+          uint16_t stateIndex;          /**< state buffer index.  Points to the oldest sample in the state buffer. */
+          q31_t *pState;                /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */
+    const q31_t *pCoeffs;               /**< points to the coefficient array. The array is of length numTaps.*/
+          uint16_t maxDelay;            /**< maximum offset specified by the pTapDelay array. */
+          int32_t *pTapDelay;           /**< points to the array of delay values.  The array is of length numTaps. */
+  } arm_fir_sparse_instance_q31;
+
+  /**
+   * @brief Instance structure for the Q15 sparse FIR filter.
+   */
+  typedef struct
+  {
+          uint16_t numTaps;             /**< number of coefficients in the filter. */
+          uint16_t stateIndex;          /**< state buffer index.  Points to the oldest sample in the state buffer. */
+          q15_t *pState;                /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */
+    const q15_t *pCoeffs;               /**< points to the coefficient array. The array is of length numTaps.*/
+          uint16_t maxDelay;            /**< maximum offset specified by the pTapDelay array. */
+          int32_t *pTapDelay;           /**< points to the array of delay values.  The array is of length numTaps. */
+  } arm_fir_sparse_instance_q15;
+
+  /**
+   * @brief Instance structure for the Q7 sparse FIR filter.
+   */
+  typedef struct
+  {
+          uint16_t numTaps;             /**< number of coefficients in the filter. */
+          uint16_t stateIndex;          /**< state buffer index.  Points to the oldest sample in the state buffer. */
+          q7_t *pState;                 /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */
+    const q7_t *pCoeffs;                /**< points to the coefficient array. The array is of length numTaps.*/
+          uint16_t maxDelay;            /**< maximum offset specified by the pTapDelay array. */
+          int32_t *pTapDelay;           /**< points to the array of delay values.  The array is of length numTaps. */
+  } arm_fir_sparse_instance_q7;
+
+
+  /**
+   * @brief Processing function for the floating-point sparse FIR filter.
+   * @param[in]  S           points to an instance of the floating-point sparse FIR structure.
+   * @param[in]  pSrc        points to the block of input data.
+   * @param[out] pDst        points to the block of output data
+   * @param[in]  pScratchIn  points to a temporary buffer of size blockSize.
+   * @param[in]  blockSize   number of input samples to process per call.
+   */
+  void arm_fir_sparse_f32(
+        arm_fir_sparse_instance_f32 * S,
+  const float32_t * pSrc,
+        float32_t * pDst,
+        float32_t * pScratchIn,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Initialization function for the floating-point sparse FIR filter.
+   * @param[in,out] S          points to an instance of the floating-point sparse FIR structure.
+   * @param[in]     numTaps    number of nonzero coefficients in the filter.
+   * @param[in]     pCoeffs    points to the array of filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     pTapDelay  points to the array of offset times.
+   * @param[in]     maxDelay   maximum offset time supported.
+   * @param[in]     blockSize  number of samples that will be processed per block.
+   */
+  void arm_fir_sparse_init_f32(
+        arm_fir_sparse_instance_f32 * S,
+        uint16_t numTaps,
+  const float32_t * pCoeffs,
+        float32_t * pState,
+        int32_t * pTapDelay,
+        uint16_t maxDelay,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Processing function for the Q31 sparse FIR filter.
+   * @param[in]  S           points to an instance of the Q31 sparse FIR structure.
+   * @param[in]  pSrc        points to the block of input data.
+   * @param[out] pDst        points to the block of output data
+   * @param[in]  pScratchIn  points to a temporary buffer of size blockSize.
+   * @param[in]  blockSize   number of input samples to process per call.
+   */
+  void arm_fir_sparse_q31(
+        arm_fir_sparse_instance_q31 * S,
+  const q31_t * pSrc,
+        q31_t * pDst,
+        q31_t * pScratchIn,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Initialization function for the Q31 sparse FIR filter.
+   * @param[in,out] S          points to an instance of the Q31 sparse FIR structure.
+   * @param[in]     numTaps    number of nonzero coefficients in the filter.
+   * @param[in]     pCoeffs    points to the array of filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     pTapDelay  points to the array of offset times.
+   * @param[in]     maxDelay   maximum offset time supported.
+   * @param[in]     blockSize  number of samples that will be processed per block.
+   */
+  void arm_fir_sparse_init_q31(
+        arm_fir_sparse_instance_q31 * S,
+        uint16_t numTaps,
+  const q31_t * pCoeffs,
+        q31_t * pState,
+        int32_t * pTapDelay,
+        uint16_t maxDelay,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Processing function for the Q15 sparse FIR filter.
+   * @param[in]  S            points to an instance of the Q15 sparse FIR structure.
+   * @param[in]  pSrc         points to the block of input data.
+   * @param[out] pDst         points to the block of output data
+   * @param[in]  pScratchIn   points to a temporary buffer of size blockSize.
+   * @param[in]  pScratchOut  points to a temporary buffer of size blockSize.
+   * @param[in]  blockSize    number of input samples to process per call.
+   */
+  void arm_fir_sparse_q15(
+        arm_fir_sparse_instance_q15 * S,
+  const q15_t * pSrc,
+        q15_t * pDst,
+        q15_t * pScratchIn,
+        q31_t * pScratchOut,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Initialization function for the Q15 sparse FIR filter.
+   * @param[in,out] S          points to an instance of the Q15 sparse FIR structure.
+   * @param[in]     numTaps    number of nonzero coefficients in the filter.
+   * @param[in]     pCoeffs    points to the array of filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     pTapDelay  points to the array of offset times.
+   * @param[in]     maxDelay   maximum offset time supported.
+   * @param[in]     blockSize  number of samples that will be processed per block.
+   */
+  void arm_fir_sparse_init_q15(
+        arm_fir_sparse_instance_q15 * S,
+        uint16_t numTaps,
+  const q15_t * pCoeffs,
+        q15_t * pState,
+        int32_t * pTapDelay,
+        uint16_t maxDelay,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Processing function for the Q7 sparse FIR filter.
+   * @param[in]  S            points to an instance of the Q7 sparse FIR structure.
+   * @param[in]  pSrc         points to the block of input data.
+   * @param[out] pDst         points to the block of output data
+   * @param[in]  pScratchIn   points to a temporary buffer of size blockSize.
+   * @param[in]  pScratchOut  points to a temporary buffer of size blockSize.
+   * @param[in]  blockSize    number of input samples to process per call.
+   */
+  void arm_fir_sparse_q7(
+        arm_fir_sparse_instance_q7 * S,
+  const q7_t * pSrc,
+        q7_t * pDst,
+        q7_t * pScratchIn,
+        q31_t * pScratchOut,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Initialization function for the Q7 sparse FIR filter.
+   * @param[in,out] S          points to an instance of the Q7 sparse FIR structure.
+   * @param[in]     numTaps    number of nonzero coefficients in the filter.
+   * @param[in]     pCoeffs    points to the array of filter coefficients.
+   * @param[in]     pState     points to the state buffer.
+   * @param[in]     pTapDelay  points to the array of offset times.
+   * @param[in]     maxDelay   maximum offset time supported.
+   * @param[in]     blockSize  number of samples that will be processed per block.
+   */
+  void arm_fir_sparse_init_q7(
+        arm_fir_sparse_instance_q7 * S,
+        uint16_t numTaps,
+  const q7_t * pCoeffs,
+        q7_t * pState,
+        int32_t * pTapDelay,
+        uint16_t maxDelay,
+        uint32_t blockSize);
+
+
+
+
+ 
+
+  /**
+   * @brief floating-point Circular write function.
+   */
+  __STATIC_FORCEINLINE void arm_circularWrite_f32(
+  int32_t * circBuffer,
+  int32_t L,
+  uint16_t * writeOffset,
+  int32_t bufferInc,
+  const int32_t * src,
+  int32_t srcInc,
+  uint32_t blockSize)
+  {
+    uint32_t i = 0U;
+    int32_t wOffset;
+
+    /* Copy the value of Index pointer that points
+     * to the current location where the input samples to be copied */
+    wOffset = *writeOffset;
+
+    /* Loop over the blockSize */
+    i = blockSize;
+
+    while (i > 0U)
+    {
+      /* copy the input sample to the circular buffer */
+      circBuffer[wOffset] = *src;
+
+      /* Update the input pointer */
+      src += srcInc;
+
+      /* Circularly update wOffset.  Watch out for positive and negative value */
+      wOffset += bufferInc;
+      if (wOffset >= L)
+        wOffset -= L;
+
+      /* Decrement the loop counter */
+      i--;
+    }
+
+    /* Update the index pointer */
+    *writeOffset = (uint16_t)wOffset;
+  }
+
+
+
+  /**
+   * @brief floating-point Circular Read function.
+   */
+  __STATIC_FORCEINLINE void arm_circularRead_f32(
+  int32_t * circBuffer,
+  int32_t L,
+  int32_t * readOffset,
+  int32_t bufferInc,
+  int32_t * dst,
+  int32_t * dst_base,
+  int32_t dst_length,
+  int32_t dstInc,
+  uint32_t blockSize)
+  {
+    uint32_t i = 0U;
+    int32_t rOffset;
+    int32_t* dst_end;
+
+    /* Copy the value of Index pointer that points
+     * to the current location from where the input samples to be read */
+    rOffset = *readOffset;
+    dst_end = dst_base + dst_length;
+
+    /* Loop over the blockSize */
+    i = blockSize;
+
+    while (i > 0U)
+    {
+      /* copy the sample from the circular buffer to the destination buffer */
+      *dst = circBuffer[rOffset];
+
+      /* Update the input pointer */
+      dst += dstInc;
+
+      if (dst == dst_end)
+      {
+        dst = dst_base;
+      }
+
+      /* Circularly update rOffset.  Watch out for positive and negative value  */
+      rOffset += bufferInc;
+
+      if (rOffset >= L)
+      {
+        rOffset -= L;
+      }
+
+      /* Decrement the loop counter */
+      i--;
+    }
+
+    /* Update the index pointer */
+    *readOffset = rOffset;
+  }
+
+
+  /**
+   * @brief Q15 Circular write function.
+   */
+  __STATIC_FORCEINLINE void arm_circularWrite_q15(
+  q15_t * circBuffer,
+  int32_t L,
+  uint16_t * writeOffset,
+  int32_t bufferInc,
+  const q15_t * src,
+  int32_t srcInc,
+  uint32_t blockSize)
+  {
+    uint32_t i = 0U;
+    int32_t wOffset;
+
+    /* Copy the value of Index pointer that points
+     * to the current location where the input samples to be copied */
+    wOffset = *writeOffset;
+
+    /* Loop over the blockSize */
+    i = blockSize;
+
+    while (i > 0U)
+    {
+      /* copy the input sample to the circular buffer */
+      circBuffer[wOffset] = *src;
+
+      /* Update the input pointer */
+      src += srcInc;
+
+      /* Circularly update wOffset.  Watch out for positive and negative value */
+      wOffset += bufferInc;
+      if (wOffset >= L)
+        wOffset -= L;
+
+      /* Decrement the loop counter */
+      i--;
+    }
+
+    /* Update the index pointer */
+    *writeOffset = (uint16_t)wOffset;
+  }
+
+
+  /**
+   * @brief Q15 Circular Read function.
+   */
+  __STATIC_FORCEINLINE void arm_circularRead_q15(
+  q15_t * circBuffer,
+  int32_t L,
+  int32_t * readOffset,
+  int32_t bufferInc,
+  q15_t * dst,
+  q15_t * dst_base,
+  int32_t dst_length,
+  int32_t dstInc,
+  uint32_t blockSize)
+  {
+    uint32_t i = 0;
+    int32_t rOffset;
+    q15_t* dst_end;
+
+    /* Copy the value of Index pointer that points
+     * to the current location from where the input samples to be read */
+    rOffset = *readOffset;
+
+    dst_end = dst_base + dst_length;
+
+    /* Loop over the blockSize */
+    i = blockSize;
+
+    while (i > 0U)
+    {
+      /* copy the sample from the circular buffer to the destination buffer */
+      *dst = circBuffer[rOffset];
+
+      /* Update the input pointer */
+      dst += dstInc;
+
+      if (dst == dst_end)
+      {
+        dst = dst_base;
+      }
+
+      /* Circularly update wOffset.  Watch out for positive and negative value */
+      rOffset += bufferInc;
+
+      if (rOffset >= L)
+      {
+        rOffset -= L;
+      }
+
+      /* Decrement the loop counter */
+      i--;
+    }
+
+    /* Update the index pointer */
+    *readOffset = rOffset;
+  }
+
+
+  /**
+   * @brief Q7 Circular write function.
+   */
+  __STATIC_FORCEINLINE void arm_circularWrite_q7(
+  q7_t * circBuffer,
+  int32_t L,
+  uint16_t * writeOffset,
+  int32_t bufferInc,
+  const q7_t * src,
+  int32_t srcInc,
+  uint32_t blockSize)
+  {
+    uint32_t i = 0U;
+    int32_t wOffset;
+
+    /* Copy the value of Index pointer that points
+     * to the current location where the input samples to be copied */
+    wOffset = *writeOffset;
+
+    /* Loop over the blockSize */
+    i = blockSize;
+
+    while (i > 0U)
+    {
+      /* copy the input sample to the circular buffer */
+      circBuffer[wOffset] = *src;
+
+      /* Update the input pointer */
+      src += srcInc;
+
+      /* Circularly update wOffset.  Watch out for positive and negative value */
+      wOffset += bufferInc;
+      if (wOffset >= L)
+        wOffset -= L;
+
+      /* Decrement the loop counter */
+      i--;
+    }
+
+    /* Update the index pointer */
+    *writeOffset = (uint16_t)wOffset;
+  }
+
+
+  /**
+   * @brief Q7 Circular Read function.
+   */
+  __STATIC_FORCEINLINE void arm_circularRead_q7(
+  q7_t * circBuffer,
+  int32_t L,
+  int32_t * readOffset,
+  int32_t bufferInc,
+  q7_t * dst,
+  q7_t * dst_base,
+  int32_t dst_length,
+  int32_t dstInc,
+  uint32_t blockSize)
+  {
+    uint32_t i = 0;
+    int32_t rOffset;
+    q7_t* dst_end;
+
+    /* Copy the value of Index pointer that points
+     * to the current location from where the input samples to be read */
+    rOffset = *readOffset;
+
+    dst_end = dst_base + dst_length;
+
+    /* Loop over the blockSize */
+    i = blockSize;
+
+    while (i > 0U)
+    {
+      /* copy the sample from the circular buffer to the destination buffer */
+      *dst = circBuffer[rOffset];
+
+      /* Update the input pointer */
+      dst += dstInc;
+
+      if (dst == dst_end)
+      {
+        dst = dst_base;
+      }
+
+      /* Circularly update rOffset.  Watch out for positive and negative value */
+      rOffset += bufferInc;
+
+      if (rOffset >= L)
+      {
+        rOffset -= L;
+      }
+
+      /* Decrement the loop counter */
+      i--;
+    }
+
+    /* Update the index pointer */
+    *readOffset = rOffset;
+  }
+
+
+
+ 
+#ifdef   __cplusplus
+}
+#endif
+
+#endif /* ifndef _FILTERING_FUNCTIONS_H_ */
diff --git a/CMSIS/DSP/Include/dsp/filtering_functions_f16.h b/CMSIS/DSP/Include/dsp/filtering_functions_f16.h
new file mode 100755
index 0000000..7a72910
--- /dev/null
+++ b/CMSIS/DSP/Include/dsp/filtering_functions_f16.h
@@ -0,0 +1,40 @@
+/******************************************************************************
+ * @file     filtering_functions_f16.h
+ * @brief    Public header file for CMSIS DSP Library
+ * @version  V1.9.0
+ * @date     20. July 2020
+ ******************************************************************************/
+/*
+ * 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.
+ */
+
+ 
+#ifndef _FILTERING_FUNCTIONS_F16_H_
+#define _FILTERING_FUNCTIONS_F16_H_
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+#if defined(ARM_FLOAT16_SUPPORTED)
+#endif /*defined(ARM_FLOAT16_SUPPORTED)*/
+#ifdef   __cplusplus
+}
+#endif
+
+#endif /* ifndef _FILTERING_FUNCTIONS_F16_H_ */
diff --git a/CMSIS/DSP/Include/dsp/interpolation_functions.h b/CMSIS/DSP/Include/dsp/interpolation_functions.h
new file mode 100755
index 0000000..81034cd
--- /dev/null
+++ b/CMSIS/DSP/Include/dsp/interpolation_functions.h
@@ -0,0 +1,318 @@
+/******************************************************************************
+ * @file     interpolation_functions.h
+ * @brief    Public header file for CMSIS DSP Library
+ * @version  V1.9.0
+ * @date     20. July 2020
+ ******************************************************************************/
+/*
+ * 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.
+ */
+
+ 
+#ifndef _INTERPOLATION_FUNCTIONS_H_
+#define _INTERPOLATION_FUNCTIONS_H_
+
+#include "arm_math_types.h"
+#include "arm_math_memory.h"
+
+#include "dsp/none.h"
+#include "dsp/utils.h"
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+
+/**
+ * @defgroup groupInterpolation Interpolation Functions
+ * These functions perform 1- and 2-dimensional interpolation of data.
+ * Linear interpolation is used for 1-dimensional data and
+ * bilinear interpolation is used for 2-dimensional data.
+ */
+
+
+  /**
+   * @brief Instance structure for the floating-point Linear Interpolate function.
+   */
+  typedef struct
+  {
+          uint32_t nValues;           /**< nValues */
+          float32_t x1;               /**< x1 */
+          float32_t xSpacing;         /**< xSpacing */
+          float32_t *pYData;          /**< pointer to the table of Y values */
+  } arm_linear_interp_instance_f32;
+
+  /**
+   * @brief Instance structure for the floating-point bilinear interpolation function.
+   */
+  typedef struct
+  {
+          uint16_t numRows;   /**< number of rows in the data table. */
+          uint16_t numCols;   /**< number of columns in the data table. */
+          float32_t *pData;   /**< points to the data table. */
+  } arm_bilinear_interp_instance_f32;
+
+   /**
+   * @brief Instance structure for the Q31 bilinear interpolation function.
+   */
+  typedef struct
+  {
+          uint16_t numRows;   /**< number of rows in the data table. */
+          uint16_t numCols;   /**< number of columns in the data table. */
+          q31_t *pData;       /**< points to the data table. */
+  } arm_bilinear_interp_instance_q31;
+
+   /**
+   * @brief Instance structure for the Q15 bilinear interpolation function.
+   */
+  typedef struct
+  {
+          uint16_t numRows;   /**< number of rows in the data table. */
+          uint16_t numCols;   /**< number of columns in the data table. */
+          q15_t *pData;       /**< points to the data table. */
+  } arm_bilinear_interp_instance_q15;
+
+   /**
+   * @brief Instance structure for the Q15 bilinear interpolation function.
+   */
+  typedef struct
+  {
+          uint16_t numRows;   /**< number of rows in the data table. */
+          uint16_t numCols;   /**< number of columns in the data table. */
+          q7_t *pData;        /**< points to the data table. */
+  } arm_bilinear_interp_instance_q7;
+
+
+  /**
+   * @brief Struct for specifying cubic spline type
+   */
+  typedef enum
+  {
+    ARM_SPLINE_NATURAL = 0,           /**< Natural spline */
+    ARM_SPLINE_PARABOLIC_RUNOUT = 1   /**< Parabolic runout spline */
+  } arm_spline_type;
+
+  /**
+   * @brief Instance structure for the floating-point cubic spline interpolation.
+   */
+  typedef struct
+  {
+    arm_spline_type type;      /**< Type (boundary conditions) */
+    const float32_t * x;       /**< x values */
+    const float32_t * y;       /**< y values */
+    uint32_t n_x;              /**< Number of known data points */
+    float32_t * coeffs;        /**< Coefficients buffer (b,c, and d) */
+  } arm_spline_instance_f32;
+
+
+
+
+  /**
+   * @ingroup groupInterpolation
+   */
+
+  /**
+   * @addtogroup SplineInterpolate
+   * @{
+   */
+
+  
+  /**
+   * @brief Processing function for the floating-point cubic spline interpolation.
+   * @param[in]  S          points to an instance of the floating-point spline structure.
+   * @param[in]  xq         points to the x values ot the interpolated data points.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of samples of output data.
+   */
+  void arm_spline_f32(
+        arm_spline_instance_f32 * S, 
+  const float32_t * xq,
+        float32_t * pDst,
+        uint32_t blockSize);
+
+  /**
+   * @brief Initialization function for the floating-point cubic spline interpolation.
+   * @param[in,out] S        points to an instance of the floating-point spline structure.
+   * @param[in]     type     type of cubic spline interpolation (boundary conditions)
+   * @param[in]     x        points to the x values of the known data points.
+   * @param[in]     y        points to the y values of the known data points.
+   * @param[in]     n        number of known data points.
+   * @param[in]     coeffs   coefficients array for b, c, and d
+   * @param[in]     tempBuffer   buffer array for internal computations
+   */
+  void arm_spline_init_f32(
+          arm_spline_instance_f32 * S,
+          arm_spline_type type,
+    const float32_t * x,
+    const float32_t * y,
+          uint32_t n, 
+          float32_t * coeffs,
+          float32_t * tempBuffer);
+
+
+  /**
+   * @} end of SplineInterpolate group
+   */
+
+
+  
+  /**
+   * @addtogroup LinearInterpolate
+   * @{
+   */
+
+    /**
+   * @brief  Process function for the floating-point Linear Interpolation Function.
+   * @param[in,out] S  is an instance of the floating-point Linear Interpolation structure
+   * @param[in]     x  input sample to process
+   * @return y processed output sample.
+   *
+   */
+  float32_t arm_linear_interp_f32(
+  arm_linear_interp_instance_f32 * S,
+  float32_t x);
+
+   /**
+   *
+   * @brief  Process function for the Q31 Linear Interpolation Function.
+   * @param[in] pYData   pointer to Q31 Linear Interpolation table
+   * @param[in] x        input sample to process
+   * @param[in] nValues  number of table values
+   * @return y processed output sample.
+   *
+   * \par
+   * Input sample <code>x</code> is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part.
+   * This function can support maximum of table size 2^12.
+   *
+   */
+  q31_t arm_linear_interp_q31(
+  q31_t * pYData,
+  q31_t x,
+  uint32_t nValues);
+
+  /**
+   *
+   * @brief  Process function for the Q15 Linear Interpolation Function.
+   * @param[in] pYData   pointer to Q15 Linear Interpolation table
+   * @param[in] x        input sample to process
+   * @param[in] nValues  number of table values
+   * @return y processed output sample.
+   *
+   * \par
+   * Input sample <code>x</code> is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part.
+   * This function can support maximum of table size 2^12.
+   *
+   */
+  q15_t arm_linear_interp_q15(
+  q15_t * pYData,
+  q31_t x,
+  uint32_t nValues);
+
+  /**
+   *
+   * @brief  Process function for the Q7 Linear Interpolation Function.
+   * @param[in] pYData   pointer to Q7 Linear Interpolation table
+   * @param[in] x        input sample to process
+   * @param[in] nValues  number of table values
+   * @return y processed output sample.
+   *
+   * \par
+   * Input sample <code>x</code> is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part.
+   * This function can support maximum of table size 2^12.
+   */
+q7_t arm_linear_interp_q7(
+  q7_t * pYData,
+  q31_t x,
+  uint32_t nValues);
+
+  /**
+   * @} end of LinearInterpolate group
+   */
+
+  
+
+
+  /**
+   * @ingroup groupInterpolation
+   */
+
+
+  /**
+   * @addtogroup BilinearInterpolate
+   * @{
+   */
+
+  /**
+  * @brief  Floating-point bilinear interpolation.
+  * @param[in,out] S  points to an instance of the interpolation structure.
+  * @param[in]     X  interpolation coordinate.
+  * @param[in]     Y  interpolation coordinate.
+  * @return out interpolated value.
+  */
+  float32_t arm_bilinear_interp_f32(
+  const arm_bilinear_interp_instance_f32 * S,
+  float32_t X,
+  float32_t Y);
+
+  /**
+  * @brief  Q31 bilinear interpolation.
+  * @param[in,out] S  points to an instance of the interpolation structure.
+  * @param[in]     X  interpolation coordinate in 12.20 format.
+  * @param[in]     Y  interpolation coordinate in 12.20 format.
+  * @return out interpolated value.
+  */
+  q31_t arm_bilinear_interp_q31(
+  arm_bilinear_interp_instance_q31 * S,
+  q31_t X,
+  q31_t Y);
+
+
+  /**
+  * @brief  Q15 bilinear interpolation.
+  * @param[in,out] S  points to an instance of the interpolation structure.
+  * @param[in]     X  interpolation coordinate in 12.20 format.
+  * @param[in]     Y  interpolation coordinate in 12.20 format.
+  * @return out interpolated value.
+  */
+  q15_t arm_bilinear_interp_q15(
+  arm_bilinear_interp_instance_q15 * S,
+  q31_t X,
+  q31_t Y);
+
+  /**
+  * @brief  Q7 bilinear interpolation.
+  * @param[in,out] S  points to an instance of the interpolation structure.
+  * @param[in]     X  interpolation coordinate in 12.20 format.
+  * @param[in]     Y  interpolation coordinate in 12.20 format.
+  * @return out interpolated value.
+  */
+  q7_t arm_bilinear_interp_q7(
+  arm_bilinear_interp_instance_q7 * S,
+  q31_t X,
+  q31_t Y);
+  /**
+   * @} end of BilinearInterpolate group
+   */
+
+
+
+#ifdef   __cplusplus
+}
+#endif
+
+#endif /* ifndef _INTERPOLATION_FUNCTIONS_H_ */
diff --git a/CMSIS/DSP/Include/dsp/interpolation_functions_f16.h b/CMSIS/DSP/Include/dsp/interpolation_functions_f16.h
new file mode 100755
index 0000000..e102869
--- /dev/null
+++ b/CMSIS/DSP/Include/dsp/interpolation_functions_f16.h
@@ -0,0 +1,40 @@
+/******************************************************************************
+ * @file     interpolation_functions_f16.h
+ * @brief    Public header file for CMSIS DSP Library
+ * @version  V1.9.0
+ * @date     20. July 2020
+ ******************************************************************************/
+/*
+ * 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.
+ */
+
+ 
+#ifndef _INTERPOLATION_FUNCTIONS_F16_H_
+#define _INTERPOLATION_FUNCTIONS_F16_H_
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+#if defined(ARM_FLOAT16_SUPPORTED)
+#endif /*defined(ARM_FLOAT16_SUPPORTED)*/
+#ifdef   __cplusplus
+}
+#endif
+
+#endif /* ifndef _INTERPOLATION_FUNCTIONS_F16_H_ */
diff --git a/CMSIS/DSP/Include/dsp/matrix_functions.h b/CMSIS/DSP/Include/dsp/matrix_functions.h
new file mode 100755
index 0000000..e2330c6
--- /dev/null
+++ b/CMSIS/DSP/Include/dsp/matrix_functions.h
@@ -0,0 +1,597 @@
+/******************************************************************************
+ * @file     matrix_functions.h
+ * @brief    Public header file for CMSIS DSP Library
+ * @version  V1.9.0
+ * @date     20. July 2020
+ ******************************************************************************/
+/*
+ * 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.
+ */
+
+ 
+#ifndef _MATRIX_FUNCTIONS_H_
+#define _MATRIX_FUNCTIONS_H_
+
+#include "arm_math_types.h"
+#include "arm_math_memory.h"
+
+#include "dsp/none.h"
+#include "dsp/utils.h"
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+/**
+ * @defgroup groupMatrix Matrix Functions
+ *
+ * This set of functions provides basic matrix math operations.
+ * The functions operate on matrix data structures.  For example,
+ * the type
+ * definition for the floating-point matrix structure is shown
+ * below:
+ * <pre>
+ *     typedef struct
+ *     {
+ *       uint16_t numRows;     // number of rows of the matrix.
+ *       uint16_t numCols;     // number of columns of the matrix.
+ *       float32_t *pData;     // points to the data of the matrix.
+ *     } arm_matrix_instance_f32;
+ * </pre>
+ * There are similar definitions for Q15 and Q31 data types.
+ *
+ * The structure specifies the size of the matrix and then points to
+ * an array of data.  The array is of size <code>numRows X numCols</code>
+ * and the values are arranged in row order.  That is, the
+ * matrix element (i, j) is stored at:
+ * <pre>
+ *     pData[i*numCols + j]
+ * </pre>
+ *
+ * \par Init Functions
+ * There is an associated initialization function for each type of matrix
+ * data structure.
+ * The initialization function sets the values of the internal structure fields.
+ * Refer to \ref arm_mat_init_f32(), \ref arm_mat_init_q31() and \ref arm_mat_init_q15()
+ * for floating-point, Q31 and Q15 types,  respectively.
+ *
+ * \par
+ * Use of the initialization function is optional. However, if initialization function is used
+ * then the instance structure cannot be placed into a const data section.
+ * To place the instance structure in a const data
+ * section, manually initialize the data structure.  For example:
+ * <pre>
+ * <code>arm_matrix_instance_f32 S = {nRows, nColumns, pData};</code>
+ * <code>arm_matrix_instance_q31 S = {nRows, nColumns, pData};</code>
+ * <code>arm_matrix_instance_q15 S = {nRows, nColumns, pData};</code>
+ * </pre>
+ * where <code>nRows</code> specifies the number of rows, <code>nColumns</code>
+ * specifies the number of columns, and <code>pData</code> points to the
+ * data array.
+ *
+ * \par Size Checking
+ * By default all of the matrix functions perform size checking on the input and
+ * output matrices. For example, the matrix addition function verifies that the
+ * two input matrices and the output matrix all have the same number of rows and
+ * columns. If the size check fails the functions return:
+ * <pre>
+ *     ARM_MATH_SIZE_MISMATCH
+ * </pre>
+ * Otherwise the functions return
+ * <pre>
+ *     ARM_MATH_SUCCESS
+ * </pre>
+ * There is some overhead associated with this matrix size checking.
+ * The matrix size checking is enabled via the \#define
+ * <pre>
+ *     ARM_MATH_MATRIX_CHECK
+ * </pre>
+ * within the library project settings.  By default this macro is defined
+ * and size checking is enabled. By changing the project settings and
+ * undefining this macro size checking is eliminated and the functions
+ * run a bit faster. With size checking disabled the functions always
+ * return <code>ARM_MATH_SUCCESS</code>.
+ */
+
+  /**
+   * @brief Instance structure for the floating-point matrix structure.
+   */
+  typedef struct
+  {
+    uint16_t numRows;     /**< number of rows of the matrix.     */
+    uint16_t numCols;     /**< number of columns of the matrix.  */
+    float32_t *pData;     /**< points to the data of the matrix. */
+  } arm_matrix_instance_f32;
+ 
+ /**
+   * @brief Instance structure for the floating-point matrix structure.
+   */
+  typedef struct
+  {
+    uint16_t numRows;     /**< number of rows of the matrix.     */
+    uint16_t numCols;     /**< number of columns of the matrix.  */
+    float64_t *pData;     /**< points to the data of the matrix. */
+  } arm_matrix_instance_f64;
+
+ /**
+   * @brief Instance structure for the Q7 matrix structure.
+   */
+  typedef struct
+  {
+    uint16_t numRows;     /**< number of rows of the matrix.     */
+    uint16_t numCols;     /**< number of columns of the matrix.  */
+    q7_t *pData;         /**< points to the data of the matrix. */
+  } arm_matrix_instance_q7;
+
+  /**
+   * @brief Instance structure for the Q15 matrix structure.
+   */
+  typedef struct
+  {
+    uint16_t numRows;     /**< number of rows of the matrix.     */
+    uint16_t numCols;     /**< number of columns of the matrix.  */
+    q15_t *pData;         /**< points to the data of the matrix. */
+  } arm_matrix_instance_q15;
+
+  /**
+   * @brief Instance structure for the Q31 matrix structure.
+   */
+  typedef struct
+  {
+    uint16_t numRows;     /**< number of rows of the matrix.     */
+    uint16_t numCols;     /**< number of columns of the matrix.  */
+    q31_t *pData;         /**< points to the data of the matrix. */
+  } arm_matrix_instance_q31;
+
+  /**
+   * @brief Floating-point matrix addition.
+   * @param[in]  pSrcA  points to the first input matrix structure
+   * @param[in]  pSrcB  points to the second input matrix structure
+   * @param[out] pDst   points to output matrix structure
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+arm_status arm_mat_add_f32(
+  const arm_matrix_instance_f32 * pSrcA,
+  const arm_matrix_instance_f32 * pSrcB,
+        arm_matrix_instance_f32 * pDst);
+
+  /**
+   * @brief Q15 matrix addition.
+   * @param[in]   pSrcA  points to the first input matrix structure
+   * @param[in]   pSrcB  points to the second input matrix structure
+   * @param[out]  pDst   points to output matrix structure
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+arm_status arm_mat_add_q15(
+  const arm_matrix_instance_q15 * pSrcA,
+  const arm_matrix_instance_q15 * pSrcB,
+        arm_matrix_instance_q15 * pDst);
+
+  /**
+   * @brief Q31 matrix addition.
+   * @param[in]  pSrcA  points to the first input matrix structure
+   * @param[in]  pSrcB  points to the second input matrix structure
+   * @param[out] pDst   points to output matrix structure
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+arm_status arm_mat_add_q31(
+  const arm_matrix_instance_q31 * pSrcA,
+  const arm_matrix_instance_q31 * pSrcB,
+        arm_matrix_instance_q31 * pDst);
+
+  /**
+   * @brief Floating-point, complex, matrix multiplication.
+   * @param[in]  pSrcA  points to the first input matrix structure
+   * @param[in]  pSrcB  points to the second input matrix structure
+   * @param[out] pDst   points to output matrix structure
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+arm_status arm_mat_cmplx_mult_f32(
+  const arm_matrix_instance_f32 * pSrcA,
+  const arm_matrix_instance_f32 * pSrcB,
+        arm_matrix_instance_f32 * pDst);
+
+  /**
+   * @brief Q15, complex,  matrix multiplication.
+   * @param[in]  pSrcA  points to the first input matrix structure
+   * @param[in]  pSrcB  points to the second input matrix structure
+   * @param[out] pDst   points to output matrix structure
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+arm_status arm_mat_cmplx_mult_q15(
+  const arm_matrix_instance_q15 * pSrcA,
+  const arm_matrix_instance_q15 * pSrcB,
+        arm_matrix_instance_q15 * pDst,
+        q15_t * pScratch);
+
+  /**
+   * @brief Q31, complex, matrix multiplication.
+   * @param[in]  pSrcA  points to the first input matrix structure
+   * @param[in]  pSrcB  points to the second input matrix structure
+   * @param[out] pDst   points to output matrix structure
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+arm_status arm_mat_cmplx_mult_q31(
+  const arm_matrix_instance_q31 * pSrcA,
+  const arm_matrix_instance_q31 * pSrcB,
+        arm_matrix_instance_q31 * pDst);
+
+  /**
+   * @brief Floating-point matrix transpose.
+   * @param[in]  pSrc  points to the input matrix
+   * @param[out] pDst  points to the output matrix
+   * @return    The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>
+   * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+arm_status arm_mat_trans_f32(
+  const arm_matrix_instance_f32 * pSrc,
+        arm_matrix_instance_f32 * pDst);
+
+  /**
+   * @brief Floating-point complex matrix transpose.
+   * @param[in]  pSrc  points to the input matrix
+   * @param[out] pDst  points to the output matrix
+   * @return    The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>
+   * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+arm_status arm_mat_cmplx_trans_f32(
+  const arm_matrix_instance_f32 * pSrc,
+  arm_matrix_instance_f32 * pDst);
+
+
+  /**
+   * @brief Q15 matrix transpose.
+   * @param[in]  pSrc  points to the input matrix
+   * @param[out] pDst  points to the output matrix
+   * @return    The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>
+   * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+arm_status arm_mat_trans_q15(
+  const arm_matrix_instance_q15 * pSrc,
+        arm_matrix_instance_q15 * pDst);
+
+  /**
+   * @brief Q15 complex matrix transpose.
+   * @param[in]  pSrc  points to the input matrix
+   * @param[out] pDst  points to the output matrix
+   * @return    The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>
+   * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+arm_status arm_mat_cmplx_trans_q15(
+  const arm_matrix_instance_q15 * pSrc,
+  arm_matrix_instance_q15 * pDst);
+
+  /**
+   * @brief Q7 matrix transpose.
+   * @param[in]  pSrc  points to the input matrix
+   * @param[out] pDst  points to the output matrix
+   * @return    The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>
+   * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+arm_status arm_mat_trans_q7(
+  const arm_matrix_instance_q7 * pSrc,
+        arm_matrix_instance_q7 * pDst);
+
+  /**
+   * @brief Q31 matrix transpose.
+   * @param[in]  pSrc  points to the input matrix
+   * @param[out] pDst  points to the output matrix
+   * @return    The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>
+   * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+arm_status arm_mat_trans_q31(
+  const arm_matrix_instance_q31 * pSrc,
+        arm_matrix_instance_q31 * pDst);
+
+  /**
+   * @brief Q31 complex matrix transpose.
+   * @param[in]  pSrc  points to the input matrix
+   * @param[out] pDst  points to the output matrix
+   * @return    The function returns either  <code>ARM_MATH_SIZE_MISMATCH</code>
+   * or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+arm_status arm_mat_cmplx_trans_q31(
+  const arm_matrix_instance_q31 * pSrc,
+  arm_matrix_instance_q31 * pDst);
+
+  /**
+   * @brief Floating-point matrix multiplication
+   * @param[in]  pSrcA  points to the first input matrix structure
+   * @param[in]  pSrcB  points to the second input matrix structure
+   * @param[out] pDst   points to output matrix structure
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+arm_status arm_mat_mult_f32(
+  const arm_matrix_instance_f32 * pSrcA,
+  const arm_matrix_instance_f32 * pSrcB,
+        arm_matrix_instance_f32 * pDst);
+
+  /**
+   * @brief Floating-point matrix and vector multiplication
+   * @param[in]  pSrcMat  points to the input matrix structure
+   * @param[in]  pVec     points to vector
+   * @param[out] pDst     points to output vector
+   */
+void arm_mat_vec_mult_f32(
+  const arm_matrix_instance_f32 *pSrcMat, 
+  const float32_t *pVec, 
+  float32_t *pDst);
+
+  /**
+   * @brief Q7 matrix multiplication
+   * @param[in]  pSrcA   points to the first input matrix structure
+   * @param[in]  pSrcB   points to the second input matrix structure
+   * @param[out] pDst    points to output matrix structure
+   * @param[in]  pState  points to the array for storing intermediate results
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+arm_status arm_mat_mult_q7(
+  const arm_matrix_instance_q7 * pSrcA,
+  const arm_matrix_instance_q7 * pSrcB,
+        arm_matrix_instance_q7 * pDst,
+        q7_t * pState);
+
+  /**
+   * @brief Q7 matrix and vector multiplication
+   * @param[in]  pSrcMat  points to the input matrix structure
+   * @param[in]  pVec     points to vector
+   * @param[out] pDst     points to output vector
+   */
+void arm_mat_vec_mult_q7(
+  const arm_matrix_instance_q7 *pSrcMat, 
+  const q7_t *pVec, 
+  q7_t *pDst);
+
+  /**
+   * @brief Q15 matrix multiplication
+   * @param[in]  pSrcA   points to the first input matrix structure
+   * @param[in]  pSrcB   points to the second input matrix structure
+   * @param[out] pDst    points to output matrix structure
+   * @param[in]  pState  points to the array for storing intermediate results
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+arm_status arm_mat_mult_q15(
+  const arm_matrix_instance_q15 * pSrcA,
+  const arm_matrix_instance_q15 * pSrcB,
+        arm_matrix_instance_q15 * pDst,
+        q15_t * pState);
+
+  /**
+   * @brief Q15 matrix and vector multiplication
+   * @param[in]  pSrcMat  points to the input matrix structure
+   * @param[in]  pVec     points to vector
+   * @param[out] pDst     points to output vector
+   */
+void arm_mat_vec_mult_q15(
+  const arm_matrix_instance_q15 *pSrcMat, 
+  const q15_t *pVec, 
+  q15_t *pDst);
+
+  /**
+   * @brief Q15 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4
+   * @param[in]  pSrcA   points to the first input matrix structure
+   * @param[in]  pSrcB   points to the second input matrix structure
+   * @param[out] pDst    points to output matrix structure
+   * @param[in]  pState  points to the array for storing intermediate results
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+arm_status arm_mat_mult_fast_q15(
+  const arm_matrix_instance_q15 * pSrcA,
+  const arm_matrix_instance_q15 * pSrcB,
+        arm_matrix_instance_q15 * pDst,
+        q15_t * pState);
+
+  /**
+   * @brief Q31 matrix multiplication
+   * @param[in]  pSrcA  points to the first input matrix structure
+   * @param[in]  pSrcB  points to the second input matrix structure
+   * @param[out] pDst   points to output matrix structure
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+arm_status arm_mat_mult_q31(
+  const arm_matrix_instance_q31 * pSrcA,
+  const arm_matrix_instance_q31 * pSrcB,
+        arm_matrix_instance_q31 * pDst);
+
+  /**
+   * @brief Q31 matrix and vector multiplication
+   * @param[in]  pSrcMat  points to the input matrix structure
+   * @param[in]  pVec     points to vector
+   * @param[out] pDst     points to output vector
+   */
+void arm_mat_vec_mult_q31(
+  const arm_matrix_instance_q31 *pSrcMat, 
+  const q31_t *pVec, 
+  q31_t *pDst);
+
+  /**
+   * @brief Q31 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4
+   * @param[in]  pSrcA  points to the first input matrix structure
+   * @param[in]  pSrcB  points to the second input matrix structure
+   * @param[out] pDst   points to output matrix structure
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+arm_status arm_mat_mult_fast_q31(
+  const arm_matrix_instance_q31 * pSrcA,
+  const arm_matrix_instance_q31 * pSrcB,
+        arm_matrix_instance_q31 * pDst);
+
+  /**
+   * @brief Floating-point matrix subtraction
+   * @param[in]  pSrcA  points to the first input matrix structure
+   * @param[in]  pSrcB  points to the second input matrix structure
+   * @param[out] pDst   points to output matrix structure
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+arm_status arm_mat_sub_f32(
+  const arm_matrix_instance_f32 * pSrcA,
+  const arm_matrix_instance_f32 * pSrcB,
+        arm_matrix_instance_f32 * pDst);
+
+  /**
+   * @brief Q15 matrix subtraction
+   * @param[in]  pSrcA  points to the first input matrix structure
+   * @param[in]  pSrcB  points to the second input matrix structure
+   * @param[out] pDst   points to output matrix structure
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+arm_status arm_mat_sub_q15(
+  const arm_matrix_instance_q15 * pSrcA,
+  const arm_matrix_instance_q15 * pSrcB,
+        arm_matrix_instance_q15 * pDst);
+
+  /**
+   * @brief Q31 matrix subtraction
+   * @param[in]  pSrcA  points to the first input matrix structure
+   * @param[in]  pSrcB  points to the second input matrix structure
+   * @param[out] pDst   points to output matrix structure
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+arm_status arm_mat_sub_q31(
+  const arm_matrix_instance_q31 * pSrcA,
+  const arm_matrix_instance_q31 * pSrcB,
+        arm_matrix_instance_q31 * pDst);
+
+  /**
+   * @brief Floating-point matrix scaling.
+   * @param[in]  pSrc   points to the input matrix
+   * @param[in]  scale  scale factor
+   * @param[out] pDst   points to the output matrix
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+arm_status arm_mat_scale_f32(
+  const arm_matrix_instance_f32 * pSrc,
+        float32_t scale,
+        arm_matrix_instance_f32 * pDst);
+
+  /**
+   * @brief Q15 matrix scaling.
+   * @param[in]  pSrc        points to input matrix
+   * @param[in]  scaleFract  fractional portion of the scale factor
+   * @param[in]  shift       number of bits to shift the result by
+   * @param[out] pDst        points to output matrix
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+arm_status arm_mat_scale_q15(
+  const arm_matrix_instance_q15 * pSrc,
+        q15_t scaleFract,
+        int32_t shift,
+        arm_matrix_instance_q15 * pDst);
+
+  /**
+   * @brief Q31 matrix scaling.
+   * @param[in]  pSrc        points to input matrix
+   * @param[in]  scaleFract  fractional portion of the scale factor
+   * @param[in]  shift       number of bits to shift the result by
+   * @param[out] pDst        points to output matrix structure
+   * @return     The function returns either
+   * <code>ARM_MATH_SIZE_MISMATCH</code> or <code>ARM_MATH_SUCCESS</code> based on the outcome of size checking.
+   */
+arm_status arm_mat_scale_q31(
+  const arm_matrix_instance_q31 * pSrc,
+        q31_t scaleFract,
+        int32_t shift,
+        arm_matrix_instance_q31 * pDst);
+
+  /**
+   * @brief  Q31 matrix initialization.
+   * @param[in,out] S         points to an instance of the floating-point matrix structure.
+   * @param[in]     nRows     number of rows in the matrix.
+   * @param[in]     nColumns  number of columns in the matrix.
+   * @param[in]     pData     points to the matrix data array.
+   */
+void arm_mat_init_q31(
+        arm_matrix_instance_q31 * S,
+        uint16_t nRows,
+        uint16_t nColumns,
+        q31_t * pData);
+
+  /**
+   * @brief  Q15 matrix initialization.
+   * @param[in,out] S         points to an instance of the floating-point matrix structure.
+   * @param[in]     nRows     number of rows in the matrix.
+   * @param[in]     nColumns  number of columns in the matrix.
+   * @param[in]     pData     points to the matrix data array.
+   */
+void arm_mat_init_q15(
+        arm_matrix_instance_q15 * S,
+        uint16_t nRows,
+        uint16_t nColumns,
+        q15_t * pData);
+
+  /**
+   * @brief  Floating-point matrix initialization.
+   * @param[in,out] S         points to an instance of the floating-point matrix structure.
+   * @param[in]     nRows     number of rows in the matrix.
+   * @param[in]     nColumns  number of columns in the matrix.
+   * @param[in]     pData     points to the matrix data array.
+   */
+void arm_mat_init_f32(
+        arm_matrix_instance_f32 * S,
+        uint16_t nRows,
+        uint16_t nColumns,
+        float32_t * pData);
+
+
+
+  /**
+   * @brief Floating-point matrix inverse.
+   * @param[in]  src   points to the instance of the input floating-point matrix structure.
+   * @param[out] dst   points to the instance of the output floating-point matrix structure.
+   * @return The function returns ARM_MATH_SIZE_MISMATCH, if the dimensions do not match.
+   * If the input matrix is singular (does not have an inverse), then the algorithm terminates and returns error status ARM_MATH_SINGULAR.
+   */
+  arm_status arm_mat_inverse_f32(
+  const arm_matrix_instance_f32 * src,
+  arm_matrix_instance_f32 * dst);
+
+
+  /**
+   * @brief Floating-point matrix inverse.
+   * @param[in]  src   points to the instance of the input floating-point matrix structure.
+   * @param[out] dst   points to the instance of the output floating-point matrix structure.
+   * @return The function returns ARM_MATH_SIZE_MISMATCH, if the dimensions do not match.
+   * If the input matrix is singular (does not have an inverse), then the algorithm terminates and returns error status ARM_MATH_SINGULAR.
+   */
+  arm_status arm_mat_inverse_f64(
+  const arm_matrix_instance_f64 * src,
+  arm_matrix_instance_f64 * dst);
+
+
+#ifdef   __cplusplus
+}
+#endif
+
+#endif /* ifndef _MATRIX_FUNCTIONS_H_ */
diff --git a/CMSIS/DSP/Include/dsp/matrix_functions_f16.h b/CMSIS/DSP/Include/dsp/matrix_functions_f16.h
new file mode 100755
index 0000000..058f4ca
--- /dev/null
+++ b/CMSIS/DSP/Include/dsp/matrix_functions_f16.h
@@ -0,0 +1,40 @@
+/******************************************************************************
+ * @file     matrix_functions_f16.h
+ * @brief    Public header file for CMSIS DSP Library
+ * @version  V1.9.0
+ * @date     20. July 2020
+ ******************************************************************************/
+/*
+ * 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.
+ */
+
+ 
+#ifndef _MATRIX_FUNCTIONS_F16_H_
+#define _MATRIX_FUNCTIONS_F16_H_
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+#if defined(ARM_FLOAT16_SUPPORTED)
+#endif /*defined(ARM_FLOAT16_SUPPORTED)*/
+#ifdef   __cplusplus
+}
+#endif
+
+#endif /* ifndef _MATRIX_FUNCTIONS_F16_H_ */
diff --git a/CMSIS/DSP/Include/dsp/none.h b/CMSIS/DSP/Include/dsp/none.h
new file mode 100755
index 0000000..62f2d14
--- /dev/null
+++ b/CMSIS/DSP/Include/dsp/none.h
@@ -0,0 +1,576 @@
+/******************************************************************************
+ * @file     none.h
+ * @brief    Intrinsincs when no DSP extension available
+ * @version  V1.9.0
+ * @date     20. July 2020
+ ******************************************************************************/
+/*
+ * 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.
+ */
+
+/*
+
+Definitions in this file are allowing to reuse some versions of the
+CMSIS-DSP to build on a core (M0 for instance) or a host where
+DSP extension are not available.
+
+Ideally a pure C version should have been used instead.
+But those are not always available or use a restricted set
+of intrinsics.
+
+*/
+ 
+#ifndef _NONE_H_
+#define _NONE_H_
+
+#include "arm_math_types.h"
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+ 
+
+/*
+
+Normally those kind of definitions are in a compiler file
+in Core or Core_A.
+
+But for MSVC compiler it is a bit special. The goal is very specific
+to CMSIS-DSP and only to allow the use of this library from other
+systems like Python or Matlab.
+
+MSVC is not going to be used to cross-compile to ARM. So, having a MSVC
+compiler file in Core or Core_A would not make sense.
+
+*/
+#if defined ( _MSC_VER ) || defined(__GNUC_PYTHON__)
+    __STATIC_FORCEINLINE uint8_t __CLZ(uint32_t data)
+    {
+      if (data == 0U) { return 32U; }
+
+      uint32_t count = 0U;
+      uint32_t mask = 0x80000000U;
+
+      while ((data & mask) == 0U)
+      {
+        count += 1U;
+        mask = mask >> 1U;
+      }
+      return count;
+    }
+
+  __STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat)
+  {
+    if ((sat >= 1U) && (sat <= 32U))
+    {
+      const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U);
+      const int32_t min = -1 - max ;
+      if (val > max)
+      {
+        return max;
+      }
+      else if (val < min)
+      {
+        return min;
+      }
+    }
+    return val;
+  }
+
+  __STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat)
+  {
+    if (sat <= 31U)
+    {
+      const uint32_t max = ((1U << sat) - 1U);
+      if (val > (int32_t)max)
+      {
+        return max;
+      }
+      else if (val < 0)
+      {
+        return 0U;
+      }
+    }
+    return (uint32_t)val;
+  }
+
+ /**
+  \brief   Rotate Right in unsigned value (32 bit)
+  \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.
+  \param [in]    op1  Value to rotate
+  \param [in]    op2  Number of Bits to rotate
+  \return               Rotated value
+ */
+__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2)
+{
+  op2 %= 32U;
+  if (op2 == 0U)
+  {
+    return op1;
+  }
+  return (op1 >> op2) | (op1 << (32U - op2));
+}
+
+
+#endif
+
+/**
+   * @brief Clips Q63 to Q31 values.
+   */
+  __STATIC_FORCEINLINE q31_t clip_q63_to_q31(
+  q63_t x)
+  {
+    return ((q31_t) (x >> 32) != ((q31_t) x >> 31)) ?
+      ((0x7FFFFFFF ^ ((q31_t) (x >> 63)))) : (q31_t) x;
+  }
+
+  /**
+   * @brief Clips Q63 to Q15 values.
+   */
+  __STATIC_FORCEINLINE q15_t clip_q63_to_q15(
+  q63_t x)
+  {
+    return ((q31_t) (x >> 32) != ((q31_t) x >> 31)) ?
+      ((0x7FFF ^ ((q15_t) (x >> 63)))) : (q15_t) (x >> 15);
+  }
+
+  /**
+   * @brief Clips Q31 to Q7 values.
+   */
+  __STATIC_FORCEINLINE q7_t clip_q31_to_q7(
+  q31_t x)
+  {
+    return ((q31_t) (x >> 24) != ((q31_t) x >> 23)) ?
+      ((0x7F ^ ((q7_t) (x >> 31)))) : (q7_t) x;
+  }
+
+  /**
+   * @brief Clips Q31 to Q15 values.
+   */
+  __STATIC_FORCEINLINE q15_t clip_q31_to_q15(
+  q31_t x)
+  {
+    return ((q31_t) (x >> 16) != ((q31_t) x >> 15)) ?
+      ((0x7FFF ^ ((q15_t) (x >> 31)))) : (q15_t) x;
+  }
+
+  /**
+   * @brief Multiplies 32 X 64 and returns 32 bit result in 2.30 format.
+   */
+  __STATIC_FORCEINLINE q63_t mult32x64(
+  q63_t x,
+  q31_t y)
+  {
+    return ((((q63_t) (x & 0x00000000FFFFFFFF) * y) >> 32) +
+            (((q63_t) (x >> 32)                * y)      )  );
+  }
+
+/* SMMLAR */
+#define multAcc_32x32_keep32_R(a, x, y) \
+    a = (q31_t) (((((q63_t) a) << 32) + ((q63_t) x * y) + 0x80000000LL ) >> 32)
+
+/* SMMLSR */
+#define multSub_32x32_keep32_R(a, x, y) \
+    a = (q31_t) (((((q63_t) a) << 32) - ((q63_t) x * y) + 0x80000000LL ) >> 32)
+
+/* SMMULR */
+#define mult_32x32_keep32_R(a, x, y) \
+    a = (q31_t) (((q63_t) x * y + 0x80000000LL ) >> 32)
+
+/* SMMLA */
+#define multAcc_32x32_keep32(a, x, y) \
+    a += (q31_t) (((q63_t) x * y) >> 32)
+
+/* SMMLS */
+#define multSub_32x32_keep32(a, x, y) \
+    a -= (q31_t) (((q63_t) x * y) >> 32)
+
+/* SMMUL */
+#define mult_32x32_keep32(a, x, y) \
+    a = (q31_t) (((q63_t) x * y ) >> 32)
+
+#ifndef ARM_MATH_DSP
+  /**
+   * @brief definition to pack two 16 bit values.
+   */
+  #define __PKHBT(ARG1, ARG2, ARG3) ( (((int32_t)(ARG1) <<    0) & (int32_t)0x0000FFFF) | \
+                                      (((int32_t)(ARG2) << ARG3) & (int32_t)0xFFFF0000)  )
+  #define __PKHTB(ARG1, ARG2, ARG3) ( (((int32_t)(ARG1) <<    0) & (int32_t)0xFFFF0000) | \
+                                      (((int32_t)(ARG2) >> ARG3) & (int32_t)0x0000FFFF)  )
+#endif
+
+   /**
+   * @brief definition to pack four 8 bit values.
+   */
+#ifndef ARM_MATH_BIG_ENDIAN
+  #define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v0) <<  0) & (int32_t)0x000000FF) | \
+                                  (((int32_t)(v1) <<  8) & (int32_t)0x0000FF00) | \
+                                  (((int32_t)(v2) << 16) & (int32_t)0x00FF0000) | \
+                                  (((int32_t)(v3) << 24) & (int32_t)0xFF000000)  )
+#else
+  #define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v3) <<  0) & (int32_t)0x000000FF) | \
+                                  (((int32_t)(v2) <<  8) & (int32_t)0x0000FF00) | \
+                                  (((int32_t)(v1) << 16) & (int32_t)0x00FF0000) | \
+                                  (((int32_t)(v0) << 24) & (int32_t)0xFF000000)  )
+#endif
+
+
+ 
+
+/*
+ * @brief C custom defined intrinsic functions
+ */
+#if !defined (ARM_MATH_DSP)
+
+
+  /*
+   * @brief C custom defined QADD8
+   */
+  __STATIC_FORCEINLINE uint32_t __QADD8(
+  uint32_t x,
+  uint32_t y)
+  {
+    q31_t r, s, t, u;
+
+    r = __SSAT(((((q31_t)x << 24) >> 24) + (((q31_t)y << 24) >> 24)), 8) & (int32_t)0x000000FF;
+    s = __SSAT(((((q31_t)x << 16) >> 24) + (((q31_t)y << 16) >> 24)), 8) & (int32_t)0x000000FF;
+    t = __SSAT(((((q31_t)x <<  8) >> 24) + (((q31_t)y <<  8) >> 24)), 8) & (int32_t)0x000000FF;
+    u = __SSAT(((((q31_t)x      ) >> 24) + (((q31_t)y      ) >> 24)), 8) & (int32_t)0x000000FF;
+
+    return ((uint32_t)((u << 24) | (t << 16) | (s <<  8) | (r      )));
+  }
+
+
+  /*
+   * @brief C custom defined QSUB8
+   */
+  __STATIC_FORCEINLINE uint32_t __QSUB8(
+  uint32_t x,
+  uint32_t y)
+  {
+    q31_t r, s, t, u;
+
+    r = __SSAT(((((q31_t)x << 24) >> 24) - (((q31_t)y << 24) >> 24)), 8) & (int32_t)0x000000FF;
+    s = __SSAT(((((q31_t)x << 16) >> 24) - (((q31_t)y << 16) >> 24)), 8) & (int32_t)0x000000FF;
+    t = __SSAT(((((q31_t)x <<  8) >> 24) - (((q31_t)y <<  8) >> 24)), 8) & (int32_t)0x000000FF;
+    u = __SSAT(((((q31_t)x      ) >> 24) - (((q31_t)y      ) >> 24)), 8) & (int32_t)0x000000FF;
+
+    return ((uint32_t)((u << 24) | (t << 16) | (s <<  8) | (r      )));
+  }
+
+
+  /*
+   * @brief C custom defined QADD16
+   */
+  __STATIC_FORCEINLINE uint32_t __QADD16(
+  uint32_t x,
+  uint32_t y)
+  {
+/*  q31_t r,     s;  without initialisation 'arm_offset_q15 test' fails  but 'intrinsic' tests pass! for armCC */
+    q31_t r = 0, s = 0;
+
+    r = __SSAT(((((q31_t)x << 16) >> 16) + (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF;
+    s = __SSAT(((((q31_t)x      ) >> 16) + (((q31_t)y      ) >> 16)), 16) & (int32_t)0x0000FFFF;
+
+    return ((uint32_t)((s << 16) | (r      )));
+  }
+
+
+  /*
+   * @brief C custom defined SHADD16
+   */
+  __STATIC_FORCEINLINE uint32_t __SHADD16(
+  uint32_t x,
+  uint32_t y)
+  {
+    q31_t r, s;
+
+    r = (((((q31_t)x << 16) >> 16) + (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF;
+    s = (((((q31_t)x      ) >> 16) + (((q31_t)y      ) >> 16)) >> 1) & (int32_t)0x0000FFFF;
+
+    return ((uint32_t)((s << 16) | (r      )));
+  }
+
+
+  /*
+   * @brief C custom defined QSUB16
+   */
+  __STATIC_FORCEINLINE uint32_t __QSUB16(
+  uint32_t x,
+  uint32_t y)
+  {
+    q31_t r, s;
+
+    r = __SSAT(((((q31_t)x << 16) >> 16) - (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF;
+    s = __SSAT(((((q31_t)x      ) >> 16) - (((q31_t)y      ) >> 16)), 16) & (int32_t)0x0000FFFF;
+
+    return ((uint32_t)((s << 16) | (r      )));
+  }
+
+
+  /*
+   * @brief C custom defined SHSUB16
+   */
+  __STATIC_FORCEINLINE uint32_t __SHSUB16(
+  uint32_t x,
+  uint32_t y)
+  {
+    q31_t r, s;
+
+    r = (((((q31_t)x << 16) >> 16) - (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF;
+    s = (((((q31_t)x      ) >> 16) - (((q31_t)y      ) >> 16)) >> 1) & (int32_t)0x0000FFFF;
+
+    return ((uint32_t)((s << 16) | (r      )));
+  }
+
+
+  /*
+   * @brief C custom defined QASX
+   */
+  __STATIC_FORCEINLINE uint32_t __QASX(
+  uint32_t x,
+  uint32_t y)
+  {
+    q31_t r, s;
+
+    r = __SSAT(((((q31_t)x << 16) >> 16) - (((q31_t)y      ) >> 16)), 16) & (int32_t)0x0000FFFF;
+    s = __SSAT(((((q31_t)x      ) >> 16) + (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF;
+
+    return ((uint32_t)((s << 16) | (r      )));
+  }
+
+
+  /*
+   * @brief C custom defined SHASX
+   */
+  __STATIC_FORCEINLINE uint32_t __SHASX(
+  uint32_t x,
+  uint32_t y)
+  {
+    q31_t r, s;
+
+    r = (((((q31_t)x << 16) >> 16) - (((q31_t)y      ) >> 16)) >> 1) & (int32_t)0x0000FFFF;
+    s = (((((q31_t)x      ) >> 16) + (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF;
+
+    return ((uint32_t)((s << 16) | (r      )));
+  }
+
+
+  /*
+   * @brief C custom defined QSAX
+   */
+  __STATIC_FORCEINLINE uint32_t __QSAX(
+  uint32_t x,
+  uint32_t y)
+  {
+    q31_t r, s;
+
+    r = __SSAT(((((q31_t)x << 16) >> 16) + (((q31_t)y      ) >> 16)), 16) & (int32_t)0x0000FFFF;
+    s = __SSAT(((((q31_t)x      ) >> 16) - (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF;
+
+    return ((uint32_t)((s << 16) | (r      )));
+  }
+
+
+  /*
+   * @brief C custom defined SHSAX
+   */
+  __STATIC_FORCEINLINE uint32_t __SHSAX(
+  uint32_t x,
+  uint32_t y)
+  {
+    q31_t r, s;
+
+    r = (((((q31_t)x << 16) >> 16) + (((q31_t)y      ) >> 16)) >> 1) & (int32_t)0x0000FFFF;
+    s = (((((q31_t)x      ) >> 16) - (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF;
+
+    return ((uint32_t)((s << 16) | (r      )));
+  }
+
+
+  /*
+   * @brief C custom defined SMUSDX
+   */
+  __STATIC_FORCEINLINE uint32_t __SMUSDX(
+  uint32_t x,
+  uint32_t y)
+  {
+    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y      ) >> 16)) -
+                       ((((q31_t)x      ) >> 16) * (((q31_t)y << 16) >> 16))   ));
+  }
+
+  /*
+   * @brief C custom defined SMUADX
+   */
+  __STATIC_FORCEINLINE uint32_t __SMUADX(
+  uint32_t x,
+  uint32_t y)
+  {
+    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y      ) >> 16)) +
+                       ((((q31_t)x      ) >> 16) * (((q31_t)y << 16) >> 16))   ));
+  }
+
+
+  /*
+   * @brief C custom defined QADD
+   */
+  __STATIC_FORCEINLINE int32_t __QADD(
+  int32_t x,
+  int32_t y)
+  {
+    return ((int32_t)(clip_q63_to_q31((q63_t)x + (q31_t)y)));
+  }
+
+
+  /*
+   * @brief C custom defined QSUB
+   */
+  __STATIC_FORCEINLINE int32_t __QSUB(
+  int32_t x,
+  int32_t y)
+  {
+    return ((int32_t)(clip_q63_to_q31((q63_t)x - (q31_t)y)));
+  }
+
+
+  /*
+   * @brief C custom defined SMLAD
+   */
+  __STATIC_FORCEINLINE uint32_t __SMLAD(
+  uint32_t x,
+  uint32_t y,
+  uint32_t sum)
+  {
+    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) +
+                       ((((q31_t)x      ) >> 16) * (((q31_t)y      ) >> 16)) +
+                       ( ((q31_t)sum    )                                  )   ));
+  }
+
+
+  /*
+   * @brief C custom defined SMLADX
+   */
+  __STATIC_FORCEINLINE uint32_t __SMLADX(
+  uint32_t x,
+  uint32_t y,
+  uint32_t sum)
+  {
+    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y      ) >> 16)) +
+                       ((((q31_t)x      ) >> 16) * (((q31_t)y << 16) >> 16)) +
+                       ( ((q31_t)sum    )                                  )   ));
+  }
+
+
+  /*
+   * @brief C custom defined SMLSDX
+   */
+  __STATIC_FORCEINLINE uint32_t __SMLSDX(
+  uint32_t x,
+  uint32_t y,
+  uint32_t sum)
+  {
+    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y      ) >> 16)) -
+                       ((((q31_t)x      ) >> 16) * (((q31_t)y << 16) >> 16)) +
+                       ( ((q31_t)sum    )                                  )   ));
+  }
+
+
+  /*
+   * @brief C custom defined SMLALD
+   */
+  __STATIC_FORCEINLINE uint64_t __SMLALD(
+  uint32_t x,
+  uint32_t y,
+  uint64_t sum)
+  {
+/*  return (sum + ((q15_t) (x >> 16) * (q15_t) (y >> 16)) + ((q15_t) x * (q15_t) y)); */
+    return ((uint64_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) +
+                       ((((q31_t)x      ) >> 16) * (((q31_t)y      ) >> 16)) +
+                       ( ((q63_t)sum    )                                  )   ));
+  }
+
+
+  /*
+   * @brief C custom defined SMLALDX
+   */
+  __STATIC_FORCEINLINE uint64_t __SMLALDX(
+  uint32_t x,
+  uint32_t y,
+  uint64_t sum)
+  {
+/*  return (sum + ((q15_t) (x >> 16) * (q15_t) y)) + ((q15_t) x * (q15_t) (y >> 16)); */
+    return ((uint64_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y      ) >> 16)) +
+                       ((((q31_t)x      ) >> 16) * (((q31_t)y << 16) >> 16)) +
+                       ( ((q63_t)sum    )                                  )   ));
+  }
+
+
+  /*
+   * @brief C custom defined SMUAD
+   */
+  __STATIC_FORCEINLINE uint32_t __SMUAD(
+  uint32_t x,
+  uint32_t y)
+  {
+    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) +
+                       ((((q31_t)x      ) >> 16) * (((q31_t)y      ) >> 16))   ));
+  }
+
+
+  /*
+   * @brief C custom defined SMUSD
+   */
+  __STATIC_FORCEINLINE uint32_t __SMUSD(
+  uint32_t x,
+  uint32_t y)
+  {
+    return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) -
+                       ((((q31_t)x      ) >> 16) * (((q31_t)y      ) >> 16))   ));
+  }
+
+
+  /*
+   * @brief C custom defined SXTB16
+   */
+  __STATIC_FORCEINLINE uint32_t __SXTB16(
+  uint32_t x)
+  {
+    return ((uint32_t)(((((q31_t)x << 24) >> 24) & (q31_t)0x0000FFFF) |
+                       ((((q31_t)x <<  8) >>  8) & (q31_t)0xFFFF0000)  ));
+  }
+
+  /*
+   * @brief C custom defined SMMLA
+   */
+  __STATIC_FORCEINLINE int32_t __SMMLA(
+  int32_t x,
+  int32_t y,
+  int32_t sum)
+  {
+    return (sum + (int32_t) (((int64_t) x * y) >> 32));
+  }
+
+#endif /* !defined (ARM_MATH_DSP) */
+
+
+#ifdef   __cplusplus
+}
+#endif
+
+#endif /* ifndef _TRANSFORM_FUNCTIONS_H_ */
diff --git a/CMSIS/DSP/Include/dsp/statistics_functions.h b/CMSIS/DSP/Include/dsp/statistics_functions.h
new file mode 100755
index 0000000..68e145d
--- /dev/null
+++ b/CMSIS/DSP/Include/dsp/statistics_functions.h
@@ -0,0 +1,483 @@
+/******************************************************************************
+ * @file     statistics_functions.h
+ * @brief    Public header file for CMSIS DSP Library
+ * @version  V1.9.0
+ * @date     20. July 2020
+ ******************************************************************************/
+/*
+ * 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.
+ */
+
+ 
+#ifndef _STATISTICS_FUNCTIONS_H_
+#define _STATISTICS_FUNCTIONS_H_
+
+#include "arm_math_types.h"
+#include "arm_math_memory.h"
+
+#include "dsp/none.h"
+#include "dsp/utils.h"
+
+#include "dsp/basic_math_functions.h"
+#include "dsp/fast_math_functions.h"
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+
+/**
+ * @defgroup groupStats Statistics Functions
+ */
+
+/**
+ * @brief Computation of the LogSumExp
+ *
+ * In probabilistic computations, the dynamic of the probability values can be very
+ * wide because they come from gaussian functions.
+ * To avoid underflow and overflow issues, the values are represented by their log.
+ * In this representation, multiplying the original exp values is easy : their logs are added.
+ * But adding the original exp values is requiring some special handling and it is the
+ * goal of the LogSumExp function.
+ *
+ * If the values are x1...xn, the function is computing:
+ *
+ * ln(exp(x1) + ... + exp(xn)) and the computation is done in such a way that
+ * rounding issues are minimised.
+ *
+ * The max xm of the values is extracted and the function is computing:
+ * xm + ln(exp(x1 - xm) + ... + exp(xn - xm))
+ *
+ * @param[in]  *in         Pointer to an array of input values.
+ * @param[in]  blockSize   Number of samples in the input array.
+ * @return LogSumExp
+ *
+ */
+
+
+float32_t arm_logsumexp_f32(const float32_t *in, uint32_t blockSize);
+
+/**
+ * @brief Dot product with log arithmetic
+ *
+ * Vectors are containing the log of the samples
+ *
+ * @param[in]       pSrcA points to the first input vector
+ * @param[in]       pSrcB points to the second input vector
+ * @param[in]       blockSize number of samples in each vector
+ * @param[in]       pTmpBuffer temporary buffer of length blockSize
+ * @return The log of the dot product .
+ *
+ */
+
+
+float32_t arm_logsumexp_dot_prod_f32(const float32_t * pSrcA,
+  const float32_t * pSrcB,
+  uint32_t blockSize,
+  float32_t *pTmpBuffer);
+
+/**
+ * @brief Entropy
+ *
+ * @param[in]  pSrcA        Array of input values.
+ * @param[in]  blockSize    Number of samples in the input array.
+ * @return     Entropy      -Sum(p ln p)
+ *
+ */
+
+
+float32_t arm_entropy_f32(const float32_t * pSrcA,uint32_t blockSize);
+
+
+/**
+ * @brief Entropy
+ *
+ * @param[in]  pSrcA        Array of input values.
+ * @param[in]  blockSize    Number of samples in the input array.
+ * @return     Entropy      -Sum(p ln p)
+ *
+ */
+
+
+float64_t arm_entropy_f64(const float64_t * pSrcA, uint32_t blockSize);
+
+
+/**
+ * @brief Kullback-Leibler
+ *
+ * @param[in]  pSrcA         Pointer to an array of input values for probability distribution A.
+ * @param[in]  pSrcB         Pointer to an array of input values for probability distribution B.
+ * @param[in]  blockSize     Number of samples in the input array.
+ * @return Kullback-Leibler  Divergence D(A || B)
+ *
+ */
+float32_t arm_kullback_leibler_f32(const float32_t * pSrcA
+  ,const float32_t * pSrcB
+  ,uint32_t blockSize);
+
+
+/**
+ * @brief Kullback-Leibler
+ *
+ * @param[in]  pSrcA         Pointer to an array of input values for probability distribution A.
+ * @param[in]  pSrcB         Pointer to an array of input values for probability distribution B.
+ * @param[in]  blockSize     Number of samples in the input array.
+ * @return Kullback-Leibler  Divergence D(A || B)
+ *
+ */
+float64_t arm_kullback_leibler_f64(const float64_t * pSrcA, 
+                const float64_t * pSrcB, 
+                uint32_t blockSize);
+
+
+ /**
+   * @brief  Sum of the squares of the elements of a Q31 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_power_q31(
+  const q31_t * pSrc,
+        uint32_t blockSize,
+        q63_t * pResult);
+
+
+  /**
+   * @brief  Sum of the squares of the elements of a floating-point vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_power_f32(
+  const float32_t * pSrc,
+        uint32_t blockSize,
+        float32_t * pResult);
+
+
+  /**
+   * @brief  Sum of the squares of the elements of a Q15 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_power_q15(
+  const q15_t * pSrc,
+        uint32_t blockSize,
+        q63_t * pResult);
+
+
+  /**
+   * @brief  Sum of the squares of the elements of a Q7 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_power_q7(
+  const q7_t * pSrc,
+        uint32_t blockSize,
+        q31_t * pResult);
+
+
+  /**
+   * @brief  Mean value of a Q7 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_mean_q7(
+  const q7_t * pSrc,
+        uint32_t blockSize,
+        q7_t * pResult);
+
+
+  /**
+   * @brief  Mean value of a Q15 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_mean_q15(
+  const q15_t * pSrc,
+        uint32_t blockSize,
+        q15_t * pResult);
+
+
+  /**
+   * @brief  Mean value of a Q31 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_mean_q31(
+  const q31_t * pSrc,
+        uint32_t blockSize,
+        q31_t * pResult);
+
+
+  /**
+   * @brief  Mean value of a floating-point vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_mean_f32(
+  const float32_t * pSrc,
+        uint32_t blockSize,
+        float32_t * pResult);
+
+
+  /**
+   * @brief  Variance of the elements of a floating-point vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_var_f32(
+  const float32_t * pSrc,
+        uint32_t blockSize,
+        float32_t * pResult);
+
+
+  /**
+   * @brief  Variance of the elements of a Q31 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_var_q31(
+  const q31_t * pSrc,
+        uint32_t blockSize,
+        q31_t * pResult);
+
+
+  /**
+   * @brief  Variance of the elements of a Q15 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_var_q15(
+  const q15_t * pSrc,
+        uint32_t blockSize,
+        q15_t * pResult);
+
+
+  /**
+   * @brief  Root Mean Square of the elements of a floating-point vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_rms_f32(
+  const float32_t * pSrc,
+        uint32_t blockSize,
+        float32_t * pResult);
+
+
+  /**
+   * @brief  Root Mean Square of the elements of a Q31 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_rms_q31(
+  const q31_t * pSrc,
+        uint32_t blockSize,
+        q31_t * pResult);
+
+
+  /**
+   * @brief  Root Mean Square of the elements of a Q15 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_rms_q15(
+  const q15_t * pSrc,
+        uint32_t blockSize,
+        q15_t * pResult);
+
+
+  /**
+   * @brief  Standard deviation of the elements of a floating-point vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_std_f32(
+  const float32_t * pSrc,
+        uint32_t blockSize,
+        float32_t * pResult);
+
+
+  /**
+   * @brief  Standard deviation of the elements of a Q31 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_std_q31(
+  const q31_t * pSrc,
+        uint32_t blockSize,
+        q31_t * pResult);
+
+
+  /**
+   * @brief  Standard deviation of the elements of a Q15 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output value.
+   */
+  void arm_std_q15(
+  const q15_t * pSrc,
+        uint32_t blockSize,
+        q15_t * pResult);
+
+
+  
+  /**
+   * @brief  Minimum value of a Q7 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] result     is output pointer
+   * @param[in]  index      is the array index of the minimum value in the input buffer.
+   */
+  void arm_min_q7(
+  const q7_t * pSrc,
+        uint32_t blockSize,
+        q7_t * result,
+        uint32_t * index);
+
+
+  /**
+   * @brief  Minimum value of a Q15 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output pointer
+   * @param[in]  pIndex     is the array index of the minimum value in the input buffer.
+   */
+  void arm_min_q15(
+  const q15_t * pSrc,
+        uint32_t blockSize,
+        q15_t * pResult,
+        uint32_t * pIndex);
+
+
+  /**
+   * @brief  Minimum value of a Q31 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output pointer
+   * @param[out] pIndex     is the array index of the minimum value in the input buffer.
+   */
+  void arm_min_q31(
+  const q31_t * pSrc,
+        uint32_t blockSize,
+        q31_t * pResult,
+        uint32_t * pIndex);
+
+
+  /**
+   * @brief  Minimum value of a floating-point vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[in]  blockSize  is the number of samples to process
+   * @param[out] pResult    is output pointer
+   * @param[out] pIndex     is the array index of the minimum value in the input buffer.
+   */
+  void arm_min_f32(
+  const float32_t * pSrc,
+        uint32_t blockSize,
+        float32_t * pResult,
+        uint32_t * pIndex);
+
+
+/**
+ * @brief Maximum value of a Q7 vector.
+ * @param[in]  pSrc       points to the input buffer
+ * @param[in]  blockSize  length of the input vector
+ * @param[out] pResult    maximum value returned here
+ * @param[out] pIndex     index of maximum value returned here
+ */
+  void arm_max_q7(
+  const q7_t * pSrc,
+        uint32_t blockSize,
+        q7_t * pResult,
+        uint32_t * pIndex);
+
+
+/**
+ * @brief Maximum value of a Q15 vector.
+ * @param[in]  pSrc       points to the input buffer
+ * @param[in]  blockSize  length of the input vector
+ * @param[out] pResult    maximum value returned here
+ * @param[out] pIndex     index of maximum value returned here
+ */
+  void arm_max_q15(
+  const q15_t * pSrc,
+        uint32_t blockSize,
+        q15_t * pResult,
+        uint32_t * pIndex);
+
+
+/**
+ * @brief Maximum value of a Q31 vector.
+ * @param[in]  pSrc       points to the input buffer
+ * @param[in]  blockSize  length of the input vector
+ * @param[out] pResult    maximum value returned here
+ * @param[out] pIndex     index of maximum value returned here
+ */
+  void arm_max_q31(
+  const q31_t * pSrc,
+        uint32_t blockSize,
+        q31_t * pResult,
+        uint32_t * pIndex);
+
+
+/**
+ * @brief Maximum value of a floating-point vector.
+ * @param[in]  pSrc       points to the input buffer
+ * @param[in]  blockSize  length of the input vector
+ * @param[out] pResult    maximum value returned here
+ * @param[out] pIndex     index of maximum value returned here
+ */
+  void arm_max_f32(
+  const float32_t * pSrc,
+        uint32_t blockSize,
+        float32_t * pResult,
+        uint32_t * pIndex);
+
+  /**
+    @brief         Maximum value of a floating-point vector.
+    @param[in]     pSrc       points to the input vector
+    @param[in]     blockSize  number of samples in input vector
+    @param[out]    pResult    maximum value returned here
+    @return        none
+   */
+  void arm_max_no_idx_f32(
+      const float32_t *pSrc,
+      uint32_t   blockSize,
+      float32_t *pResult);
+
+
+
+
+#ifdef   __cplusplus
+}
+#endif
+
+#endif /* ifndef _STATISTICS_FUNCTIONS_H_ */
diff --git a/CMSIS/DSP/Include/dsp/statistics_functions_f16.h b/CMSIS/DSP/Include/dsp/statistics_functions_f16.h
new file mode 100755
index 0000000..bc3665c
--- /dev/null
+++ b/CMSIS/DSP/Include/dsp/statistics_functions_f16.h
@@ -0,0 +1,40 @@
+/******************************************************************************
+ * @file     statistics_functions_f16.h
+ * @brief    Public header file for CMSIS DSP Library
+ * @version  V1.9.0
+ * @date     20. July 2020
+ ******************************************************************************/
+/*
+ * 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.
+ */
+
+ 
+#ifndef _STATISTICS_FUNCTIONS_F16_H_
+#define _STATISTICS_FUNCTIONS_F16_H_
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+#if defined(ARM_FLOAT16_SUPPORTED)
+#endif /*defined(ARM_FLOAT16_SUPPORTED)*/
+#ifdef   __cplusplus
+}
+#endif
+
+#endif /* ifndef _STATISTICS_FUNCTIONS_F16_H_ */
diff --git a/CMSIS/DSP/Include/dsp/support_functions.h b/CMSIS/DSP/Include/dsp/support_functions.h
new file mode 100755
index 0000000..f4f3b88
--- /dev/null
+++ b/CMSIS/DSP/Include/dsp/support_functions.h
@@ -0,0 +1,426 @@
+/******************************************************************************
+ * @file     support_functions.h
+ * @brief    Public header file for CMSIS DSP Library
+ * @version  V1.9.0
+ * @date     20. July 2020
+ ******************************************************************************/
+/*
+ * 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.
+ */
+
+ 
+#ifndef _SUPPORT_FUNCTIONS_H_
+#define _SUPPORT_FUNCTIONS_H_
+
+#include "arm_math_types.h"
+#include "arm_math_memory.h"
+
+#include "dsp/none.h"
+#include "dsp/utils.h"
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+/**
+ * @defgroup groupSupport Support Functions
+ */
+
+
+/**
+   * @brief Converts the elements of the floating-point vector to Q31 vector.
+   * @param[in]  pSrc       points to the floating-point input vector
+   * @param[out] pDst       points to the Q31 output vector
+   * @param[in]  blockSize  length of the input vector
+   */
+  void arm_float_to_q31(
+  const float32_t * pSrc,
+        q31_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Converts the elements of the floating-point vector to Q15 vector.
+   * @param[in]  pSrc       points to the floating-point input vector
+   * @param[out] pDst       points to the Q15 output vector
+   * @param[in]  blockSize  length of the input vector
+   */
+  void arm_float_to_q15(
+  const float32_t * pSrc,
+        q15_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief Converts the elements of the floating-point vector to Q7 vector.
+   * @param[in]  pSrc       points to the floating-point input vector
+   * @param[out] pDst       points to the Q7 output vector
+   * @param[in]  blockSize  length of the input vector
+   */
+  void arm_float_to_q7(
+  const float32_t * pSrc,
+        q7_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Converts the elements of the Q31 vector to floating-point vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[out] pDst       is output pointer
+   * @param[in]  blockSize  is the number of samples to process
+   */
+  void arm_q31_to_float(
+  const q31_t * pSrc,
+        float32_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Converts the elements of the Q31 vector to Q15 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[out] pDst       is output pointer
+   * @param[in]  blockSize  is the number of samples to process
+   */
+  void arm_q31_to_q15(
+  const q31_t * pSrc,
+        q15_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Converts the elements of the Q31 vector to Q7 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[out] pDst       is output pointer
+   * @param[in]  blockSize  is the number of samples to process
+   */
+  void arm_q31_to_q7(
+  const q31_t * pSrc,
+        q7_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Converts the elements of the Q15 vector to floating-point vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[out] pDst       is output pointer
+   * @param[in]  blockSize  is the number of samples to process
+   */
+  void arm_q15_to_float(
+  const q15_t * pSrc,
+        float32_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Converts the elements of the Q15 vector to Q31 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[out] pDst       is output pointer
+   * @param[in]  blockSize  is the number of samples to process
+   */
+  void arm_q15_to_q31(
+  const q15_t * pSrc,
+        q31_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Converts the elements of the Q15 vector to Q7 vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[out] pDst       is output pointer
+   * @param[in]  blockSize  is the number of samples to process
+   */
+  void arm_q15_to_q7(
+  const q15_t * pSrc,
+        q7_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Converts the elements of the Q7 vector to floating-point vector.
+   * @param[in]  pSrc       is input pointer
+   * @param[out] pDst       is output pointer
+   * @param[in]  blockSize  is the number of samples to process
+   */
+  void arm_q7_to_float(
+  const q7_t * pSrc,
+        float32_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Converts the elements of the Q7 vector to Q31 vector.
+   * @param[in]  pSrc       input pointer
+   * @param[out] pDst       output pointer
+   * @param[in]  blockSize  number of samples to process
+   */
+  void arm_q7_to_q31(
+  const q7_t * pSrc,
+        q31_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Converts the elements of the Q7 vector to Q15 vector.
+   * @param[in]  pSrc       input pointer
+   * @param[out] pDst       output pointer
+   * @param[in]  blockSize  number of samples to process
+   */
+  void arm_q7_to_q15(
+  const q7_t * pSrc,
+        q15_t * pDst,
+        uint32_t blockSize);
+
+
+
+
+  
+  /**
+   * @brief Struct for specifying sorting algorithm
+   */
+  typedef enum
+  {
+    ARM_SORT_BITONIC   = 0,
+             /**< Bitonic sort   */
+    ARM_SORT_BUBBLE    = 1,
+             /**< Bubble sort    */
+    ARM_SORT_HEAP      = 2,
+             /**< Heap sort      */
+    ARM_SORT_INSERTION = 3,
+             /**< Insertion sort */
+    ARM_SORT_QUICK     = 4,
+             /**< Quick sort     */
+    ARM_SORT_SELECTION = 5
+             /**< Selection sort */
+  } arm_sort_alg;
+
+  /**
+   * @brief Struct for specifying sorting algorithm
+   */
+  typedef enum
+  {
+    ARM_SORT_DESCENDING = 0,
+             /**< Descending order (9 to 0) */
+    ARM_SORT_ASCENDING = 1
+             /**< Ascending order (0 to 9) */
+  } arm_sort_dir;
+
+  /**
+   * @brief Instance structure for the sorting algorithms.
+   */
+  typedef struct            
+  {
+    arm_sort_alg alg;        /**< Sorting algorithm selected */
+    arm_sort_dir dir;        /**< Sorting order (direction)  */
+  } arm_sort_instance_f32;  
+
+  /**
+   * @param[in]  S          points to an instance of the sorting structure.
+   * @param[in]  pSrc       points to the block of input data.
+   * @param[out] pDst       points to the block of output data.
+   * @param[in]  blockSize  number of samples to process.
+   */
+  void arm_sort_f32(
+    const arm_sort_instance_f32 * S, 
+          float32_t * pSrc, 
+          float32_t * pDst, 
+          uint32_t blockSize);
+
+  /**
+   * @param[in,out]  S            points to an instance of the sorting structure.
+   * @param[in]      alg          Selected algorithm.
+   * @param[in]      dir          Sorting order.
+   */
+  void arm_sort_init_f32(
+    arm_sort_instance_f32 * S, 
+    arm_sort_alg alg, 
+    arm_sort_dir dir); 
+
+  /**
+   * @brief Instance structure for the sorting algorithms.
+   */
+  typedef struct            
+  {
+    arm_sort_dir dir;        /**< Sorting order (direction)  */
+    float32_t * buffer;      /**< Working buffer */
+  } arm_merge_sort_instance_f32;  
+
+  /**
+   * @param[in]      S          points to an instance of the sorting structure.
+   * @param[in,out]  pSrc       points to the block of input data.
+   * @param[out]     pDst       points to the block of output data
+   * @param[in]      blockSize  number of samples to process.
+   */
+  void arm_merge_sort_f32(
+    const arm_merge_sort_instance_f32 * S,
+          float32_t *pSrc,
+          float32_t *pDst,
+          uint32_t blockSize);
+
+  /**
+   * @param[in,out]  S            points to an instance of the sorting structure.
+   * @param[in]      dir          Sorting order.
+   * @param[in]      buffer       Working buffer.
+   */
+  void arm_merge_sort_init_f32(
+    arm_merge_sort_instance_f32 * S,
+    arm_sort_dir dir,
+    float32_t * buffer);
+
+ 
+ 
+  /**
+   * @brief  Copies the elements of a floating-point vector.
+   * @param[in]  pSrc       input pointer
+   * @param[out] pDst       output pointer
+   * @param[in]  blockSize  number of samples to process
+   */
+  void arm_copy_f32(
+  const float32_t * pSrc,
+        float32_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Copies the elements of a Q7 vector.
+   * @param[in]  pSrc       input pointer
+   * @param[out] pDst       output pointer
+   * @param[in]  blockSize  number of samples to process
+   */
+  void arm_copy_q7(
+  const q7_t * pSrc,
+        q7_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Copies the elements of a Q15 vector.
+   * @param[in]  pSrc       input pointer
+   * @param[out] pDst       output pointer
+   * @param[in]  blockSize  number of samples to process
+   */
+  void arm_copy_q15(
+  const q15_t * pSrc,
+        q15_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Copies the elements of a Q31 vector.
+   * @param[in]  pSrc       input pointer
+   * @param[out] pDst       output pointer
+   * @param[in]  blockSize  number of samples to process
+   */
+  void arm_copy_q31(
+  const q31_t * pSrc,
+        q31_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Fills a constant value into a floating-point vector.
+   * @param[in]  value      input value to be filled
+   * @param[out] pDst       output pointer
+   * @param[in]  blockSize  number of samples to process
+   */
+  void arm_fill_f32(
+        float32_t value,
+        float32_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Fills a constant value into a Q7 vector.
+   * @param[in]  value      input value to be filled
+   * @param[out] pDst       output pointer
+   * @param[in]  blockSize  number of samples to process
+   */
+  void arm_fill_q7(
+        q7_t value,
+        q7_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Fills a constant value into a Q15 vector.
+   * @param[in]  value      input value to be filled
+   * @param[out] pDst       output pointer
+   * @param[in]  blockSize  number of samples to process
+   */
+  void arm_fill_q15(
+        q15_t value,
+        q15_t * pDst,
+        uint32_t blockSize);
+
+
+  /**
+   * @brief  Fills a constant value into a Q31 vector.
+   * @param[in]  value      input value to be filled
+   * @param[out] pDst       output pointer
+   * @param[in]  blockSize  number of samples to process
+   */
+  void arm_fill_q31(
+        q31_t value,
+        q31_t * pDst,
+        uint32_t blockSize);
+
+
+
+
+
+
+
+/**
+ * @brief Weighted sum
+ *
+ *
+ * @param[in]    *in           Array of input values.
+ * @param[in]    *weigths      Weights
+ * @param[in]    blockSize     Number of samples in the input array.
+ * @return Weighted sum
+ *
+ */
+float32_t arm_weighted_sum_f32(const float32_t *in
+  , const float32_t *weigths
+  , uint32_t blockSize);
+
+
+/**
+ * @brief Barycenter
+ *
+ *
+ * @param[in]    in         List of vectors
+ * @param[in]    weights    Weights of the vectors
+ * @param[out]   out        Barycenter
+ * @param[in]    nbVectors  Number of vectors
+ * @param[in]    vecDim     Dimension of space (vector dimension)
+ * @return       None
+ *
+ */
+void arm_barycenter_f32(const float32_t *in
+  , const float32_t *weights
+  , float32_t *out
+  , uint32_t nbVectors
+  , uint32_t vecDim);
+
+
+
+#ifdef   __cplusplus
+}
+#endif
+
+#endif /* ifndef _SUPPORT_FUNCTIONS_H_ */
diff --git a/CMSIS/DSP/Include/dsp/support_functions_f16.h b/CMSIS/DSP/Include/dsp/support_functions_f16.h
new file mode 100755
index 0000000..be6e542
--- /dev/null
+++ b/CMSIS/DSP/Include/dsp/support_functions_f16.h
@@ -0,0 +1,40 @@
+/******************************************************************************
+ * @file     support_functions_f16.h
+ * @brief    Public header file for CMSIS DSP Library
+ * @version  V1.9.0
+ * @date     20. July 2020
+ ******************************************************************************/
+/*
+ * 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.
+ */
+
+ 
+#ifndef _SUPPORT_FUNCTIONS_F16_H_
+#define _SUPPORT_FUNCTIONS_F16_H_
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+#if defined(ARM_FLOAT16_SUPPORTED)
+#endif /*defined(ARM_FLOAT16_SUPPORTED)*/
+#ifdef   __cplusplus
+}
+#endif
+
+#endif /* ifndef _SUPPORT_FUNCTIONS_F16_H_ */
diff --git a/CMSIS/DSP/Include/dsp/svm_functions.h b/CMSIS/DSP/Include/dsp/svm_functions.h
new file mode 100755
index 0000000..9181e1c
--- /dev/null
+++ b/CMSIS/DSP/Include/dsp/svm_functions.h
@@ -0,0 +1,291 @@
+/******************************************************************************
+ * @file     svm_functions.h
+ * @brief    Public header file for CMSIS DSP Library
+ * @version  V1.9.0
+ * @date     20. July 2020
+ ******************************************************************************/
+/*
+ * 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.
+ */
+
+ 
+#ifndef _SVM_FUNCTIONS_H_
+#define _SVM_FUNCTIONS_H_
+
+#include "arm_math_types.h"
+#include "arm_math_memory.h"
+
+#include "dsp/none.h"
+#include "dsp/utils.h"
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+#define STEP(x) (x) <= 0 ? 0 : 1
+
+/**
+ * @defgroup groupSVM SVM Functions
+ * This set of functions is implementing SVM classification on 2 classes.
+ * The training must be done from scikit-learn. The parameters can be easily
+ * generated from the scikit-learn object. Some examples are given in
+ * DSP/Testing/PatternGeneration/SVM.py
+ *
+ * If more than 2 classes are needed, the functions in this folder 
+ * will have to be used, as building blocks, to do multi-class classification.
+ *
+ * No multi-class classification is provided in this SVM folder.
+ * 
+ */
+
+  
+/**
+ * @brief Struct for specifying SVM Kernel
+ */
+typedef enum
+{
+    ARM_ML_KERNEL_LINEAR = 0,
+             /**< Linear kernel */
+    ARM_ML_KERNEL_POLYNOMIAL = 1,
+             /**< Polynomial kernel */
+    ARM_ML_KERNEL_RBF = 2,
+             /**< Radial Basis Function kernel */
+    ARM_ML_KERNEL_SIGMOID = 3
+             /**< Sigmoid kernel */
+} arm_ml_kernel_type;
+
+
+/**
+ * @brief Instance structure for linear SVM prediction function.
+ */
+typedef struct
+{
+  uint32_t        nbOfSupportVectors;     /**< Number of support vectors */
+  uint32_t        vectorDimension;        /**< Dimension of vector space */
+  float32_t       intercept;              /**< Intercept */
+  const float32_t *dualCoefficients;      /**< Dual coefficients */
+  const float32_t *supportVectors;        /**< Support vectors */
+  const int32_t   *classes;               /**< The two SVM classes */
+} arm_svm_linear_instance_f32;
+
+
+/**
+ * @brief Instance structure for polynomial SVM prediction function.
+ */
+typedef struct
+{
+  uint32_t        nbOfSupportVectors;     /**< Number of support vectors */
+  uint32_t        vectorDimension;        /**< Dimension of vector space */
+  float32_t       intercept;              /**< Intercept */
+  const float32_t *dualCoefficients;      /**< Dual coefficients */
+  const float32_t *supportVectors;        /**< Support vectors */
+  const int32_t   *classes;               /**< The two SVM classes */
+  int32_t         degree;                 /**< Polynomial degree */
+  float32_t       coef0;                  /**< Polynomial constant */
+  float32_t       gamma;                  /**< Gamma factor */
+} arm_svm_polynomial_instance_f32;
+
+/**
+ * @brief Instance structure for rbf SVM prediction function.
+ */
+typedef struct
+{
+  uint32_t        nbOfSupportVectors;     /**< Number of support vectors */
+  uint32_t        vectorDimension;        /**< Dimension of vector space */
+  float32_t       intercept;              /**< Intercept */
+  const float32_t *dualCoefficients;      /**< Dual coefficients */
+  const float32_t *supportVectors;        /**< Support vectors */
+  const int32_t   *classes;               /**< The two SVM classes */
+  float32_t       gamma;                  /**< Gamma factor */
+} arm_svm_rbf_instance_f32;
+
+/**
+ * @brief Instance structure for sigmoid SVM prediction function.
+ */
+typedef struct
+{
+  uint32_t        nbOfSupportVectors;     /**< Number of support vectors */
+  uint32_t        vectorDimension;        /**< Dimension of vector space */
+  float32_t       intercept;              /**< Intercept */
+  const float32_t *dualCoefficients;      /**< Dual coefficients */
+  const float32_t *supportVectors;        /**< Support vectors */
+  const int32_t   *classes;               /**< The two SVM classes */
+  float32_t       coef0;                  /**< Independant constant */
+  float32_t       gamma;                  /**< Gamma factor */
+} arm_svm_sigmoid_instance_f32;
+
+/**
+ * @brief        SVM linear instance init function
+ * @param[in]    S                      Parameters for SVM functions
+ * @param[in]    nbOfSupportVectors     Number of support vectors
+ * @param[in]    vectorDimension        Dimension of vector space
+ * @param[in]    intercept              Intercept
+ * @param[in]    dualCoefficients       Array of dual coefficients
+ * @param[in]    supportVectors         Array of support vectors
+ * @param[in]    classes                Array of 2 classes ID
+ * @return none.
+ *
+ */
+
+
+void arm_svm_linear_init_f32(arm_svm_linear_instance_f32 *S, 
+  uint32_t nbOfSupportVectors,
+  uint32_t vectorDimension,
+  float32_t intercept,
+  const float32_t *dualCoefficients,
+  const float32_t *supportVectors,
+  const int32_t  *classes);
+
+/**
+ * @brief SVM linear prediction
+ * @param[in]    S          Pointer to an instance of the linear SVM structure.
+ * @param[in]    in         Pointer to input vector
+ * @param[out]   pResult    Decision value
+ * @return none.
+ *
+ */
+  
+void arm_svm_linear_predict_f32(const arm_svm_linear_instance_f32 *S, 
+   const float32_t * in, 
+   int32_t * pResult);
+
+
+/**
+ * @brief        SVM polynomial instance init function
+ * @param[in]    S                      points to an instance of the polynomial SVM structure.
+ * @param[in]    nbOfSupportVectors     Number of support vectors
+ * @param[in]    vectorDimension        Dimension of vector space
+ * @param[in]    intercept              Intercept
+ * @param[in]    dualCoefficients       Array of dual coefficients
+ * @param[in]    supportVectors         Array of support vectors
+ * @param[in]    classes                Array of 2 classes ID
+ * @param[in]    degree                 Polynomial degree
+ * @param[in]    coef0                  coeff0 (scikit-learn terminology)
+ * @param[in]    gamma                  gamma (scikit-learn terminology)
+ * @return none.
+ *
+ */
+
+
+void arm_svm_polynomial_init_f32(arm_svm_polynomial_instance_f32 *S, 
+  uint32_t nbOfSupportVectors,
+  uint32_t vectorDimension,
+  float32_t intercept,
+  const float32_t *dualCoefficients,
+  const float32_t *supportVectors,
+  const int32_t   *classes,
+  int32_t      degree,
+  float32_t coef0,
+  float32_t gamma
+  );
+
+/**
+ * @brief SVM polynomial prediction
+ * @param[in]    S          Pointer to an instance of the polynomial SVM structure.
+ * @param[in]    in         Pointer to input vector
+ * @param[out]   pResult    Decision value
+ * @return none.
+ *
+ */
+void arm_svm_polynomial_predict_f32(const arm_svm_polynomial_instance_f32 *S, 
+   const float32_t * in, 
+   int32_t * pResult);
+
+
+/**
+ * @brief        SVM radial basis function instance init function
+ * @param[in]    S                      points to an instance of the polynomial SVM structure.
+ * @param[in]    nbOfSupportVectors     Number of support vectors
+ * @param[in]    vectorDimension        Dimension of vector space
+ * @param[in]    intercept              Intercept
+ * @param[in]    dualCoefficients       Array of dual coefficients
+ * @param[in]    supportVectors         Array of support vectors
+ * @param[in]    classes                Array of 2 classes ID
+ * @param[in]    gamma                  gamma (scikit-learn terminology)
+ * @return none.
+ *
+ */
+
+void arm_svm_rbf_init_f32(arm_svm_rbf_instance_f32 *S, 
+  uint32_t nbOfSupportVectors,
+  uint32_t vectorDimension,
+  float32_t intercept,
+  const float32_t *dualCoefficients,
+  const float32_t *supportVectors,
+  const int32_t   *classes,
+  float32_t gamma
+  );
+
+/**
+ * @brief SVM rbf prediction
+ * @param[in]    S         Pointer to an instance of the rbf SVM structure.
+ * @param[in]    in        Pointer to input vector
+ * @param[out]   pResult   decision value
+ * @return none.
+ *
+ */
+void arm_svm_rbf_predict_f32(const arm_svm_rbf_instance_f32 *S, 
+   const float32_t * in, 
+   int32_t * pResult);
+
+/**
+ * @brief        SVM sigmoid instance init function
+ * @param[in]    S                      points to an instance of the rbf SVM structure.
+ * @param[in]    nbOfSupportVectors     Number of support vectors
+ * @param[in]    vectorDimension        Dimension of vector space
+ * @param[in]    intercept              Intercept
+ * @param[in]    dualCoefficients       Array of dual coefficients
+ * @param[in]    supportVectors         Array of support vectors
+ * @param[in]    classes                Array of 2 classes ID
+ * @param[in]    coef0                  coeff0 (scikit-learn terminology)
+ * @param[in]    gamma                  gamma (scikit-learn terminology)
+ * @return none.
+ *
+ */
+
+void arm_svm_sigmoid_init_f32(arm_svm_sigmoid_instance_f32 *S, 
+  uint32_t nbOfSupportVectors,
+  uint32_t vectorDimension,
+  float32_t intercept,
+  const float32_t *dualCoefficients,
+  const float32_t *supportVectors,
+  const int32_t   *classes,
+  float32_t coef0,
+  float32_t gamma
+  );
+
+/**
+ * @brief SVM sigmoid prediction
+ * @param[in]    S        Pointer to an instance of the rbf SVM structure.
+ * @param[in]    in       Pointer to input vector
+ * @param[out]   pResult  Decision value
+ * @return none.
+ *
+ */
+void arm_svm_sigmoid_predict_f32(const arm_svm_sigmoid_instance_f32 *S, 
+   const float32_t * in, 
+   int32_t * pResult);
+
+
+
+
+#ifdef   __cplusplus
+}
+#endif
+
+#endif /* ifndef _SVM_FUNCTIONS_H_ */
diff --git a/CMSIS/DSP/Include/dsp/svm_functions_f16.h b/CMSIS/DSP/Include/dsp/svm_functions_f16.h
new file mode 100755
index 0000000..b446228
--- /dev/null
+++ b/CMSIS/DSP/Include/dsp/svm_functions_f16.h
@@ -0,0 +1,40 @@
+/******************************************************************************
+ * @file     svm_functions_f16.h
+ * @brief    Public header file for CMSIS DSP Library
+ * @version  V1.9.0
+ * @date     20. July 2020
+ ******************************************************************************/
+/*
+ * 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.
+ */
+
+ 
+#ifndef _SVM_FUNCTIONS_F16_H_
+#define _SVM_FUNCTIONS_F16_H_
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+#if defined(ARM_FLOAT16_SUPPORTED)
+#endif /*defined(ARM_FLOAT16_SUPPORTED)*/
+#ifdef   __cplusplus
+}
+#endif
+
+#endif /* ifndef _SVM_FUNCTIONS_F16_H_ */
diff --git a/CMSIS/DSP/Include/dsp/transform_functions.h b/CMSIS/DSP/Include/dsp/transform_functions.h
new file mode 100755
index 0000000..b6e7284
--- /dev/null
+++ b/CMSIS/DSP/Include/dsp/transform_functions.h
@@ -0,0 +1,591 @@
+/******************************************************************************
+ * @file     transform_functions.h
+ * @brief    Public header file for CMSIS DSP Library
+ * @version  V1.9.0
+ * @date     20. July 2020
+ ******************************************************************************/
+/*
+ * 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.
+ */
+
+ 
+#ifndef _TRANSFORM_FUNCTIONS_H_
+#define _TRANSFORM_FUNCTIONS_H_
+
+#include "arm_math_types.h"
+#include "arm_math_memory.h"
+
+#include "dsp/none.h"
+#include "dsp/utils.h"
+
+#include "dsp/basic_math_functions.h"
+#include "dsp/complex_math_functions.h"
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+
+/**
+ * @defgroup groupTransforms Transform Functions
+ */
+
+
+  /**
+   * @brief Instance structure for the Q15 CFFT/CIFFT function.
+   */
+  typedef struct
+  {
+          uint16_t fftLen;                 /**< length of the FFT. */
+          uint8_t ifftFlag;                /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */
+          uint8_t bitReverseFlag;          /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */
+    const q15_t *pTwiddle;                 /**< points to the Sin twiddle factor table. */
+    const uint16_t *pBitRevTable;          /**< points to the bit reversal table. */
+          uint16_t twidCoefModifier;       /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
+          uint16_t bitRevFactor;           /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */
+  } arm_cfft_radix2_instance_q15;
+
+/* Deprecated */
+  arm_status arm_cfft_radix2_init_q15(
+        arm_cfft_radix2_instance_q15 * S,
+        uint16_t fftLen,
+        uint8_t ifftFlag,
+        uint8_t bitReverseFlag);
+
+/* Deprecated */
+  void arm_cfft_radix2_q15(
+  const arm_cfft_radix2_instance_q15 * S,
+        q15_t * pSrc);
+
+
+  /**
+   * @brief Instance structure for the Q15 CFFT/CIFFT function.
+   */
+  typedef struct
+  {
+          uint16_t fftLen;                 /**< length of the FFT. */
+          uint8_t ifftFlag;                /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */
+          uint8_t bitReverseFlag;          /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */
+    const q15_t *pTwiddle;                 /**< points to the twiddle factor table. */
+    const uint16_t *pBitRevTable;          /**< points to the bit reversal table. */
+          uint16_t twidCoefModifier;       /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
+          uint16_t bitRevFactor;           /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */
+  } arm_cfft_radix4_instance_q15;
+
+/* Deprecated */
+  arm_status arm_cfft_radix4_init_q15(
+        arm_cfft_radix4_instance_q15 * S,
+        uint16_t fftLen,
+        uint8_t ifftFlag,
+        uint8_t bitReverseFlag);
+
+/* Deprecated */
+  void arm_cfft_radix4_q15(
+  const arm_cfft_radix4_instance_q15 * S,
+        q15_t * pSrc);
+
+  /**
+   * @brief Instance structure for the Radix-2 Q31 CFFT/CIFFT function.
+   */
+  typedef struct
+  {
+          uint16_t fftLen;                 /**< length of the FFT. */
+          uint8_t ifftFlag;                /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */
+          uint8_t bitReverseFlag;          /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */
+    const q31_t *pTwiddle;                 /**< points to the Twiddle factor table. */
+    const uint16_t *pBitRevTable;          /**< points to the bit reversal table. */
+          uint16_t twidCoefModifier;       /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
+          uint16_t bitRevFactor;           /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */
+  } arm_cfft_radix2_instance_q31;
+
+/* Deprecated */
+  arm_status arm_cfft_radix2_init_q31(
+        arm_cfft_radix2_instance_q31 * S,
+        uint16_t fftLen,
+        uint8_t ifftFlag,
+        uint8_t bitReverseFlag);
+
+/* Deprecated */
+  void arm_cfft_radix2_q31(
+  const arm_cfft_radix2_instance_q31 * S,
+        q31_t * pSrc);
+
+  /**
+   * @brief Instance structure for the Q31 CFFT/CIFFT function.
+   */
+  typedef struct
+  {
+          uint16_t fftLen;                 /**< length of the FFT. */
+          uint8_t ifftFlag;                /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */
+          uint8_t bitReverseFlag;          /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */
+    const q31_t *pTwiddle;                 /**< points to the twiddle factor table. */
+    const uint16_t *pBitRevTable;          /**< points to the bit reversal table. */
+          uint16_t twidCoefModifier;       /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
+          uint16_t bitRevFactor;           /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */
+  } arm_cfft_radix4_instance_q31;
+
+/* Deprecated */
+  void arm_cfft_radix4_q31(
+  const arm_cfft_radix4_instance_q31 * S,
+        q31_t * pSrc);
+
+/* Deprecated */
+  arm_status arm_cfft_radix4_init_q31(
+        arm_cfft_radix4_instance_q31 * S,
+        uint16_t fftLen,
+        uint8_t ifftFlag,
+        uint8_t bitReverseFlag);
+
+  /**
+   * @brief Instance structure for the floating-point CFFT/CIFFT function.
+   */
+  typedef struct
+  {
+          uint16_t fftLen;                   /**< length of the FFT. */
+          uint8_t ifftFlag;                  /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */
+          uint8_t bitReverseFlag;            /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */
+    const float32_t *pTwiddle;               /**< points to the Twiddle factor table. */
+    const uint16_t *pBitRevTable;            /**< points to the bit reversal table. */
+          uint16_t twidCoefModifier;         /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
+          uint16_t bitRevFactor;             /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */
+          float32_t onebyfftLen;             /**< value of 1/fftLen. */
+  } arm_cfft_radix2_instance_f32;
+
+
+/* Deprecated */
+  arm_status arm_cfft_radix2_init_f32(
+        arm_cfft_radix2_instance_f32 * S,
+        uint16_t fftLen,
+        uint8_t ifftFlag,
+        uint8_t bitReverseFlag);
+
+/* Deprecated */
+  void arm_cfft_radix2_f32(
+  const arm_cfft_radix2_instance_f32 * S,
+        float32_t * pSrc);
+
+  /**
+   * @brief Instance structure for the floating-point CFFT/CIFFT function.
+   */
+  typedef struct
+  {
+          uint16_t fftLen;                   /**< length of the FFT. */
+          uint8_t ifftFlag;                  /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */
+          uint8_t bitReverseFlag;            /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */
+    const float32_t *pTwiddle;               /**< points to the Twiddle factor table. */
+    const uint16_t *pBitRevTable;            /**< points to the bit reversal table. */
+          uint16_t twidCoefModifier;         /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
+          uint16_t bitRevFactor;             /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */
+          float32_t onebyfftLen;             /**< value of 1/fftLen. */
+  } arm_cfft_radix4_instance_f32;
+
+
+
+/* Deprecated */
+  arm_status arm_cfft_radix4_init_f32(
+        arm_cfft_radix4_instance_f32 * S,
+        uint16_t fftLen,
+        uint8_t ifftFlag,
+        uint8_t bitReverseFlag);
+
+/* Deprecated */
+  void arm_cfft_radix4_f32(
+  const arm_cfft_radix4_instance_f32 * S,
+        float32_t * pSrc);
+
+  /**
+   * @brief Instance structure for the fixed-point CFFT/CIFFT function.
+   */
+  typedef struct
+  {
+          uint16_t fftLen;                   /**< length of the FFT. */
+    const q15_t *pTwiddle;             /**< points to the Twiddle factor table. */
+    const uint16_t *pBitRevTable;      /**< points to the bit reversal table. */
+          uint16_t bitRevLength;             /**< bit reversal table length. */
+#if defined(ARM_MATH_MVEI)
+   const uint32_t *rearranged_twiddle_tab_stride1_arr;        /**< Per stage reordered twiddle pointer (offset 1) */                                                       \
+   const uint32_t *rearranged_twiddle_tab_stride2_arr;        /**< Per stage reordered twiddle pointer (offset 2) */                                                       \
+   const uint32_t *rearranged_twiddle_tab_stride3_arr;        /**< Per stage reordered twiddle pointer (offset 3) */                                                       \
+   const q15_t *rearranged_twiddle_stride1; /**< reordered twiddle offset 1 storage */                                                                   \
+   const q15_t *rearranged_twiddle_stride2; /**< reordered twiddle offset 2 storage */                                                                   \
+   const q15_t *rearranged_twiddle_stride3;
+#endif
+  } arm_cfft_instance_q15;
+
+arm_status arm_cfft_init_q15(
+  arm_cfft_instance_q15 * S,
+  uint16_t fftLen);
+
+void arm_cfft_q15(
+    const arm_cfft_instance_q15 * S,
+          q15_t * p1,
+          uint8_t ifftFlag,
+          uint8_t bitReverseFlag);
+
+  /**
+   * @brief Instance structure for the fixed-point CFFT/CIFFT function.
+   */
+  typedef struct
+  {
+          uint16_t fftLen;                   /**< length of the FFT. */
+    const q31_t *pTwiddle;             /**< points to the Twiddle factor table. */
+    const uint16_t *pBitRevTable;      /**< points to the bit reversal table. */
+          uint16_t bitRevLength;             /**< bit reversal table length. */
+#if defined(ARM_MATH_MVEI)
+   const uint32_t *rearranged_twiddle_tab_stride1_arr;        /**< Per stage reordered twiddle pointer (offset 1) */                                                       \
+   const uint32_t *rearranged_twiddle_tab_stride2_arr;        /**< Per stage reordered twiddle pointer (offset 2) */                                                       \
+   const uint32_t *rearranged_twiddle_tab_stride3_arr;        /**< Per stage reordered twiddle pointer (offset 3) */                                                       \
+   const q31_t *rearranged_twiddle_stride1; /**< reordered twiddle offset 1 storage */                                                                   \
+   const q31_t *rearranged_twiddle_stride2; /**< reordered twiddle offset 2 storage */                                                                   \
+   const q31_t *rearranged_twiddle_stride3;
+#endif
+  } arm_cfft_instance_q31;
+
+arm_status arm_cfft_init_q31(
+  arm_cfft_instance_q31 * S,
+  uint16_t fftLen);
+
+void arm_cfft_q31(
+    const arm_cfft_instance_q31 * S,
+          q31_t * p1,
+          uint8_t ifftFlag,
+          uint8_t bitReverseFlag);
+
+  /**
+   * @brief Instance structure for the floating-point CFFT/CIFFT function.
+   */
+  typedef struct
+  {
+          uint16_t fftLen;                   /**< length of the FFT. */
+    const float32_t *pTwiddle;         /**< points to the Twiddle factor table. */
+    const uint16_t *pBitRevTable;      /**< points to the bit reversal table. */
+          uint16_t bitRevLength;             /**< bit reversal table length. */
+#if defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE)
+   const uint32_t *rearranged_twiddle_tab_stride1_arr;        /**< Per stage reordered twiddle pointer (offset 1) */                                                       \
+   const uint32_t *rearranged_twiddle_tab_stride2_arr;        /**< Per stage reordered twiddle pointer (offset 2) */                                                       \
+   const uint32_t *rearranged_twiddle_tab_stride3_arr;        /**< Per stage reordered twiddle pointer (offset 3) */                                                       \
+   const float32_t *rearranged_twiddle_stride1; /**< reordered twiddle offset 1 storage */                                                                   \
+   const float32_t *rearranged_twiddle_stride2; /**< reordered twiddle offset 2 storage */                                                                   \
+   const float32_t *rearranged_twiddle_stride3;
+#endif
+  } arm_cfft_instance_f32;
+
+
+
+  arm_status arm_cfft_init_f32(
+  arm_cfft_instance_f32 * S,
+  uint16_t fftLen);
+
+  void arm_cfft_f32(
+  const arm_cfft_instance_f32 * S,
+        float32_t * p1,
+        uint8_t ifftFlag,
+        uint8_t bitReverseFlag);
+
+
+  /**
+   * @brief Instance structure for the Double Precision Floating-point CFFT/CIFFT function.
+   */
+  typedef struct
+  {
+          uint16_t fftLen;                   /**< length of the FFT. */
+    const float64_t *pTwiddle;         /**< points to the Twiddle factor table. */
+    const uint16_t *pBitRevTable;      /**< points to the bit reversal table. */
+          uint16_t bitRevLength;             /**< bit reversal table length. */
+  } arm_cfft_instance_f64;
+
+  arm_status arm_cfft_init_f64(
+  arm_cfft_instance_f64 * S,
+  uint16_t fftLen);
+  
+  void arm_cfft_f64(
+  const arm_cfft_instance_f64 * S,
+        float64_t * p1,
+        uint8_t ifftFlag,
+        uint8_t bitReverseFlag);
+
+  /**
+   * @brief Instance structure for the Q15 RFFT/RIFFT function.
+   */
+  typedef struct
+  {
+          uint32_t fftLenReal;                      /**< length of the real FFT. */
+          uint8_t ifftFlagR;                        /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */
+          uint8_t bitReverseFlagR;                  /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */
+          uint32_t twidCoefRModifier;               /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
+    const q15_t *pTwiddleAReal;                     /**< points to the real twiddle factor table. */
+    const q15_t *pTwiddleBReal;                     /**< points to the imag twiddle factor table. */
+#if defined(ARM_MATH_MVEI)
+    arm_cfft_instance_q15 cfftInst;
+#else
+    const arm_cfft_instance_q15 *pCfft;       /**< points to the complex FFT instance. */
+#endif
+  } arm_rfft_instance_q15;
+
+  arm_status arm_rfft_init_q15(
+        arm_rfft_instance_q15 * S,
+        uint32_t fftLenReal,
+        uint32_t ifftFlagR,
+        uint32_t bitReverseFlag);
+
+  void arm_rfft_q15(
+  const arm_rfft_instance_q15 * S,
+        q15_t * pSrc,
+        q15_t * pDst);
+
+  /**
+   * @brief Instance structure for the Q31 RFFT/RIFFT function.
+   */
+  typedef struct
+  {
+          uint32_t fftLenReal;                        /**< length of the real FFT. */
+          uint8_t ifftFlagR;                          /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */
+          uint8_t bitReverseFlagR;                    /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */
+          uint32_t twidCoefRModifier;                 /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
+    const q31_t *pTwiddleAReal;                       /**< points to the real twiddle factor table. */
+    const q31_t *pTwiddleBReal;                       /**< points to the imag twiddle factor table. */
+#if defined(ARM_MATH_MVEI)
+    arm_cfft_instance_q31 cfftInst;
+#else
+    const arm_cfft_instance_q31 *pCfft;         /**< points to the complex FFT instance. */
+#endif
+  } arm_rfft_instance_q31;
+
+  arm_status arm_rfft_init_q31(
+        arm_rfft_instance_q31 * S,
+        uint32_t fftLenReal,
+        uint32_t ifftFlagR,
+        uint32_t bitReverseFlag);
+
+  void arm_rfft_q31(
+  const arm_rfft_instance_q31 * S,
+        q31_t * pSrc,
+        q31_t * pDst);
+
+  /**
+   * @brief Instance structure for the floating-point RFFT/RIFFT function.
+   */
+  typedef struct
+  {
+          uint32_t fftLenReal;                        /**< length of the real FFT. */
+          uint16_t fftLenBy2;                         /**< length of the complex FFT. */
+          uint8_t ifftFlagR;                          /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */
+          uint8_t bitReverseFlagR;                    /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */
+          uint32_t twidCoefRModifier;                     /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
+    const float32_t *pTwiddleAReal;                   /**< points to the real twiddle factor table. */
+    const float32_t *pTwiddleBReal;                   /**< points to the imag twiddle factor table. */
+          arm_cfft_radix4_instance_f32 *pCfft;        /**< points to the complex FFT instance. */
+  } arm_rfft_instance_f32;
+
+  arm_status arm_rfft_init_f32(
+        arm_rfft_instance_f32 * S,
+        arm_cfft_radix4_instance_f32 * S_CFFT,
+        uint32_t fftLenReal,
+        uint32_t ifftFlagR,
+        uint32_t bitReverseFlag);
+
+  void arm_rfft_f32(
+  const arm_rfft_instance_f32 * S,
+        float32_t * pSrc,
+        float32_t * pDst);
+
+  /**
+   * @brief Instance structure for the Double Precision Floating-point RFFT/RIFFT function.
+   */
+typedef struct
+  {
+          arm_cfft_instance_f64 Sint;      /**< Internal CFFT structure. */
+          uint16_t fftLenRFFT;             /**< length of the real sequence */
+    const float64_t * pTwiddleRFFT;        /**< Twiddle factors real stage  */
+  } arm_rfft_fast_instance_f64 ;
+
+arm_status arm_rfft_fast_init_f64 (
+         arm_rfft_fast_instance_f64 * S,
+         uint16_t fftLen);
+
+
+void arm_rfft_fast_f64(
+    arm_rfft_fast_instance_f64 * S,
+    float64_t * p, float64_t * pOut,
+    uint8_t ifftFlag);
+
+
+  /**
+   * @brief Instance structure for the floating-point RFFT/RIFFT function.
+   */
+typedef struct
+  {
+          arm_cfft_instance_f32 Sint;      /**< Internal CFFT structure. */
+          uint16_t fftLenRFFT;             /**< length of the real sequence */
+    const float32_t * pTwiddleRFFT;        /**< Twiddle factors real stage  */
+  } arm_rfft_fast_instance_f32 ;
+
+arm_status arm_rfft_fast_init_f32 (
+         arm_rfft_fast_instance_f32 * S,
+         uint16_t fftLen);
+
+
+  void arm_rfft_fast_f32(
+        const arm_rfft_fast_instance_f32 * S,
+        float32_t * p, float32_t * pOut,
+        uint8_t ifftFlag);
+
+  /**
+   * @brief Instance structure for the floating-point DCT4/IDCT4 function.
+   */
+  typedef struct
+  {
+          uint16_t N;                          /**< length of the DCT4. */
+          uint16_t Nby2;                       /**< half of the length of the DCT4. */
+          float32_t normalize;                 /**< normalizing factor. */
+    const float32_t *pTwiddle;                 /**< points to the twiddle factor table. */
+    const float32_t *pCosFactor;               /**< points to the cosFactor table. */
+          arm_rfft_instance_f32 *pRfft;        /**< points to the real FFT instance. */
+          arm_cfft_radix4_instance_f32 *pCfft; /**< points to the complex FFT instance. */
+  } arm_dct4_instance_f32;
+
+
+  /**
+   * @brief  Initialization function for the floating-point DCT4/IDCT4.
+   * @param[in,out] S          points to an instance of floating-point DCT4/IDCT4 structure.
+   * @param[in]     S_RFFT     points to an instance of floating-point RFFT/RIFFT structure.
+   * @param[in]     S_CFFT     points to an instance of floating-point CFFT/CIFFT structure.
+   * @param[in]     N          length of the DCT4.
+   * @param[in]     Nby2       half of the length of the DCT4.
+   * @param[in]     normalize  normalizing factor.
+   * @return      arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>fftLenReal</code> is not a supported transform length.
+   */
+  arm_status arm_dct4_init_f32(
+        arm_dct4_instance_f32 * S,
+        arm_rfft_instance_f32 * S_RFFT,
+        arm_cfft_radix4_instance_f32 * S_CFFT,
+        uint16_t N,
+        uint16_t Nby2,
+        float32_t normalize);
+
+
+  /**
+   * @brief Processing function for the floating-point DCT4/IDCT4.
+   * @param[in]     S              points to an instance of the floating-point DCT4/IDCT4 structure.
+   * @param[in]     pState         points to state buffer.
+   * @param[in,out] pInlineBuffer  points to the in-place input and output buffer.
+   */
+  void arm_dct4_f32(
+  const arm_dct4_instance_f32 * S,
+        float32_t * pState,
+        float32_t * pInlineBuffer);
+
+
+  /**
+   * @brief Instance structure for the Q31 DCT4/IDCT4 function.
+   */
+  typedef struct
+  {
+          uint16_t N;                          /**< length of the DCT4. */
+          uint16_t Nby2;                       /**< half of the length of the DCT4. */
+          q31_t normalize;                     /**< normalizing factor. */
+    const q31_t *pTwiddle;                     /**< points to the twiddle factor table. */
+    const q31_t *pCosFactor;                   /**< points to the cosFactor table. */
+          arm_rfft_instance_q31 *pRfft;        /**< points to the real FFT instance. */
+          arm_cfft_radix4_instance_q31 *pCfft; /**< points to the complex FFT instance. */
+  } arm_dct4_instance_q31;
+
+
+  /**
+   * @brief  Initialization function for the Q31 DCT4/IDCT4.
+   * @param[in,out] S          points to an instance of Q31 DCT4/IDCT4 structure.
+   * @param[in]     S_RFFT     points to an instance of Q31 RFFT/RIFFT structure
+   * @param[in]     S_CFFT     points to an instance of Q31 CFFT/CIFFT structure
+   * @param[in]     N          length of the DCT4.
+   * @param[in]     Nby2       half of the length of the DCT4.
+   * @param[in]     normalize  normalizing factor.
+   * @return      arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>N</code> is not a supported transform length.
+   */
+  arm_status arm_dct4_init_q31(
+        arm_dct4_instance_q31 * S,
+        arm_rfft_instance_q31 * S_RFFT,
+        arm_cfft_radix4_instance_q31 * S_CFFT,
+        uint16_t N,
+        uint16_t Nby2,
+        q31_t normalize);
+
+
+  /**
+   * @brief Processing function for the Q31 DCT4/IDCT4.
+   * @param[in]     S              points to an instance of the Q31 DCT4 structure.
+   * @param[in]     pState         points to state buffer.
+   * @param[in,out] pInlineBuffer  points to the in-place input and output buffer.
+   */
+  void arm_dct4_q31(
+  const arm_dct4_instance_q31 * S,
+        q31_t * pState,
+        q31_t * pInlineBuffer);
+
+
+  /**
+   * @brief Instance structure for the Q15 DCT4/IDCT4 function.
+   */
+  typedef struct
+  {
+          uint16_t N;                          /**< length of the DCT4. */
+          uint16_t Nby2;                       /**< half of the length of the DCT4. */
+          q15_t normalize;                     /**< normalizing factor. */
+    const q15_t *pTwiddle;                     /**< points to the twiddle factor table. */
+    const q15_t *pCosFactor;                   /**< points to the cosFactor table. */
+          arm_rfft_instance_q15 *pRfft;        /**< points to the real FFT instance. */
+          arm_cfft_radix4_instance_q15 *pCfft; /**< points to the complex FFT instance. */
+  } arm_dct4_instance_q15;
+
+
+  /**
+   * @brief  Initialization function for the Q15 DCT4/IDCT4.
+   * @param[in,out] S          points to an instance of Q15 DCT4/IDCT4 structure.
+   * @param[in]     S_RFFT     points to an instance of Q15 RFFT/RIFFT structure.
+   * @param[in]     S_CFFT     points to an instance of Q15 CFFT/CIFFT structure.
+   * @param[in]     N          length of the DCT4.
+   * @param[in]     Nby2       half of the length of the DCT4.
+   * @param[in]     normalize  normalizing factor.
+   * @return      arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if <code>N</code> is not a supported transform length.
+   */
+  arm_status arm_dct4_init_q15(
+        arm_dct4_instance_q15 * S,
+        arm_rfft_instance_q15 * S_RFFT,
+        arm_cfft_radix4_instance_q15 * S_CFFT,
+        uint16_t N,
+        uint16_t Nby2,
+        q15_t normalize);
+
+
+  /**
+   * @brief Processing function for the Q15 DCT4/IDCT4.
+   * @param[in]     S              points to an instance of the Q15 DCT4 structure.
+   * @param[in]     pState         points to state buffer.
+   * @param[in,out] pInlineBuffer  points to the in-place input and output buffer.
+   */
+  void arm_dct4_q15(
+  const arm_dct4_instance_q15 * S,
+        q15_t * pState,
+        q15_t * pInlineBuffer);
+
+
+
+#ifdef   __cplusplus
+}
+#endif
+
+#endif /* ifndef _TRANSFORM_FUNCTIONS_H_ */
diff --git a/CMSIS/DSP/Include/dsp/transform_functions_f16.h b/CMSIS/DSP/Include/dsp/transform_functions_f16.h
new file mode 100755
index 0000000..cf51323
--- /dev/null
+++ b/CMSIS/DSP/Include/dsp/transform_functions_f16.h
@@ -0,0 +1,108 @@
+/******************************************************************************
+ * @file     transform_functions_f16.h
+ * @brief    Public header file for CMSIS DSP Library
+ * @version  V1.9.0
+ * @date     20. July 2020
+ ******************************************************************************/
+/*
+ * 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.
+ */
+
+ 
+#ifndef _TRANSFORM_FUNCTIONS_F16_H_
+#define _TRANSFORM_FUNCTIONS_F16_H_
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+#include "arm_math_types_f16.h"
+#include "arm_math_memory.h"
+
+#include "dsp/none.h"
+#include "dsp/utils.h"
+
+#if defined(ARM_FLOAT16_SUPPORTED)
+
+
+  /**
+   * @brief Instance structure for the floating-point CFFT/CIFFT function.
+   */
+  typedef struct
+  {
+          uint16_t fftLen;                   /**< length of the FFT. */
+          uint8_t ifftFlag;                  /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */
+          uint8_t bitReverseFlag;            /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */
+    const float16_t *pTwiddle;               /**< points to the Twiddle factor table. */
+    const uint16_t *pBitRevTable;            /**< points to the bit reversal table. */
+          uint16_t twidCoefModifier;         /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
+          uint16_t bitRevFactor;             /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */
+          float16_t onebyfftLen;             /**< value of 1/fftLen. */
+  } arm_cfft_radix2_instance_f16;
+
+  /**
+   * @brief Instance structure for the floating-point CFFT/CIFFT function.
+   */
+  typedef struct
+  {
+          uint16_t fftLen;                   /**< length of the FFT. */
+          uint8_t ifftFlag;                  /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */
+          uint8_t bitReverseFlag;            /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */
+    const float16_t *pTwiddle;               /**< points to the Twiddle factor table. */
+    const uint16_t *pBitRevTable;            /**< points to the bit reversal table. */
+          uint16_t twidCoefModifier;         /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */
+          uint16_t bitRevFactor;             /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */
+          float16_t onebyfftLen;             /**< value of 1/fftLen. */
+  } arm_cfft_radix4_instance_f16;
+
+  /**
+   * @brief Instance structure for the floating-point CFFT/CIFFT function.
+   */
+  typedef struct
+  {
+          uint16_t fftLen;                   /**< length of the FFT. */
+    const float16_t *pTwiddle;         /**< points to the Twiddle factor table. */
+    const uint16_t *pBitRevTable;      /**< points to the bit reversal table. */
+          uint16_t bitRevLength;             /**< bit reversal table length. */
+#if defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE)
+   const uint32_t *rearranged_twiddle_tab_stride1_arr;        /**< Per stage reordered twiddle pointer (offset 1) */                                                       \
+   const uint32_t *rearranged_twiddle_tab_stride2_arr;        /**< Per stage reordered twiddle pointer (offset 2) */                                                       \
+   const uint32_t *rearranged_twiddle_tab_stride3_arr;        /**< Per stage reordered twiddle pointer (offset 3) */                                                       \
+   const float16_t *rearranged_twiddle_stride1; /**< reordered twiddle offset 1 storage */                                                                   \
+   const float16_t *rearranged_twiddle_stride2; /**< reordered twiddle offset 2 storage */                                                                   \
+   const float16_t *rearranged_twiddle_stride3;
+#endif
+  } arm_cfft_instance_f16;
+
+
+  arm_status arm_cfft_init_f16(
+  arm_cfft_instance_f16 * S,
+  uint16_t fftLen);
+
+  void arm_cfft_f16(
+  const arm_cfft_instance_f16 * S,
+        float16_t * p1,
+        uint8_t ifftFlag,
+        uint8_t bitReverseFlag);
+#endif /* defined(ARM_FLOAT16_SUPPORTED)*/
+
+#ifdef   __cplusplus
+}
+#endif
+
+#endif /* ifndef _TRANSFORM_FUNCTIONS_F16_H_ */
diff --git a/CMSIS/DSP/Include/dsp/utils.h b/CMSIS/DSP/Include/dsp/utils.h
new file mode 100755
index 0000000..ddcbc98
--- /dev/null
+++ b/CMSIS/DSP/Include/dsp/utils.h
@@ -0,0 +1,257 @@
+/******************************************************************************
+ * @file     arm_math_utils.h
+ * @brief    Public header file for CMSIS DSP Library
+ * @version  V1.9.0
+ * @date     20. July 2020
+ ******************************************************************************/
+/*
+ * 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.
+ */
+
+#ifndef _ARM_MATH_UTILS_H_
+
+#define _ARM_MATH_UTILS_H_
+
+#include "arm_math_types.h"
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+  /**
+   * @brief Macros required for reciprocal calculation in Normalized LMS
+   */
+
+#define INDEX_MASK         0x0000003F
+
+
+#define SQ(x) ((x) * (x))
+
+
+
+  /**
+   * @brief Function to Calculates 1/in (reciprocal) value of Q31 Data type.
+   */
+  __STATIC_FORCEINLINE uint32_t arm_recip_q31(
+        q31_t in,
+        q31_t * dst,
+  const q31_t * pRecipTable)
+  {
+    q31_t out;
+    uint32_t tempVal;
+    uint32_t index, i;
+    uint32_t signBits;
+
+    if (in > 0)
+    {
+      signBits = ((uint32_t) (__CLZ( in) - 1));
+    }
+    else
+    {
+      signBits = ((uint32_t) (__CLZ(-in) - 1));
+    }
+
+    /* Convert input sample to 1.31 format */
+    in = (in << signBits);
+
+    /* calculation of index for initial approximated Val */
+    index = (uint32_t)(in >> 24);
+    index = (index & INDEX_MASK);
+
+    /* 1.31 with exp 1 */
+    out = pRecipTable[index];
+
+    /* calculation of reciprocal value */
+    /* running approximation for two iterations */
+    for (i = 0U; i < 2U; i++)
+    {
+      tempVal = (uint32_t) (((q63_t) in * out) >> 31);
+      tempVal = 0x7FFFFFFFu - tempVal;
+      /*      1.31 with exp 1 */
+      /* out = (q31_t) (((q63_t) out * tempVal) >> 30); */
+      out = clip_q63_to_q31(((q63_t) out * tempVal) >> 30);
+    }
+
+    /* write output */
+    *dst = out;
+
+    /* return num of signbits of out = 1/in value */
+    return (signBits + 1U);
+  }
+
+
+  /**
+   * @brief Function to Calculates 1/in (reciprocal) value of Q15 Data type.
+   */
+  __STATIC_FORCEINLINE uint32_t arm_recip_q15(
+        q15_t in,
+        q15_t * dst,
+  const q15_t * pRecipTable)
+  {
+    q15_t out = 0;
+    uint32_t tempVal = 0;
+    uint32_t index = 0, i = 0;
+    uint32_t signBits = 0;
+
+    if (in > 0)
+    {
+      signBits = ((uint32_t)(__CLZ( in) - 17));
+    }
+    else
+    {
+      signBits = ((uint32_t)(__CLZ(-in) - 17));
+    }
+
+    /* Convert input sample to 1.15 format */
+    in = (in << signBits);
+
+    /* calculation of index for initial approximated Val */
+    index = (uint32_t)(in >>  8);
+    index = (index & INDEX_MASK);
+
+    /*      1.15 with exp 1  */
+    out = pRecipTable[index];
+
+    /* calculation of reciprocal value */
+    /* running approximation for two iterations */
+    for (i = 0U; i < 2U; i++)
+    {
+      tempVal = (uint32_t) (((q31_t) in * out) >> 15);
+      tempVal = 0x7FFFu - tempVal;
+      /*      1.15 with exp 1 */
+      out = (q15_t) (((q31_t) out * tempVal) >> 14);
+      /* out = clip_q31_to_q15(((q31_t) out * tempVal) >> 14); */
+    }
+
+    /* write output */
+    *dst = out;
+
+    /* return num of signbits of out = 1/in value */
+    return (signBits + 1);
+  }
+
+/**
+ * @brief Integer exponentiation
+ * @param[in]    x           value
+ * @param[in]    nb          integer exponent >= 1
+ * @return x^nb
+ *
+ */
+__STATIC_INLINE float32_t arm_exponent_f32(float32_t x, int32_t nb)
+{
+    float32_t r = x;
+    nb --;
+    while(nb > 0)
+    {
+        r = r * x;
+        nb--;
+    }
+    return(r);
+}
+
+/**
+ * @brief  64-bit to 32-bit unsigned normalization
+ * @param[in]  in           is input unsigned long long value
+ * @param[out] normalized   is the 32-bit normalized value
+ * @param[out] norm         is norm scale
+ */
+__STATIC_INLINE  void arm_norm_64_to_32u(uint64_t in, int32_t * normalized, int32_t *norm)
+{
+    int32_t     n1;
+    int32_t     hi = (int32_t) (in >> 32);
+    int32_t     lo = (int32_t) ((in << 32) >> 32);
+
+    n1 = __CLZ(hi) - 32;
+    if (!n1)
+    {
+        /*
+         * input fits in 32-bit
+         */
+        n1 = __CLZ(lo);
+        if (!n1)
+        {
+            /*
+             * MSB set, need to scale down by 1
+             */
+            *norm = -1;
+            *normalized = (((uint32_t) lo) >> 1);
+        } else
+        {
+            if (n1 == 32)
+            {
+                /*
+                 * input is zero
+                 */
+                *norm = 0;
+                *normalized = 0;
+            } else
+            {
+                /*
+                 * 32-bit normalization
+                 */
+                *norm = n1 - 1;
+                *normalized = lo << *norm;
+            }
+        }
+    } else
+    {
+        /*
+         * input fits in 64-bit
+         */
+        n1 = 1 - n1;
+        *norm = -n1;
+        /*
+         * 64 bit normalization
+         */
+        *normalized = (((uint32_t) lo) >> n1) | (hi << (32 - n1));
+    }
+}
+
+__STATIC_INLINE q31_t arm_div_q63_to_q31(q63_t num, q31_t den)
+{
+    q31_t   result;
+    uint64_t   absNum;
+    int32_t   normalized;
+    int32_t   norm;
+
+    /*
+     * if sum fits in 32bits
+     * avoid costly 64-bit division
+     */
+    absNum = num > 0 ? num : -num;
+    arm_norm_64_to_32u(absNum, &normalized, &norm);
+    if (norm > 0)
+        /*
+         * 32-bit division
+         */
+        result = (q31_t) num / den;
+    else
+        /*
+         * 64-bit division
+         */
+        result = (q31_t) (num / den);
+
+    return result;
+}
+
+
+#ifdef   __cplusplus
+}
+#endif
+
+#endif /*ifndef _ARM_MATH_UTILS_H_ */
diff --git a/CMSIS/DSP/Platforms/FVP/ARMCA32/Include/ARMCA32.h b/CMSIS/DSP/Platforms/FVP/ARMCA32/Include/ARMCA32.h
index 9c28bea..b5076b6 100755
--- a/CMSIS/DSP/Platforms/FVP/ARMCA32/Include/ARMCA32.h
+++ b/CMSIS/DSP/Platforms/FVP/ARMCA32/Include/ARMCA32.h
@@ -1,6 +1,6 @@
 /******************************************************************************
- * @file     ARMCA5.h
- * @brief    CMSIS Cortex-A5 Core Peripheral Access Layer Header File 
+ * @file     ARMCA32.h
+ * @brief    CMSIS Cortex-A32 Core Peripheral Access Layer Header File 
  * @version  V1.1.0
  * @date     15. May 2019
  *
@@ -25,6 +25,14 @@
  * limitations under the License.
  */
 
+/*
+
+
+None of above values have been checked !
+
+*/
+
+
 #ifndef __ARMCA32_H__
 #define __ARMCA32_H__
 
@@ -33,8 +41,24 @@
 #endif
 
 
-/* -------------------------  Interrupt Number Definition  ------------------------ */
+/******************************************************************************/
+/*                         Peripheral memory map                              */
+/******************************************************************************/
 
+/* Peripheral and RAM base address */
+#define VE_A32_NORMAL                  (0x00000000UL)                                /*!< (FLASH0     ) Base Address */
+#define VE_A32_PERIPH                  (0x13000000UL)                                /*!< (FLASH0     ) Base Address */
+#define VE_A32_NORMAL2                 (0x14000000UL) 
+
+/* --------  Configuration of the Cortex-A32 Processor and Core Peripherals  ------- */
+#define __CA_REV        0x0000U    /*!< Core revision r0p0                          */
+#define __CORTEX_A           32U    /*!< Cortex-A32 Core                              */
+#define __FPU_PRESENT        1U    /* FPU present                                   */
+#define __GIC_PRESENT        1U    /* GIC present                                   */
+#define __TIM_PRESENT        1U    /* TIM present                                   */
+#define __L2C_PRESENT        0U    /* L2C present                                   */
+
+/** Device specific Interrupt IDs */
 typedef enum IRQn
 {
 /******  SGI Interrupts Numbers                 ****************************************/
@@ -55,7 +79,7 @@
   SGI14_IRQn           = 14,        /*!< Software Generated Interrupt 14 */
   SGI15_IRQn           = 15,        /*!< Software Generated Interrupt 15 */
 
-/******  Cortex-A5 Processor Exceptions Numbers ****************************************/
+/******  Cortex-A9 Processor Exceptions Numbers ****************************************/
   GlobalTimer_IRQn     = 27,        /*!< Global Timer Interrupt                        */
   PrivTimer_IRQn       = 29,        /*!< Private Timer Interrupt                       */
   PrivWatchdog_IRQn    = 30,        /*!< Private Watchdog Interrupt                    */
@@ -79,54 +103,10 @@
   VFS2_IRQn            = 73,        /*!< VFS2 Interrupt         */
 } IRQn_Type;
 
-/******************************************************************************/
-/*                         Peripheral memory map                              */
-/******************************************************************************/
-
-/* Peripheral and RAM base address */
-#define VE_A5_MP_FLASH_BASE0                  (0x00000000UL)                                /*!< (FLASH0     ) Base Address */
-#define VE_A5_MP_FLASH_BASE1                  (0x0C000000UL)                                /*!< (FLASH1     ) Base Address */
-#define VE_A5_MP_SRAM_BASE                    (0x14000000UL)                                /*!< (SRAM       ) Base Address */
-#define VE_A5_MP_PERIPH_BASE_CS2              (0x18000000UL)                                /*!< (Peripheral ) Base Address */
-#define VE_A5_MP_VRAM_BASE                    (0x00000000UL + VE_A5_MP_PERIPH_BASE_CS2)     /*!< (VRAM       ) Base Address */
-#define VE_A5_MP_ETHERNET_BASE                (0x02000000UL + VE_A5_MP_PERIPH_BASE_CS2)     /*!< (ETHERNET   ) Base Address */
-#define VE_A5_MP_USB_BASE                     (0x03000000UL + VE_A5_MP_PERIPH_BASE_CS2)     /*!< (USB        ) Base Address */
-#define VE_A5_MP_PERIPH_BASE_CS3              (0x1C000000UL)                                /*!< (Peripheral ) Base Address */
-#define VE_A5_MP_DAP_BASE                     (0x00000000UL + VE_A5_MP_PERIPH_BASE_CS3)     /*!< (LOCAL DAP  ) Base Address */
-#define VE_A5_MP_SYSTEM_REG_BASE              (0x00010000UL + VE_A5_MP_PERIPH_BASE_CS3)     /*!< (SYSTEM REG ) Base Address */
-#define VE_A5_MP_SERIAL_BASE                  (0x00030000UL + VE_A5_MP_PERIPH_BASE_CS3)     /*!< (SERIAL     ) Base Address */
-#define VE_A5_MP_AACI_BASE                    (0x00040000UL + VE_A5_MP_PERIPH_BASE_CS3)     /*!< (AACI       ) Base Address */
-#define VE_A5_MP_MMCI_BASE                    (0x00050000UL + VE_A5_MP_PERIPH_BASE_CS3)     /*!< (MMCI       ) Base Address */
-#define VE_A5_MP_KMI0_BASE                    (0x00060000UL + VE_A5_MP_PERIPH_BASE_CS3)     /*!< (KMI0       ) Base Address */
-#define VE_A5_MP_UART_BASE                    (0x00090000UL + VE_A5_MP_PERIPH_BASE_CS3)     /*!< (UART       ) Base Address */
-#define VE_A5_MP_WDT_BASE                     (0x000F0000UL + VE_A5_MP_PERIPH_BASE_CS3)     /*!< (WDT        ) Base Address */
-#define VE_A5_MP_TIMER_BASE                   (0x00110000UL + VE_A5_MP_PERIPH_BASE_CS3)     /*!< (TIMER      ) Base Address */
-#define VE_A5_MP_DVI_BASE                     (0x00160000UL + VE_A5_MP_PERIPH_BASE_CS3)     /*!< (DVI        ) Base Address */
-#define VE_A5_MP_RTC_BASE                     (0x00170000UL + VE_A5_MP_PERIPH_BASE_CS3)     /*!< (RTC        ) Base Address */
-#define VE_A5_MP_UART4_BASE                   (0x001B0000UL + VE_A5_MP_PERIPH_BASE_CS3)     /*!< (UART4      ) Base Address */
-#define VE_A5_MP_CLCD_BASE                    (0x001F0000UL + VE_A5_MP_PERIPH_BASE_CS3)     /*!< (CLCD       ) Base Address */
-#define VE_A5_MP_PRIVATE_PERIPH_BASE          (0x2C000000UL)                                /*!< (Peripheral ) Base Address */
-#define VE_A5_MP_GIC_DISTRIBUTOR_BASE         (0x00001000UL + VE_A5_MP_PRIVATE_PERIPH_BASE) /*!< (GIC DIST   ) Base Address */
-#define VE_A5_MP_GIC_INTERFACE_BASE           (0x00000100UL + VE_A5_MP_PRIVATE_PERIPH_BASE) /*!< (GIC CPU IF ) Base Address */
-#define VE_A5_MP_PRIVATE_TIMER                (0x00000600UL + VE_A5_MP_PRIVATE_PERIPH_BASE) /*!< (PTIM       ) Base Address */
-#define VE_A5_MP_PL310_BASE                   (0x000F0000UL + VE_A5_MP_PRIVATE_PERIPH_BASE) /*!< (L2C-310    ) Base Address */
-#define VE_A5_MP_SSRAM_BASE                   (0x2E000000UL)                                /*!< (System SRAM) Base Address */
-#define VE_A5_MP_DRAM_BASE                    (0x80000000UL)                                /*!< (DRAM       ) Base Address */
-#define GIC_DISTRIBUTOR_BASE                  VE_A5_MP_GIC_DISTRIBUTOR_BASE
-#define GIC_INTERFACE_BASE                    VE_A5_MP_GIC_INTERFACE_BASE
-#define TIMER_BASE                            VE_A5_MP_PRIVATE_TIMER
-
-//The VE-A5 model implements L1 cache as architecturally defined, but does not implement L2 cache.
-//Do not enable the L2 cache if you are running RTX on a VE-A5 model as it may cause a data abort.
-#define L2C_310_BASE                          VE_A5_MP_PL310_BASE
-
-/* --------  Configuration of the Cortex-A5 Processor and Core Peripherals  ------- */
-#define __CA_REV        0x0000U    /* Core revision r0p0                            */
-#define __CORTEX_A           5U    /* Cortex-A5 Core                                */
-#define __FPU_PRESENT        1U    /* FPU present                                   */
-#define __GIC_PRESENT        1U    /* GIC present                                   */
-#define __TIM_PRESENT        1U    /* TIM present                                   */
-#define __L2C_PRESENT        0U    /* L2C present                                   */
+// To allow inclusion of core_ca.h but those symbols are not used in our code
+#define GIC_DISTRIBUTOR_BASE                  0
+#define GIC_INTERFACE_BASE                    0
+#define TIMER_BASE                            0
 
 #include "core_ca.h"
 #include <system_ARMCA32.h>
diff --git a/CMSIS/DSP/Platforms/FVP/ARMCA32/LinkScripts/AC6/lnk.sct b/CMSIS/DSP/Platforms/FVP/ARMCA32/LinkScripts/AC6/lnk.sct
index ca790a0..808b793 100755
--- a/CMSIS/DSP/Platforms/FVP/ARMCA32/LinkScripts/AC6/lnk.sct
+++ b/CMSIS/DSP/Platforms/FVP/ARMCA32/LinkScripts/AC6/lnk.sct
@@ -11,26 +11,26 @@
 
 #include "mem_ARMCA32.h"
 
-SDRAM __ROM_BASE __ROM_SIZE       ; load region size_region
+SDRAM __ROM_BASE        ; load region size_region
 {
   VECTORS __ROM_BASE __ROM_SIZE ; load address = execution address
   {
       * (RESET, +FIRST)         ; Vector table and other startup code
       * (InRoot$$Sections)      ; All (library) code that must be in a root region
       * (+RO-CODE)              ; Application RO code (.text)
-      * (+RO-DATA)              ; Application RO data (.constdata)
   }
   
-  RW_DATA __RAM_BASE __RW_DATA_SIZE
-  { * (+RW) }                   ; Application RW data (.data)
+  RW_DATA __RAM_BASE NOCOMPRESS __RW_DATA_SIZE
+  {       
+  * (+RO-DATA)   
+    * (+RW,+ZI)    
+  }                   ; Application RW data (.data)
   
-  ZI_DATA (__RAM_BASE+
-           __RW_DATA_SIZE) __ZI_DATA_SIZE
-  { * (+ZI) }                   ; Application ZI data (.bss)
+             ; Application ZI data (.bss)
   
   ARM_LIB_HEAP  (__RAM_BASE
                 +__RW_DATA_SIZE
-                +__ZI_DATA_SIZE)    ALIGN 64 EMPTY __HEAP_SIZE        ; Heap region growing up
+                )    ALIGN 64 EMPTY __HEAP_SIZE        ; Heap region growing up
   { }
     
   ARM_LIB_STACK (__RAM_BASE
diff --git a/CMSIS/DSP/Platforms/FVP/ARMCA32/LinkScripts/AC6/mem_ARMCA32.h b/CMSIS/DSP/Platforms/FVP/ARMCA32/LinkScripts/AC6/mem_ARMCA32.h
index d9783db..689de7d 100755
--- a/CMSIS/DSP/Platforms/FVP/ARMCA32/LinkScripts/AC6/mem_ARMCA32.h
+++ b/CMSIS/DSP/Platforms/FVP/ARMCA32/LinkScripts/AC6/mem_ARMCA32.h
@@ -44,7 +44,7 @@
 // </h>
  *----------------------------------------------------------------------------*/
 #define __ROM_BASE       0x00000000
-#define __ROM_SIZE       0x00400000
+#define __ROM_SIZE       0x100000
 
 /*--------------------- RAM Configuration -----------------------------------
 // <h> RAM Configuration
@@ -69,14 +69,14 @@
 // </h>
  *----------------------------------------------------------------------------*/
 //#define __RAM_BASE       0x80200000#
-#define __RAM_BASE       0x0500000
-#define __RAM_SIZE       0x00700000
+#define __RAM_BASE       0x00100000
+#define __RAM_SIZE       0x00200000
 
-#define __RW_DATA_SIZE   0x00200000
+#define __RW_DATA_SIZE   0xF0000
 #define __ZI_DATA_SIZE   0x00200000
 
 #define __STACK_SIZE     0x00007000
-#define __HEAP_SIZE      0x00200000
+#define __HEAP_SIZE      0x00100000
 
 #define __UND_STACK_SIZE 0x00000100
 #define __ABT_STACK_SIZE 0x00000100
@@ -95,7 +95,7 @@
 //   <o1> TTB Size (in Bytes) <0x0-0xFFFFFFFF:8>
 // </h>
  *----------------------------------------------------------------------------*/
-#define __TTB_BASE       0x80500000
+#define __TTB_BASE       0x00300000
 #define __TTB_SIZE       0x00005000
 
 
diff --git a/CMSIS/DSP/Platforms/FVP/ARMCA32/LinkScripts/GCC/lnk.ld b/CMSIS/DSP/Platforms/FVP/ARMCA32/LinkScripts/GCC/lnk.ld
index ec3a401..da966b1 100755
--- a/CMSIS/DSP/Platforms/FVP/ARMCA32/LinkScripts/GCC/lnk.ld
+++ b/CMSIS/DSP/Platforms/FVP/ARMCA32/LinkScripts/GCC/lnk.ld
@@ -1,4 +1,4 @@
-#include "mem_ARMCA5.h" 
+#include "mem_ARMCA32.h" 
 
 MEMORY
 {
diff --git a/CMSIS/DSP/Platforms/FVP/ARMCA32/LinkScripts/GCC/mem_ARMCA5.h b/CMSIS/DSP/Platforms/FVP/ARMCA32/LinkScripts/GCC/mem_ARMCA32.h
similarity index 98%
rename from CMSIS/DSP/Platforms/FVP/ARMCA32/LinkScripts/GCC/mem_ARMCA5.h
rename to CMSIS/DSP/Platforms/FVP/ARMCA32/LinkScripts/GCC/mem_ARMCA32.h
index 44a1b31..b9e851c 100755
--- a/CMSIS/DSP/Platforms/FVP/ARMCA32/LinkScripts/GCC/mem_ARMCA5.h
+++ b/CMSIS/DSP/Platforms/FVP/ARMCA32/LinkScripts/GCC/mem_ARMCA32.h
@@ -25,8 +25,8 @@
  * limitations under the License.
  */
 
-#ifndef __MEM_ARMCA5_H
-#define __MEM_ARMCA5_H
+#ifndef __MEM_ARMCA32_H
+#define __MEM_ARMCA32_H
 
 /*----------------------------------------------------------------------------
   User Stack & Heap size definition
diff --git a/CMSIS/DSP/Platforms/FVP/ARMCA32/LinkScripts/GCC/system_ARMCA5.h b/CMSIS/DSP/Platforms/FVP/ARMCA32/LinkScripts/GCC/system_ARMCA32.h
similarity index 100%
rename from CMSIS/DSP/Platforms/FVP/ARMCA32/LinkScripts/GCC/system_ARMCA5.h
rename to CMSIS/DSP/Platforms/FVP/ARMCA32/LinkScripts/GCC/system_ARMCA32.h
diff --git a/CMSIS/DSP/Platforms/FVP/ARMCA32/Startup/AC6/startup_ARMCA32.c b/CMSIS/DSP/Platforms/FVP/ARMCA32/Startup/AC6/startup_ARMCA32.c
index 3236a0e..968d3a1 100755
--- a/CMSIS/DSP/Platforms/FVP/ARMCA32/Startup/AC6/startup_ARMCA32.c
+++ b/CMSIS/DSP/Platforms/FVP/ARMCA32/Startup/AC6/startup_ARMCA32.c
@@ -105,34 +105,34 @@
   "LDR    R0, =Vectors                             \n"
   "MCR    p15, 0, R0, c12, c0, 0                   \n"
 
-  "LDR     r0,=Image$$TTB$$ZI$$Base                \n"
-  "MCR     p15, 0, r0, c2, c0, 0                   \n"
-
-  "LDR     r0, =0xFFFFFFFF                         \n"            
-  "MCR     p15, 0, r0, c3, c0, 0                   \n"      // Write Domain Access Control Register
-
-
-
-  "LDR     SP, =Image$$ARM_LIB_STACK$$ZI$$Limit      \n"
-
-  "MRC     p15, 0, R0, c1, c0, 0                   \n"  // Read CP15 System Control register
-  "BIC     R0, R0, #(0x1 << 12)                    \n"  // Clear I bit 12 to disable I Cache
-  "BIC     R0, R0, #(0x1 <<  2)                    \n"  // Clear C bit  2 to disable D Cache
-  "BIC     R0, R0, #0x2                            \n"   // Clear A bit  1 to disable strict alignment fault checking
-  "MCR     p15, 0, R0, c1, c0, 0                   \n"  // Write value back to CP15 System Control register
-  "ISB                                             \n"
+  // Setup Stack for each exceptional mode
+  "CPS    #0x11                                    \n"
+  "LDR    SP, =Image$$FIQ_STACK$$ZI$$Limit         \n"
+  "CPS    #0x12                                    \n"
+  "LDR    SP, =Image$$IRQ_STACK$$ZI$$Limit         \n"
+  "CPS    #0x13                                    \n"
+  "LDR    SP, =Image$$SVC_STACK$$ZI$$Limit         \n"
+  "CPS    #0x17                                    \n"
+  "LDR    SP, =Image$$ABT_STACK$$ZI$$Limit         \n"
+  "CPS    #0x1B                                    \n"
+  "LDR    SP, =Image$$UND_STACK$$ZI$$Limit         \n"
+  "CPS    #0x1F                                    \n"
+  "LDR    SP, =Image$$ARM_LIB_STACK$$ZI$$Limit     \n"
 
   // Call SystemInit
   "BL     SystemInit                               \n"
 
   // Unmask interrupts
-  //"CPSIE  if                                       \n"
+  "CPSIE  if                                       \n"
 
   // Call __main
   "BL     __main                                   \n"
   );
 }
 
+
+
+
 /*----------------------------------------------------------------------------
   Default Handler for Exceptions / Interrupts
  *----------------------------------------------------------------------------*/
diff --git a/CMSIS/DSP/Platforms/FVP/ARMCA32/Startup/GCC/startup_ARMCA5.c b/CMSIS/DSP/Platforms/FVP/ARMCA32/Startup/GCC/startup_ARMCA32.c
similarity index 99%
rename from CMSIS/DSP/Platforms/FVP/ARMCA32/Startup/GCC/startup_ARMCA5.c
rename to CMSIS/DSP/Platforms/FVP/ARMCA32/Startup/GCC/startup_ARMCA32.c
index 7772401..0be37aa 100755
--- a/CMSIS/DSP/Platforms/FVP/ARMCA32/Startup/GCC/startup_ARMCA5.c
+++ b/CMSIS/DSP/Platforms/FVP/ARMCA32/Startup/GCC/startup_ARMCA32.c
@@ -25,7 +25,7 @@
  * limitations under the License.
  */
 
-#include <ARMCA5.h>
+#include <ARMCA32.h>
 
 /*----------------------------------------------------------------------------
   Definitions
diff --git a/CMSIS/DSP/Platforms/FVP/ARMCA32/mmu_ARMCA32.c b/CMSIS/DSP/Platforms/FVP/ARMCA32/mmu_ARMCA32.c
index f32ebd8..0263f5b 100755
--- a/CMSIS/DSP/Platforms/FVP/ARMCA32/mmu_ARMCA32.c
+++ b/CMSIS/DSP/Platforms/FVP/ARMCA32/mmu_ARMCA32.c
@@ -1,13 +1,178 @@
-#include "cmsis_compiler.h"
-#include "cmsis_cp15.h"
+/**************************************************************************//**
+ * @file     mmu_ARMCA32.c
+ * @brief    MMU Configuration for Arm Cortex-A32 Device Series
+ * @version  V1.2.0
+ * @date     15. May 2019
+ *
+ * @note
+ *
+ ******************************************************************************/
+/*
+ * Copyright (c) 2009-2019 Arm Limited. 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.
+ */
+
+/* Memory map description from: DUI0447G_v2m_p1_trm.pdf 4.2.2 Arm Cortex-A Series memory map
+
+                                                     Memory Type
+0xffffffff |--------------------------|             ------------
+           |       FLAG SYNC          |             Device Memory
+0xfffff000 |--------------------------|             ------------
+           |         Fault            |                Fault
+0xfff00000 |--------------------------|             ------------
+           |                          |                Normal
+           |                          |
+           |      Daughterboard       |
+           |         memory           |
+           |                          |
+0x80505000 |--------------------------|             ------------
+           |TTB (L2 Sync Flags   ) 4k |                Normal
+0x80504C00 |--------------------------|             ------------
+           |TTB (L2 Peripherals-B) 16k|                Normal
+0x80504800 |--------------------------|             ------------
+           |TTB (L2 Peripherals-A) 16k|                Normal
+0x80504400 |--------------------------|             ------------
+           |TTB (L2 Priv Periphs)  4k |                Normal
+0x80504000 |--------------------------|             ------------
+           |    TTB (L1 Descriptors)  |                Normal
+0x80500000 |--------------------------|             ------------
+           |          Stack           |                Normal
+           |--------------------------|             ------------
+           |          Heap            |                Normal
+0x80400000 |--------------------------|             ------------
+           |         ZI Data          |                Normal
+0x80300000 |--------------------------|             ------------
+           |         RW Data          |                Normal
+0x80200000 |--------------------------|             ------------
+           |         RO Data          |                Normal
+           |--------------------------|             ------------
+           |         RO Code          |              USH Normal
+0x80000000 |--------------------------|             ------------
+           |      Daughterboard       |                Fault
+           |      HSB AXI buses       |
+0x40000000 |--------------------------|             ------------
+           |      Daughterboard       |                Fault
+           |  test chips peripherals  |
+0x2c002000 |--------------------------|             ------------
+           |     Private Address      |            Device Memory
+0x2c000000 |--------------------------|             ------------
+           |      Daughterboard       |                Fault
+           |  test chips peripherals  |
+0x20000000 |--------------------------|             ------------
+           |       Peripherals        |           Device Memory RW/RO
+           |                          |              & Fault
+0x00000000 |--------------------------|
+*/
+
+// L1 Cache info and restrictions about architecture of the caches (CCSIR register):
+// Write-Through support *not* available
+// Write-Back support available.
+// Read allocation support available.
+// Write allocation support available.
+
+//Note: You should use the Shareable attribute carefully.
+//For cores without coherency logic (such as SCU) marking a region as shareable forces the processor to not cache that region regardless of the inner cache settings.
+//Cortex-A versions of RTX use LDREX/STREX instructions relying on Local monitors. Local monitors will be used only when the region gets cached, regions that are not cached will use the Global Monitor.
+//Some Cortex-A implementations do not include Global Monitors, so wrongly setting the attribute Shareable may cause STREX to fail.
+
+//Recall: When the Shareable attribute is applied to a memory region that is not Write-Back, Normal memory, data held in this region is treated as Non-cacheable.
+//When SMP bit = 0, Inner WB/WA Cacheable Shareable attributes are treated as Non-cacheable.
+//When SMP bit = 1, Inner WB/WA Cacheable Shareable attributes are treated as Cacheable.
+
+
+//Following MMU configuration is expected
+//SCTLR.AFE == 1 (Simplified access permissions model - AP[2:1] define access permissions, AP[0] is an access flag)
+//SCTLR.TRE == 0 (TEX remap disabled, so memory type and attributes are described directly by bits in the descriptor)
+//Domain 0 is always the Client domain
+//Descriptors should place all memory in domain 0
+
+#include "ARMCA32.h"
 #include "mem_ARMCA32.h"
 
 // TTB base address
 #define TTB_BASE ((uint32_t*)__TTB_BASE)
 
+// L2 table pointers
+//----------------------------------------
+#define TTB_L1_SIZE                    (0x00004000)                        // The L1 translation table divides the full 4GB address space of a 32-bit core
+                                                                           // into 4096 equally sized sections, each of which describes 1MB of virtual memory space.
+                                                                           // The L1 translation table therefore contains 4096 32-bit (word-sized) entries.
+
+#define PRIVATE_TABLE_L2_BASE_4k       (__TTB_BASE + TTB_L1_SIZE)          // Map 4k Private Address space
+#define PERIPHERAL_A_TABLE_L2_BASE_64k (__TTB_BASE + TTB_L1_SIZE + 0x400)  // Map 64k Peripheral #1 0x1C000000 - 0x1C00FFFFF
+#define PERIPHERAL_B_TABLE_L2_BASE_64k (__TTB_BASE + TTB_L1_SIZE + 0x800)  // Map 64k Peripheral #2 0x1C100000 - 0x1C1FFFFFF
+#define SYNC_FLAGS_TABLE_L2_BASE_4k    (__TTB_BASE + TTB_L1_SIZE + 0xC00)  // Map 4k Flag synchronization
+
+//--------------------- PERIPHERALS -------------------
+#define PERIPHERAL_A_FAULT (0x00000000 + 0x1c000000) //0x1C000000-0x1C00FFFF (1M)
+#define PERIPHERAL_B_FAULT (0x00100000 + 0x1c000000) //0x1C100000-0x1C10FFFF (1M)
+
+//--------------------- SYNC FLAGS --------------------
+#define FLAG_SYNC     0xFFFFF000
+#define F_SYNC_BASE   0xFFF00000  //1M aligned
+
+static uint32_t Sect_Normal;     //outer & inner wb/wa, non-shareable, executable, rw, domain 0, base addr 0
+static uint32_t Sect_Normal_Cod; //outer & inner wb/wa, non-shareable, executable, ro, domain 0, base addr 0
+static uint32_t Sect_Normal_RO;  //as Sect_Normal_Cod, but not executable
+static uint32_t Sect_Normal_RW;  //as Sect_Normal_Cod, but writeable and not executable
+static uint32_t Sect_Device_RO;  //device, non-shareable, non-executable, ro, domain 0, base addr 0
+static uint32_t Sect_Device_RW;  //as Sect_Device_RO, but writeable
+
+/* Define global descriptors */
+static uint32_t Page_L1_4k  = 0x0;  //generic
+static uint32_t Page_L1_64k = 0x0;  //generic
+static uint32_t Page_4k_Device_RW;  //Shared device, not executable, rw, domain 0
+static uint32_t Page_64k_Device_RW; //Shared device, not executable, rw, domain 0
 
 void MMU_CreateTranslationTable(void)
 {
+    mmu_region_attributes_Type region;
+
+    //Create 4GB of faulting entries
+    MMU_TTSection (TTB_BASE, 0, 4096, DESCRIPTOR_FAULT);
+
+    /*
+     * Generate descriptors. Refer to core_ca.h to get information about attributes
+     *
+     */
+    //Create descriptors for Vectors, RO, RW, ZI sections
+    section_normal(Sect_Normal, region);
+    section_normal_cod(Sect_Normal_Cod, region);
+    section_normal_ro(Sect_Normal_RO, region);
+    section_normal_rw(Sect_Normal_RW, region);
+    //Create descriptors for peripherals
+    section_device_ro(Sect_Device_RO, region);
+    section_device_rw(Sect_Device_RW, region);
+    //Create descriptors for 64k pages
+    page64k_device_rw(Page_L1_64k, Page_64k_Device_RW, region);
+    //Create descriptors for 4k pages
+    page4k_device_rw(Page_L1_4k, Page_4k_Device_RW, region);
+
+
+    /*
+     *  Define MMU flat-map regions and attributes
+     *
+     */
+
+    //Define Image
+    MMU_TTSection (TTB_BASE, __ROM_BASE, __ROM_SIZE/0x100000, Sect_Normal_Cod); // multiple of 1MB sections
+    MMU_TTSection (TTB_BASE, __RAM_BASE, __RAM_SIZE/0x100000, Sect_Normal_RW);  // multiple of 1MB sections
+
+    //--------------------- PERIPHERALS -------------------
+    MMU_TTSection (TTB_BASE, VE_A32_PERIPH   , 64, Sect_Device_RW); // 64MB NOR
 
     /* Set location of level 1 page table
     ; 31:14 - Translation table base addr (31:14-TTBCR.N, TTBCR.N is 0 out of reset)
@@ -18,12 +183,12 @@
     ; 2     - IMP     0x0  (Implementation Defined)
     ; 1     - S       0x0  (Non-shared)
     ; 0     - IRGN[1] 0x0  (Inner WB WA) */
-    __set_TTBR0(__TTB_BASE);
+    __set_TTBR0(__TTB_BASE | 0x48);
     __ISB();
 
     /* Set up domain access control register
     ; We set domain 0 to Client and all other domains to No Access.
     ; All translation table entries specify domain 0 */
-    __set_DACR(0xFFFFFFFF);
+    __set_DACR(1);
     __ISB();
 }
diff --git a/CMSIS/DSP/Platforms/FVP/ARMCA32/system_ARMCA32.c b/CMSIS/DSP/Platforms/FVP/ARMCA32/system_ARMCA32.c
index 72e0e82..69cb0aa 100755
--- a/CMSIS/DSP/Platforms/FVP/ARMCA32/system_ARMCA32.c
+++ b/CMSIS/DSP/Platforms/FVP/ARMCA32/system_ARMCA32.c
@@ -60,15 +60,16 @@
 #endif
 
   // Create Translation Table
-  //MMU_CreateTranslationTable();
+  MMU_CreateTranslationTable();
 
   // Enable MMU
-  //MMU_Enable();
+  MMU_Enable();
 
   // Enable Caches
   L1C_EnableCaches();
   L1C_EnableBTAC();
 
+
 #if (__L2C_PRESENT == 1) 
   // Enable GIC
   //L2C_Enable();
diff --git a/CMSIS/DSP/Platforms/IPSS/ARMCA32/Include/ARMCA32.h b/CMSIS/DSP/Platforms/IPSS/ARMCA32/Include/ARMCA32.h
index bfe69db..b5076b6 100755
--- a/CMSIS/DSP/Platforms/IPSS/ARMCA32/Include/ARMCA32.h
+++ b/CMSIS/DSP/Platforms/IPSS/ARMCA32/Include/ARMCA32.h
@@ -1,6 +1,6 @@
 /******************************************************************************
- * @file     ARMCA5.h
- * @brief    CMSIS Cortex-A5 Core Peripheral Access Layer Header File 
+ * @file     ARMCA32.h
+ * @brief    CMSIS Cortex-A32 Core Peripheral Access Layer Header File 
  * @version  V1.1.0
  * @date     15. May 2019
  *
diff --git a/CMSIS/DSP/PythonWrapper/setup.py b/CMSIS/DSP/PythonWrapper/setup.py
index a8c707e..242f088 100644
--- a/CMSIS/DSP/PythonWrapper/setup.py
+++ b/CMSIS/DSP/PythonWrapper/setup.py
@@ -20,6 +20,7 @@
 #transform.remove(os.path.join(ROOT,"Source","TransformFunctions","arm_dct4_init_q15.c"))
 #transform.remove(os.path.join(ROOT,"Source","TransformFunctions","arm_rfft_init_q15.c"))
 transform.remove(os.path.join(ROOT,"Source","TransformFunctions","TransformFunctions.c"))
+transform.remove(os.path.join(ROOT,"Source","TransformFunctions","TransformFunctionsF16.c"))
 
 support = glob.glob(os.path.join(ROOT,"Source","SupportFunctions","*.c"))
 support.remove(os.path.join(ROOT,"Source","SupportFunctions","SupportFunctions.c"))
@@ -41,6 +42,7 @@
 
 basic = glob.glob(os.path.join(ROOT,"Source","BasicMathFunctions","*.c"))
 basic.remove(os.path.join(ROOT,"Source","BasicMathFunctions","BasicMathFunctions.c"))
+basic.remove(os.path.join(ROOT,"Source","BasicMathFunctions","BasicMathFunctionsF16.c"))
 
 controller = glob.glob(os.path.join(ROOT,"Source","ControllerFunctions","*.c"))
 controller.remove(os.path.join(ROOT,"Source","ControllerFunctions","ControllerFunctions.c"))
@@ -48,6 +50,10 @@
 common = glob.glob(os.path.join(ROOT,"Source","CommonTables","*.c"))
 common.remove(os.path.join(ROOT,"Source","CommonTables","CommonTables.c"))
 
+interpolation = glob.glob(os.path.join(ROOT,"Source","InterpolationFunctions","*.c"))
+interpolation.remove(os.path.join(ROOT,"Source","InterpolationFunctions","InterpolationFunctions.c"))
+
+
 #modulesrc = glob.glob(os.path.join("cmsisdsp_pkg","src","*.c"))
 modulesrc = []
 modulesrc.append(os.path.join("cmsisdsp_pkg","src","cmsismodule.c"))
@@ -64,6 +70,7 @@
                               + transform
                               + modulesrc
                               + common
+                              + interpolation
                               )
                               ,
                     include_dirs =  includes + [numpy.get_include()],
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_f16.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_f16.c
index c4f7288..c07d024 100755
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_f16.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_f16.c
@@ -24,7 +24,7 @@
  * limitations under the License.
  */
 
-#include "arm_math_f16.h"
+#include "dsp/basic_math_functions_f16.h"
 #include <math.h>
 
 /**
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_f32.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_f32.c
index ccae6d3..1e828d4 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_f32.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 #include <math.h>
 
 /**
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q15.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q15.c
index 854fbd9..971ddd3 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q15.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q31.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q31.c
index 9f3d97b..c32171f 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q31.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q7.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q7.c
index e016286..e5ec87b 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q7.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q7.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_add_f16.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_add_f16.c
index 854ed17..54e2226 100755
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_add_f16.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_add_f16.c
@@ -24,7 +24,7 @@
  * limitations under the License.
  */
 
-#include "arm_math_f16.h"
+#include "dsp/basic_math_functions_f16.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_add_f32.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_add_f32.c
index abc0a06..72823a1 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_add_f32.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_add_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q15.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q15.c
index ff8ae06..c3d1881 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q15.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q31.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q31.c
index f4ef3de..d9f0ea3 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q31.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q7.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q7.c
index 32a2ca9..6342c2e 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q7.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q7.c
@@ -27,7 +27,7 @@
  * Target Processor: Cortex-M cores
  * -------------------------------------------------------------------- */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_and_u16.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_and_u16.c
index 684df9a..3346804 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_and_u16.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_and_u16.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_and_u32.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_and_u32.c
index 0a02744..7da3624 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_and_u32.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_and_u32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_and_u8.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_and_u8.c
index 00f72ec..981181a 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_and_u8.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_and_u8.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_f16.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_f16.c
index f713a89..fca2440 100755
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_f16.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_f16.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math_f16.h"
+#include "dsp/basic_math_functions_f16.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_f32.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_f32.c
index 2bce15b..18b0e30 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_f32.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q15.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q15.c
index 7a6a525..6507689 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q15.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q31.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q31.c
index 0606f94..f7bebb4 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q31.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q7.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q7.c
index dff7ece..2acbc76 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q7.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q7.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_f16.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_f16.c
index 8fdf923..e4df864 100755
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_f16.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_f16.c
@@ -24,7 +24,7 @@
  * limitations under the License.
  */
 
-#include "arm_math_f16.h"
+#include "dsp/basic_math_functions_f16.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_f32.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_f32.c
index 687de7a..8358228 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_f32.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q15.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q15.c
index 8e9dc79..1985e72 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q15.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q31.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q31.c
index 606c000..437da24 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q31.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q7.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q7.c
index 06f56d3..1c0d519 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q7.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q7.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_f16.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_f16.c
index fff6e60..8ed1ddf 100755
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_f16.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_f16.c
@@ -24,7 +24,7 @@
  * limitations under the License.
  */
 
-#include "arm_math_f16.h"
+#include "dsp/basic_math_functions_f16.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_f32.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_f32.c
index 4eae2a2..13f922f 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_f32.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q15.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q15.c
index ea0b008..e1c4fd5 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q15.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q31.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q31.c
index f962fe4..1ac10fb 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q31.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q7.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q7.c
index 03ace0e..cdf9b34 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q7.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q7.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_not_u16.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_not_u16.c
index e1ce1b7..a211584 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_not_u16.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_not_u16.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_not_u32.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_not_u32.c
index eed0408..3a30444 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_not_u32.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_not_u32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_not_u8.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_not_u8.c
index 83e0de5..91939dc 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_not_u8.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_not_u8.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_f16.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_f16.c
index 95447a4..4ccc8d8 100755
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_f16.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_f16.c
@@ -24,7 +24,7 @@
  * limitations under the License.
  */
 
-#include "arm_math_f16.h"
+#include "dsp/basic_math_functions_f16.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_f32.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_f32.c
index 3bed806..5870b59 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_f32.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q15.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q15.c
index 81f820b..9e3689d 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q15.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q31.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q31.c
index bdc8cf3..411c7c5 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q31.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q7.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q7.c
index a9de6cc..6f64697 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q7.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q7.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_or_u16.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_or_u16.c
index 8f2abbc..bcb6de3 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_or_u16.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_or_u16.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_or_u32.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_or_u32.c
index 66b97c0..2dfcda8 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_or_u32.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_or_u32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_or_u8.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_or_u8.c
index 32ef686..a54950a 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_or_u8.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_or_u8.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_f16.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_f16.c
index 4c006c8..395fb91 100755
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_f16.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_f16.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math_f16.h"
+#include "dsp/basic_math_functions_f16.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_f32.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_f32.c
index 053492f..5f899cf 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_f32.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q15.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q15.c
index 159c7db..1ba4e74 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q15.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q31.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q31.c
index e4639bb..456d773 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q31.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q7.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q7.c
index d123537..f5893a8 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q7.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q7.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q15.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q15.c
index 0de2eb4..528c9b3 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q15.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q31.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q31.c
index c8cd660..4b15c86 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q31.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q7.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q7.c
index ecfe198..c4f03d5 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q7.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q7.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_f16.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_f16.c
index 211ecdd..53a8d72 100755
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_f16.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_f16.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math_f16.h"
+#include "dsp/basic_math_functions_f16.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_f32.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_f32.c
index 9f4865d..1fbaa4e 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_f32.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q15.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q15.c
index b4b267b..5a8e77f 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q15.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q31.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q31.c
index b4905df..522aa69 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q31.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q7.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q7.c
index e34e74e..86755b6 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q7.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q7.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_xor_u16.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_xor_u16.c
index 0296037..d4736b0 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_xor_u16.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_xor_u16.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_xor_u32.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_xor_u32.c
index 526a1a0..d35a658 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_xor_u32.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_xor_u32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BasicMathFunctions/arm_xor_u8.c b/CMSIS/DSP/Source/BasicMathFunctions/arm_xor_u8.c
index 769e27c..5262e9e 100644
--- a/CMSIS/DSP/Source/BasicMathFunctions/arm_xor_u8.c
+++ b/CMSIS/DSP/Source/BasicMathFunctions/arm_xor_u8.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/basic_math_functions.h"
 
 /**
   @ingroup groupMath
diff --git a/CMSIS/DSP/Source/BayesFunctions/arm_gaussian_naive_bayes_predict_f32.c b/CMSIS/DSP/Source/BayesFunctions/arm_gaussian_naive_bayes_predict_f32.c
index 27bd793..7df0e41 100755
--- a/CMSIS/DSP/Source/BayesFunctions/arm_gaussian_naive_bayes_predict_f32.c
+++ b/CMSIS/DSP/Source/BayesFunctions/arm_gaussian_naive_bayes_predict_f32.c
@@ -24,7 +24,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/bayes_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/CMakeLists.txt b/CMSIS/DSP/Source/CMakeLists.txt
index b4cb0d4..12e7a3e 100755
--- a/CMSIS/DSP/Source/CMakeLists.txt
+++ b/CMSIS/DSP/Source/CMakeLists.txt
@@ -39,6 +39,7 @@
 option(SVM                  "Support Vector Machine Functions"  ON)
 option(BAYES                "Bayesian Estimators"               ON)
 option(DISTANCE             "Distance Functions"                ON)
+option(INTERPOLATION        "Interpolation Functions"                ON)
 
 # When OFF it is the default behavior : all tables are included.
 option(CONFIGTABLE          "Configuration of table allowed"    OFF)
@@ -275,6 +276,10 @@
   target_link_libraries(CMSISDSP INTERFACE CMSISDSPDistance)
 endif()
 
+if (INTERPOLATION)
+  add_subdirectory(InterpolationFunctions)
+  target_link_libraries(CMSISDSP INTERFACE CMSISDSPInterpolation)
+endif()
 
 ### Includes
 target_include_directories(CMSISDSP INTERFACE "${DSP}/Include")
diff --git a/CMSIS/DSP/Source/CommonTables/arm_common_tables.c b/CMSIS/DSP/Source/CommonTables/arm_common_tables.c
index 3a47f37..7717f36 100644
--- a/CMSIS/DSP/Source/CommonTables/arm_common_tables.c
+++ b/CMSIS/DSP/Source/CommonTables/arm_common_tables.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "arm_math_types.h"
 #include "arm_common_tables.h"
 
 /**
diff --git a/CMSIS/DSP/Source/CommonTables/arm_common_tables_f16.c b/CMSIS/DSP/Source/CommonTables/arm_common_tables_f16.c
index 91186ac..bd0465f 100755
--- a/CMSIS/DSP/Source/CommonTables/arm_common_tables_f16.c
+++ b/CMSIS/DSP/Source/CommonTables/arm_common_tables_f16.c
@@ -26,8 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math_f16.h"
-
+#include "arm_math_types_f16.h"
 /**
   @ingroup ComplexFFT
  */
diff --git a/CMSIS/DSP/Source/CommonTables/arm_const_structs.c b/CMSIS/DSP/Source/CommonTables/arm_const_structs.c
index f6ff39b..ac6ee9f 100644
--- a/CMSIS/DSP/Source/CommonTables/arm_const_structs.c
+++ b/CMSIS/DSP/Source/CommonTables/arm_const_structs.c
@@ -27,7 +27,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "arm_math_types.h"
 #include "arm_const_structs.h"
 
 /*
diff --git a/CMSIS/DSP/Source/CommonTables/arm_const_structs_f16.c b/CMSIS/DSP/Source/CommonTables/arm_const_structs_f16.c
index ca2b7bb..18c276f 100755
--- a/CMSIS/DSP/Source/CommonTables/arm_const_structs_f16.c
+++ b/CMSIS/DSP/Source/CommonTables/arm_const_structs_f16.c
@@ -27,7 +27,7 @@
  * limitations under the License.
  */
 
-#include "arm_math_f16.h"
+#include "arm_math_types_f16.h"
 
 #if defined(ARM_FLOAT16_SUPPORTED)
 
diff --git a/CMSIS/DSP/Source/CommonTables/arm_mve_tables.c b/CMSIS/DSP/Source/CommonTables/arm_mve_tables.c
index 0b7c18a..5b8ddc1 100755
--- a/CMSIS/DSP/Source/CommonTables/arm_mve_tables.c
+++ b/CMSIS/DSP/Source/CommonTables/arm_mve_tables.c
@@ -27,7 +27,7 @@
  */
 
  
-#include "arm_math.h"
+#include "arm_math_types.h"
 
 #if defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE)
 
diff --git a/CMSIS/DSP/Source/CommonTables/arm_mve_tables_f16.c b/CMSIS/DSP/Source/CommonTables/arm_mve_tables_f16.c
index 5dcd63b..ad831c5 100755
--- a/CMSIS/DSP/Source/CommonTables/arm_mve_tables_f16.c
+++ b/CMSIS/DSP/Source/CommonTables/arm_mve_tables_f16.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math_f16.h"
+#include "arm_math_types_f16.h"
 
 #if defined(ARM_FLOAT16_SUPPORTED)
 
diff --git a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_f32.c b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_f32.c
index 4e74bcc..be00319 100644
--- a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_f32.c
+++ b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/complex_math_functions.h"
 
 /**
   @ingroup groupCmplxMath
diff --git a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_q15.c b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_q15.c
index 31c19c4..a78429c 100644
--- a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_q15.c
+++ b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/complex_math_functions.h"
 
 /**
   @ingroup groupCmplxMath
diff --git a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_q31.c b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_q31.c
index 9cc029b..ba50394 100644
--- a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_q31.c
+++ b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/complex_math_functions.h"
 
 /**
   @ingroup groupCmplxMath
diff --git a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_f32.c b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_f32.c
index 4925f02..19185fa 100644
--- a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_f32.c
+++ b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/complex_math_functions.h"
 
 /**
   @ingroup groupCmplxMath
diff --git a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q15.c b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q15.c
index 5502a48..b4d930d 100644
--- a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q15.c
+++ b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/complex_math_functions.h"
 
 /**
   @ingroup groupCmplxMath
diff --git a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q31.c b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q31.c
index 5e086ec..618349c 100644
--- a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q31.c
+++ b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/complex_math_functions.h"
 
 /**
   @ingroup groupCmplxMath
diff --git a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_f32.c b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_f32.c
index ff614eb..8cd95c3 100644
--- a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_f32.c
+++ b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/complex_math_functions.h"
 
 /**
   @ingroup groupCmplxMath
diff --git a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_q15.c b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_q15.c
index 498c0e6..28cf7b9 100644
--- a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_q15.c
+++ b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/complex_math_functions.h"
 
 /**
   @ingroup groupCmplxMath
diff --git a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_q31.c b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_q31.c
index d0950ee..5db9a9e 100644
--- a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_q31.c
+++ b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/complex_math_functions.h"
 
 /**
   @ingroup groupCmplxMath
diff --git a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_f32.c b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_f32.c
index 1cea04e..b26696d 100644
--- a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_f32.c
+++ b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/complex_math_functions.h"
 
 /**
   @ingroup groupCmplxMath
diff --git a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q15.c b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q15.c
index a6107be..a0ea4b1 100644
--- a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q15.c
+++ b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/complex_math_functions.h"
 
 /**
   @ingroup groupCmplxMath
diff --git a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q31.c b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q31.c
index 7127e6e..c3ffd01 100644
--- a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q31.c
+++ b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/complex_math_functions.h"
 
 /**
   @ingroup groupCmplxMath
diff --git a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c
index 3352032..6f2e295 100644
--- a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c
+++ b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/complex_math_functions.h"
 
 /**
   @ingroup groupCmplxMath
diff --git a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c
index 82b31f9..71f8149 100644
--- a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c
+++ b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/complex_math_functions.h"
 
 /**
   @ingroup groupCmplxMath
diff --git a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c
index a14decf..94b9020 100644
--- a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c
+++ b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/complex_math_functions.h"
 
 /**
   @ingroup groupCmplxMath
diff --git a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_f32.c b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_f32.c
index 25d60a5..30e5cf2 100644
--- a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_f32.c
+++ b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/complex_math_functions.h"
 
 /**
   @ingroup groupCmplxMath
diff --git a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_q15.c b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_q15.c
index 8175938..39a95c2 100644
--- a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_q15.c
+++ b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/complex_math_functions.h"
 
 /**
   @ingroup groupCmplxMath
diff --git a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_q31.c b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_q31.c
index bc9ba69..6354615 100644
--- a/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_q31.c
+++ b/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/complex_math_functions.h"
 
 /**
   @ingroup groupCmplxMath
diff --git a/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_f32.c b/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_f32.c
index ecb703a..3e3e6c3 100644
--- a/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_f32.c
+++ b/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/controller_functions.h"
 
 /**
   @addtogroup PID
diff --git a/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_q15.c b/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_q15.c
index c88a3d9..b75c941 100644
--- a/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_q15.c
+++ b/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/controller_functions.h"
 
 /**
   @addtogroup PID
diff --git a/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_q31.c b/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_q31.c
index 1625a5f..255cc66 100644
--- a/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_q31.c
+++ b/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/controller_functions.h"
 
 /**
   @addtogroup PID
diff --git a/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_f32.c b/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_f32.c
index d839e55..1e04080 100644
--- a/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_f32.c
+++ b/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/controller_functions.h"
 
 /**
   @addtogroup PID
diff --git a/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_q15.c b/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_q15.c
index 256fd8c..912e1dd 100644
--- a/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_q15.c
+++ b/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/controller_functions.h"
 
 /**
   @addtogroup PID
diff --git a/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_q31.c b/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_q31.c
index 2aa391c..21db9fe 100644
--- a/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_q31.c
+++ b/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/controller_functions.h"
 
 /**
   @addtogroup PID
diff --git a/CMSIS/DSP/Source/ControllerFunctions/arm_sin_cos_f32.c b/CMSIS/DSP/Source/ControllerFunctions/arm_sin_cos_f32.c
index 12a1c83..ac295ab 100644
--- a/CMSIS/DSP/Source/ControllerFunctions/arm_sin_cos_f32.c
+++ b/CMSIS/DSP/Source/ControllerFunctions/arm_sin_cos_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/controller_functions.h"
 #include "arm_common_tables.h"
 
 /**
diff --git a/CMSIS/DSP/Source/ControllerFunctions/arm_sin_cos_q31.c b/CMSIS/DSP/Source/ControllerFunctions/arm_sin_cos_q31.c
index 84ee3d2..ae3fb80 100644
--- a/CMSIS/DSP/Source/ControllerFunctions/arm_sin_cos_q31.c
+++ b/CMSIS/DSP/Source/ControllerFunctions/arm_sin_cos_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/controller_functions.h"
 #include "arm_common_tables.h"
 
 /**
diff --git a/CMSIS/DSP/Source/DistanceFunctions/arm_boolean_distance.c b/CMSIS/DSP/Source/DistanceFunctions/arm_boolean_distance.c
index dfd5d98..312b02f 100755
--- a/CMSIS/DSP/Source/DistanceFunctions/arm_boolean_distance.c
+++ b/CMSIS/DSP/Source/DistanceFunctions/arm_boolean_distance.c
@@ -25,7 +25,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/distance_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/DistanceFunctions/arm_braycurtis_distance_f32.c b/CMSIS/DSP/Source/DistanceFunctions/arm_braycurtis_distance_f32.c
index 38c9d18..45edde7 100755
--- a/CMSIS/DSP/Source/DistanceFunctions/arm_braycurtis_distance_f32.c
+++ b/CMSIS/DSP/Source/DistanceFunctions/arm_braycurtis_distance_f32.c
@@ -25,7 +25,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/distance_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/DistanceFunctions/arm_canberra_distance_f32.c b/CMSIS/DSP/Source/DistanceFunctions/arm_canberra_distance_f32.c
index f71b74d..9810273 100755
--- a/CMSIS/DSP/Source/DistanceFunctions/arm_canberra_distance_f32.c
+++ b/CMSIS/DSP/Source/DistanceFunctions/arm_canberra_distance_f32.c
@@ -25,7 +25,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/distance_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/DistanceFunctions/arm_chebyshev_distance_f32.c b/CMSIS/DSP/Source/DistanceFunctions/arm_chebyshev_distance_f32.c
index f6a4736..5ea4d73 100755
--- a/CMSIS/DSP/Source/DistanceFunctions/arm_chebyshev_distance_f32.c
+++ b/CMSIS/DSP/Source/DistanceFunctions/arm_chebyshev_distance_f32.c
@@ -25,7 +25,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/distance_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/DistanceFunctions/arm_cityblock_distance_f32.c b/CMSIS/DSP/Source/DistanceFunctions/arm_cityblock_distance_f32.c
index 8dce697..7154fb4 100755
--- a/CMSIS/DSP/Source/DistanceFunctions/arm_cityblock_distance_f32.c
+++ b/CMSIS/DSP/Source/DistanceFunctions/arm_cityblock_distance_f32.c
@@ -25,7 +25,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/distance_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/DistanceFunctions/arm_correlation_distance_f32.c b/CMSIS/DSP/Source/DistanceFunctions/arm_correlation_distance_f32.c
index cee07fd..e9b4e7e 100755
--- a/CMSIS/DSP/Source/DistanceFunctions/arm_correlation_distance_f32.c
+++ b/CMSIS/DSP/Source/DistanceFunctions/arm_correlation_distance_f32.c
@@ -25,7 +25,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/distance_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/DistanceFunctions/arm_cosine_distance_f32.c b/CMSIS/DSP/Source/DistanceFunctions/arm_cosine_distance_f32.c
index b35b5ee..edd5e9b 100755
--- a/CMSIS/DSP/Source/DistanceFunctions/arm_cosine_distance_f32.c
+++ b/CMSIS/DSP/Source/DistanceFunctions/arm_cosine_distance_f32.c
@@ -25,7 +25,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/distance_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/DistanceFunctions/arm_dice_distance.c b/CMSIS/DSP/Source/DistanceFunctions/arm_dice_distance.c
index 81533a6..4f355e3 100755
--- a/CMSIS/DSP/Source/DistanceFunctions/arm_dice_distance.c
+++ b/CMSIS/DSP/Source/DistanceFunctions/arm_dice_distance.c
@@ -25,7 +25,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/distance_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/DistanceFunctions/arm_euclidean_distance_f32.c b/CMSIS/DSP/Source/DistanceFunctions/arm_euclidean_distance_f32.c
index 34df6d7..dcd5a06 100755
--- a/CMSIS/DSP/Source/DistanceFunctions/arm_euclidean_distance_f32.c
+++ b/CMSIS/DSP/Source/DistanceFunctions/arm_euclidean_distance_f32.c
@@ -25,7 +25,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/distance_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/DistanceFunctions/arm_hamming_distance.c b/CMSIS/DSP/Source/DistanceFunctions/arm_hamming_distance.c
index e895420..0179d2f 100755
--- a/CMSIS/DSP/Source/DistanceFunctions/arm_hamming_distance.c
+++ b/CMSIS/DSP/Source/DistanceFunctions/arm_hamming_distance.c
@@ -25,7 +25,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/distance_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/DistanceFunctions/arm_jaccard_distance.c b/CMSIS/DSP/Source/DistanceFunctions/arm_jaccard_distance.c
index c708859..43ba862 100755
--- a/CMSIS/DSP/Source/DistanceFunctions/arm_jaccard_distance.c
+++ b/CMSIS/DSP/Source/DistanceFunctions/arm_jaccard_distance.c
@@ -25,7 +25,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/distance_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/DistanceFunctions/arm_jensenshannon_distance_f32.c b/CMSIS/DSP/Source/DistanceFunctions/arm_jensenshannon_distance_f32.c
index 6673e47..768b7a6 100755
--- a/CMSIS/DSP/Source/DistanceFunctions/arm_jensenshannon_distance_f32.c
+++ b/CMSIS/DSP/Source/DistanceFunctions/arm_jensenshannon_distance_f32.c
@@ -25,7 +25,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/distance_functions.h"
 #include <limits.h>
 #include <math.h>
 
@@ -36,6 +36,7 @@
  */
 
 #if !defined(ARM_MATH_MVEF) || defined(ARM_MATH_AUTOVECTORIZE)
+/// @private
 __STATIC_INLINE float32_t rel_entr(float32_t x, float32_t y)
 {
     return (x * logf(x / y));
diff --git a/CMSIS/DSP/Source/DistanceFunctions/arm_kulsinski_distance.c b/CMSIS/DSP/Source/DistanceFunctions/arm_kulsinski_distance.c
index 9e5c819..6b180d1 100755
--- a/CMSIS/DSP/Source/DistanceFunctions/arm_kulsinski_distance.c
+++ b/CMSIS/DSP/Source/DistanceFunctions/arm_kulsinski_distance.c
@@ -25,7 +25,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/distance_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/DistanceFunctions/arm_minkowski_distance_f32.c b/CMSIS/DSP/Source/DistanceFunctions/arm_minkowski_distance_f32.c
index 3d550fb..4aed28e 100755
--- a/CMSIS/DSP/Source/DistanceFunctions/arm_minkowski_distance_f32.c
+++ b/CMSIS/DSP/Source/DistanceFunctions/arm_minkowski_distance_f32.c
@@ -25,7 +25,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/distance_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/DistanceFunctions/arm_rogerstanimoto_distance.c b/CMSIS/DSP/Source/DistanceFunctions/arm_rogerstanimoto_distance.c
index 6d4a4c0..77dd068 100755
--- a/CMSIS/DSP/Source/DistanceFunctions/arm_rogerstanimoto_distance.c
+++ b/CMSIS/DSP/Source/DistanceFunctions/arm_rogerstanimoto_distance.c
@@ -25,7 +25,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/distance_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/DistanceFunctions/arm_russellrao_distance.c b/CMSIS/DSP/Source/DistanceFunctions/arm_russellrao_distance.c
index 98913a5..2258081 100755
--- a/CMSIS/DSP/Source/DistanceFunctions/arm_russellrao_distance.c
+++ b/CMSIS/DSP/Source/DistanceFunctions/arm_russellrao_distance.c
@@ -25,7 +25,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/distance_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/DistanceFunctions/arm_sokalmichener_distance.c b/CMSIS/DSP/Source/DistanceFunctions/arm_sokalmichener_distance.c
index 28f0696..e4673cb 100755
--- a/CMSIS/DSP/Source/DistanceFunctions/arm_sokalmichener_distance.c
+++ b/CMSIS/DSP/Source/DistanceFunctions/arm_sokalmichener_distance.c
@@ -25,7 +25,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/distance_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/DistanceFunctions/arm_sokalsneath_distance.c b/CMSIS/DSP/Source/DistanceFunctions/arm_sokalsneath_distance.c
index d70f958..f982d8a 100755
--- a/CMSIS/DSP/Source/DistanceFunctions/arm_sokalsneath_distance.c
+++ b/CMSIS/DSP/Source/DistanceFunctions/arm_sokalsneath_distance.c
@@ -25,7 +25,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/distance_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/DistanceFunctions/arm_yule_distance.c b/CMSIS/DSP/Source/DistanceFunctions/arm_yule_distance.c
index 000cced..c66c447 100755
--- a/CMSIS/DSP/Source/DistanceFunctions/arm_yule_distance.c
+++ b/CMSIS/DSP/Source/DistanceFunctions/arm_yule_distance.c
@@ -25,7 +25,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/distance_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/FastMathFunctions/arm_cos_f32.c b/CMSIS/DSP/Source/FastMathFunctions/arm_cos_f32.c
index e9a7d7b..0756c57 100644
--- a/CMSIS/DSP/Source/FastMathFunctions/arm_cos_f32.c
+++ b/CMSIS/DSP/Source/FastMathFunctions/arm_cos_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/fast_math_functions.h"
 #include "arm_common_tables.h"
 
 /**
diff --git a/CMSIS/DSP/Source/FastMathFunctions/arm_cos_q15.c b/CMSIS/DSP/Source/FastMathFunctions/arm_cos_q15.c
index 3bb829c..2a5b55f 100644
--- a/CMSIS/DSP/Source/FastMathFunctions/arm_cos_q15.c
+++ b/CMSIS/DSP/Source/FastMathFunctions/arm_cos_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/fast_math_functions.h"
 #include "arm_common_tables.h"
 
 /**
diff --git a/CMSIS/DSP/Source/FastMathFunctions/arm_cos_q31.c b/CMSIS/DSP/Source/FastMathFunctions/arm_cos_q31.c
index 8b7ff78..6fd4ddf 100644
--- a/CMSIS/DSP/Source/FastMathFunctions/arm_cos_q31.c
+++ b/CMSIS/DSP/Source/FastMathFunctions/arm_cos_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/fast_math_functions.h"
 #include "arm_common_tables.h"
 
 /**
diff --git a/CMSIS/DSP/Source/FastMathFunctions/arm_sin_f32.c b/CMSIS/DSP/Source/FastMathFunctions/arm_sin_f32.c
index 97c6902..610cb2e 100644
--- a/CMSIS/DSP/Source/FastMathFunctions/arm_sin_f32.c
+++ b/CMSIS/DSP/Source/FastMathFunctions/arm_sin_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/fast_math_functions.h"
 #include "arm_common_tables.h"
 
 /**
diff --git a/CMSIS/DSP/Source/FastMathFunctions/arm_sin_q15.c b/CMSIS/DSP/Source/FastMathFunctions/arm_sin_q15.c
index 6924b5d..4ec36a5 100644
--- a/CMSIS/DSP/Source/FastMathFunctions/arm_sin_q15.c
+++ b/CMSIS/DSP/Source/FastMathFunctions/arm_sin_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/fast_math_functions.h"
 #include "arm_common_tables.h"
 
 /**
diff --git a/CMSIS/DSP/Source/FastMathFunctions/arm_sin_q31.c b/CMSIS/DSP/Source/FastMathFunctions/arm_sin_q31.c
index b1f1544..dfba995 100644
--- a/CMSIS/DSP/Source/FastMathFunctions/arm_sin_q31.c
+++ b/CMSIS/DSP/Source/FastMathFunctions/arm_sin_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/fast_math_functions.h"
 #include "arm_common_tables.h"
 
 /**
diff --git a/CMSIS/DSP/Source/FastMathFunctions/arm_sqrt_q15.c b/CMSIS/DSP/Source/FastMathFunctions/arm_sqrt_q15.c
index fab0a32..b1c4dfa 100644
--- a/CMSIS/DSP/Source/FastMathFunctions/arm_sqrt_q15.c
+++ b/CMSIS/DSP/Source/FastMathFunctions/arm_sqrt_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/fast_math_functions.h"
 #include "arm_common_tables.h"
 
 /**
diff --git a/CMSIS/DSP/Source/FastMathFunctions/arm_sqrt_q31.c b/CMSIS/DSP/Source/FastMathFunctions/arm_sqrt_q31.c
index 9889b13..44fb775 100644
--- a/CMSIS/DSP/Source/FastMathFunctions/arm_sqrt_q31.c
+++ b/CMSIS/DSP/Source/FastMathFunctions/arm_sqrt_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/fast_math_functions.h"
 #include "arm_common_tables.h"
 
 /**
diff --git a/CMSIS/DSP/Source/FastMathFunctions/arm_vexp_f32.c b/CMSIS/DSP/Source/FastMathFunctions/arm_vexp_f32.c
index 197890e..0d7bf7d 100755
--- a/CMSIS/DSP/Source/FastMathFunctions/arm_vexp_f32.c
+++ b/CMSIS/DSP/Source/FastMathFunctions/arm_vexp_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/fast_math_functions.h"
 #include "arm_common_tables.h"
 
 #if (defined(ARM_MATH_MVEF) || defined(ARM_MATH_HELIUM) || defined(ARM_MATH_NEON) || defined(ARM_MATH_NEON_EXPERIMENTAL)) && !defined(ARM_MATH_AUTOVECTORIZE)
diff --git a/CMSIS/DSP/Source/FastMathFunctions/arm_vlog_f32.c b/CMSIS/DSP/Source/FastMathFunctions/arm_vlog_f32.c
index 1ad6094..e4d0e50 100755
--- a/CMSIS/DSP/Source/FastMathFunctions/arm_vlog_f32.c
+++ b/CMSIS/DSP/Source/FastMathFunctions/arm_vlog_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/fast_math_functions.h"
 #include "arm_common_tables.h"
 
 #if (defined(ARM_MATH_MVEF) || defined(ARM_MATH_HELIUM) || defined(ARM_MATH_NEON) || defined(ARM_MATH_NEON_EXPERIMENTAL)) && !defined(ARM_MATH_AUTOVECTORIZE)
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c
index ac2313f..f513d43 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c
index 2b70c2a..dd44c7a 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_f32.c b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_f32.c
index 0abc165..506ab73 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_f32.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c
index 1a568d7..24fbdf0 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c
index 586296b..504fb17 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_f32.c b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_f32.c
index 684fa36..2a0bf50 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_f32.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q15.c
index c2e542c..b2911df 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q31.c b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q31.c
index 8637889..ea8432f 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q31.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_q15.c
index 4149aac..3485ebe 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_q31.c b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_q31.c
index 04413a3..a77f338 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_q31.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_f32.c b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_f32.c
index 2eea2e2..a0d2995 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_f32.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_f64.c b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_f64.c
index 35d401d..4b708e8 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_f64.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_f64.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c
index 4a50515..85592f4 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f64.c b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f64.c
index 2ab272f..9c84ed7 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f64.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f64.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_f32.c b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_f32.c
index f9cd581..2dd5f7d 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_f32.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_init_f32.c b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_init_f32.c
index d398f18..d2a8d44 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_init_f32.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_init_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_f32.c b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_f32.c
index f217f1e..0130d85 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_f32.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_opt_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_opt_q15.c
index ed2aea9..8e506a8 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_opt_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_opt_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_q15.c
index 3102a05..f5d9631 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_q31.c b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_q31.c
index e87eddc..5676ef8 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_q31.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_opt_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_opt_q15.c
index 6ad34cd..2c87ecf 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_opt_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_opt_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_opt_q7.c b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_opt_q7.c
index fb9e2ec..a67ff7a 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_opt_q7.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_opt_q7.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_f32.c b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_f32.c
index 34c77f2..1d4acf8 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_f32.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_opt_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_opt_q15.c
index 7166b57..9cd3d41 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_opt_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_opt_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_q15.c
index 535fbc7..f819a9e 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_q31.c b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_q31.c
index fe2e2bb..1e8be0f 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_q31.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_opt_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_opt_q15.c
index 21999d2..ea71064 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_opt_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_opt_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_opt_q7.c b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_opt_q7.c
index 811f386..0d4c1e5 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_opt_q7.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_opt_q7.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q15.c
index eb24641..9bc48b4 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q31.c b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q31.c
index cfb1ad0..1b5667a 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q31.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q7.c b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q7.c
index bcfc51e..38262a1 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q7.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q7.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q15.c
index e96c81e..e931105 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q31.c b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q31.c
index 88c6cc4..d3b13de 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q31.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q7.c b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q7.c
index 97d540a..58a6505 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q7.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q7.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_f32.c b/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_f32.c
index 4dd5bb9..839049b 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_f32.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_opt_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_opt_q15.c
index 13661cb..e0b9808 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_opt_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_opt_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_q15.c
index 6898618..4dfb393 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_q31.c b/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_q31.c
index a5840b7..84d7eee 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_q31.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_opt_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_opt_q15.c
index d46d9a0..a1f0222 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_opt_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_opt_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_opt_q7.c b/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_opt_q7.c
index 035bfba..c25d4da 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_opt_q7.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_opt_q7.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q15.c
index 0ec4ab7..63e9b87 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q31.c b/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q31.c
index 1c3e33b..9042551 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q31.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q7.c b/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q7.c
index 113fdbc..8d5420d 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q7.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q7.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_f32.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_f32.c
index 86c7875..94a714e 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_f32.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_fast_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_fast_q15.c
index 948b15c..cd65b57 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_fast_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_fast_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_fast_q31.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_fast_q31.c
index 2c3a28a..c4c25e2 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_fast_q31.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_fast_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_f32.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_f32.c
index 9382f09..904a4c6 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_f32.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_q15.c
index f583a03..e9c2a42 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_q31.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_q31.c
index 5ee69c6..28477a5 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_q31.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_q15.c
index c48a233..fe7cc46 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
@@ -534,9 +534,8 @@
 
   /* Points to the start of the state buffer */
   pStateCur = S->pState;
-
   i = (numTaps - 1U) >> 2U;
-
+ 
   /* copy data */
   while (i > 0U)
   {
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_q31.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_q31.c
index b88748e..692b88e 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_q31.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_f32.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_f32.c
index 4ce8dfa..3bc0ecb 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_f32.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_fast_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_fast_q15.c
index 5f8df95..ba46691 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_fast_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_fast_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_fast_q31.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_fast_q31.c
index 513cb728..0ba5de7 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_fast_q31.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_fast_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_f32.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_f32.c
index 2405c3f..bdde8e2 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_f32.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q15.c
index a5b2d06..ab14f7f 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q31.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q31.c
index 7d8376f..2a9600c 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q31.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q7.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q7.c
index f96d250..3ae5be2 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q7.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q7.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_f32.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_f32.c
index f8582ef..086b775 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_f32.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @defgroup FIR_Interpolate Finite Impulse Response (FIR) Interpolator
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_f32.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_f32.c
index 287d347..af06903 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_f32.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_q15.c
index 7f43bbf..46f667c 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_q31.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_q31.c
index 973e715..ca59485 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_q31.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_q15.c
index a889793..a58d5d8 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_q31.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_q31.c
index 826b156..56983fa 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_q31.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_f32.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_f32.c
index a3d95c1..ab2504c 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_f32.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_f32.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_f32.c
index 7929629..9251a15 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_f32.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_q15.c
index 5c80dff..0d328a4 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_q31.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_q31.c
index 476296d..812e50f 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_q31.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_q15.c
index 42e7c0d..5db4a77 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_q31.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_q31.c
index c8d28d7..4a2f68a 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_q31.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q15.c
index 6a184a6..42fa9f2 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q31.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q31.c
index e236877..5002325 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q31.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q7.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q7.c
index 219ea0f..378051f 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q7.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q7.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_f32.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_f32.c
index f44f037..418f488 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_f32.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_f32.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_f32.c
index 7745e71..4e51175 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_f32.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q15.c
index d07d611..666c1e4 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q31.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q31.c
index 7c32cea..b3dd9fa 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q31.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q7.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q7.c
index 98153f3..497e563 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q7.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q7.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q15.c
index 9cea93e..2921873 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q31.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q31.c
index 86d3e1d..29ba9bc 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q31.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q7.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q7.c
index 7a2b57f..f82356a 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q7.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q7.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_f32.c b/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_f32.c
index c48efe3..196fdfc 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_f32.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_f32.c b/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_f32.c
index bd9f933..4cc1a63 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_f32.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_q15.c
index 01abf48..b47e2d7 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_q31.c b/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_q31.c
index b472f6c..4d30522 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_q31.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_q15.c
index 9dbea81..44ed6a1 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_q31.c b/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_q31.c
index c4b9a76..b358694 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_q31.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_lms_f32.c b/CMSIS/DSP/Source/FilteringFunctions/arm_lms_f32.c
index 4a86359..5f9d4ca 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_lms_f32.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_lms_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_f32.c b/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_f32.c
index f418f46..d7c0d7c 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_f32.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @addtogroup LMS
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_q15.c
index fe0a5c5..33d0dcc 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_q31.c b/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_q31.c
index 3410b9f..0ce6803 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_q31.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_f32.c b/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_f32.c
index 693d45f..f813ad6 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_f32.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_f32.c b/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_f32.c
index 543dc72..6d85f15 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_f32.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_q15.c
index d581ac1..cde2caa 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 #include "arm_common_tables.h"
 
 /**
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_q31.c b/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_q31.c
index 30e78ec..286c82e 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_q31.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 #include "arm_common_tables.h"
 
 /**
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_q15.c
index c15ad5e..c27af7e 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_q31.c b/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_q31.c
index e26219e..4f6d269 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_q31.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_lms_q15.c b/CMSIS/DSP/Source/FilteringFunctions/arm_lms_q15.c
index 0fc9878..c964a80 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_lms_q15.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_lms_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_lms_q31.c b/CMSIS/DSP/Source/FilteringFunctions/arm_lms_q31.c
index b0c0e27..3e3d665 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_lms_q31.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_lms_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/filtering_functions.h"
 
 /**
   @ingroup groupFilters
diff --git a/CMSIS/DSP/Source/InterpolationFunctions/CMakeLists.txt b/CMSIS/DSP/Source/InterpolationFunctions/CMakeLists.txt
new file mode 100755
index 0000000..82fb034
--- /dev/null
+++ b/CMSIS/DSP/Source/InterpolationFunctions/CMakeLists.txt
@@ -0,0 +1,19 @@
+cmake_minimum_required (VERSION 3.14)
+
+project(CMSISDSPInterpolation)
+
+include(configLib)
+include(configDsp)
+
+file(GLOB SRC "./*_*.c")
+
+add_library(CMSISDSPInterpolation STATIC ${SRC})
+
+configLib(CMSISDSPInterpolation ${ROOT})
+configDsp(CMSISDSPInterpolation ${ROOT})
+
+### Includes
+target_include_directories(CMSISDSPInterpolation PUBLIC "${DSP}/Include")
+
+
+
diff --git a/CMSIS/DSP/Source/InterpolationFunctions/InterpolationFunctions.c b/CMSIS/DSP/Source/InterpolationFunctions/InterpolationFunctions.c
new file mode 100755
index 0000000..8462395
--- /dev/null
+++ b/CMSIS/DSP/Source/InterpolationFunctions/InterpolationFunctions.c
@@ -0,0 +1,41 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        InterpolationFunctions.c
+ * Description:  Combination of all interpolation function source files.
+ *
+ * $Date:        22. July 2020
+ * $Revision:    V1.0.0
+ *
+ * Target Processor: Cortex-M cores
+ * -------------------------------------------------------------------- */
+/*
+ * Copyright (C) 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.
+ */
+
+#include "arm_bilinear_interp_f32.c"
+#include "arm_bilinear_interp_q15.c"
+#include "arm_bilinear_interp_q31.c"
+#include "arm_bilinear_interp_q7.c"
+#include "arm_linear_interp_f32.c"
+#include "arm_linear_interp_q15.c"
+#include "arm_linear_interp_q31.c"
+#include "arm_linear_interp_q7.c"
+#include "arm_spline_interp_f32.c"
+#include "arm_spline_interp_init_f32.c"
+
+
+
diff --git a/CMSIS/DSP/Source/InterpolationFunctions/arm_bilinear_interp_f32.c b/CMSIS/DSP/Source/InterpolationFunctions/arm_bilinear_interp_f32.c
new file mode 100755
index 0000000..c20b6d8
--- /dev/null
+++ b/CMSIS/DSP/Source/InterpolationFunctions/arm_bilinear_interp_f32.c
@@ -0,0 +1,161 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_bilinear_interp_f32.c
+ * Description:  Floating-point bilinear interpolation
+ *
+ * $Date:        22 July 2020
+ * $Revision:    V1.9.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.
+ */
+
+#include "dsp/interpolation_functions.h"
+
+/**
+  @ingroup groupInterpolation
+ */
+
+/**
+   * @defgroup BilinearInterpolate Bilinear Interpolation
+   *
+   * Bilinear interpolation is an extension of linear interpolation applied to a two dimensional grid.
+   * The underlying function <code>f(x, y)</code> is sampled on a regular grid and the interpolation process
+   * determines values between the grid points.
+   * Bilinear interpolation is equivalent to two step linear interpolation, first in the x-dimension and then in the y-dimension.
+   * Bilinear interpolation is often used in image processing to rescale images.
+   * The CMSIS DSP library provides bilinear interpolation functions for Q7, Q15, Q31, and floating-point data types.
+   *
+   * <b>Algorithm</b>
+   * \par
+   * The instance structure used by the bilinear interpolation functions describes a two dimensional data table.
+   * For floating-point, the instance structure is defined as:
+   * <pre>
+   *   typedef struct
+   *   {
+   *     uint16_t numRows;
+   *     uint16_t numCols;
+   *     float32_t *pData;
+   * } arm_bilinear_interp_instance_f32;
+   * </pre>
+   *
+   * \par
+   * where <code>numRows</code> specifies the number of rows in the table;
+   * <code>numCols</code> specifies the number of columns in the table;
+   * and <code>pData</code> points to an array of size <code>numRows*numCols</code> values.
+   * The data table <code>pTable</code> is organized in row order and the supplied data values fall on integer indexes.
+   * That is, table element (x,y) is located at <code>pTable[x + y*numCols]</code> where x and y are integers.
+   *
+   * \par
+   * Let <code>(x, y)</code> specify the desired interpolation point.  Then define:
+   * <pre>
+   *     XF = floor(x)
+   *     YF = floor(y)
+   * </pre>
+   * \par
+   * The interpolated output point is computed as:
+   * <pre>
+   *  f(x, y) = f(XF, YF) * (1-(x-XF)) * (1-(y-YF))
+   *           + f(XF+1, YF) * (x-XF)*(1-(y-YF))
+   *           + f(XF, YF+1) * (1-(x-XF))*(y-YF)
+   *           + f(XF+1, YF+1) * (x-XF)*(y-YF)
+   * </pre>
+   * Note that the coordinates (x, y) contain integer and fractional components.
+   * The integer components specify which portion of the table to use while the
+   * fractional components control the interpolation processor.
+   *
+   * \par
+   * if (x,y) are outside of the table boundary, Bilinear interpolation returns zero output.
+   */
+
+
+  /**
+   * @addtogroup BilinearInterpolate
+   * @{
+   */
+
+
+  /**
+  * @brief  Floating-point bilinear interpolation.
+  * @param[in,out] S  points to an instance of the interpolation structure.
+  * @param[in]     X  interpolation coordinate.
+  * @param[in]     Y  interpolation coordinate.
+  * @return out interpolated value.
+  */
+  float32_t arm_bilinear_interp_f32(
+  const arm_bilinear_interp_instance_f32 * S,
+  float32_t X,
+  float32_t Y)
+  {
+    float32_t out;
+    float32_t f00, f01, f10, f11;
+    float32_t *pData = S->pData;
+    int32_t xIndex, yIndex, index;
+    float32_t xdiff, ydiff;
+    float32_t b1, b2, b3, b4;
+
+    xIndex = (int32_t) X;
+    yIndex = (int32_t) Y;
+
+    /* Care taken for table outside boundary */
+    /* Returns zero output when values are outside table boundary */
+    if (xIndex < 0 || xIndex > (S->numCols - 2) || yIndex < 0 || yIndex > (S->numRows - 2))
+    {
+      return (0);
+    }
+
+    /* Calculation of index for two nearest points in X-direction */
+    index = (xIndex ) + (yIndex ) * S->numCols;
+
+
+    /* Read two nearest points in X-direction */
+    f00 = pData[index];
+    f01 = pData[index + 1];
+
+    /* Calculation of index for two nearest points in Y-direction */
+    index = (xIndex ) + (yIndex+1) * S->numCols;
+
+
+    /* Read two nearest points in Y-direction */
+    f10 = pData[index];
+    f11 = pData[index + 1];
+
+    /* Calculation of intermediate values */
+    b1 = f00;
+    b2 = f01 - f00;
+    b3 = f10 - f00;
+    b4 = f00 - f01 - f10 + f11;
+
+    /* Calculation of fractional part in X */
+    xdiff = X - xIndex;
+
+    /* Calculation of fractional part in Y */
+    ydiff = Y - yIndex;
+
+    /* Calculation of bi-linear interpolated output */
+    out = b1 + b2 * xdiff + b3 * ydiff + b4 * xdiff * ydiff;
+
+    /* return to application */
+    return (out);
+  }
+
+  /**
+   * @} end of BilinearInterpolate group
+   */
+
diff --git a/CMSIS/DSP/Source/InterpolationFunctions/arm_bilinear_interp_q15.c b/CMSIS/DSP/Source/InterpolationFunctions/arm_bilinear_interp_q15.c
new file mode 100755
index 0000000..4bc6b2e
--- /dev/null
+++ b/CMSIS/DSP/Source/InterpolationFunctions/arm_bilinear_interp_q15.c
@@ -0,0 +1,121 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_linear_interp_q15.c
+ * Description:  Q15 linear interpolation
+ *
+ * $Date:        22 July 2020
+ * $Revision:    V1.9.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.
+ */
+
+#include "dsp/interpolation_functions.h"
+
+/**
+  @ingroup groupInterpolation
+ */
+
+/**
+   * @addtogroup BilinearInterpolate
+   * @{
+   */
+
+  /**
+  * @brief  Q15 bilinear interpolation.
+  * @param[in,out] S  points to an instance of the interpolation structure.
+  * @param[in]     X  interpolation coordinate in 12.20 format.
+  * @param[in]     Y  interpolation coordinate in 12.20 format.
+  * @return out interpolated value.
+  */
+  q15_t arm_bilinear_interp_q15(
+  arm_bilinear_interp_instance_q15 * S,
+  q31_t X,
+  q31_t Y)
+  {
+    q63_t acc = 0;                               /* output */
+    q31_t out;                                   /* Temporary output */
+    q15_t x1, x2, y1, y2;                        /* Nearest output values */
+    q31_t xfract, yfract;                        /* X, Y fractional parts */
+    int32_t rI, cI;                              /* Row and column indices */
+    q15_t *pYData = S->pData;                    /* pointer to output table values */
+    uint32_t nCols = S->numCols;                 /* num of rows */
+
+    /* Input is in 12.20 format */
+    /* 12 bits for the table index */
+    /* Index value calculation */
+    rI = ((X & (q31_t)0xFFF00000) >> 20);
+
+    /* Input is in 12.20 format */
+    /* 12 bits for the table index */
+    /* Index value calculation */
+    cI = ((Y & (q31_t)0xFFF00000) >> 20);
+
+    /* Care taken for table outside boundary */
+    /* Returns zero output when values are outside table boundary */
+    if (rI < 0 || rI > (S->numCols - 2) || cI < 0 || cI > (S->numRows - 2))
+    {
+      return (0);
+    }
+
+    /* 20 bits for the fractional part */
+    /* xfract should be in 12.20 format */
+    xfract = (X & 0x000FFFFF);
+
+    /* Read two nearest output values from the index */
+    x1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI)    ];
+    x2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) + 1];
+
+    /* 20 bits for the fractional part */
+    /* yfract should be in 12.20 format */
+    yfract = (Y & 0x000FFFFF);
+
+    /* Read two nearest output values from the index */
+    y1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1)    ];
+    y2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) + 1];
+
+    /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 13.51 format */
+
+    /* x1 is in 1.15(q15), xfract in 12.20 format and out is in 13.35 format */
+    /* convert 13.35 to 13.31 by right shifting  and out is in 1.31 */
+    out = (q31_t) (((q63_t) x1 * (0x0FFFFF - xfract)) >> 4U);
+    acc = ((q63_t) out * (0x0FFFFF - yfract));
+
+    /* x2 * (xfract) * (1-yfract)  in 1.51 and adding to acc */
+    out = (q31_t) (((q63_t) x2 * (0x0FFFFF - yfract)) >> 4U);
+    acc += ((q63_t) out * (xfract));
+
+    /* y1 * (1 - xfract) * (yfract)  in 1.51 and adding to acc */
+    out = (q31_t) (((q63_t) y1 * (0x0FFFFF - xfract)) >> 4U);
+    acc += ((q63_t) out * (yfract));
+
+    /* y2 * (xfract) * (yfract)  in 1.51 and adding to acc */
+    out = (q31_t) (((q63_t) y2 * (xfract)) >> 4U);
+    acc += ((q63_t) out * (yfract));
+
+    /* acc is in 13.51 format and down shift acc by 36 times */
+    /* Convert out to 1.15 format */
+    return ((q15_t)(acc >> 36));
+  }
+
+
+  /**
+   * @} end of BilinearInterpolate group
+   */
+
diff --git a/CMSIS/DSP/Source/InterpolationFunctions/arm_bilinear_interp_q31.c b/CMSIS/DSP/Source/InterpolationFunctions/arm_bilinear_interp_q31.c
new file mode 100755
index 0000000..232708c
--- /dev/null
+++ b/CMSIS/DSP/Source/InterpolationFunctions/arm_bilinear_interp_q31.c
@@ -0,0 +1,119 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_linear_interp_q31.c
+ * Description:  Q31 linear interpolation
+ *
+ * $Date:        22 July 2020
+ * $Revision:    V1.9.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.
+ */
+
+#include "dsp/interpolation_functions.h"
+
+/**
+  @ingroup groupInterpolation
+ */
+
+
+/**
+   * @addtogroup BilinearInterpolate
+   * @{
+   */
+
+ /**
+  * @brief  Q31 bilinear interpolation.
+  * @param[in,out] S  points to an instance of the interpolation structure.
+  * @param[in]     X  interpolation coordinate in 12.20 format.
+  * @param[in]     Y  interpolation coordinate in 12.20 format.
+  * @return out interpolated value.
+  */
+  q31_t arm_bilinear_interp_q31(
+  arm_bilinear_interp_instance_q31 * S,
+  q31_t X,
+  q31_t Y)
+  {
+    q31_t out;                                   /* Temporary output */
+    q31_t acc = 0;                               /* output */
+    q31_t xfract, yfract;                        /* X, Y fractional parts */
+    q31_t x1, x2, y1, y2;                        /* Nearest output values */
+    int32_t rI, cI;                              /* Row and column indices */
+    q31_t *pYData = S->pData;                    /* pointer to output table values */
+    uint32_t nCols = S->numCols;                 /* num of rows */
+
+    /* Input is in 12.20 format */
+    /* 12 bits for the table index */
+    /* Index value calculation */
+    rI = ((X & (q31_t)0xFFF00000) >> 20);
+
+    /* Input is in 12.20 format */
+    /* 12 bits for the table index */
+    /* Index value calculation */
+    cI = ((Y & (q31_t)0xFFF00000) >> 20);
+
+    /* Care taken for table outside boundary */
+    /* Returns zero output when values are outside table boundary */
+    if (rI < 0 || rI > (S->numCols - 2) || cI < 0 || cI > (S->numRows - 2))
+    {
+      return (0);
+    }
+
+    /* 20 bits for the fractional part */
+    /* shift left xfract by 11 to keep 1.31 format */
+    xfract = (X & 0x000FFFFF) << 11U;
+
+    /* Read two nearest output values from the index */
+    x1 = pYData[(rI) + (int32_t)nCols * (cI)    ];
+    x2 = pYData[(rI) + (int32_t)nCols * (cI) + 1];
+
+    /* 20 bits for the fractional part */
+    /* shift left yfract by 11 to keep 1.31 format */
+    yfract = (Y & 0x000FFFFF) << 11U;
+
+    /* Read two nearest output values from the index */
+    y1 = pYData[(rI) + (int32_t)nCols * (cI + 1)    ];
+    y2 = pYData[(rI) + (int32_t)nCols * (cI + 1) + 1];
+
+    /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 3.29(q29) format */
+    out = ((q31_t) (((q63_t) x1  * (0x7FFFFFFF - xfract)) >> 32));
+    acc = ((q31_t) (((q63_t) out * (0x7FFFFFFF - yfract)) >> 32));
+
+    /* x2 * (xfract) * (1-yfract)  in 3.29(q29) and adding to acc */
+    out = ((q31_t) ((q63_t) x2 * (0x7FFFFFFF - yfract) >> 32));
+    acc += ((q31_t) ((q63_t) out * (xfract) >> 32));
+
+    /* y1 * (1 - xfract) * (yfract)  in 3.29(q29) and adding to acc */
+    out = ((q31_t) ((q63_t) y1 * (0x7FFFFFFF - xfract) >> 32));
+    acc += ((q31_t) ((q63_t) out * (yfract) >> 32));
+
+    /* y2 * (xfract) * (yfract)  in 3.29(q29) and adding to acc */
+    out = ((q31_t) ((q63_t) y2 * (xfract) >> 32));
+    acc += ((q31_t) ((q63_t) out * (yfract) >> 32));
+
+    /* Convert acc to 1.31(q31) format */
+    return ((q31_t)(acc << 2));
+  }
+
+
+
+  /**
+   * @} end of BilinearInterpolate group
+   */
+
diff --git a/CMSIS/DSP/Source/InterpolationFunctions/arm_bilinear_interp_q7.c b/CMSIS/DSP/Source/InterpolationFunctions/arm_bilinear_interp_q7.c
new file mode 100755
index 0000000..6c5b00a
--- /dev/null
+++ b/CMSIS/DSP/Source/InterpolationFunctions/arm_bilinear_interp_q7.c
@@ -0,0 +1,117 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_linear_interp_q7.c
+ * Description:  Q7 linear interpolation
+ *
+ * $Date:        22 July 2020
+ * $Revision:    V1.9.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.
+ */
+
+#include "dsp/interpolation_functions.h"
+
+/**
+  @ingroup groupInterpolation
+ */
+
+
+/**
+   * @addtogroup BilinearInterpolate
+   * @{
+   */
+
+/**
+  * @brief  Q7 bilinear interpolation.
+  * @param[in,out] S  points to an instance of the interpolation structure.
+  * @param[in]     X  interpolation coordinate in 12.20 format.
+  * @param[in]     Y  interpolation coordinate in 12.20 format.
+  * @return out interpolated value.
+  */
+  q7_t arm_bilinear_interp_q7(
+  arm_bilinear_interp_instance_q7 * S,
+  q31_t X,
+  q31_t Y)
+  {
+    q63_t acc = 0;                               /* output */
+    q31_t out;                                   /* Temporary output */
+    q31_t xfract, yfract;                        /* X, Y fractional parts */
+    q7_t x1, x2, y1, y2;                         /* Nearest output values */
+    int32_t rI, cI;                              /* Row and column indices */
+    q7_t *pYData = S->pData;                     /* pointer to output table values */
+    uint32_t nCols = S->numCols;                 /* num of rows */
+
+    /* Input is in 12.20 format */
+    /* 12 bits for the table index */
+    /* Index value calculation */
+    rI = ((X & (q31_t)0xFFF00000) >> 20);
+
+    /* Input is in 12.20 format */
+    /* 12 bits for the table index */
+    /* Index value calculation */
+    cI = ((Y & (q31_t)0xFFF00000) >> 20);
+
+    /* Care taken for table outside boundary */
+    /* Returns zero output when values are outside table boundary */
+    if (rI < 0 || rI > (S->numCols - 2) || cI < 0 || cI > (S->numRows - 2))
+    {
+      return (0);
+    }
+
+    /* 20 bits for the fractional part */
+    /* xfract should be in 12.20 format */
+    xfract = (X & (q31_t)0x000FFFFF);
+
+    /* Read two nearest output values from the index */
+    x1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI)    ];
+    x2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) + 1];
+
+    /* 20 bits for the fractional part */
+    /* yfract should be in 12.20 format */
+    yfract = (Y & (q31_t)0x000FFFFF);
+
+    /* Read two nearest output values from the index */
+    y1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1)    ];
+    y2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) + 1];
+
+    /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 16.47 format */
+    out = ((x1 * (0xFFFFF - xfract)));
+    acc = (((q63_t) out * (0xFFFFF - yfract)));
+
+    /* x2 * (xfract) * (1-yfract)  in 2.22 and adding to acc */
+    out = ((x2 * (0xFFFFF - yfract)));
+    acc += (((q63_t) out * (xfract)));
+
+    /* y1 * (1 - xfract) * (yfract)  in 2.22 and adding to acc */
+    out = ((y1 * (0xFFFFF - xfract)));
+    acc += (((q63_t) out * (yfract)));
+
+    /* y2 * (xfract) * (yfract)  in 2.22 and adding to acc */
+    out = ((y2 * (yfract)));
+    acc += (((q63_t) out * (xfract)));
+
+    /* acc in 16.47 format and down shift by 40 to convert to 1.7 format */
+    return ((q7_t)(acc >> 40));
+  }
+
+  /**
+   * @} end of BilinearInterpolate group
+   */
+
diff --git a/CMSIS/DSP/Source/InterpolationFunctions/arm_linear_interp_f32.c b/CMSIS/DSP/Source/InterpolationFunctions/arm_linear_interp_f32.c
new file mode 100755
index 0000000..513cb72d
--- /dev/null
+++ b/CMSIS/DSP/Source/InterpolationFunctions/arm_linear_interp_f32.c
@@ -0,0 +1,125 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_linear_interp_f32.c
+ * Description:  Floating-point linear interpolation
+ *
+ * $Date:        22 July 2020
+ * $Revision:    V1.9.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.
+ */
+
+#include "dsp/interpolation_functions.h"
+
+/**
+  @ingroup groupInterpolation
+ */
+
+/**
+   * @defgroup LinearInterpolate Linear Interpolation
+   *
+   * Linear interpolation is a method of curve fitting using linear polynomials.
+   * Linear interpolation works by effectively drawing a straight line between two neighboring samples and returning the appropriate point along that line
+   *
+   * \par
+   * \image html LinearInterp.gif "Linear interpolation"
+   *
+   * \par
+   * A  Linear Interpolate function calculates an output value(y), for the input(x)
+   * using linear interpolation of the input values x0, x1( nearest input values) and the output values y0 and y1(nearest output values)
+   *
+   * \par Algorithm:
+   * <pre>
+   *       y = y0 + (x - x0) * ((y1 - y0)/(x1-x0))
+   *       where x0, x1 are nearest values of input x
+   *             y0, y1 are nearest values to output y
+   * </pre>
+   *
+   * \par
+   * This set of functions implements Linear interpolation process
+   * for Q7, Q15, Q31, and floating-point data types.  The functions operate on a single
+   * sample of data and each call to the function returns a single processed value.
+   * <code>S</code> points to an instance of the Linear Interpolate function data structure.
+   * <code>x</code> is the input sample value. The functions returns the output value.
+   *
+   * \par
+   * if x is outside of the table boundary, Linear interpolation returns first value of the table
+   * if x is below input range and returns last value of table if x is above range.
+   */
+
+/**
+   * @addtogroup LinearInterpolate
+   * @{
+   */
+
+  /**
+   * @brief  Process function for the floating-point Linear Interpolation Function.
+   * @param[in,out] S  is an instance of the floating-point Linear Interpolation structure
+   * @param[in]     x  input sample to process
+   * @return y processed output sample.
+   *
+   */
+  float32_t arm_linear_interp_f32(
+  arm_linear_interp_instance_f32 * S,
+  float32_t x)
+  {
+    float32_t y;
+    float32_t x0, x1;                            /* Nearest input values */
+    float32_t y0, y1;                            /* Nearest output values */
+    float32_t xSpacing = S->xSpacing;            /* spacing between input values */
+    int32_t i;                                   /* Index variable */
+    float32_t *pYData = S->pYData;               /* pointer to output table */
+
+    /* Calculation of index */
+    i = (int32_t) ((x - S->x1) / xSpacing);
+
+    if (i < 0)
+    {
+      /* Iniatilize output for below specified range as least output value of table */
+      y = pYData[0];
+    }
+    else if ((uint32_t)i >= (S->nValues - 1))
+    {
+      /* Iniatilize output for above specified range as last output value of table */
+      y = pYData[S->nValues - 1];
+    }
+    else
+    {
+      /* Calculation of nearest input values */
+      x0 = S->x1 +  i      * xSpacing;
+      x1 = S->x1 + (i + 1) * xSpacing;
+
+      /* Read of nearest output values */
+      y0 = pYData[i];
+      y1 = pYData[i + 1];
+
+      /* Calculation of output */
+      y = y0 + (x - x0) * ((y1 - y0) / (x1 - x0));
+
+    }
+
+    /* returns output value */
+    return (y);
+  }
+
+  /**
+   * @} end of LinearInterpolate group
+   */
+
diff --git a/CMSIS/DSP/Source/InterpolationFunctions/arm_linear_interp_q15.c b/CMSIS/DSP/Source/InterpolationFunctions/arm_linear_interp_q15.c
new file mode 100755
index 0000000..1e14d24
--- /dev/null
+++ b/CMSIS/DSP/Source/InterpolationFunctions/arm_linear_interp_q15.c
@@ -0,0 +1,101 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_linear_interp_q15.c
+ * Description:  Q15 linear interpolation
+ *
+ * $Date:        22 July 2020
+ * $Revision:    V1.9.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.
+ */
+
+#include "dsp/interpolation_functions.h"
+
+/**
+  @ingroup groupInterpolation
+ */
+
+/**
+   * @addtogroup LinearInterpolate
+   * @{
+   */
+
+  /**
+   *
+   * @brief  Process function for the Q15 Linear Interpolation Function.
+   * @param[in] pYData   pointer to Q15 Linear Interpolation table
+   * @param[in] x        input sample to process
+   * @param[in] nValues  number of table values
+   * @return y processed output sample.
+   *
+   * \par
+   * Input sample <code>x</code> is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part.
+   * This function can support maximum of table size 2^12.
+   *
+   */
+  q15_t arm_linear_interp_q15(
+  q15_t * pYData,
+  q31_t x,
+  uint32_t nValues)
+  {
+    q63_t y;                                     /* output */
+    q15_t y0, y1;                                /* Nearest output values */
+    q31_t fract;                                 /* fractional part */
+    int32_t index;                               /* Index to read nearest output values */
+
+    /* Input is in 12.20 format */
+    /* 12 bits for the table index */
+    /* Index value calculation */
+    index = ((x & (int32_t)0xFFF00000) >> 20);
+
+    if (index >= (int32_t)(nValues - 1))
+    {
+      return (pYData[nValues - 1]);
+    }
+    else if (index < 0)
+    {
+      return (pYData[0]);
+    }
+    else
+    {
+      /* 20 bits for the fractional part */
+      /* fract is in 12.20 format */
+      fract = (x & 0x000FFFFF);
+
+      /* Read two nearest output values from the index */
+      y0 = pYData[index];
+      y1 = pYData[index + 1];
+
+      /* Calculation of y0 * (1-fract) and y is in 13.35 format */
+      y = ((q63_t) y0 * (0xFFFFF - fract));
+
+      /* Calculation of (y0 * (1-fract) + y1 * fract) and y is in 13.35 format */
+      y += ((q63_t) y1 * (fract));
+
+      /* convert y to 1.15 format */
+      return (q15_t) (y >> 20);
+    }
+  }
+
+
+  /**
+   * @} end of LinearInterpolate group
+   */
+
diff --git a/CMSIS/DSP/Source/InterpolationFunctions/arm_linear_interp_q31.c b/CMSIS/DSP/Source/InterpolationFunctions/arm_linear_interp_q31.c
new file mode 100755
index 0000000..e6ac3d5
--- /dev/null
+++ b/CMSIS/DSP/Source/InterpolationFunctions/arm_linear_interp_q31.c
@@ -0,0 +1,103 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_linear_interp_q31.c
+ * Description:  Q31 linear interpolation
+ *
+ * $Date:        22 July 2020
+ * $Revision:    V1.9.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.
+ */
+
+#include "dsp/interpolation_functions.h"
+
+/**
+  @ingroup groupInterpolation
+ */
+
+
+/**
+   * @addtogroup LinearInterpolate
+   * @{
+   */
+
+  /**
+   *
+   * @brief  Process function for the Q31 Linear Interpolation Function.
+   * @param[in] pYData   pointer to Q31 Linear Interpolation table
+   * @param[in] x        input sample to process
+   * @param[in] nValues  number of table values
+   * @return y processed output sample.
+   *
+   * \par
+   * Input sample <code>x</code> is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part.
+   * This function can support maximum of table size 2^12.
+   *
+   */
+  q31_t arm_linear_interp_q31(
+  q31_t * pYData,
+  q31_t x,
+  uint32_t nValues)
+  {
+    q31_t y;                                     /* output */
+    q31_t y0, y1;                                /* Nearest output values */
+    q31_t fract;                                 /* fractional part */
+    int32_t index;                               /* Index to read nearest output values */
+
+    /* Input is in 12.20 format */
+    /* 12 bits for the table index */
+    /* Index value calculation */
+    index = ((x & (q31_t)0xFFF00000) >> 20);
+
+    if (index >= (int32_t)(nValues - 1))
+    {
+      return (pYData[nValues - 1]);
+    }
+    else if (index < 0)
+    {
+      return (pYData[0]);
+    }
+    else
+    {
+      /* 20 bits for the fractional part */
+      /* shift left by 11 to keep fract in 1.31 format */
+      fract = (x & 0x000FFFFF) << 11;
+
+      /* Read two nearest output values from the index in 1.31(q31) format */
+      y0 = pYData[index];
+      y1 = pYData[index + 1];
+
+      /* Calculation of y0 * (1-fract) and y is in 2.30 format */
+      y = ((q31_t) ((q63_t) y0 * (0x7FFFFFFF - fract) >> 32));
+
+      /* Calculation of y0 * (1-fract) + y1 *fract and y is in 2.30 format */
+      y += ((q31_t) (((q63_t) y1 * fract) >> 32));
+
+      /* Convert y to 1.31 format */
+      return (y << 1U);
+    }
+  }
+
+
+
+  /**
+   * @} end of LinearInterpolate group
+   */
+
diff --git a/CMSIS/DSP/Source/InterpolationFunctions/arm_linear_interp_q7.c b/CMSIS/DSP/Source/InterpolationFunctions/arm_linear_interp_q7.c
new file mode 100755
index 0000000..393d7fd
--- /dev/null
+++ b/CMSIS/DSP/Source/InterpolationFunctions/arm_linear_interp_q7.c
@@ -0,0 +1,99 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_linear_interp_q7.c
+ * Description:  Q7 linear interpolation
+ *
+ * $Date:        22 July 2020
+ * $Revision:    V1.9.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.
+ */
+
+#include "dsp/interpolation_functions.h"
+
+/**
+  @ingroup groupInterpolation
+ */
+
+
+/**
+   * @addtogroup LinearInterpolate
+   * @{
+   */
+
+  /**
+   *
+   * @brief  Process function for the Q7 Linear Interpolation Function.
+   * @param[in] pYData   pointer to Q7 Linear Interpolation table
+   * @param[in] x        input sample to process
+   * @param[in] nValues  number of table values
+   * @return y processed output sample.
+   *
+   * \par
+   * Input sample <code>x</code> is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part.
+   * This function can support maximum of table size 2^12.
+   */
+  q7_t arm_linear_interp_q7(
+  q7_t * pYData,
+  q31_t x,
+  uint32_t nValues)
+  {
+    q31_t y;                                     /* output */
+    q7_t y0, y1;                                 /* Nearest output values */
+    q31_t fract;                                 /* fractional part */
+    uint32_t index;                              /* Index to read nearest output values */
+
+    /* Input is in 12.20 format */
+    /* 12 bits for the table index */
+    /* Index value calculation */
+    if (x < 0)
+    {
+      return (pYData[0]);
+    }
+    index = (x >> 20) & 0xfff;
+
+    if (index >= (nValues - 1))
+    {
+      return (pYData[nValues - 1]);
+    }
+    else
+    {
+      /* 20 bits for the fractional part */
+      /* fract is in 12.20 format */
+      fract = (x & 0x000FFFFF);
+
+      /* Read two nearest output values from the index and are in 1.7(q7) format */
+      y0 = pYData[index];
+      y1 = pYData[index + 1];
+
+      /* Calculation of y0 * (1-fract ) and y is in 13.27(q27) format */
+      y = ((y0 * (0xFFFFF - fract)));
+
+      /* Calculation of y1 * fract + y0 * (1-fract) and y is in 13.27(q27) format */
+      y += (y1 * fract);
+
+      /* convert y to 1.7(q7) format */
+      return (q7_t) (y >> 20);
+     }
+  }
+  /**
+   * @} end of LinearInterpolate group
+   */
+
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_spline_interp_f32.c b/CMSIS/DSP/Source/InterpolationFunctions/arm_spline_interp_f32.c
similarity index 98%
rename from CMSIS/DSP/Source/SupportFunctions/arm_spline_interp_f32.c
rename to CMSIS/DSP/Source/InterpolationFunctions/arm_spline_interp_f32.c
index 0f829e8..e4283c4 100644
--- a/CMSIS/DSP/Source/SupportFunctions/arm_spline_interp_f32.c
+++ b/CMSIS/DSP/Source/InterpolationFunctions/arm_spline_interp_f32.c
@@ -26,10 +26,10 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/interpolation_functions.h"
 
 /**
-  @ingroup groupSupport
+  @ingroup groupInterpolation
  */
 
 /**
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_spline_interp_init_f32.c b/CMSIS/DSP/Source/InterpolationFunctions/arm_spline_interp_init_f32.c
similarity index 99%
rename from CMSIS/DSP/Source/SupportFunctions/arm_spline_interp_init_f32.c
rename to CMSIS/DSP/Source/InterpolationFunctions/arm_spline_interp_init_f32.c
index 492bb20..d396d08 100644
--- a/CMSIS/DSP/Source/SupportFunctions/arm_spline_interp_init_f32.c
+++ b/CMSIS/DSP/Source/InterpolationFunctions/arm_spline_interp_init_f32.c
@@ -29,7 +29,7 @@
 #include "arm_math.h"
 
 /**
-  @ingroup groupSupport
+  @ingroup groupInterpolation
  */
 
 /**
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_f32.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_f32.c
index 008f299..a534523 100644
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_f32.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
   @ingroup groupMatrix
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_q15.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_q15.c
index 7aab4b3..66fe3c8 100644
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_q15.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
   @ingroup groupMatrix
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_q31.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_q31.c
index 1ff3703..60724da 100644
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_q31.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
   @ingroup groupMatrix
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_f32.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_f32.c
index 1b79eab..f430030 100644
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_f32.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
   @ingroup groupMatrix
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_q15.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_q15.c
index 827151e..3e10ec7 100644
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_q15.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
   @ingroup groupMatrix
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_q31.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_q31.c
index 510ea9f..ad07c73 100644
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_q31.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
   @ingroup groupMatrix
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_trans_f32.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_trans_f32.c
index a81b02f..d11d101 100755
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_trans_f32.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_trans_f32.c
@@ -26,23 +26,23 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
   @ingroup groupMatrix
  */
 
 /**
-  @defgroup MatrixTrans Matrix Transpose
+  @defgroup MatrixComplexTrans Complex Matrix Transpose
 
-  Tranposes a matrix.
+  Tranposes a complex matrix.
 
   Transposing an <code>M x N</code> matrix flips it around the center diagonal and results in an <code>N x M</code> matrix.
   \image html MatrixTranspose.gif "Transpose of a 3 x 3 matrix"
  */
 
 /**
-  @addtogroup MatrixTrans
+  @addtogroup MatrixComplexTrans
   @{
  */
 
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_trans_q15.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_trans_q15.c
index 8085e7d..00058b7 100755
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_trans_q15.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_trans_q15.c
@@ -26,23 +26,14 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
   @ingroup groupMatrix
  */
 
 /**
-  @defgroup MatrixTrans Matrix Transpose
-
-  Tranposes a matrix.
-
-  Transposing an <code>M x N</code> matrix flips it around the center diagonal and results in an <code>N x M</code> matrix.
-  \image html MatrixTranspose.gif "Transpose of a 3 x 3 matrix"
- */
-
-/**
-  @addtogroup MatrixTrans
+  @addtogroup MatrixComplexTrans
   @{
  */
 
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_trans_q31.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_trans_q31.c
index 2cbf5eb..63422c5 100755
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_trans_q31.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_trans_q31.c
@@ -26,23 +26,16 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
   @ingroup groupMatrix
  */
 
-/**
-  @defgroup MatrixTrans Matrix Transpose
 
-  Tranposes a matrix.
-
-  Transposing an <code>M x N</code> matrix flips it around the center diagonal and results in an <code>N x M</code> matrix.
-  \image html MatrixTranspose.gif "Transpose of a 3 x 3 matrix"
- */
 
 /**
-  @addtogroup MatrixTrans
+  @addtogroup MatrixComplexTrans
   @{
  */
 
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_f32.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_f32.c
index ce02a25..21c0c2f 100644
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_f32.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
   @ingroup groupMatrix
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_q15.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_q15.c
index 0275503..c334ae0 100644
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_q15.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
   @ingroup groupMatrix
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_q31.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_q31.c
index d5c5722..4e6e0f8 100644
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_q31.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
   @ingroup groupMatrix
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_inverse_f32.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_inverse_f32.c
index ac51945..c9f812d 100644
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_inverse_f32.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_inverse_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
   @ingroup groupMatrix
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_inverse_f64.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_inverse_f64.c
index b9b9309..d1bf6f9 100644
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_inverse_f64.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_inverse_f64.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
   @ingroup groupMatrix
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_f32.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_f32.c
index 90b8e95..d04651e 100644
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_f32.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
  * @ingroup groupMatrix
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_fast_q15.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_fast_q15.c
index 670ace1..1398f9a 100644
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_fast_q15.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_fast_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
   @ingroup groupMatrix
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_fast_q31.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_fast_q31.c
index 011959a..04b23fa 100644
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_fast_q31.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_fast_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
   @ingroup groupMatrix
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_q15.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_q15.c
index 0b531f2..c592be0 100644
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_q15.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
   @ingroup groupMatrix
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_q31.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_q31.c
index 8f2e7d0..5d85ca6 100644
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_q31.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
   @ingroup groupMatrix
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_q7.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_q7.c
index af9beff..ade638f 100755
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_q7.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_q7.c
@@ -25,7 +25,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
   @ingroup groupMatrix
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_f32.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_f32.c
index 518d3db..838fe37 100644
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_f32.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
   @ingroup groupMatrix
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_q15.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_q15.c
index b413f8a..0303cb9 100644
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_q15.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
   @ingroup groupMatrix
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_q31.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_q31.c
index 0a52bfc..c7710f5 100644
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_q31.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
   @ingroup groupMatrix
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_f32.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_f32.c
index d76537b..d34c2fb 100644
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_f32.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
   @ingroup groupMatrix
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_q15.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_q15.c
index b0c7bf3..5740919 100644
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_q15.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
   @ingroup groupMatrix
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_q31.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_q31.c
index 5356ce7..510d486 100644
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_q31.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
   @ingroup groupMatrix
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_f32.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_f32.c
index 44047b9..bfb4b69 100644
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_f32.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
   @ingroup groupMatrix
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_q15.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_q15.c
index 325511f..d377eab 100644
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_q15.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
   @ingroup groupMatrix
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_q31.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_q31.c
index 9d92abd..edb8cc4 100644
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_q31.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
   @ingroup groupMatrix
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_q7.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_q7.c
index 3f77433..4918c2c 100755
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_q7.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_q7.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
   @ingroup groupMatrix
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_vec_mult_f32.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_vec_mult_f32.c
index d0c4cfd..d83d827 100755
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_vec_mult_f32.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_vec_mult_f32.c
@@ -25,16 +25,21 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
  * @ingroup groupMatrix
  */
 
-
+/**
+ * @defgroup MatrixVectMult Matrix Vector Multiplication
+ *
+ * Multiplies a matrix and a vector.
+ *
+ */
 
 /**
- * @addtogroup MatrixMult
+ * @addtogroup MatrixVectMult
  * @{
  */
 
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_vec_mult_q15.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_vec_mult_q15.c
index c6377e2..f236bde 100755
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_vec_mult_q15.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_vec_mult_q15.c
@@ -25,7 +25,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
  * @ingroup groupMatrix
@@ -34,7 +34,7 @@
 
 
 /**
- * @addtogroup MatrixMult
+ * @addtogroup MatrixVectMult
  * @{
  */
 
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_vec_mult_q31.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_vec_mult_q31.c
index d7651e1..49dfe66 100755
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_vec_mult_q31.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_vec_mult_q31.c
@@ -25,7 +25,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
  * @ingroup groupMatrix
@@ -34,7 +34,7 @@
 
 
 /**
- * @addtogroup MatrixMult
+ * @addtogroup MatrixVectMult
  * @{
  */
 
diff --git a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_vec_mult_q7.c b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_vec_mult_q7.c
index eb69770..821f8fc 100755
--- a/CMSIS/DSP/Source/MatrixFunctions/arm_mat_vec_mult_q7.c
+++ b/CMSIS/DSP/Source/MatrixFunctions/arm_mat_vec_mult_q7.c
@@ -25,7 +25,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/matrix_functions.h"
 
 /**
  * @ingroup groupMatrix
@@ -34,7 +34,7 @@
 
 
 /**
- * @addtogroup MatrixMult
+ * @addtogroup MatrixVectMult
  * @{
  */
 
diff --git a/CMSIS/DSP/Source/SVMFunctions/arm_svm_linear_init_f32.c b/CMSIS/DSP/Source/SVMFunctions/arm_svm_linear_init_f32.c
index bddeafe..b0739b1 100755
--- a/CMSIS/DSP/Source/SVMFunctions/arm_svm_linear_init_f32.c
+++ b/CMSIS/DSP/Source/SVMFunctions/arm_svm_linear_init_f32.c
@@ -24,7 +24,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/svm_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/SVMFunctions/arm_svm_linear_predict_f32.c b/CMSIS/DSP/Source/SVMFunctions/arm_svm_linear_predict_f32.c
index 503ba16..9cba7d1 100755
--- a/CMSIS/DSP/Source/SVMFunctions/arm_svm_linear_predict_f32.c
+++ b/CMSIS/DSP/Source/SVMFunctions/arm_svm_linear_predict_f32.c
@@ -24,7 +24,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/svm_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/SVMFunctions/arm_svm_polynomial_init_f32.c b/CMSIS/DSP/Source/SVMFunctions/arm_svm_polynomial_init_f32.c
index 8828ea2..45e89ef 100755
--- a/CMSIS/DSP/Source/SVMFunctions/arm_svm_polynomial_init_f32.c
+++ b/CMSIS/DSP/Source/SVMFunctions/arm_svm_polynomial_init_f32.c
@@ -24,7 +24,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/svm_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/SVMFunctions/arm_svm_polynomial_predict_f32.c b/CMSIS/DSP/Source/SVMFunctions/arm_svm_polynomial_predict_f32.c
index 0873bff..4a108ff 100755
--- a/CMSIS/DSP/Source/SVMFunctions/arm_svm_polynomial_predict_f32.c
+++ b/CMSIS/DSP/Source/SVMFunctions/arm_svm_polynomial_predict_f32.c
@@ -24,7 +24,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/svm_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/SVMFunctions/arm_svm_rbf_init_f32.c b/CMSIS/DSP/Source/SVMFunctions/arm_svm_rbf_init_f32.c
index 6128e98..c00f9eb 100755
--- a/CMSIS/DSP/Source/SVMFunctions/arm_svm_rbf_init_f32.c
+++ b/CMSIS/DSP/Source/SVMFunctions/arm_svm_rbf_init_f32.c
@@ -24,7 +24,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/svm_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/SVMFunctions/arm_svm_rbf_predict_f32.c b/CMSIS/DSP/Source/SVMFunctions/arm_svm_rbf_predict_f32.c
index 8625ef4..0907dbb 100755
--- a/CMSIS/DSP/Source/SVMFunctions/arm_svm_rbf_predict_f32.c
+++ b/CMSIS/DSP/Source/SVMFunctions/arm_svm_rbf_predict_f32.c
@@ -24,7 +24,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/svm_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/SVMFunctions/arm_svm_sigmoid_init_f32.c b/CMSIS/DSP/Source/SVMFunctions/arm_svm_sigmoid_init_f32.c
index 7715d90..407b68f 100755
--- a/CMSIS/DSP/Source/SVMFunctions/arm_svm_sigmoid_init_f32.c
+++ b/CMSIS/DSP/Source/SVMFunctions/arm_svm_sigmoid_init_f32.c
@@ -24,7 +24,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/svm_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/SVMFunctions/arm_svm_sigmoid_predict_f32.c b/CMSIS/DSP/Source/SVMFunctions/arm_svm_sigmoid_predict_f32.c
index f3b2f2f..f15e236 100755
--- a/CMSIS/DSP/Source/SVMFunctions/arm_svm_sigmoid_predict_f32.c
+++ b/CMSIS/DSP/Source/SVMFunctions/arm_svm_sigmoid_predict_f32.c
@@ -24,7 +24,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/svm_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_entropy_f32.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_entropy_f32.c
index 01f7bc7..60c325d 100755
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_entropy_f32.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_entropy_f32.c
@@ -24,7 +24,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/statistics_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_entropy_f64.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_entropy_f64.c
index 7638ba7..d2a6a49 100755
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_entropy_f64.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_entropy_f64.c
@@ -24,7 +24,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/statistics_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_kullback_leibler_f32.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_kullback_leibler_f32.c
index c406e84..b664757 100755
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_kullback_leibler_f32.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_kullback_leibler_f32.c
@@ -24,7 +24,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/statistics_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_kullback_leibler_f64.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_kullback_leibler_f64.c
index 8f2f966..ded2c6c 100755
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_kullback_leibler_f64.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_kullback_leibler_f64.c
@@ -24,7 +24,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/statistics_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_logsumexp_dot_prod_f32.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_logsumexp_dot_prod_f32.c
index 3f0c554..12ff09b 100755
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_logsumexp_dot_prod_f32.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_logsumexp_dot_prod_f32.c
@@ -24,7 +24,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/statistics_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_logsumexp_f32.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_logsumexp_f32.c
index 03f778d..c2e1926 100755
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_logsumexp_f32.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_logsumexp_f32.c
@@ -24,7 +24,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/statistics_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_max_f32.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_max_f32.c
index 677ad1d..f543899 100644
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_max_f32.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_max_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/statistics_functions.h"
 #if (defined(ARM_MATH_NEON) || defined(ARM_MATH_MVEF)) && !defined(ARM_MATH_AUTOVECTORIZE)
 #include <limits.h>
 #endif
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_max_no_idx_f32.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_max_no_idx_f32.c
index ccb31c7..8d792e6 100755
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_max_no_idx_f32.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_max_no_idx_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/statistics_functions.h"
 #if (defined(ARM_MATH_NEON) || defined(ARM_MATH_MVEF)) && !defined(ARM_MATH_AUTOVECTORIZE)
 #include <limits.h>
 #endif
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q15.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q15.c
index e06a912..4d724c3 100644
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q15.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/statistics_functions.h"
 
 /**
   @ingroup groupStats
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q31.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q31.c
index e1832b4..73f78b3 100644
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q31.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/statistics_functions.h"
 
 /**
   @ingroup groupStats
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q7.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q7.c
index 705f914..596aa14 100644
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q7.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q7.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/statistics_functions.h"
 
 /**
   @ingroup groupStats
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_f32.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_f32.c
index 439a597..57ea428 100644
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_f32.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/statistics_functions.h"
 
 /**
   @ingroup groupStats
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q15.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q15.c
index 6920869..8df341f 100644
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q15.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/statistics_functions.h"
 
 /**
   @ingroup groupStats
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q31.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q31.c
index 2694ef5..995a248 100644
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q31.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/statistics_functions.h"
 
 /**
   @ingroup groupStats
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q7.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q7.c
index 26879eb..f96ea17 100644
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q7.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q7.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/statistics_functions.h"
 
 /**
   @ingroup groupStats
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_min_f32.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_min_f32.c
index 28deff2..610f009 100644
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_min_f32.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_min_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/statistics_functions.h"
 
 #if (defined(ARM_MATH_NEON) || defined(ARM_MATH_MVEF)) && !defined(ARM_MATH_AUTOVECTORIZE)
 #include <limits.h>
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q15.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q15.c
index aacefa9..90df0ed 100644
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q15.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/statistics_functions.h"
 
 /**
   @ingroup groupStats
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q31.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q31.c
index c38622b..e38f5b4 100644
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q31.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/statistics_functions.h"
 
 /**
   @ingroup groupStats
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q7.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q7.c
index 619f7b6..dc53aab 100644
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q7.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q7.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/statistics_functions.h"
 
 /**
   @ingroup groupStats
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_power_f32.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_power_f32.c
index 28ed7be..f50f43d 100644
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_power_f32.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_power_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/statistics_functions.h"
 
 /**
   @ingroup groupStats
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q15.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q15.c
index c7f9941..d5e7282 100644
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q15.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/statistics_functions.h"
 
 /**
   @ingroup groupStats
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q31.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q31.c
index 4de4c9e..acadf5c 100644
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q31.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/statistics_functions.h"
 
 /**
   @ingroup groupStats
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q7.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q7.c
index 0e1b9da..87037bc 100644
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q7.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q7.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/statistics_functions.h"
 
 /**
   @ingroup groupStats
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_f32.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_f32.c
index 7f26aff..9d20728 100644
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_f32.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/statistics_functions.h"
 
 /**
   @ingroup groupStats
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_q15.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_q15.c
index 8097771..716aae0 100644
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_q15.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/statistics_functions.h"
 
 /**
   @ingroup groupStats
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_q31.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_q31.c
index 3c1c692..c029c74 100644
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_q31.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/statistics_functions.h"
 
 /**
   @ingroup groupStats
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_std_f32.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_std_f32.c
index b584dcd..44036d5 100644
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_std_f32.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_std_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/statistics_functions.h"
 
 /**
   @ingroup groupStats
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_std_q15.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_std_q15.c
index 8003f83..a14d84b 100644
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_std_q15.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_std_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/statistics_functions.h"
 
 /**
   @ingroup groupStats
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_std_q31.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_std_q31.c
index 190e595..eb3a0e8 100644
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_std_q31.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_std_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/statistics_functions.h"
 
 /**
   @ingroup groupStats
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_var_f32.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_var_f32.c
index fd39500..5348e1a 100644
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_var_f32.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_var_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/statistics_functions.h"
 
 /**
   @ingroup groupStats
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_var_q15.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_var_q15.c
index c9ddfd1..e693a71 100644
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_var_q15.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_var_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/statistics_functions.h"
 
 /**
   @ingroup groupStats
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_var_q31.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_var_q31.c
index 0b7d453..4562809 100644
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_var_q31.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_var_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/statistics_functions.h"
 
 /**
   @ingroup groupStats
diff --git a/CMSIS/DSP/Source/SupportFunctions/SupportFunctions.c b/CMSIS/DSP/Source/SupportFunctions/SupportFunctions.c
index 9042d8a..6beee5d 100644
--- a/CMSIS/DSP/Source/SupportFunctions/SupportFunctions.c
+++ b/CMSIS/DSP/Source/SupportFunctions/SupportFunctions.c
@@ -45,8 +45,6 @@
 #include "arm_selection_sort_f32.c"
 #include "arm_sort_f32.c"
 #include "arm_sort_init_f32.c"
-#include "arm_spline_interp_f32.c"
-#include "arm_spline_interp_init_f32.c"
 #include "arm_weighted_sum_f32.c"
 
 #include "arm_float_to_q15.c"
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_barycenter_f32.c b/CMSIS/DSP/Source/SupportFunctions/arm_barycenter_f32.c
index 68dd8df..e804093 100755
--- a/CMSIS/DSP/Source/SupportFunctions/arm_barycenter_f32.c
+++ b/CMSIS/DSP/Source/SupportFunctions/arm_barycenter_f32.c
@@ -24,7 +24,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/support_functions.h"
 #include <limits.h>
 #include <math.h>
 
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_bitonic_sort_f32.c b/CMSIS/DSP/Source/SupportFunctions/arm_bitonic_sort_f32.c
index ca8a3f9..1192a00 100644
--- a/CMSIS/DSP/Source/SupportFunctions/arm_bitonic_sort_f32.c
+++ b/CMSIS/DSP/Source/SupportFunctions/arm_bitonic_sort_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/support_functions.h"
 #include "arm_sorting.h"
 
 
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_bubble_sort_f32.c b/CMSIS/DSP/Source/SupportFunctions/arm_bubble_sort_f32.c
index 1257998..d79fae5 100644
--- a/CMSIS/DSP/Source/SupportFunctions/arm_bubble_sort_f32.c
+++ b/CMSIS/DSP/Source/SupportFunctions/arm_bubble_sort_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/support_functions.h"
 #include "arm_sorting.h"
 
 /**
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_copy_f32.c b/CMSIS/DSP/Source/SupportFunctions/arm_copy_f32.c
index 5ce3ec6..c084f45 100644
--- a/CMSIS/DSP/Source/SupportFunctions/arm_copy_f32.c
+++ b/CMSIS/DSP/Source/SupportFunctions/arm_copy_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/support_functions.h"
 
 /**
   @ingroup groupSupport
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_copy_q15.c b/CMSIS/DSP/Source/SupportFunctions/arm_copy_q15.c
index d99f725..d947931 100644
--- a/CMSIS/DSP/Source/SupportFunctions/arm_copy_q15.c
+++ b/CMSIS/DSP/Source/SupportFunctions/arm_copy_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/support_functions.h"
 
 /**
   @ingroup groupSupport
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_copy_q31.c b/CMSIS/DSP/Source/SupportFunctions/arm_copy_q31.c
index 012113b..4bbf569 100644
--- a/CMSIS/DSP/Source/SupportFunctions/arm_copy_q31.c
+++ b/CMSIS/DSP/Source/SupportFunctions/arm_copy_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/support_functions.h"
 
 /**
   @ingroup groupSupport
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_copy_q7.c b/CMSIS/DSP/Source/SupportFunctions/arm_copy_q7.c
index d56176f..89977f0 100644
--- a/CMSIS/DSP/Source/SupportFunctions/arm_copy_q7.c
+++ b/CMSIS/DSP/Source/SupportFunctions/arm_copy_q7.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/support_functions.h"
 
 /**
   @ingroup groupSupport
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_fill_f32.c b/CMSIS/DSP/Source/SupportFunctions/arm_fill_f32.c
index 2c40773..a2cd1d1 100644
--- a/CMSIS/DSP/Source/SupportFunctions/arm_fill_f32.c
+++ b/CMSIS/DSP/Source/SupportFunctions/arm_fill_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/support_functions.h"
 
 /**
   @ingroup groupSupport
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_fill_q15.c b/CMSIS/DSP/Source/SupportFunctions/arm_fill_q15.c
index 0ffba93..ae4b450 100644
--- a/CMSIS/DSP/Source/SupportFunctions/arm_fill_q15.c
+++ b/CMSIS/DSP/Source/SupportFunctions/arm_fill_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/support_functions.h"
 
 /**
   @ingroup groupSupport
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_fill_q31.c b/CMSIS/DSP/Source/SupportFunctions/arm_fill_q31.c
index c5200fb..ce5dee3 100644
--- a/CMSIS/DSP/Source/SupportFunctions/arm_fill_q31.c
+++ b/CMSIS/DSP/Source/SupportFunctions/arm_fill_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/support_functions.h"
 
 /**
   @ingroup groupSupport
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_fill_q7.c b/CMSIS/DSP/Source/SupportFunctions/arm_fill_q7.c
index 4614db5..8861f8f 100644
--- a/CMSIS/DSP/Source/SupportFunctions/arm_fill_q7.c
+++ b/CMSIS/DSP/Source/SupportFunctions/arm_fill_q7.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/support_functions.h"
 
 /**
   @ingroup groupSupport
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q15.c b/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q15.c
index 76736d5..ae9c916 100644
--- a/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q15.c
+++ b/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/support_functions.h"
 
 /**
   @ingroup groupSupport
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q31.c b/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q31.c
index a4580f2..d292057 100644
--- a/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q31.c
+++ b/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/support_functions.h"
 
 /**
   @ingroup groupSupport
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q7.c b/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q7.c
index 80eb294..7798287 100644
--- a/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q7.c
+++ b/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q7.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/support_functions.h"
 
 /**
   @ingroup groupSupport
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_heap_sort_f32.c b/CMSIS/DSP/Source/SupportFunctions/arm_heap_sort_f32.c
index 3fc594a..96ab5e4 100644
--- a/CMSIS/DSP/Source/SupportFunctions/arm_heap_sort_f32.c
+++ b/CMSIS/DSP/Source/SupportFunctions/arm_heap_sort_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/support_functions.h"
 #include "arm_sorting.h"
 
 
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_insertion_sort_f32.c b/CMSIS/DSP/Source/SupportFunctions/arm_insertion_sort_f32.c
index f253d72..9070bcc 100644
--- a/CMSIS/DSP/Source/SupportFunctions/arm_insertion_sort_f32.c
+++ b/CMSIS/DSP/Source/SupportFunctions/arm_insertion_sort_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/support_functions.h"
 #include "arm_sorting.h"
 
 /**
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_merge_sort_f32.c b/CMSIS/DSP/Source/SupportFunctions/arm_merge_sort_f32.c
index 2e026a3..e2bb68f 100644
--- a/CMSIS/DSP/Source/SupportFunctions/arm_merge_sort_f32.c
+++ b/CMSIS/DSP/Source/SupportFunctions/arm_merge_sort_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/support_functions.h"
 #include "arm_sorting.h"
 
 
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_merge_sort_init_f32.c b/CMSIS/DSP/Source/SupportFunctions/arm_merge_sort_init_f32.c
index 31431f3..3e48a9a 100644
--- a/CMSIS/DSP/Source/SupportFunctions/arm_merge_sort_init_f32.c
+++ b/CMSIS/DSP/Source/SupportFunctions/arm_merge_sort_init_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/support_functions.h"
 
 /**
   @ingroup groupSupport
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_float.c b/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_float.c
index 6f2927b..9a6946e 100644
--- a/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_float.c
+++ b/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_float.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/support_functions.h"
 
 /**
   @ingroup groupSupport
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_q31.c b/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_q31.c
index a33bcb7..5f136d7 100644
--- a/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_q31.c
+++ b/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/support_functions.h"
 
 /**
   @ingroup groupSupport
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_q7.c b/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_q7.c
index 023410a..deb31c3 100644
--- a/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_q7.c
+++ b/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_q7.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/support_functions.h"
 
 /**
   @ingroup groupSupport
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_float.c b/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_float.c
index 0598b3b..4cb7f75 100644
--- a/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_float.c
+++ b/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_float.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/support_functions.h"
 
 /**
   @ingroup groupSupport
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_q15.c b/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_q15.c
index b3eeaca..f7f9043 100644
--- a/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_q15.c
+++ b/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/support_functions.h"
 
 /**
   @ingroup groupSupport
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_q7.c b/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_q7.c
index 870163e..83f03f8 100644
--- a/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_q7.c
+++ b/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_q7.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/support_functions.h"
 
 /**
   @ingroup groupSupport
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_float.c b/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_float.c
index 8c844aa..bf5bf81 100644
--- a/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_float.c
+++ b/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_float.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/support_functions.h"
 
 /**
   @ingroup groupSupport
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_q15.c b/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_q15.c
index 71f392c..c235883 100644
--- a/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_q15.c
+++ b/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/support_functions.h"
 
 /**
   @ingroup groupSupport
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_q31.c b/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_q31.c
index 69ad0b8..249e457 100644
--- a/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_q31.c
+++ b/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/support_functions.h"
 
 /**
   @ingroup groupSupport
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_bitreversal.c b/CMSIS/DSP/Source/TransformFunctions/arm_bitreversal.c
index f66d580..0ff7aa9 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_bitreversal.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_bitreversal.c
@@ -26,8 +26,8 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
-#include "arm_math_f16.h"
+#include "dsp/transform_functions.h"
+#include "dsp/transform_functions_f16.h"
 #include "arm_common_tables.h"
 
 /*
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_bitreversal2.c b/CMSIS/DSP/Source/TransformFunctions/arm_bitreversal2.c
index 802129d..ba1253b 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_bitreversal2.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_bitreversal2.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 #include "arm_common_tables.h"
 
 
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_f16.c b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_f16.c
index 711f394..4250f74 100755
--- a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_f16.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_f16.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math_f16.h"
+#include "dsp/transform_functions_f16.h"
 #include "arm_common_tables_f16.h"
 
 
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_f32.c b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_f32.c
index c7f26fd..f47ba42 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_f32.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 #include "arm_common_tables.h"
 
 #if defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE)
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_f64.c b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_f64.c
index 8c6d3e6..0281f64 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_f64.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_f64.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 #include "arm_common_tables.h"
 
 
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_init_f16.c b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_init_f16.c
index 91a4b21..d366fa9 100755
--- a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_init_f16.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_init_f16.c
@@ -49,7 +49,7 @@
                 variables declared in arm_const_structs.h
  */
 
-#include "arm_math_f16.h"
+#include "dsp/transform_functions_f16.h"
 #include "arm_common_tables_f16.h"
 #include "arm_const_structs_f16.h"
 
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_init_f32.c b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_init_f32.c
index 97ba22e..d0741ae 100755
--- a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_init_f32.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_init_f32.c
@@ -49,7 +49,7 @@
                 variables declared in arm_const_structs.h
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 #include "arm_common_tables.h"
 #include "arm_const_structs.h"
 
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_init_f64.c b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_init_f64.c
index 939488b..9d5ae53 100755
--- a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_init_f64.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_init_f64.c
@@ -49,7 +49,7 @@
                 variables declared in arm_const_structs.h
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 #include "arm_common_tables.h"
 #include "arm_const_structs.h"
 
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_init_q15.c b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_init_q15.c
index 99af18c..8875a1c 100755
--- a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_init_q15.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_init_q15.c
@@ -49,7 +49,7 @@
                 variables declared in arm_const_structs.h
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 #include "arm_common_tables.h"
 #include "arm_const_structs.h"
 
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_init_q31.c b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_init_q31.c
index 0511af0..da9da26 100755
--- a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_init_q31.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_init_q31.c
@@ -49,7 +49,7 @@
                 variables declared in arm_const_structs.h
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 #include "arm_common_tables.h"
 #include "arm_const_structs.h"
 
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_q15.c b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_q15.c
index a25fc82..939ee83 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_q15.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 
 #if defined(ARM_MATH_MVEI)
 
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_q31.c b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_q31.c
index f8a46bd..80a6d96 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_q31.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 
 
 
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_f16.c b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_f16.c
index 5c020c8..96bbdbd 100755
--- a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_f16.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_f16.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math_f16.h"
+#include "dsp/transform_functions_f16.h"
 
 #if defined(ARM_FLOAT16_SUPPORTED)
 
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_f32.c b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_f32.c
index f75e329..e82780e 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_f32.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 
 void arm_radix2_butterfly_f32(
         float32_t * pSrc,
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_f32.c b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_f32.c
index 417ad91..41fbac3 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_f32.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 #include "arm_common_tables.h"
 
 /**
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_q15.c b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_q15.c
index 3d865d0..1edaef3 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_q15.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 #include "arm_common_tables.h"
 
 /**
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_q31.c b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_q31.c
index f4a20d6..074c2c8 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_q31.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 #include "arm_common_tables.h"
 
 /**
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_q15.c b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_q15.c
index 2a03b57..e69f771 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_q15.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 
 void arm_radix2_butterfly_q15(
         q15_t * pSrc,
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_q31.c b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_q31.c
index 6c79a65..f81eea9 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_q31.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 
 void arm_radix2_butterfly_q31(
         q31_t * pSrc,
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_f16.c b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_f16.c
index 85bee8e..c20aaec 100755
--- a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_f16.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_f16.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math_f16.h"
+#include "dsp/transform_functions_f16.h"
 
 #if defined(ARM_FLOAT16_SUPPORTED)
 
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_f32.c b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_f32.c
index 763a304..f48a182 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_f32.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 
 extern void arm_bitreversal_f32(
         float32_t * pSrc,
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_f32.c b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_f32.c
index 930c2c1..e4e3d29 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_f32.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 #include "arm_common_tables.h"
 
 /**
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_q15.c b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_q15.c
index 0090688..1b58484 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_q15.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 #include "arm_common_tables.h"
 
 /**
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_q31.c b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_q31.c
index 17d16b7..c18e4fe 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_q31.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 #include "arm_common_tables.h"
 
 /**
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_q15.c b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_q15.c
index b4cabb1..1c58dc0 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_q15.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_q15.c
@@ -27,7 +27,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 
 
 void arm_radix4_butterfly_q15(
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_q31.c b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_q31.c
index a9a59dd..42c07b1 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_q31.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_q31.c
@@ -27,7 +27,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 
 void arm_radix4_butterfly_inverse_q31(
         q31_t * pSrc,
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix8_f32.c b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix8_f32.c
index 50048f6..27d1b18 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix8_f32.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix8_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 
 
 /* ----------------------------------------------------------------------
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_dct4_f32.c b/CMSIS/DSP/Source/TransformFunctions/arm_dct4_f32.c
index 87455dc..e0708e6 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_dct4_f32.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_dct4_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 
 /**
   @ingroup groupTransforms
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_f32.c b/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_f32.c
index 42b9df0..d011f54 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_f32.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 #include "arm_common_tables.h"
 
 /**
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_q15.c b/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_q15.c
index 52ba8cc..b68be87 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_q15.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 #include "arm_common_tables.h"
 
 /**
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_q31.c b/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_q31.c
index 954ebcf..d0d2718 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_q31.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 #include "arm_common_tables.h"
 
 /**
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_dct4_q15.c b/CMSIS/DSP/Source/TransformFunctions/arm_dct4_q15.c
index f926a1d..adfb1f3 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_dct4_q15.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_dct4_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 
 /**
   @addtogroup DCT4_IDCT4
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_dct4_q31.c b/CMSIS/DSP/Source/TransformFunctions/arm_dct4_q31.c
index 369a5c3..e0bb81d 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_dct4_q31.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_dct4_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 
 /**
   @addtogroup DCT4_IDCT4
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_rfft_f32.c b/CMSIS/DSP/Source/TransformFunctions/arm_rfft_f32.c
index e3beed8..8c6fe74 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_rfft_f32.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_rfft_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 
 /* ----------------------------------------------------------------------
  * Internal functions prototypes
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_f32.c b/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_f32.c
index fca2a80..a330dc2 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_f32.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 
 #if defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE)
 void stage_rfft_f32(
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_f64.c b/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_f64.c
index 440bfdd..e900a67 100755
--- a/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_f64.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_f64.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 
 void stage_rfft_f64(
   const arm_rfft_fast_instance_f64 * S,
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 6303328..58cda89 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_init_f32.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_init_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 #include "arm_common_tables.h"
 
 /**
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 c95838e..f110c61 100755
--- a/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_init_f64.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_init_f64.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 #include "arm_common_tables.h"
 
 /**
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_f32.c b/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_f32.c
index 141f8b6..2191cca 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_f32.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_f32.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 #include "arm_common_tables.h"
 
 
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_q15.c b/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_q15.c
index 11e175c..7fffce9 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_q15.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 #include "arm_common_tables.h"
 #include "arm_const_structs.h"
 
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_q31.c b/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_q31.c
index 80e83f6..a7dcbf5 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_q31.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 #include "arm_common_tables.h"
 #include "arm_const_structs.h"
 
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q15.c b/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q15.c
index 3f9e482..4323330 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q15.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q15.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 
 /* ----------------------------------------------------------------------
  * Internal functions prototypes
diff --git a/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q31.c b/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q31.c
index c963d33..274428e 100644
--- a/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q31.c
+++ b/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q31.c
@@ -26,7 +26,7 @@
  * limitations under the License.
  */
 
-#include "arm_math.h"
+#include "dsp/transform_functions.h"
 
 /* ----------------------------------------------------------------------
  * Internal functions prototypes
diff --git a/CMSIS/DSP/Testing/CMakeLists.txt b/CMSIS/DSP/Testing/CMakeLists.txt
index b7e34e0..27ccc75 100644
--- a/CMSIS/DSP/Testing/CMakeLists.txt
+++ b/CMSIS/DSP/Testing/CMakeLists.txt
@@ -466,12 +466,15 @@
   # doxygen settings can be set here, prefixed with "DOXYGEN_"
   set(DOXYGEN_SOURCE_BROWSER NO)
   set(DOXYGEN_EXTRACT_ALL YES)
-  set(DOXYGEN_EXTRACT_PRIVATE YES)
+  set(DOXYGEN_EXTRACT_PRIVATE NO)
   set(DOXYGEN_GENERATE_XML NO)
   set(DOXYGEN_OPTIMIZE_OUTPUT_FOR_C YES)
   set(DOXYGEN_EXTRACT_LOCAL_CLASSES NO)
   set(DOXYGEN_TYPEDEF_HIDES_STRUCT YES)
-  set(DOXYGEN_PREDEFINED "__ALIGNED(x)=")
+  set(DOXYGEN_ENABLE_PREPROCESSING YES)
+  set(DOXYGEN_MACRO_EXPANSION YES)
+  set(DOXYGEN_EXPAND_ONLY_PREDEF YES)
+  set(DOXYGEN_PREDEFINED "ARM_FLOAT16_SUPPORTED=1 __ALIGNED(x)=")
   set(DOXYGEN_EXAMPLE_PATH "${ROOT}/CMSIS/DSP/Examples/ARM")
   set(DOXYGEN_IMAGE_PATH "${ROOT}/CMSIS/DoxyGen/DSP/src/images")
   set(DOXYGEN_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/docs")
diff --git a/CMSIS/DSP/Testing/FrameworkInclude/Error.h b/CMSIS/DSP/Testing/FrameworkInclude/Error.h
index b8e4e06..1e25aec 100644
--- a/CMSIS/DSP/Testing/FrameworkInclude/Error.h
+++ b/CMSIS/DSP/Testing/FrameworkInclude/Error.h
@@ -164,7 +164,10 @@
 #define ASSERT_EMPTY_TAIL(A) if (!A.isTailEmpty()) throw (Client::Error(TAIL_NOT_EMPTY_ERROR,__LINE__))
 
 namespace Client {
-    template <typename T> 
+
+using namespace std;
+
+template <typename T> 
 void assert_equal(unsigned long nb,T pa, T pb)
 {
     if (pa != pb)
diff --git a/CMSIS/DSP/Testing/FrameworkSource/FPGA.cpp b/CMSIS/DSP/Testing/FrameworkSource/FPGA.cpp
index 8c07466..3c8eecc 100644
--- a/CMSIS/DSP/Testing/FrameworkSource/FPGA.cpp
+++ b/CMSIS/DSP/Testing/FrameworkSource/FPGA.cpp
@@ -40,6 +40,8 @@
 #include "arm_math.h"
 #include "arm_math_f16.h"
 
+using namespace std;
+
 namespace Client
 {
     struct offsetOrGen
diff --git a/CMSIS/DSP/Testing/FrameworkSource/IORunner.cpp b/CMSIS/DSP/Testing/FrameworkSource/IORunner.cpp
index 6795b10..f5c1bbb 100644
--- a/CMSIS/DSP/Testing/FrameworkSource/IORunner.cpp
+++ b/CMSIS/DSP/Testing/FrameworkSource/IORunner.cpp
@@ -46,6 +46,7 @@
 #define CALIBNB 20
 #endif
 
+using namespace std;
 
 namespace Client
 {
diff --git a/CMSIS/DSP/Testing/Include/Tests/InterpolationTestsF32.h b/CMSIS/DSP/Testing/Include/Tests/InterpolationTestsF32.h
index caee0a6..304cc2f 100755
--- a/CMSIS/DSP/Testing/Include/Tests/InterpolationTestsF32.h
+++ b/CMSIS/DSP/Testing/Include/Tests/InterpolationTestsF32.h
@@ -19,4 +19,12 @@
             arm_linear_interp_instance_f32 S;
             arm_bilinear_interp_instance_f32 SBI;
 
+
+            Client::Pattern<float32_t> inputX;
+            Client::Pattern<float32_t> inputY;
+            Client::Pattern<float32_t> outputX;
+
+            Client::LocalPattern<float32_t> buffer;
+            Client::LocalPattern<float32_t> splineCoefs;
+
     };
diff --git a/CMSIS/DSP/Testing/Include/Tests/SupportTestsF32.h b/CMSIS/DSP/Testing/Include/Tests/SupportTestsF32.h
index 4bba8e7..f2dc55b 100755
--- a/CMSIS/DSP/Testing/Include/Tests/SupportTestsF32.h
+++ b/CMSIS/DSP/Testing/Include/Tests/SupportTestsF32.h
@@ -11,13 +11,7 @@
             
             Client::Pattern<float32_t> input;
             Client::Pattern<float32_t> coefs;
-
-            Client::Pattern<float32_t> inputX;
-            Client::Pattern<float32_t> inputY;
-            Client::Pattern<float32_t> outputX;
-
             Client::LocalPattern<float32_t> buffer;
-            Client::LocalPattern<float32_t> splineCoefs;
 
             Client::LocalPattern<float32_t> output;
             Client::LocalPattern<q15_t> outputQ15;
diff --git a/CMSIS/DSP/Testing/PatternGeneration/Interpolate.py b/CMSIS/DSP/Testing/PatternGeneration/Interpolate.py
index 0350a54..0455a1c 100755
--- a/CMSIS/DSP/Testing/PatternGeneration/Interpolate.py
+++ b/CMSIS/DSP/Testing/PatternGeneration/Interpolate.py
@@ -2,7 +2,7 @@
 import numpy as np
 import itertools
 import Tools
-from scipy.interpolate import interp1d,interp2d
+from scipy.interpolate import interp1d,interp2d,CubicSpline
 
 # Those patterns are used for tests and benchmarks.
 # For tests, there is the need to add tests for saturation
@@ -95,7 +95,32 @@
 
 
     
- 
+    x = [0,3,10,20]
+    config.writeInput(3,x,"InputX")
+    y = [0,9,100,400]
+    config.writeInput(3,y,"InputY")
+    xnew = np.arange(0,20,1)
+    config.writeInput(3,xnew,"OutputX")
+    ynew = CubicSpline(x,y)
+    config.writeReference(3, ynew(xnew))
+
+    x = np.arange(0, 2*np.pi+np.pi/4, np.pi/4)
+    config.writeInput(4,x,"InputX")
+    y = np.sin(x)
+    config.writeInput(4,y,"InputY")
+    xnew = np.arange(0, 2*np.pi+np.pi/16, np.pi/16)
+    config.writeInput(4,xnew,"OutputX")
+    ynew = CubicSpline(x,y,bc_type="natural")
+    config.writeReference(4, ynew(xnew))
+
+    x = [0,3,10]
+    config.writeInput(5,x,"InputX")
+    y = x
+    config.writeInput(5,y,"InputY")
+    xnew = np.arange(-10,20,1)
+    config.writeInput(5,xnew,"OutputX")
+    ynew = CubicSpline(x,y)
+    config.writeReference(5, ynew(xnew))
 
 
 
diff --git a/CMSIS/DSP/Testing/PatternGeneration/Support.py b/CMSIS/DSP/Testing/PatternGeneration/Support.py
index 6b2eca7..60de699 100755
--- a/CMSIS/DSP/Testing/PatternGeneration/Support.py
+++ b/CMSIS/DSP/Testing/PatternGeneration/Support.py
@@ -3,7 +3,6 @@
 import Tools
 import random
 import numpy as np
-from scipy import interpolate
 
 NBTESTSAMPLES = 10
 
@@ -166,32 +165,6 @@
     ref = np.sort(data)
     config.writeReference(10, ref)
 
-    x = [0,3,10,20]
-    config.writeInput(11,x,"InputX")
-    y = [0,9,100,400]
-    config.writeInput(11,y,"InputY")
-    xnew = np.arange(0,20,1)
-    config.writeInput(11,xnew,"OutputX")
-    ynew = interpolate.CubicSpline(x,y)
-    config.writeReference(11, ynew(xnew))
-
-    x = np.arange(0, 2*np.pi+np.pi/4, np.pi/4)
-    config.writeInput(12,x,"InputX")
-    y = np.sin(x)
-    config.writeInput(12,y,"InputY")
-    xnew = np.arange(0, 2*np.pi+np.pi/16, np.pi/16)
-    config.writeInput(12,xnew,"OutputX")
-    ynew = interpolate.CubicSpline(x,y,bc_type="natural")
-    config.writeReference(12, ynew(xnew))
-
-    x = [0,3,10]
-    config.writeInput(13,x,"InputX")
-    y = x
-    config.writeInput(13,y,"InputY")
-    xnew = np.arange(-10,20,1)
-    config.writeInput(13,xnew,"OutputX")
-    ynew = interpolate.CubicSpline(x,y)
-    config.writeReference(13, ynew(xnew))
 
 def generatePatterns():
     PATTERNDIR = os.path.join("Patterns","DSP","Support","Support")
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/InputX11_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationF32/InputX3_f32.txt
similarity index 100%
rename from CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/InputX11_f32.txt
rename to CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationF32/InputX3_f32.txt
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/InputX12_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationF32/InputX4_f32.txt
similarity index 100%
rename from CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/InputX12_f32.txt
rename to CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationF32/InputX4_f32.txt
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/InputX13_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationF32/InputX5_f32.txt
similarity index 100%
rename from CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/InputX13_f32.txt
rename to CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationF32/InputX5_f32.txt
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/InputY11_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationF32/InputY3_f32.txt
similarity index 100%
rename from CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/InputY11_f32.txt
rename to CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationF32/InputY3_f32.txt
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/InputY12_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationF32/InputY4_f32.txt
similarity index 100%
rename from CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/InputY12_f32.txt
rename to CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationF32/InputY4_f32.txt
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/InputX13_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationF32/InputY5_f32.txt
similarity index 100%
copy from CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/InputX13_f32.txt
copy to CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationF32/InputY5_f32.txt
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/OutputX11_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationF32/OutputX3_f32.txt
similarity index 100%
rename from CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/OutputX11_f32.txt
rename to CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationF32/OutputX3_f32.txt
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/OutputX12_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationF32/OutputX4_f32.txt
similarity index 100%
rename from CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/OutputX12_f32.txt
rename to CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationF32/OutputX4_f32.txt
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/OutputX13_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationF32/OutputX5_f32.txt
similarity index 100%
rename from CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/OutputX13_f32.txt
rename to CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationF32/OutputX5_f32.txt
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Reference11_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationF32/Reference3_f32.txt
similarity index 100%
rename from CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Reference11_f32.txt
rename to CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationF32/Reference3_f32.txt
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Reference12_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationF32/Reference4_f32.txt
similarity index 100%
rename from CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Reference12_f32.txt
rename to CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationF32/Reference4_f32.txt
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/OutputX13_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationF32/Reference5_f32.txt
similarity index 100%
copy from CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/OutputX13_f32.txt
copy to CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationF32/Reference5_f32.txt
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/InputX3_q15.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/InputX3_q15.txt
new file mode 100755
index 0000000..f6b8e9a
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/InputX3_q15.txt
@@ -0,0 +1,10 @@
+H
+4
+// 0.000000
+0x0000
+// 3.000000
+0x7FFF
+// 10.000000
+0x7FFF
+// 20.000000
+0x7FFF
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/InputX4_q15.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/InputX4_q15.txt
new file mode 100755
index 0000000..e932a6e
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/InputX4_q15.txt
@@ -0,0 +1,20 @@
+H
+9
+// 0.000000
+0x0000
+// 0.785398
+0x6488
+// 1.570796
+0x7FFF
+// 2.356194
+0x7FFF
+// 3.141593
+0x7FFF
+// 3.926991
+0x7FFF
+// 4.712389
+0x7FFF
+// 5.497787
+0x7FFF
+// 6.283185
+0x7FFF
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/InputX5_q15.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/InputX5_q15.txt
new file mode 100755
index 0000000..1e0d7e2
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/InputX5_q15.txt
@@ -0,0 +1,8 @@
+H
+3
+// 0.000000
+0x0000
+// 3.000000
+0x7FFF
+// 10.000000
+0x7FFF
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/InputY3_q15.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/InputY3_q15.txt
new file mode 100755
index 0000000..a370de8
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/InputY3_q15.txt
@@ -0,0 +1,10 @@
+H
+4
+// 0.000000
+0x0000
+// 9.000000
+0x7FFF
+// 100.000000
+0x7FFF
+// 400.000000
+0x7FFF
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/InputY4_q15.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/InputY4_q15.txt
new file mode 100755
index 0000000..8c9f628
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/InputY4_q15.txt
@@ -0,0 +1,20 @@
+H
+9
+// 0.000000
+0x0000
+// 0.707107
+0x5A82
+// 1.000000
+0x7FFF
+// 0.707107
+0x5A82
+// 0.000000
+0x0000
+// -0.707107
+0xA57E
+// -1.000000
+0x8000
+// -0.707107
+0xA57E
+// -0.000000
+0x0000
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/InputY5_q15.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/InputY5_q15.txt
new file mode 100755
index 0000000..1e0d7e2
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/InputY5_q15.txt
@@ -0,0 +1,8 @@
+H
+3
+// 0.000000
+0x0000
+// 3.000000
+0x7FFF
+// 10.000000
+0x7FFF
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/OutputX3_q15.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/OutputX3_q15.txt
new file mode 100755
index 0000000..826329f
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/OutputX3_q15.txt
@@ -0,0 +1,42 @@
+H
+20
+// 0.000000
+0x0000
+// 1.000000
+0x7FFF
+// 2.000000
+0x7FFF
+// 3.000000
+0x7FFF
+// 4.000000
+0x7FFF
+// 5.000000
+0x7FFF
+// 6.000000
+0x7FFF
+// 7.000000
+0x7FFF
+// 8.000000
+0x7FFF
+// 9.000000
+0x7FFF
+// 10.000000
+0x7FFF
+// 11.000000
+0x7FFF
+// 12.000000
+0x7FFF
+// 13.000000
+0x7FFF
+// 14.000000
+0x7FFF
+// 15.000000
+0x7FFF
+// 16.000000
+0x7FFF
+// 17.000000
+0x7FFF
+// 18.000000
+0x7FFF
+// 19.000000
+0x7FFF
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/OutputX4_q15.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/OutputX4_q15.txt
new file mode 100755
index 0000000..ee6bec0
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/OutputX4_q15.txt
@@ -0,0 +1,68 @@
+H
+33
+// 0.000000
+0x0000
+// 0.196350
+0x1922
+// 0.392699
+0x3244
+// 0.589049
+0x4B66
+// 0.785398
+0x6488
+// 0.981748
+0x7DAA
+// 1.178097
+0x7FFF
+// 1.374447
+0x7FFF
+// 1.570796
+0x7FFF
+// 1.767146
+0x7FFF
+// 1.963495
+0x7FFF
+// 2.159845
+0x7FFF
+// 2.356194
+0x7FFF
+// 2.552544
+0x7FFF
+// 2.748894
+0x7FFF
+// 2.945243
+0x7FFF
+// 3.141593
+0x7FFF
+// 3.337942
+0x7FFF
+// 3.534292
+0x7FFF
+// 3.730641
+0x7FFF
+// 3.926991
+0x7FFF
+// 4.123340
+0x7FFF
+// 4.319690
+0x7FFF
+// 4.516039
+0x7FFF
+// 4.712389
+0x7FFF
+// 4.908739
+0x7FFF
+// 5.105088
+0x7FFF
+// 5.301438
+0x7FFF
+// 5.497787
+0x7FFF
+// 5.694137
+0x7FFF
+// 5.890486
+0x7FFF
+// 6.086836
+0x7FFF
+// 6.283185
+0x7FFF
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/OutputX5_q15.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/OutputX5_q15.txt
new file mode 100755
index 0000000..0d17e39
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/OutputX5_q15.txt
@@ -0,0 +1,62 @@
+H
+30
+// -10.000000
+0x8000
+// -9.000000
+0x8000
+// -8.000000
+0x8000
+// -7.000000
+0x8000
+// -6.000000
+0x8000
+// -5.000000
+0x8000
+// -4.000000
+0x8000
+// -3.000000
+0x8000
+// -2.000000
+0x8000
+// -1.000000
+0x8000
+// 0.000000
+0x0000
+// 1.000000
+0x7FFF
+// 2.000000
+0x7FFF
+// 3.000000
+0x7FFF
+// 4.000000
+0x7FFF
+// 5.000000
+0x7FFF
+// 6.000000
+0x7FFF
+// 7.000000
+0x7FFF
+// 8.000000
+0x7FFF
+// 9.000000
+0x7FFF
+// 10.000000
+0x7FFF
+// 11.000000
+0x7FFF
+// 12.000000
+0x7FFF
+// 13.000000
+0x7FFF
+// 14.000000
+0x7FFF
+// 15.000000
+0x7FFF
+// 16.000000
+0x7FFF
+// 17.000000
+0x7FFF
+// 18.000000
+0x7FFF
+// 19.000000
+0x7FFF
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/Reference3_q15.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/Reference3_q15.txt
new file mode 100755
index 0000000..b1164f1
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/Reference3_q15.txt
@@ -0,0 +1,42 @@
+H
+20
+// 0.000000
+0x0000
+// 1.000000
+0x7FFF
+// 4.000000
+0x7FFF
+// 9.000000
+0x7FFF
+// 16.000000
+0x7FFF
+// 25.000000
+0x7FFF
+// 36.000000
+0x7FFF
+// 49.000000
+0x7FFF
+// 64.000000
+0x7FFF
+// 81.000000
+0x7FFF
+// 100.000000
+0x7FFF
+// 121.000000
+0x7FFF
+// 144.000000
+0x7FFF
+// 169.000000
+0x7FFF
+// 196.000000
+0x7FFF
+// 225.000000
+0x7FFF
+// 256.000000
+0x7FFF
+// 289.000000
+0x7FFF
+// 324.000000
+0x7FFF
+// 361.000000
+0x7FFF
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/Reference4_q15.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/Reference4_q15.txt
new file mode 100755
index 0000000..8103040
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/Reference4_q15.txt
@@ -0,0 +1,68 @@
+H
+33
+// 0.000000
+0x0000
+// 0.194708
+0x18EC
+// 0.382243
+0x30ED
+// 0.555433
+0x4718
+// 0.707107
+0x5A82
+// 0.830791
+0x6A57
+// 0.922816
+0x761F
+// 0.980209
+0x7D77
+// 1.000000
+0x7FFF
+// 0.980209
+0x7D77
+// 0.922816
+0x761F
+// 0.830791
+0x6A57
+// 0.707107
+0x5A82
+// 0.555433
+0x4718
+// 0.382243
+0x30ED
+// 0.194708
+0x18EC
+// 0.000000
+0x0000
+// -0.194708
+0xE714
+// -0.382243
+0xCF13
+// -0.555433
+0xB8E8
+// -0.707107
+0xA57E
+// -0.830791
+0x95A9
+// -0.922816
+0x89E1
+// -0.980209
+0x8289
+// -1.000000
+0x8000
+// -0.980209
+0x8289
+// -0.922816
+0x89E1
+// -0.830791
+0x95A9
+// -0.707107
+0xA57E
+// -0.555433
+0xB8E8
+// -0.382243
+0xCF13
+// -0.194708
+0xE714
+// -0.000000
+0x0000
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/Reference5_q15.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/Reference5_q15.txt
new file mode 100755
index 0000000..0d17e39
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ15/Reference5_q15.txt
@@ -0,0 +1,62 @@
+H
+30
+// -10.000000
+0x8000
+// -9.000000
+0x8000
+// -8.000000
+0x8000
+// -7.000000
+0x8000
+// -6.000000
+0x8000
+// -5.000000
+0x8000
+// -4.000000
+0x8000
+// -3.000000
+0x8000
+// -2.000000
+0x8000
+// -1.000000
+0x8000
+// 0.000000
+0x0000
+// 1.000000
+0x7FFF
+// 2.000000
+0x7FFF
+// 3.000000
+0x7FFF
+// 4.000000
+0x7FFF
+// 5.000000
+0x7FFF
+// 6.000000
+0x7FFF
+// 7.000000
+0x7FFF
+// 8.000000
+0x7FFF
+// 9.000000
+0x7FFF
+// 10.000000
+0x7FFF
+// 11.000000
+0x7FFF
+// 12.000000
+0x7FFF
+// 13.000000
+0x7FFF
+// 14.000000
+0x7FFF
+// 15.000000
+0x7FFF
+// 16.000000
+0x7FFF
+// 17.000000
+0x7FFF
+// 18.000000
+0x7FFF
+// 19.000000
+0x7FFF
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/InputX3_q31.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/InputX3_q31.txt
new file mode 100755
index 0000000..a69c8b7
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/InputX3_q31.txt
@@ -0,0 +1,10 @@
+W
+4
+// 0.000000
+0x00000000
+// 3.000000
+0x7FFFFFFF
+// 10.000000
+0x7FFFFFFF
+// 20.000000
+0x7FFFFFFF
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/InputX4_q31.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/InputX4_q31.txt
new file mode 100755
index 0000000..4e66281
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/InputX4_q31.txt
@@ -0,0 +1,20 @@
+W
+9
+// 0.000000
+0x00000000
+// 0.785398
+0x6487ED51
+// 1.570796
+0x7FFFFFFF
+// 2.356194
+0x7FFFFFFF
+// 3.141593
+0x7FFFFFFF
+// 3.926991
+0x7FFFFFFF
+// 4.712389
+0x7FFFFFFF
+// 5.497787
+0x7FFFFFFF
+// 6.283185
+0x7FFFFFFF
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/InputX5_q31.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/InputX5_q31.txt
new file mode 100755
index 0000000..b06623c
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/InputX5_q31.txt
@@ -0,0 +1,8 @@
+W
+3
+// 0.000000
+0x00000000
+// 3.000000
+0x7FFFFFFF
+// 10.000000
+0x7FFFFFFF
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/InputY3_q31.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/InputY3_q31.txt
new file mode 100755
index 0000000..c5888dd
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/InputY3_q31.txt
@@ -0,0 +1,10 @@
+W
+4
+// 0.000000
+0x00000000
+// 9.000000
+0x7FFFFFFF
+// 100.000000
+0x7FFFFFFF
+// 400.000000
+0x7FFFFFFF
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/InputY4_q31.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/InputY4_q31.txt
new file mode 100755
index 0000000..5266ab0
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/InputY4_q31.txt
@@ -0,0 +1,20 @@
+W
+9
+// 0.000000
+0x00000000
+// 0.707107
+0x5A82799A
+// 1.000000
+0x7FFFFFFF
+// 0.707107
+0x5A82799A
+// 0.000000
+0x00000000
+// -0.707107
+0xA57D8666
+// -1.000000
+0x80000000
+// -0.707107
+0xA57D8666
+// -0.000000
+0x00000000
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/InputY5_q31.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/InputY5_q31.txt
new file mode 100755
index 0000000..b06623c
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/InputY5_q31.txt
@@ -0,0 +1,8 @@
+W
+3
+// 0.000000
+0x00000000
+// 3.000000
+0x7FFFFFFF
+// 10.000000
+0x7FFFFFFF
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/OutputX3_q31.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/OutputX3_q31.txt
new file mode 100755
index 0000000..32e3bbe
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/OutputX3_q31.txt
@@ -0,0 +1,42 @@
+W
+20
+// 0.000000
+0x00000000
+// 1.000000
+0x7FFFFFFF
+// 2.000000
+0x7FFFFFFF
+// 3.000000
+0x7FFFFFFF
+// 4.000000
+0x7FFFFFFF
+// 5.000000
+0x7FFFFFFF
+// 6.000000
+0x7FFFFFFF
+// 7.000000
+0x7FFFFFFF
+// 8.000000
+0x7FFFFFFF
+// 9.000000
+0x7FFFFFFF
+// 10.000000
+0x7FFFFFFF
+// 11.000000
+0x7FFFFFFF
+// 12.000000
+0x7FFFFFFF
+// 13.000000
+0x7FFFFFFF
+// 14.000000
+0x7FFFFFFF
+// 15.000000
+0x7FFFFFFF
+// 16.000000
+0x7FFFFFFF
+// 17.000000
+0x7FFFFFFF
+// 18.000000
+0x7FFFFFFF
+// 19.000000
+0x7FFFFFFF
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/OutputX4_q31.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/OutputX4_q31.txt
new file mode 100755
index 0000000..211e784
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/OutputX4_q31.txt
@@ -0,0 +1,68 @@
+W
+33
+// 0.000000
+0x00000000
+// 0.196350
+0x1921FB54
+// 0.392699
+0x3243F6A9
+// 0.589049
+0x4B65F1FD
+// 0.785398
+0x6487ED51
+// 0.981748
+0x7DA9E8A5
+// 1.178097
+0x7FFFFFFF
+// 1.374447
+0x7FFFFFFF
+// 1.570796
+0x7FFFFFFF
+// 1.767146
+0x7FFFFFFF
+// 1.963495
+0x7FFFFFFF
+// 2.159845
+0x7FFFFFFF
+// 2.356194
+0x7FFFFFFF
+// 2.552544
+0x7FFFFFFF
+// 2.748894
+0x7FFFFFFF
+// 2.945243
+0x7FFFFFFF
+// 3.141593
+0x7FFFFFFF
+// 3.337942
+0x7FFFFFFF
+// 3.534292
+0x7FFFFFFF
+// 3.730641
+0x7FFFFFFF
+// 3.926991
+0x7FFFFFFF
+// 4.123340
+0x7FFFFFFF
+// 4.319690
+0x7FFFFFFF
+// 4.516039
+0x7FFFFFFF
+// 4.712389
+0x7FFFFFFF
+// 4.908739
+0x7FFFFFFF
+// 5.105088
+0x7FFFFFFF
+// 5.301438
+0x7FFFFFFF
+// 5.497787
+0x7FFFFFFF
+// 5.694137
+0x7FFFFFFF
+// 5.890486
+0x7FFFFFFF
+// 6.086836
+0x7FFFFFFF
+// 6.283185
+0x7FFFFFFF
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/OutputX5_q31.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/OutputX5_q31.txt
new file mode 100755
index 0000000..b59456b
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/OutputX5_q31.txt
@@ -0,0 +1,62 @@
+W
+30
+// -10.000000
+0x80000000
+// -9.000000
+0x80000000
+// -8.000000
+0x80000000
+// -7.000000
+0x80000000
+// -6.000000
+0x80000000
+// -5.000000
+0x80000000
+// -4.000000
+0x80000000
+// -3.000000
+0x80000000
+// -2.000000
+0x80000000
+// -1.000000
+0x80000000
+// 0.000000
+0x00000000
+// 1.000000
+0x7FFFFFFF
+// 2.000000
+0x7FFFFFFF
+// 3.000000
+0x7FFFFFFF
+// 4.000000
+0x7FFFFFFF
+// 5.000000
+0x7FFFFFFF
+// 6.000000
+0x7FFFFFFF
+// 7.000000
+0x7FFFFFFF
+// 8.000000
+0x7FFFFFFF
+// 9.000000
+0x7FFFFFFF
+// 10.000000
+0x7FFFFFFF
+// 11.000000
+0x7FFFFFFF
+// 12.000000
+0x7FFFFFFF
+// 13.000000
+0x7FFFFFFF
+// 14.000000
+0x7FFFFFFF
+// 15.000000
+0x7FFFFFFF
+// 16.000000
+0x7FFFFFFF
+// 17.000000
+0x7FFFFFFF
+// 18.000000
+0x7FFFFFFF
+// 19.000000
+0x7FFFFFFF
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/Reference3_q31.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/Reference3_q31.txt
new file mode 100755
index 0000000..ac4247b
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/Reference3_q31.txt
@@ -0,0 +1,42 @@
+W
+20
+// 0.000000
+0x00000000
+// 1.000000
+0x7FFFFFFF
+// 4.000000
+0x7FFFFFFF
+// 9.000000
+0x7FFFFFFF
+// 16.000000
+0x7FFFFFFF
+// 25.000000
+0x7FFFFFFF
+// 36.000000
+0x7FFFFFFF
+// 49.000000
+0x7FFFFFFF
+// 64.000000
+0x7FFFFFFF
+// 81.000000
+0x7FFFFFFF
+// 100.000000
+0x7FFFFFFF
+// 121.000000
+0x7FFFFFFF
+// 144.000000
+0x7FFFFFFF
+// 169.000000
+0x7FFFFFFF
+// 196.000000
+0x7FFFFFFF
+// 225.000000
+0x7FFFFFFF
+// 256.000000
+0x7FFFFFFF
+// 289.000000
+0x7FFFFFFF
+// 324.000000
+0x7FFFFFFF
+// 361.000000
+0x7FFFFFFF
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/Reference4_q31.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/Reference4_q31.txt
new file mode 100755
index 0000000..eb899f6
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/Reference4_q31.txt
@@ -0,0 +1,68 @@
+W
+33
+// 0.000000
+0x00000000
+// 0.194708
+0x18EC2D0B
+// 0.382243
+0x30ED543B
+// 0.555433
+0x47186FB4
+// 0.707107
+0x5A82799A
+// 0.830791
+0x6A575E21
+// 0.922816
+0x761ED1B7
+// 0.980209
+0x7D777AD8
+// 1.000000
+0x7FFFFFFF
+// 0.980209
+0x7D777AD8
+// 0.922816
+0x761ED1B7
+// 0.830791
+0x6A575E21
+// 0.707107
+0x5A82799A
+// 0.555433
+0x47186FB4
+// 0.382243
+0x30ED543B
+// 0.194708
+0x18EC2D0B
+// 0.000000
+0x00000000
+// -0.194708
+0xE713D2F5
+// -0.382243
+0xCF12ABC5
+// -0.555433
+0xB8E7904C
+// -0.707107
+0xA57D8666
+// -0.830791
+0x95A8A1DF
+// -0.922816
+0x89E12E49
+// -0.980209
+0x82888528
+// -1.000000
+0x80000000
+// -0.980209
+0x82888528
+// -0.922816
+0x89E12E49
+// -0.830791
+0x95A8A1DF
+// -0.707107
+0xA57D8666
+// -0.555433
+0xB8E7904C
+// -0.382243
+0xCF12ABC5
+// -0.194708
+0xE713D2F5
+// -0.000000
+0x00000000
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/Reference5_q31.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/Reference5_q31.txt
new file mode 100755
index 0000000..b59456b
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ31/Reference5_q31.txt
@@ -0,0 +1,62 @@
+W
+30
+// -10.000000
+0x80000000
+// -9.000000
+0x80000000
+// -8.000000
+0x80000000
+// -7.000000
+0x80000000
+// -6.000000
+0x80000000
+// -5.000000
+0x80000000
+// -4.000000
+0x80000000
+// -3.000000
+0x80000000
+// -2.000000
+0x80000000
+// -1.000000
+0x80000000
+// 0.000000
+0x00000000
+// 1.000000
+0x7FFFFFFF
+// 2.000000
+0x7FFFFFFF
+// 3.000000
+0x7FFFFFFF
+// 4.000000
+0x7FFFFFFF
+// 5.000000
+0x7FFFFFFF
+// 6.000000
+0x7FFFFFFF
+// 7.000000
+0x7FFFFFFF
+// 8.000000
+0x7FFFFFFF
+// 9.000000
+0x7FFFFFFF
+// 10.000000
+0x7FFFFFFF
+// 11.000000
+0x7FFFFFFF
+// 12.000000
+0x7FFFFFFF
+// 13.000000
+0x7FFFFFFF
+// 14.000000
+0x7FFFFFFF
+// 15.000000
+0x7FFFFFFF
+// 16.000000
+0x7FFFFFFF
+// 17.000000
+0x7FFFFFFF
+// 18.000000
+0x7FFFFFFF
+// 19.000000
+0x7FFFFFFF
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/InputX3_q7.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/InputX3_q7.txt
new file mode 100755
index 0000000..0b5e1a9
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/InputX3_q7.txt
@@ -0,0 +1,10 @@
+B
+4
+// 0.000000
+0x00
+// 3.000000
+0x7F
+// 10.000000
+0x7F
+// 20.000000
+0x7F
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/InputX4_q7.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/InputX4_q7.txt
new file mode 100755
index 0000000..cd73f03
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/InputX4_q7.txt
@@ -0,0 +1,20 @@
+B
+9
+// 0.000000
+0x00
+// 0.785398
+0x65
+// 1.570796
+0x7F
+// 2.356194
+0x7F
+// 3.141593
+0x7F
+// 3.926991
+0x7F
+// 4.712389
+0x7F
+// 5.497787
+0x7F
+// 6.283185
+0x7F
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/InputX5_q7.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/InputX5_q7.txt
new file mode 100755
index 0000000..ee179be
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/InputX5_q7.txt
@@ -0,0 +1,8 @@
+B
+3
+// 0.000000
+0x00
+// 3.000000
+0x7F
+// 10.000000
+0x7F
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/InputY3_q7.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/InputY3_q7.txt
new file mode 100755
index 0000000..eaab952
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/InputY3_q7.txt
@@ -0,0 +1,10 @@
+B
+4
+// 0.000000
+0x00
+// 9.000000
+0x7F
+// 100.000000
+0x7F
+// 400.000000
+0x7F
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/InputY4_q7.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/InputY4_q7.txt
new file mode 100755
index 0000000..2832194
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/InputY4_q7.txt
@@ -0,0 +1,20 @@
+B
+9
+// 0.000000
+0x00
+// 0.707107
+0x5B
+// 1.000000
+0x7F
+// 0.707107
+0x5B
+// 0.000000
+0x00
+// -0.707107
+0xA5
+// -1.000000
+0x80
+// -0.707107
+0xA5
+// -0.000000
+0x00
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/InputY5_q7.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/InputY5_q7.txt
new file mode 100755
index 0000000..ee179be
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/InputY5_q7.txt
@@ -0,0 +1,8 @@
+B
+3
+// 0.000000
+0x00
+// 3.000000
+0x7F
+// 10.000000
+0x7F
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/OutputX3_q7.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/OutputX3_q7.txt
new file mode 100755
index 0000000..1fdac21
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/OutputX3_q7.txt
@@ -0,0 +1,42 @@
+B
+20
+// 0.000000
+0x00
+// 1.000000
+0x7F
+// 2.000000
+0x7F
+// 3.000000
+0x7F
+// 4.000000
+0x7F
+// 5.000000
+0x7F
+// 6.000000
+0x7F
+// 7.000000
+0x7F
+// 8.000000
+0x7F
+// 9.000000
+0x7F
+// 10.000000
+0x7F
+// 11.000000
+0x7F
+// 12.000000
+0x7F
+// 13.000000
+0x7F
+// 14.000000
+0x7F
+// 15.000000
+0x7F
+// 16.000000
+0x7F
+// 17.000000
+0x7F
+// 18.000000
+0x7F
+// 19.000000
+0x7F
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/OutputX4_q7.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/OutputX4_q7.txt
new file mode 100755
index 0000000..0940e91
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/OutputX4_q7.txt
@@ -0,0 +1,68 @@
+B
+33
+// 0.000000
+0x00
+// 0.196350
+0x19
+// 0.392699
+0x32
+// 0.589049
+0x4B
+// 0.785398
+0x65
+// 0.981748
+0x7E
+// 1.178097
+0x7F
+// 1.374447
+0x7F
+// 1.570796
+0x7F
+// 1.767146
+0x7F
+// 1.963495
+0x7F
+// 2.159845
+0x7F
+// 2.356194
+0x7F
+// 2.552544
+0x7F
+// 2.748894
+0x7F
+// 2.945243
+0x7F
+// 3.141593
+0x7F
+// 3.337942
+0x7F
+// 3.534292
+0x7F
+// 3.730641
+0x7F
+// 3.926991
+0x7F
+// 4.123340
+0x7F
+// 4.319690
+0x7F
+// 4.516039
+0x7F
+// 4.712389
+0x7F
+// 4.908739
+0x7F
+// 5.105088
+0x7F
+// 5.301438
+0x7F
+// 5.497787
+0x7F
+// 5.694137
+0x7F
+// 5.890486
+0x7F
+// 6.086836
+0x7F
+// 6.283185
+0x7F
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/OutputX5_q7.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/OutputX5_q7.txt
new file mode 100755
index 0000000..7e1fcc5
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/OutputX5_q7.txt
@@ -0,0 +1,62 @@
+B
+30
+// -10.000000
+0x80
+// -9.000000
+0x80
+// -8.000000
+0x80
+// -7.000000
+0x80
+// -6.000000
+0x80
+// -5.000000
+0x80
+// -4.000000
+0x80
+// -3.000000
+0x80
+// -2.000000
+0x80
+// -1.000000
+0x80
+// 0.000000
+0x00
+// 1.000000
+0x7F
+// 2.000000
+0x7F
+// 3.000000
+0x7F
+// 4.000000
+0x7F
+// 5.000000
+0x7F
+// 6.000000
+0x7F
+// 7.000000
+0x7F
+// 8.000000
+0x7F
+// 9.000000
+0x7F
+// 10.000000
+0x7F
+// 11.000000
+0x7F
+// 12.000000
+0x7F
+// 13.000000
+0x7F
+// 14.000000
+0x7F
+// 15.000000
+0x7F
+// 16.000000
+0x7F
+// 17.000000
+0x7F
+// 18.000000
+0x7F
+// 19.000000
+0x7F
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/Reference3_q7.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/Reference3_q7.txt
new file mode 100755
index 0000000..885846c
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/Reference3_q7.txt
@@ -0,0 +1,42 @@
+B
+20
+// 0.000000
+0x00
+// 1.000000
+0x7F
+// 4.000000
+0x7F
+// 9.000000
+0x7F
+// 16.000000
+0x7F
+// 25.000000
+0x7F
+// 36.000000
+0x7F
+// 49.000000
+0x7F
+// 64.000000
+0x7F
+// 81.000000
+0x7F
+// 100.000000
+0x7F
+// 121.000000
+0x7F
+// 144.000000
+0x7F
+// 169.000000
+0x7F
+// 196.000000
+0x7F
+// 225.000000
+0x7F
+// 256.000000
+0x7F
+// 289.000000
+0x7F
+// 324.000000
+0x7F
+// 361.000000
+0x7F
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/Reference4_q7.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/Reference4_q7.txt
new file mode 100755
index 0000000..1a2cb7d
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/Reference4_q7.txt
@@ -0,0 +1,68 @@
+B
+33
+// 0.000000
+0x00
+// 0.194708
+0x19
+// 0.382243
+0x31
+// 0.555433
+0x47
+// 0.707107
+0x5B
+// 0.830791
+0x6A
+// 0.922816
+0x76
+// 0.980209
+0x7D
+// 1.000000
+0x7F
+// 0.980209
+0x7D
+// 0.922816
+0x76
+// 0.830791
+0x6A
+// 0.707107
+0x5B
+// 0.555433
+0x47
+// 0.382243
+0x31
+// 0.194708
+0x19
+// 0.000000
+0x00
+// -0.194708
+0xE7
+// -0.382243
+0xCF
+// -0.555433
+0xB9
+// -0.707107
+0xA5
+// -0.830791
+0x96
+// -0.922816
+0x8A
+// -0.980209
+0x83
+// -1.000000
+0x80
+// -0.980209
+0x83
+// -0.922816
+0x8A
+// -0.830791
+0x96
+// -0.707107
+0xA5
+// -0.555433
+0xB9
+// -0.382243
+0xCF
+// -0.194708
+0xE7
+// -0.000000
+0x00
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/Reference5_q7.txt b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/Reference5_q7.txt
new file mode 100755
index 0000000..7e1fcc5
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Interpolation/InterpolationQ7/Reference5_q7.txt
@@ -0,0 +1,62 @@
+B
+30
+// -10.000000
+0x80
+// -9.000000
+0x80
+// -8.000000
+0x80
+// -7.000000
+0x80
+// -6.000000
+0x80
+// -5.000000
+0x80
+// -4.000000
+0x80
+// -3.000000
+0x80
+// -2.000000
+0x80
+// -1.000000
+0x80
+// 0.000000
+0x00
+// 1.000000
+0x7F
+// 2.000000
+0x7F
+// 3.000000
+0x7F
+// 4.000000
+0x7F
+// 5.000000
+0x7F
+// 6.000000
+0x7F
+// 7.000000
+0x7F
+// 8.000000
+0x7F
+// 9.000000
+0x7F
+// 10.000000
+0x7F
+// 11.000000
+0x7F
+// 12.000000
+0x7F
+// 13.000000
+0x7F
+// 14.000000
+0x7F
+// 15.000000
+0x7F
+// 16.000000
+0x7F
+// 17.000000
+0x7F
+// 18.000000
+0x7F
+// 19.000000
+0x7F
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Input10_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Input10_f32.txt
index 8ce78cf..ec7d31c 100755
--- a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Input10_f32.txt
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Input10_f32.txt
@@ -1,34 +1,34 @@
 W
 16
-// -1.000000
-0xbf800000
-// -1.000000
-0xbf800000
-// -1.000000
-0xbf800000
-// -1.000000
-0xbf800000
-// -1.000000
-0xbf800000
-// -1.000000
-0xbf800000
-// -1.000000
-0xbf800000
-// -1.000000
-0xbf800000
-// -1.000000
-0xbf800000
-// -1.000000
-0xbf800000
-// -1.000000
-0xbf800000
-// -1.000000
-0xbf800000
-// -1.000000
-0xbf800000
-// -1.000000
-0xbf800000
-// -1.000000
-0xbf800000
-// -1.000000
-0xbf800000
+// 1.000000
+0x3f800000
+// 1.000000
+0x3f800000
+// 1.000000
+0x3f800000
+// 1.000000
+0x3f800000
+// 1.000000
+0x3f800000
+// 1.000000
+0x3f800000
+// 1.000000
+0x3f800000
+// 1.000000
+0x3f800000
+// 1.000000
+0x3f800000
+// 1.000000
+0x3f800000
+// 1.000000
+0x3f800000
+// 1.000000
+0x3f800000
+// 1.000000
+0x3f800000
+// 1.000000
+0x3f800000
+// 1.000000
+0x3f800000
+// 1.000000
+0x3f800000
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Input7_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Input7_f32.txt
index dd0a8b7..744213b 100755
--- a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Input7_f32.txt
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Input7_f32.txt
@@ -1,24 +1,24 @@
 W
 11
-// 0.196510
-0x3e4939fb
-// -0.160073
-0xbe23ea22
-// 0.154757
-0x3e1e78b0
-// 0.085278
-0x3daea625
-// 1.000000
-0x3f800000
-// 0.153024
-0x3e1cb268
-// -0.757268
-0xbf41dc56
-// 0.967152
-0x3f77973f
-// -0.263392
-0xbe86db59
-// 0.808825
-0x3f4f0f2d
-// 0.847350
-0x3f58ebe8
+// 0.271729
+0x3e8b2005
+// -0.243662
+0xbe79828d
+// 0.386758
+0x3ec60533
+// -0.401403
+0xbecd84a4
+// 0.435478
+0x3edef701
+// -0.507938
+0xbf020833
+// 0.340378
+0x3eae45f9
+// -0.159793
+0xbe23a0cf
+// 0.856819
+0x3f5b587c
+// -0.242069
+0xbe77e106
+// -1.000000
+0xbf800000
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Input8_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Input8_f32.txt
index 058cc30..ca7a471 100755
--- a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Input8_f32.txt
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Input8_f32.txt
@@ -1,34 +1,34 @@
 W
 16
-// 0.272934
-0x3e8bbdf2
-// 0.263077
-0x3e86b1fc
-// 0.276117
-0x3e8d5f44
-// -0.136462
-0xbe0bbcb2
-// -0.032389
-0xbd04aa5b
-// 0.233990
-0x3e6f9b30
-// 0.130938
-0x3e0614a0
-// 0.585066
-0x3f15c6df
-// 0.200989
-0x3e4dd012
-// 0.244771
-0x3e7aa548
-// 0.952649
-0x3f73e0cd
-// -0.561104
-0xbf0fa47e
-// -0.781507
-0xbf4810d2
-// -0.741939
-0xbf3defb2
+// -0.028535
+0xbce9c2a9
+// -0.196940
+0xbe49aaa6
+// 0.410710
+0x3ed24897
+// 0.371147
+0x3ebe06f3
+// -0.112872
+0xbde7297e
+// 0.560572
+0x3f0f81a4
+// 0.083191
+0x3daa5ff8
+// -0.059746
+0xbd74b8b1
+// -0.357912
+0xbeb7404b
+// -0.137212
+0xbe0c8154
 // -1.000000
 0xbf800000
-// -0.077287
-0xbd9e48bd
+// -0.604640
+0xbf1ac9af
+// -0.248773
+0xbe7ebe48
+// -0.294700
+0xbe96e2f3
+// 0.329742
+0x3ea8d3ec
+// 0.099999
+0x3dcccc3f
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Input9_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Input9_f32.txt
index 59a596a..16cee8f 100755
--- a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Input9_f32.txt
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Input9_f32.txt
@@ -1,66 +1,66 @@
 W
 32
-// -0.671100
-0xbf2bcd3a
-// 0.157387
-0x3e212a25
-// -0.301870
-0xbe9a8ea5
-// 0.111548
-0x3de47310
-// -0.262576
-0xbe86705a
-// -0.022293
-0xbcb6a09b
-// -0.304379
-0xbe9bd7a1
+// 0.113179
+0x3de7ca48
+// 0.258004
+0x3e841924
+// -0.557769
+0xbf0ec9ee
+// -0.071389
+0xbd9234a0
+// 0.210408
+0x3e57751c
+// 0.068800
+0x3d8ce6cb
+// -0.423400
+0xbed8c7f0
+// -0.041640
+0xbd2a8ea8
+// 0.232732
+0x3e6e514e
+// -0.494340
+0xbefd1a2a
+// -0.295269
+0xbe972d7a
 // -1.000000
 0xbf800000
-// -0.139833
-0xbe0f3050
-// 0.044617
-0x3d36c06f
-// 0.361301
-0x3eb8fc69
-// 0.355615
-0x3eb61331
-// 0.879412
-0x3f612126
-// -0.066838
-0xbd88e263
-// -0.670858
-0xbf2bbd54
-// 0.695614
-0x3f3213c5
-// -0.090902
-0xbdba2ac5
-// -0.641117
-0xbf242043
-// -0.340495
-0xbeae554d
-// 0.299376
-0x3e9947e0
-// -0.032292
-0xbd044441
-// 0.485722
-0x3ef8b082
-// -0.445902
-0xbee44d50
-// 0.031969
-0x3d02f265
-// -0.585107
-0xbf15c991
-// 0.199817
-0x3e4c9ce2
-// 0.330003
-0x3ea8f61b
-// -0.556014
-0xbf0e56f3
-// 0.245516
-0x3e7b68a0
-// -0.323425
-0xbea597f8
-// -0.020943
-0xbcab90e5
-// -0.333078
-0xbeaa892f
+// 0.102106
+0x3dd11d1c
+// -0.183680
+0xbe3c1689
+// -0.454721
+0xbee8d12a
+// 0.095637
+0x3dc3dd48
+// 0.403435
+0x3ece8f07
+// -0.201678
+0xbe4e84cb
+// 0.138395
+0x3e0db75f
+// 0.024585
+0x3cc96593
+// -0.504562
+0xbf012b00
+// -0.497395
+0xbefeaa91
+// 0.203530
+0x3e506a2c
+// 0.354779
+0x3eb5a5a2
+// -0.604422
+0xbf1abb67
+// 0.218870
+0x3e601f55
+// -0.120128
+0xbdf605d0
+// -0.253876
+0xbe81fc15
+// -0.516437
+0xbf043534
+// 0.047944
+0x3d446123
+// -0.525546
+0xbf068a30
+// 0.665710
+0x3f2a6bfa
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/InputX14_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/InputX14_f32.txt
deleted file mode 100755
index 2964bd0..0000000
--- a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/InputX14_f32.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-W
-6
-// 0.000000
-0x0
-// 1.000000
-0x3f800000
-// 2.000000
-0x40000000
-// 3.000000
-0x40400000
-// 4.000000
-0x40800000
-// 5.000000
-0x40a00000
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/InputY13_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/InputY13_f32.txt
deleted file mode 100755
index 55f2097..0000000
--- a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/InputY13_f32.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-W
-3
-// 0.000000
-0x0
-// 3.000000
-0x40400000
-// 10.000000
-0x41200000
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/InputY14_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/InputY14_f32.txt
deleted file mode 100755
index 3807ddc..0000000
--- a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/InputY14_f32.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-W
-6
-// 0.000000
-0x0
-// 0.841471
-0x3f576aa4
-// 0.909297
-0x3f68c7b7
-// 0.141120
-0x3e1081c3
-// -0.756802
-0xbf41bdcf
-// -0.958924
-0xbf757c10
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Inputs6_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Inputs6_f32.txt
old mode 100644
new mode 100755
index 9d8c5a0..6d2bb9e
--- a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Inputs6_f32.txt
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Inputs6_f32.txt
@@ -1,102 +1,102 @@
 W
 50
-// 0.881467
-0x3f61a7da
-// 0.613447
-0x3f1d0ae1
-// 0.178105
-0x3e366135
-// 0.341959
-0x3eaf153c
-// 0.670768
-0x3f2bb774
-// 0.219442
-0x3e60b549
-// 0.005211
-0x3baac1a7
-// 0.769833
-0x3f4513c6
-// 0.833547
-0x3f556351
-// 0.020118
-0x3ca4ce0e
-// 0.325963
-0x3ea6e4ad
-// 0.558958
-0x3f0f17dc
-// 0.064046
-0x3d832ac0
-// 0.972559
-0x3f78f9a1
-// 0.692844
-0x3f315e3b
-// 0.180405
-0x3e38bc16
-// 0.428224
-0x3edb4024
-// 0.641654
-0x3f244369
-// 0.987609
-0x3f7cd3f8
-// 0.143110
-0x3e128b57
-// 0.214624
-0x3e5bc646
-// 0.993039
-0x3f7e37cb
-// 0.391217
-0x3ec84d8f
-// 0.339640
-0x3eade552
-// 0.675030
-0x3f2cceca
-// 0.195765
-0x3e4876a7
-// 0.483213
-0x3ef767b0
-// 0.889455
-0x3f63b358
-// 0.821578
-0x3f5252ee
-// 0.710153
-0x3f35cc90
-// 0.318162
-0x3ea2e62a
-// 0.443699
-0x3ee32c8b
-// 0.060607
-0x3d783e9f
-// 0.009599
-0x3c1d4308
-// 0.909247
-0x3f68c46a
-// 0.330838
-0x3ea96393
-// 0.116719
-0x3def0a69
-// 0.278274
-0x3e8e79e3
-// 0.746043
-0x3f3efcae
-// 0.265176
-0x3e87c523
-// 0.295083
-0x3e97151f
-// 0.930287
-0x3f6e2749
-// 0.055681
-0x3d6411c3
-// 0.338054
-0x3ead156c
-// 0.800099
-0x3f4cd352
-// 0.826006
-0x3f53751e
-// 0.343602
-0x3eafeca7
-// 0.938186
-0x3f702cf6
-// 0.307252
-0x3e9d501f
-// 0.823238
-0x3f52bfbc
+// 0.479616
+0x3ef59039
+// 0.796642
+0x3f4bf0c0
+// 0.656731
+0x3f281f89
+// 0.039115
+0x3d203758
+// 0.104726
+0x3dd67aaa
+// 0.521169
+0x3f056b52
+// 0.133340
+0x3e088a37
+// 0.821146
+0x3f52369c
+// 0.045614
+0x3d3ad5fc
+// 0.673756
+0x3f2c7b41
+// 0.613082
+0x3f1cf2ea
+// 0.752941
+0x3f40c0c5
+// 0.263468
+0x3e86e548
+// 0.209447
+0x3e567964
+// 0.136164
+0x3e0b6eb2
+// 0.209981
+0x3e570544
+// 0.297225
+0x3e982de8
+// 0.649912
+0x3f26609f
+// 0.944460
+0x3f71c824
+// 0.077391
+0x3d9e7eeb
+// 0.050590
+0x3d4f374e
+// 0.711386
+0x3f361d6d
+// 0.765077
+0x3f43dc1a
+// 0.258879
+0x3e848bcc
+// 0.159390
+0x3e233709
+// 0.444515
+0x3ee39772
+// 0.224434
+0x3e65d216
+// 0.274359
+0x3e8c78d9
+// 0.201599
+0x3e4e7014
+// 0.129155
+0x3e04412c
+// 0.644039
+0x3f24dfc4
+// 0.266707
+0x3e888dc3
+// 0.015129
+0x3c77dec8
+// 0.518514
+0x3f04bd53
+// 0.787154
+0x3f4982ef
+// 0.970040
+0x3f785484
+// 0.206188
+0x3e5322d4
+// 0.285607
+0x3e923b13
+// 0.603514
+0x3f1a7fdd
+// 0.628540
+0x3f20e801
+// 0.513245
+0x3f036403
+// 0.205644
+0x3e529443
+// 0.765167
+0x3f43e1f5
+// 0.262648
+0x3e8679c1
+// 0.624860
+0x3f1ff6cd
+// 0.499948
+0x3efff938
+// 0.485869
+0x3ef8c3c2
+// 0.734151
+0x3f3bf153
+// 0.677252
+0x3f2d605f
+// 0.004172
+0x3b88b868
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Ref6_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Ref6_f32.txt
old mode 100644
new mode 100755
index 9810ad3..2cab4b2
--- a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Ref6_f32.txt
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Ref6_f32.txt
@@ -1,8 +1,8 @@
 W
 3
-// 0.634264
-0x3f225f21
-// 0.505303
-0x3f015b8e
-// 0.445157
-0x3ee3eba8
+// 0.611179
+0x3f1c763e
+// 0.411435
+0x3ed2a7ac
+// 0.459379
+0x3eeb33c8
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Reference10_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Reference10_f32.txt
index 8ce78cf..ec7d31c 100755
--- a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Reference10_f32.txt
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Reference10_f32.txt
@@ -1,34 +1,34 @@
 W
 16
-// -1.000000
-0xbf800000
-// -1.000000
-0xbf800000
-// -1.000000
-0xbf800000
-// -1.000000
-0xbf800000
-// -1.000000
-0xbf800000
-// -1.000000
-0xbf800000
-// -1.000000
-0xbf800000
-// -1.000000
-0xbf800000
-// -1.000000
-0xbf800000
-// -1.000000
-0xbf800000
-// -1.000000
-0xbf800000
-// -1.000000
-0xbf800000
-// -1.000000
-0xbf800000
-// -1.000000
-0xbf800000
-// -1.000000
-0xbf800000
-// -1.000000
-0xbf800000
+// 1.000000
+0x3f800000
+// 1.000000
+0x3f800000
+// 1.000000
+0x3f800000
+// 1.000000
+0x3f800000
+// 1.000000
+0x3f800000
+// 1.000000
+0x3f800000
+// 1.000000
+0x3f800000
+// 1.000000
+0x3f800000
+// 1.000000
+0x3f800000
+// 1.000000
+0x3f800000
+// 1.000000
+0x3f800000
+// 1.000000
+0x3f800000
+// 1.000000
+0x3f800000
+// 1.000000
+0x3f800000
+// 1.000000
+0x3f800000
+// 1.000000
+0x3f800000
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Reference13_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Reference13_f32.txt
deleted file mode 100755
index 2d58511..0000000
--- a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Reference13_f32.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-W
-30
-// -10.000000
-0xc1200000
-// -9.000000
-0xc1100000
-// -8.000000
-0xc1000000
-// -7.000000
-0xc0e00000
-// -6.000000
-0xc0c00000
-// -5.000000
-0xc0a00000
-// -4.000000
-0xc0800000
-// -3.000000
-0xc0400000
-// -2.000000
-0xc0000000
-// -1.000000
-0xbf800000
-// 0.000000
-0x0
-// 1.000000
-0x3f800000
-// 2.000000
-0x40000000
-// 3.000000
-0x40400000
-// 4.000000
-0x40800000
-// 5.000000
-0x40a00000
-// 6.000000
-0x40c00000
-// 7.000000
-0x40e00000
-// 8.000000
-0x41000000
-// 9.000000
-0x41100000
-// 10.000000
-0x41200000
-// 11.000000
-0x41300000
-// 12.000000
-0x41400000
-// 13.000000
-0x41500000
-// 14.000000
-0x41600000
-// 15.000000
-0x41700000
-// 16.000000
-0x41800000
-// 17.000000
-0x41880000
-// 18.000000
-0x41900000
-// 19.000000
-0x41980000
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Reference7_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Reference7_f32.txt
index 17289eb..14d4947 100755
--- a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Reference7_f32.txt
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Reference7_f32.txt
@@ -1,24 +1,24 @@
 W
 11
-// -0.757268
-0xbf41dc56
-// -0.263392
-0xbe86db59
-// -0.160073
-0xbe23ea22
-// 0.085278
-0x3daea625
-// 0.153024
-0x3e1cb268
-// 0.154757
-0x3e1e78b0
-// 0.196510
-0x3e4939fb
-// 0.808825
-0x3f4f0f2d
-// 0.847350
-0x3f58ebe8
-// 0.967152
-0x3f77973f
-// 1.000000
-0x3f800000
+// -1.000000
+0xbf800000
+// -0.507938
+0xbf020833
+// -0.401403
+0xbecd84a4
+// -0.243662
+0xbe79828d
+// -0.242069
+0xbe77e106
+// -0.159793
+0xbe23a0cf
+// 0.271729
+0x3e8b2005
+// 0.340378
+0x3eae45f9
+// 0.386758
+0x3ec60533
+// 0.435478
+0x3edef701
+// 0.856819
+0x3f5b587c
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Reference8_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Reference8_f32.txt
index 9032aa4..07c8719 100755
--- a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Reference8_f32.txt
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Reference8_f32.txt
@@ -2,33 +2,33 @@
 16
 // -1.000000
 0xbf800000
-// -0.781507
-0xbf4810d2
-// -0.741939
-0xbf3defb2
-// -0.561104
-0xbf0fa47e
-// -0.136462
-0xbe0bbcb2
-// -0.077287
-0xbd9e48bd
-// -0.032389
-0xbd04aa5b
-// 0.130938
-0x3e0614a0
-// 0.200989
-0x3e4dd012
-// 0.233990
-0x3e6f9b30
-// 0.244771
-0x3e7aa548
-// 0.263077
-0x3e86b1fc
-// 0.272934
-0x3e8bbdf2
-// 0.276117
-0x3e8d5f44
-// 0.585066
-0x3f15c6df
-// 0.952649
-0x3f73e0cd
+// -0.604640
+0xbf1ac9af
+// -0.357912
+0xbeb7404b
+// -0.294700
+0xbe96e2f3
+// -0.248773
+0xbe7ebe48
+// -0.196940
+0xbe49aaa6
+// -0.137212
+0xbe0c8154
+// -0.112872
+0xbde7297e
+// -0.059746
+0xbd74b8b1
+// -0.028535
+0xbce9c2a9
+// 0.083191
+0x3daa5ff8
+// 0.099999
+0x3dcccc3f
+// 0.329742
+0x3ea8d3ec
+// 0.371147
+0x3ebe06f3
+// 0.410710
+0x3ed24897
+// 0.560572
+0x3f0f81a4
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Reference9_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Reference9_f32.txt
index e1d1e3d..d114ab6 100755
--- a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Reference9_f32.txt
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Reference9_f32.txt
@@ -2,65 +2,65 @@
 32
 // -1.000000
 0xbf800000
-// -0.671100
-0xbf2bcd3a
-// -0.670858
-0xbf2bbd54
-// -0.641117
-0xbf242043
-// -0.585107
-0xbf15c991
-// -0.556014
-0xbf0e56f3
-// -0.445902
-0xbee44d50
-// -0.340495
-0xbeae554d
-// -0.333078
-0xbeaa892f
-// -0.323425
-0xbea597f8
-// -0.304379
-0xbe9bd7a1
-// -0.301870
-0xbe9a8ea5
-// -0.262576
-0xbe86705a
-// -0.139833
-0xbe0f3050
-// -0.090902
-0xbdba2ac5
-// -0.066838
-0xbd88e263
-// -0.032292
-0xbd044441
-// -0.022293
-0xbcb6a09b
-// -0.020943
-0xbcab90e5
-// 0.031969
-0x3d02f265
-// 0.044617
-0x3d36c06f
-// 0.111548
-0x3de47310
-// 0.157387
-0x3e212a25
-// 0.199817
-0x3e4c9ce2
-// 0.245516
-0x3e7b68a0
-// 0.299376
-0x3e9947e0
-// 0.330003
-0x3ea8f61b
-// 0.355615
-0x3eb61331
-// 0.361301
-0x3eb8fc69
-// 0.485722
-0x3ef8b082
-// 0.695614
-0x3f3213c5
-// 0.879412
-0x3f612126
+// -0.604422
+0xbf1abb67
+// -0.557769
+0xbf0ec9ee
+// -0.525546
+0xbf068a30
+// -0.516437
+0xbf043534
+// -0.504562
+0xbf012b00
+// -0.497395
+0xbefeaa91
+// -0.494340
+0xbefd1a2a
+// -0.454721
+0xbee8d12a
+// -0.423400
+0xbed8c7f0
+// -0.295269
+0xbe972d7a
+// -0.253876
+0xbe81fc15
+// -0.201678
+0xbe4e84cb
+// -0.183680
+0xbe3c1689
+// -0.120128
+0xbdf605d0
+// -0.071389
+0xbd9234a0
+// -0.041640
+0xbd2a8ea8
+// 0.024585
+0x3cc96593
+// 0.047944
+0x3d446123
+// 0.068800
+0x3d8ce6cb
+// 0.095637
+0x3dc3dd48
+// 0.102106
+0x3dd11d1c
+// 0.113179
+0x3de7ca48
+// 0.138395
+0x3e0db75f
+// 0.203530
+0x3e506a2c
+// 0.210408
+0x3e57751c
+// 0.218870
+0x3e601f55
+// 0.232732
+0x3e6e514e
+// 0.258004
+0x3e841924
+// 0.354779
+0x3eb5a5a2
+// 0.403435
+0x3ece8f07
+// 0.665710
+0x3f2a6bfa
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Samples1_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Samples1_f32.txt
old mode 100644
new mode 100755
index 4f80ab1..cb95ac7
--- a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Samples1_f32.txt
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Samples1_f32.txt
@@ -1,514 +1,514 @@
 W
 256
-// 0.311464
-0x3e9f783f
-// 0.814349
-0x3f507929
-// 0.964792
-0x3f76fc98
-// 0.749657
-0x3f3fe988
-// 0.920540
-0x3f6ba888
-// 0.859487
-0x3f5c075c
-// 0.895278
-0x3f6530f7
-// 0.394840
-0x3eca2872
-// 0.310312
-0x3e9ee131
-// 0.935591
-0x3f6f82e0
-// 0.933943
-0x3f6f16e5
-// 0.110409
-0x3de21e06
-// 0.077296
-0x3d9e4d30
-// 0.163980
-0x3e27ea69
-// 0.027479
-0x3ce11c5c
-// 0.549362
-0x3f0ca2f9
-// 0.887761
-0x3f634454
-// 0.398807
-0x3ecc306d
-// 0.925034
-0x3f6ccf0a
-// 0.754441
-0x3f41230e
-// 0.756075
-0x3f418e1f
-// 0.958261
-0x3f755094
-// 0.465294
-0x3eee3b13
-// 0.282563
-0x3e90ac19
-// 0.454649
-0x3ee8c7b6
-// 0.475274
-0x3ef3570d
-// 0.807780
-0x3f4ecab1
-// 0.810743
-0x3f4f8cd7
-// 0.821368
-0x3f524528
-// 0.738624
-0x3f3d166f
-// 0.375387
-0x3ec032b2
-// 0.339052
-0x3ead983b
-// 0.182220
-0x3e3a97d2
-// 0.406085
-0x3ecfea6a
-// 0.066662
-0x3d88864d
-// 0.974345
-0x3f796eb2
-// 0.426469
-0x3eda5a2b
-// 0.172626
-0x3e30c4c2
-// 0.226558
-0x3e67febd
-// 0.997138
-0x3f7f446d
-// 0.504847
-0x3f013d9f
-// 0.257237
-0x3e83b49d
-// 0.876855
-0x3f607999
-// 0.744461
-0x3f3e9502
-// 0.396795
-0x3ecb28b6
-// 0.939501
-0x3f70831b
-// 0.855848
-0x3f5b18e3
-// 0.102450
-0x3dd1d17c
-// 0.512752
-0x3f0343bd
-// 0.332515
-0x3eaa3f78
-// 0.501637
-0x3f006b49
-// 0.318001
-0x3ea2d104
-// 0.989605
-0x3f7d56c7
-// 0.973289
-0x3f79297a
-// 0.758678
-0x3f4238ba
-// 0.419313
-0x3ed6b039
-// 0.569148
-0x3f11b3ab
-// 0.025680
-0x3cd25eb2
-// 0.999827
-0x3f7ff4a9
-// 0.584569
-0x3f15a656
-// 0.849761
-0x3f5989f6
-// 0.457575
-0x3eea474a
-// 0.345882
-0x3eb11775
-// 0.560748
-0x3f0f8d26
-// 0.324579
-0x3ea62f37
-// 0.161193
-0x3e250fc9
-// 0.350431
-0x3eb36bab
-// 0.227318
-0x3e68c621
-// 0.712231
-0x3f3654bd
-// 0.572139
-0x3f1277ab
-// 0.792871
-0x3f4af99b
-// 0.899735
-0x3f66550a
-// 0.826600
-0x3f539c0f
-// 0.760153
-0x3f429962
-// 0.005478
-0x3bb37dbf
-// 0.942023
-0x3f71286c
-// 0.935003
-0x3f6f5c53
-// 0.205823
-0x3e52c352
-// 0.713469
-0x3f36a5e0
-// 0.099191
-0x3dcb24ab
-// 0.206620
-0x3e53943b
-// 0.146340
-0x3e15da21
-// 0.768677
-0x3f44c805
-// 0.498409
-0x3eff2f7a
-// 0.301729
-0x3e9a7c30
-// 0.992834
-0x3f7e2a56
-// 0.501500
-0x3f006251
-// 0.023187
-0x3cbdf22c
-// 0.571564
-0x3f1251fe
-// 0.686802
-0x3f2fd244
-// 0.262772
-0x3e868a17
-// 0.889681
-0x3f63c22a
-// 0.549300
-0x3f0c9eee
-// 0.881421
-0x3f61a4cc
-// 0.184671
-0x3e3d1a77
-// 0.325892
-0x3ea6db4b
-// 0.439596
-0x3ee112b5
-// 0.691554
-0x3f3109ae
-// 0.509125
-0x3f0255fd
-// 0.951995
-0x3f73b5f3
-// 0.484734
-0x3ef82f09
-// 0.494498
-0x3efd2ee2
-// 0.756076
-0x3f418e36
-// 0.274260
-0x3e8c6bd0
-// 0.945468
-0x3f720a35
-// 0.079106
-0x3da20232
-// 0.222502
-0x3e63d79e
-// 0.635894
-0x3f22c9fa
-// 0.112813
-0x3de70abe
-// 0.169612
-0x3e2daedb
-// 0.381125
-0x3ec322c4
-// 0.132813
-0x3e08000f
-// 0.795690
-0x3f4bb252
-// 0.279502
-0x3e8f1aee
-// 0.415884
-0x3ed4eec5
-// 0.592733
-0x3f17bd5f
-// 0.526419
-0x3f06c369
-// 0.488508
-0x3efa1daf
-// 0.268644
-0x3e898bc4
-// 0.827715
-0x3f53e527
-// 0.137878
-0x3e0d2ff2
-// 0.362534
-0x3eb99e19
-// 0.422338
-0x3ed83ca3
-// 0.183790
-0x3e3c336f
-// 0.049460
-0x3d4a9619
-// 0.264901
-0x3e87a11c
-// 0.383215
-0x3ec434cb
-// 0.250466
-0x3e803d1f
-// 0.148965
-0x3e188a3c
-// 0.057600
-0x3d6bee56
-// 0.841497
-0x3f576c59
-// 0.598408
-0x3f193141
-// 0.206148
-0x3e531859
-// 0.395092
-0x3eca4978
-// 0.036152
-0x3d14144d
-// 0.035879
-0x3d12f59c
-// 0.705383
-0x3f3493f8
-// 0.375554
-0x3ec0489d
-// 0.223015
-0x3e645e2c
-// 0.906621
-0x3f68184c
-// 0.944744
-0x3f71dac0
-// 0.217778
-0x3e5f0153
-// 0.884764
-0x3f627fe9
-// 0.125270
-0x3e0046dc
-// 0.725813
-0x3f39ceea
-// 0.443286
-0x3ee2f65e
-// 0.918821
-0x3f6b37d6
-// 0.074048
-0x3d97a672
-// 0.632751
-0x3f21fbfa
-// 0.594298
-0x3f1823e9
-// 0.652884
-0x3f272365
-// 0.204446
-0x3e515a64
-// 0.709676
-0x3f35ad59
-// 0.451558
-0x3ee732a1
-// 0.133535
-0x3e08bd5f
-// 0.389315
-0x3ec7543d
-// 0.219234
-0x3e607efa
-// 0.343534
-0x3eafe3a6
-// 0.964000
-0x3f76c8b0
-// 0.168341
-0x3e2c61a8
-// 0.597837
-0x3f190bde
-// 0.104713
-0x3dd67387
-// 0.604241
-0x3f1aaf85
-// 0.693053
-0x3f316be6
-// 0.639880
-0x3f23cf2a
-// 0.097347
-0x3dc75e18
-// 0.565491
-0x3f10c40b
-// 0.676698
-0x3f2d3c1a
-// 0.936617
-0x3f6fc629
-// 0.074029
-0x3d979cb4
-// 0.112188
-0x3de5c2c4
-// 0.156309
-0x3e200f92
-// 0.466392
-0x3eeecaf2
-// 0.664904
-0x3f2a3723
-// 0.148683
-0x3e18406d
-// 0.180067
-0x3e386364
-// 0.174089
-0x3e324448
-// 0.762244
-0x3f432273
-// 0.608866
-0x3f1bdeac
-// 0.777870
-0x3f472278
-// 0.306665
-0x3e9d0342
-// 0.937415
-0x3f6ffa6d
-// 0.093322
-0x3dbf1f60
-// 0.591256
-0x3f175c89
-// 0.602836
-0x3f1a536e
-// 0.715381
-0x3f372330
-// 0.540957
-0x3f0a7c29
-// 0.488833
-0x3efa4852
-// 0.193635
-0x3e464849
-// 0.371707
-0x3ebe5056
-// 0.418380
-0x3ed635da
-// 0.413141
-0x3ed3873e
-// 0.078147
-0x3da00b51
-// 0.561133
-0x3f0fa663
-// 0.085707
-0x3daf870b
-// 0.056919
-0x3d692367
-// 0.129227
-0x3e045422
-// 0.145953
-0x3e1574d1
-// 0.816711
-0x3f5113f3
-// 0.902338
-0x3f66ff9f
-// 0.672674
-0x3f2c3457
-// 0.867854
-0x3f5e2bac
-// 0.444524
-0x3ee398aa
-// 0.483182
-0x3ef7639c
-// 0.116483
-0x3dee8e79
-// 0.896066
-0x3f656492
-// 0.464976
-0x3eee1156
-// 0.237816
-0x3e738622
-// 0.544608
-0x3f0b6b70
-// 0.308408
-0x3e9de7aa
-// 0.264958
-0x3e87a892
-// 0.727365
-0x3f3a349c
-// 0.237600
-0x3e734d83
-// 0.998704
-0x3f7fab0a
-// 0.380284
-0x3ec2b48d
-// 0.231462
-0x3e6d0449
-// 0.085902
-0x3dafed24
+// 0.245705
+0x3e7b9a11
+// 0.761938
+0x3f430e64
+// 0.981964
+0x3f7b61f8
+// 0.742585
+0x3f3e1a0a
+// 0.565131
+0x3f10ac73
+// 0.805666
+0x3f4e4019
+// 0.397309
+0x3ecb6c1a
+// 0.362971
+0x3eb9d756
+// 0.436356
+0x3edf6a04
+// 0.195741
+0x3e48703f
+// 0.546248
+0x3f0bd6e4
+// 0.701406
+0x3f338f5b
+// 0.674982
+0x3f2ccba0
+// 0.995812
+0x3f7eed8c
+// 0.752738
+0x3f40b36d
+// 0.762369
+0x3f432aa2
+// 0.746045
+0x3f3efcd1
+// 0.317086
+0x3ea25922
+// 0.578217
+0x3f14060b
+// 0.616763
+0x3f1de431
+// 0.693276
+0x3f317a8d
+// 0.320198
+0x3ea3f0f8
+// 0.918477
+0x3f6b2154
+// 0.318981
+0x3ea3518a
+// 0.560404
+0x3f0f769f
+// 0.715781
+0x3f373d6b
+// 0.325314
+0x3ea68f81
+// 0.875466
+0x3f601e8c
+// 0.971581
+0x3f78b988
+// 0.822843
+0x3f52a5df
+// 0.585406
+0x3f15dd31
+// 0.787242
+0x3f4988ae
+// 0.297300
+0x3e9837b4
+// 0.705312
+0x3f348f53
+// 0.068622
+0x3d8c8987
+// 0.112350
+0x3de61780
+// 0.031097
+0x3cfebf74
+// 0.752535
+0x3f40a628
+// 0.831836
+0x3f54f32d
+// 0.633166
+0x3f22172a
+// 0.356045
+0x3eb64b7b
+// 0.326036
+0x3ea6ee22
+// 0.614708
+0x3f1d5d84
+// 0.129206
+0x3e044e85
+// 0.376641
+0x3ec0d710
+// 0.078894
+0x3da19337
+// 0.203207
+0x3e50157d
+// 0.554196
+0x3f0ddfcc
+// 0.318317
+0x3ea2fa79
+// 0.603198
+0x3f1a6b2c
+// 0.984224
+0x3f7bf622
+// 0.041311
+0x3d293569
+// 0.973413
+0x3f793192
+// 0.976103
+0x3f79e1e6
+// 0.143794
+0x3e133ea4
+// 0.446938
+0x3ee4d509
+// 0.878375
+0x3f60dd33
+// 0.200822
+0x3e4da42e
+// 0.997835
+0x3f7f7220
+// 0.527091
+0x3f06ef6b
+// 0.048026
+0x3d44b6c3
+// 0.654793
+0x3f27a083
+// 0.789079
+0x3f4a011d
+// 0.872005
+0x3f5f3bb8
+// 0.642333
+0x3f246fea
+// 0.928206
+0x3f6d9eee
+// 0.700788
+0x3f3366da
+// 0.388072
+0x3ec6b168
+// 0.608143
+0x3f1baf3f
+// 0.571287
+0x3f123fde
+// 0.890827
+0x3f640d40
+// 0.657595
+0x3f285823
+// 0.910253
+0x3f69065c
+// 0.665658
+0x3f2a688d
+// 0.586800
+0x3f163881
+// 0.511547
+0x3f02f4c1
+// 0.053479
+0x3d5b0d1c
+// 0.651600
+0x3f26cf42
+// 0.005214
+0x3baad7d3
+// 0.691574
+0x3f310aff
+// 0.980061
+0x3f7ae54d
+// 0.341575
+0x3eaee2eb
+// 0.892984
+0x3f649a9b
+// 0.971098
+0x3f7899e8
+// 0.145172
+0x3e14a802
+// 0.118294
+0x3df24408
+// 0.272396
+0x3e8b7772
+// 0.515324
+0x3f03ec48
+// 0.559056
+0x3f0f1e48
+// 0.675538
+0x3f2cf012
+// 0.151216
+0x3e1ad83d
+// 0.372440
+0x3ebeb070
+// 0.725762
+0x3f39cb89
+// 0.139923
+0x3e0f4811
+// 0.790378
+0x3f4a5631
+// 0.115179
+0x3debe2e7
+// 0.732751
+0x3f3b9597
+// 0.577567
+0x3f13db6d
+// 0.684250
+0x3f2f2b0a
+// 0.655837
+0x3f27e4f3
+// 0.032292
+0x3d04450a
+// 0.505108
+0x3f014ebb
+// 0.683665
+0x3f2f04aa
+// 0.968466
+0x3f77ed6b
+// 0.334678
+0x3eab5ae1
+// 0.743037
+0x3f3e37b0
+// 0.850433
+0x3f59b5fe
+// 0.112254
+0x3de5e5a3
+// 0.111186
+0x3de3b577
+// 0.625406
+0x3f201a9b
+// 0.920380
+0x3f6b9e07
+// 0.910587
+0x3f691c38
+// 0.857903
+0x3f5b9f86
+// 0.026959
+0x3cdcd883
+// 0.927741
+0x3f6d8069
+// 0.652471
+0x3f27085a
+// 0.088959
+0x3db6301f
+// 0.838929
+0x3f56c40d
+// 0.382501
+0x3ec3d730
+// 0.973743
+0x3f79473c
+// 0.994434
+0x3f7e9340
+// 0.915909
+0x3f6a7909
+// 0.858539
+0x3f5bc938
+// 0.601251
+0x3f19eb93
+// 0.350413
+0x3eb3694e
+// 0.059547
+0x3d73e79b
+// 0.778670
+0x3f4756ef
+// 0.011581
+0x3c3dc003
+// 0.916889
+0x3f6ab939
+// 0.422482
+0x3ed84f90
+// 0.524757
+0x3f065672
+// 0.961285
+0x3f7616bf
+// 0.838116
+0x3f568ecb
+// 0.635292
+0x3f22a281
+// 0.974690
+0x3f798544
+// 0.223461
+0x3e64d2de
+// 0.514066
+0x3f0399d9
+// 0.424767
+0x3ed97b16
+// 0.665550
+0x3f2a617a
+// 0.269270
+0x3e89ddcd
+// 0.849624
+0x3f5980f2
+// 0.593872
+0x3f1807f7
+// 0.170973
+0x3e2f1399
+// 0.165958
+0x3e29f0da
+// 0.982704
+0x3f7b9281
+// 0.596413
+0x3f18ae83
+// 0.449301
+0x3ee60acc
+// 0.571839
+0x3f12640c
+// 0.255695
+0x3e82ea80
+// 0.312150
+0x3e9fd222
+// 0.601308
+0x3f19ef56
+// 0.798377
+0x3f4c626d
+// 0.501464
+0x3f005ff0
+// 0.004285
+0x3b8c6612
+// 0.980429
+0x3f7afd64
+// 0.158966
+0x3e22c7f8
+// 0.192237
+0x3e44d9dc
+// 0.082656
+0x3da9476f
+// 0.133982
+0x3e093299
+// 0.952128
+0x3f73bea9
+// 0.536099
+0x3f093dc1
+// 0.922068
+0x3f6c0ca4
+// 0.131912
+0x3e071409
+// 0.137311
+0x3e0c9b5c
+// 0.900122
+0x3f666e66
+// 0.990011
+0x3f7d715b
+// 0.359926
+0x3eb8482d
+// 0.368617
+0x3ebcbb5e
+// 0.960072
+0x3f75c74f
+// 0.150415
+0x3e1a0659
+// 0.483621
+0x3ef79d1d
+// 0.316440
+0x3ea20474
+// 0.934148
+0x3f6f244f
+// 0.897459
+0x3f65bfe5
+// 0.278544
+0x3e8e9d43
+// 0.084173
+0x3dac62f5
+// 0.237940
+0x3e73a68b
+// 0.346281
+0x3eb14bb9
+// 0.944648
+0x3f71d474
+// 0.949603
+0x3f73192c
+// 0.119669
+0x3df514f1
+// 0.557375
+0x3f0eb020
+// 0.148449
+0x3e1802e3
+// 0.188463
+0x3e40fc53
+// 0.928893
+0x3f6dcbf1
+// 0.749652
+0x3f3fe92d
+// 0.689590
+0x3f3088fc
+// 0.243198
+0x3e7908f9
+// 0.310656
+0x3e9f0e3f
+// 0.850749
+0x3f59caaa
+// 0.945258
+0x3f71fc6b
+// 0.128894
+0x3e03fcb0
+// 0.276316
+0x3e8d795a
+// 0.419582
+0x3ed6d370
+// 0.185013
+0x3e3d741b
+// 0.524990
+0x3f0665c5
+// 0.128635
+0x3e03b8dc
+// 0.381665
+0x3ec36989
+// 0.189414
+0x3e41f5bc
+// 0.672176
+0x3f2c13bd
+// 0.563809
+0x3f1055c4
+// 0.135520
+0x3e0ac5c1
+// 0.995287
+0x3f7ecb1f
+// 0.871529
+0x3f5f1c86
+// 0.547929
+0x3f0c4517
+// 0.006156
+0x3bc9b4af
+// 0.775767
+0x3f4698a8
+// 0.219576
+0x3e60d888
+// 0.801606
+0x3f4d360b
+// 0.978165
+0x3f7a6908
+// 0.331828
+0x3ea9e568
+// 0.828769
+0x3f542a35
+// 0.840307
+0x3f571e54
+// 0.834455
+0x3f559ed1
+// 0.194817
+0x3e477e0f
+// 0.095059
+0x3dc2ae2c
+// 0.536612
+0x3f095f6d
+// 0.927268
+0x3f6d6176
+// 0.263892
+0x3e871cd8
+// 0.475127
+0x3ef343da
+// 0.586474
+0x3f162322
+// 0.296115
+0x3e979c68
+// 0.732476
+0x3f3b8387
+// 0.230045
+0x3e6b90ec
+// 0.699392
+0x3f330b5d
+// 0.537520
+0x3f099ae2
+// 0.580789
+0x3f14ae97
+// 0.972248
+0x3f78e53d
+// 0.394553
+0x3eca02ea
+// 0.379203
+0x3ec226f4
+// 0.385159
+0x3ec53384
+// 0.502242
+0x3f0092e6
+// 0.135404
+0x3e0aa741
+// 0.172509
+0x3e30a639
+// 0.374612
+0x3ebfcd1f
+// 0.780952
+0x3f47ec72
+// 0.102299
+0x3dd181e3
+// 0.812945
+0x3f501d2e
+// 0.377814
+0x3ec170d6
+// 0.707240
+0x3f350dac
+// 0.259067
+0x3e84a472
+// 0.719298
+0x3f3823eb
+// 0.723671
+0x3f394286
+// 0.034828
+0x3d0ea782
+// 0.375823
+0x3ec06bda
+// 0.951140
+0x3f737deb
+// 0.813619
+0x3f50494f
+// 0.382914
+0x3ec40d59
+// 0.098950
+0x3dcaa663
+// 0.775250
+0x3f4676c9
+// 0.321155
+0x3ea46e6a
+// 0.616229
+0x3f1dc12a
+// 0.496707
+0x3efe5066
+// 0.924855
+0x3f6cc34a
+// 0.634966
+0x3f228d22
 // 1.000000
 0x3f800000
-// 0.886497
-0x3f62f171
-// 0.314000
-0x3ea0c497
-// 0.006694
-0x3bdb571a
-// 0.146117
-0x3e159f9d
-// 0.837186
-0x3f5651cd
-// 0.539199
-0x3f0a08f7
-// 0.052712
-0x3d57e856
-// 0.120008
-0x3df5c6c1
-// 0.469465
-0x3ef05dc6
-// 0.625592
-0x3f2026d3
-// 0.940813
-0x3f70d920
-// 0.312325
-0x3e9fe911
-// 0.992701
-0x3f7e21a6
-// 0.216793
-0x3e5dfeed
-// 0.840487
-0x3f572a2a
-// 0.983659
-0x3f7bd10f
-// 0.640823
-0x3f240cf6
-// 0.772204
-0x3f45af22
-// 0.569779
-0x3f11dd11
-// 0.395524
-0x3eca821c
-// 0.645209
-0x3f252c63
-// 0.502327
-0x3f009881
-// 0.271636
-0x3e8b13e4
-// 0.630360
-0x3f215f48
-// 0.912727
-0x3f69a872
-// 0.574745
-0x3f13227a
-// 0.949312
-0x3f73061b
-// 0.148133
-0x3e17b00c
-// 0.717625
-0x3f37b64b
-// 0.735682
-0x3f3c55aa
-// 0.999369
-0x3f7fd6ad
-// 0.552908
-0x3f0d8b61
-// 0.201162
-0x3e4dfd7b
-// 0.301104
-0x3e9a2a5e
-// 0.149861
-0x3e19753a
-// 0.024789
-0x3ccb1258
-// 0.317677
-0x3ea2a695
-// 0.979017
-0x3f7aa0d8
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Samples3_q15.txt b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Samples3_q15.txt
old mode 100644
new mode 100755
index 4d571f9..6bcba11
--- a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Samples3_q15.txt
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Samples3_q15.txt
@@ -1,514 +1,514 @@
 H
 256
-// 0.311464
-0x27DE
-// 0.814349
-0x683D
-// 0.964792
-0x7B7E
-// 0.749657
-0x5FF5
-// 0.920540
-0x75D4
-// 0.859487
-0x6E04
-// 0.895278
-0x7298
-// 0.394840
-0x328A
-// 0.310312
-0x27B8
-// 0.935591
-0x77C1
-// 0.933943
-0x778B
-// 0.110409
-0x0E22
-// 0.077296
-0x09E5
-// 0.163980
-0x14FD
-// 0.027479
-0x0384
-// 0.549362
-0x4651
-// 0.887761
-0x71A2
-// 0.398807
-0x330C
-// 0.925034
-0x7668
-// 0.754441
-0x6092
-// 0.756075
-0x60C7
-// 0.958261
-0x7AA8
-// 0.465294
-0x3B8F
-// 0.282563
-0x242B
-// 0.454649
-0x3A32
-// 0.475274
-0x3CD6
-// 0.807780
-0x6765
-// 0.810743
-0x67C6
-// 0.821368
-0x6923
-// 0.738624
-0x5E8B
-// 0.375387
-0x300D
-// 0.339052
-0x2B66
-// 0.182220
-0x1753
-// 0.406085
-0x33FB
-// 0.066662
-0x0888
-// 0.974345
-0x7CB7
-// 0.426469
-0x3697
-// 0.172626
-0x1619
-// 0.226558
-0x1D00
-// 0.997138
-0x7FA2
-// 0.504847
-0x409F
-// 0.257237
-0x20ED
-// 0.876855
-0x703D
-// 0.744461
-0x5F4B
-// 0.396795
-0x32CA
-// 0.939501
-0x7842
-// 0.855848
-0x6D8C
-// 0.102450
-0x0D1D
-// 0.512752
-0x41A2
-// 0.332515
-0x2A90
-// 0.501637
-0x4036
-// 0.318001
-0x28B4
-// 0.989605
-0x7EAB
-// 0.973289
-0x7C95
-// 0.758678
-0x611C
-// 0.419313
-0x35AC
-// 0.569148
-0x48DA
-// 0.025680
-0x0349
-// 0.999827
-0x7FFA
-// 0.584569
-0x4AD3
-// 0.849761
-0x6CC5
-// 0.457575
-0x3A92
-// 0.345882
-0x2C46
-// 0.560748
-0x47C7
-// 0.324579
-0x298C
-// 0.161193
-0x14A2
-// 0.350431
-0x2CDB
-// 0.227318
-0x1D19
-// 0.712231
-0x5B2A
-// 0.572139
-0x493C
-// 0.792871
-0x657D
-// 0.899735
-0x732B
-// 0.826600
-0x69CE
-// 0.760153
-0x614D
-// 0.005478
-0x00B3
-// 0.942023
-0x7894
-// 0.935003
-0x77AE
-// 0.205823
-0x1A58
-// 0.713469
-0x5B53
-// 0.099191
-0x0CB2
-// 0.206620
-0x1A73
-// 0.146340
-0x12BB
-// 0.768677
-0x6264
-// 0.498409
-0x3FCC
-// 0.301729
-0x269F
-// 0.992834
-0x7F15
-// 0.501500
-0x4031
-// 0.023187
-0x02F8
-// 0.571564
-0x4929
-// 0.686802
-0x57E9
-// 0.262772
-0x21A3
-// 0.889681
-0x71E1
-// 0.549300
-0x464F
-// 0.881421
-0x70D2
-// 0.184671
-0x17A3
-// 0.325892
-0x29B7
-// 0.439596
-0x3845
-// 0.691554
+// 0.245705
+0x1F73
+// 0.761938
+0x6187
+// 0.981964
+0x7DB1
+// 0.742585
+0x5F0D
+// 0.565131
+0x4856
+// 0.805666
+0x6720
+// 0.397309
+0x32DB
+// 0.362971
+0x2E76
+// 0.436356
+0x37DB
+// 0.195741
+0x190E
+// 0.546248
+0x45EB
+// 0.701406
+0x59C8
+// 0.674982
+0x5666
+// 0.995812
+0x7F77
+// 0.752738
+0x605A
+// 0.762369
+0x6195
+// 0.746045
+0x5F7E
+// 0.317086
+0x2896
+// 0.578217
+0x4A03
+// 0.616763
+0x4EF2
+// 0.693276
+0x58BD
+// 0.320198
+0x28FC
+// 0.918477
+0x7591
+// 0.318981
+0x28D4
+// 0.560404
+0x47BB
+// 0.715781
+0x5B9F
+// 0.325314
+0x29A4
+// 0.875466
+0x700F
+// 0.971581
+0x7C5D
+// 0.822843
+0x6953
+// 0.585406
+0x4AEF
+// 0.787242
+0x64C4
+// 0.297300
+0x260E
+// 0.705312
+0x5A48
+// 0.068622
+0x08C9
+// 0.112350
+0x0E61
+// 0.031097
+0x03FB
+// 0.752535
+0x6053
+// 0.831836
+0x6A7A
+// 0.633166
+0x510C
+// 0.356045
+0x2D93
+// 0.326036
+0x29BC
+// 0.614708
+0x4EAF
+// 0.129206
+0x108A
+// 0.376641
+0x3036
+// 0.078894
+0x0A19
+// 0.203207
+0x1A03
+// 0.554196
+0x46F0
+// 0.318317
+0x28BF
+// 0.603198
+0x4D36
+// 0.984224
+0x7DFB
+// 0.041311
+0x054A
+// 0.973413
+0x7C99
+// 0.976103
+0x7CF1
+// 0.143794
+0x1268
+// 0.446938
+0x3935
+// 0.878375
+0x706F
+// 0.200822
+0x19B5
+// 0.997835
+0x7FB9
+// 0.527091
+0x4378
+// 0.048026
+0x0626
+// 0.654793
+0x53D0
+// 0.789079
+0x6501
+// 0.872005
+0x6F9E
+// 0.642333
+0x5238
+// 0.928206
+0x76CF
+// 0.700788
+0x59B3
+// 0.388072
+0x31AC
+// 0.608143
+0x4DD8
+// 0.571287
+0x4920
+// 0.890827
+0x7207
+// 0.657595
+0x542C
+// 0.910253
+0x7483
+// 0.665658
+0x5534
+// 0.586800
+0x4B1C
+// 0.511547
+0x417A
+// 0.053479
+0x06D8
+// 0.651600
+0x5368
+// 0.005214
+0x00AB
+// 0.691574
 0x5885
-// 0.509125
-0x412B
-// 0.951995
-0x79DB
-// 0.484734
-0x3E0C
-// 0.494498
-0x3F4C
-// 0.756076
-0x60C7
-// 0.274260
-0x231B
-// 0.945468
-0x7905
-// 0.079106
-0x0A20
-// 0.222502
-0x1C7B
-// 0.635894
-0x5165
-// 0.112813
-0x0E71
-// 0.169612
-0x15B6
-// 0.381125
-0x30C9
-// 0.132813
-0x1100
-// 0.795690
-0x65D9
-// 0.279502
-0x23C7
-// 0.415884
-0x353C
-// 0.592733
-0x4BDF
-// 0.526419
-0x4362
-// 0.488508
-0x3E87
-// 0.268644
-0x2263
-// 0.827715
-0x69F3
-// 0.137878
-0x11A6
-// 0.362534
-0x2E68
-// 0.422338
-0x360F
-// 0.183790
-0x1786
-// 0.049460
-0x0655
-// 0.264901
-0x21E8
-// 0.383215
-0x310D
-// 0.250466
-0x200F
-// 0.148965
-0x1311
-// 0.057600
-0x075F
-// 0.841497
-0x6BB6
-// 0.598408
-0x4C99
-// 0.206148
-0x1A63
-// 0.395092
-0x3292
-// 0.036152
-0x04A1
-// 0.035879
-0x0498
-// 0.705383
-0x5A4A
-// 0.375554
-0x3012
-// 0.223015
-0x1C8C
-// 0.906621
-0x740C
-// 0.944744
-0x78ED
-// 0.217778
-0x1BE0
-// 0.884764
-0x7140
-// 0.125270
-0x1009
-// 0.725813
-0x5CE7
-// 0.443286
-0x38BE
-// 0.918821
-0x759C
-// 0.074048
-0x097A
-// 0.632751
-0x50FE
-// 0.594298
-0x4C12
-// 0.652884
-0x5392
-// 0.204446
-0x1A2B
-// 0.709676
-0x5AD7
-// 0.451558
-0x39CD
-// 0.133535
-0x1118
-// 0.389315
-0x31D5
-// 0.219234
-0x1C10
-// 0.343534
-0x2BF9
-// 0.964000
-0x7B64
-// 0.168341
-0x158C
-// 0.597837
-0x4C86
-// 0.104713
-0x0D67
-// 0.604241
-0x4D58
-// 0.693053
-0x58B6
-// 0.639880
-0x51E8
-// 0.097347
-0x0C76
-// 0.565491
-0x4862
-// 0.676698
-0x569E
-// 0.936617
-0x77E3
-// 0.074029
-0x097A
-// 0.112188
-0x0E5C
-// 0.156309
-0x1402
-// 0.466392
-0x3BB3
-// 0.664904
-0x551C
-// 0.148683
-0x1308
-// 0.180067
-0x170C
-// 0.174089
-0x1649
-// 0.762244
-0x6191
-// 0.608866
-0x4DEF
-// 0.777870
-0x6391
-// 0.306665
-0x2741
-// 0.937415
-0x77FD
-// 0.093322
-0x0BF2
-// 0.591256
-0x4BAE
-// 0.602836
-0x4D2A
-// 0.715381
-0x5B92
-// 0.540957
-0x453E
-// 0.488833
-0x3E92
-// 0.193635
-0x18C9
-// 0.371707
-0x2F94
-// 0.418380
-0x358D
-// 0.413141
-0x34E2
-// 0.078147
-0x0A01
-// 0.561133
-0x47D3
-// 0.085707
-0x0AF8
-// 0.056919
-0x0749
-// 0.129227
-0x108B
-// 0.145953
-0x12AF
-// 0.816711
-0x688A
-// 0.902338
-0x7380
-// 0.672674
-0x561A
-// 0.867854
-0x6F16
-// 0.444524
-0x38E6
-// 0.483182
-0x3DD9
-// 0.116483
-0x0EE9
-// 0.896066
-0x72B2
-// 0.464976
-0x3B84
-// 0.237816
-0x1E71
-// 0.544608
-0x45B6
-// 0.308408
-0x277A
-// 0.264958
-0x21EA
-// 0.727365
-0x5D1A
-// 0.237600
-0x1E6A
-// 0.998704
-0x7FD6
-// 0.380284
-0x30AD
-// 0.231462
-0x1DA1
-// 0.085902
-0x0AFF
+// 0.980061
+0x7D73
+// 0.341575
+0x2BB9
+// 0.892984
+0x724D
+// 0.971098
+0x7C4D
+// 0.145172
+0x1295
+// 0.118294
+0x0F24
+// 0.272396
+0x22DE
+// 0.515324
+0x41F6
+// 0.559056
+0x478F
+// 0.675538
+0x5678
+// 0.151216
+0x135B
+// 0.372440
+0x2FAC
+// 0.725762
+0x5CE6
+// 0.139923
+0x11E9
+// 0.790378
+0x652B
+// 0.115179
+0x0EBE
+// 0.732751
+0x5DCB
+// 0.577567
+0x49EE
+// 0.684250
+0x5796
+// 0.655837
+0x53F2
+// 0.032292
+0x0422
+// 0.505108
+0x40A7
+// 0.683665
+0x5782
+// 0.968466
+0x7BF7
+// 0.334678
+0x2AD7
+// 0.743037
+0x5F1C
+// 0.850433
+0x6CDB
+// 0.112254
+0x0E5E
+// 0.111186
+0x0E3B
+// 0.625406
+0x500D
+// 0.920380
+0x75CF
+// 0.910587
+0x748E
+// 0.857903
+0x6DD0
+// 0.026959
+0x0373
+// 0.927741
+0x76C0
+// 0.652471
+0x5384
+// 0.088959
+0x0B63
+// 0.838929
+0x6B62
+// 0.382501
+0x30F6
+// 0.973743
+0x7CA4
+// 0.994434
+0x7F4A
+// 0.915909
+0x753D
+// 0.858539
+0x6DE5
+// 0.601251
+0x4CF6
+// 0.350413
+0x2CDA
+// 0.059547
+0x079F
+// 0.778670
+0x63AB
+// 0.011581
+0x017C
+// 0.916889
+0x755D
+// 0.422482
+0x3614
+// 0.524757
+0x432B
+// 0.961285
+0x7B0B
+// 0.838116
+0x6B47
+// 0.635292
+0x5151
+// 0.974690
+0x7CC3
+// 0.223461
+0x1C9A
+// 0.514066
+0x41CD
+// 0.424767
+0x365F
+// 0.665550
+0x5531
+// 0.269270
+0x2277
+// 0.849624
+0x6CC0
+// 0.593872
+0x4C04
+// 0.170973
+0x15E2
+// 0.165958
+0x153E
+// 0.982704
+0x7DC9
+// 0.596413
+0x4C57
+// 0.449301
+0x3983
+// 0.571839
+0x4932
+// 0.255695
+0x20BB
+// 0.312150
+0x27F5
+// 0.601308
+0x4CF8
+// 0.798377
+0x6631
+// 0.501464
+0x4030
+// 0.004285
+0x008C
+// 0.980429
+0x7D7F
+// 0.158966
+0x1459
+// 0.192237
+0x189B
+// 0.082656
+0x0A94
+// 0.133982
+0x1126
+// 0.952128
+0x79DF
+// 0.536099
+0x449F
+// 0.922068
+0x7606
+// 0.131912
+0x10E3
+// 0.137311
+0x1193
+// 0.900122
+0x7337
+// 0.990011
+0x7EB9
+// 0.359926
+0x2E12
+// 0.368617
+0x2F2F
+// 0.960072
+0x7AE4
+// 0.150415
+0x1341
+// 0.483621
+0x3DE7
+// 0.316440
+0x2881
+// 0.934148
+0x7792
+// 0.897459
+0x72E0
+// 0.278544
+0x23A7
+// 0.084173
+0x0AC6
+// 0.237940
+0x1E75
+// 0.346281
+0x2C53
+// 0.944648
+0x78EA
+// 0.949603
+0x798D
+// 0.119669
+0x0F51
+// 0.557375
+0x4758
+// 0.148449
+0x1300
+// 0.188463
+0x1820
+// 0.928893
+0x76E6
+// 0.749652
+0x5FF5
+// 0.689590
+0x5844
+// 0.243198
+0x1F21
+// 0.310656
+0x27C4
+// 0.850749
+0x6CE5
+// 0.945258
+0x78FE
+// 0.128894
+0x1080
+// 0.276316
+0x235E
+// 0.419582
+0x35B5
+// 0.185013
+0x17AF
+// 0.524990
+0x4333
+// 0.128635
+0x1077
+// 0.381665
+0x30DA
+// 0.189414
+0x183F
+// 0.672176
+0x560A
+// 0.563809
+0x482B
+// 0.135520
+0x1159
+// 0.995287
+0x7F66
+// 0.871529
+0x6F8E
+// 0.547929
+0x4623
+// 0.006156
+0x00CA
+// 0.775767
+0x634C
+// 0.219576
+0x1C1B
+// 0.801606
+0x669B
+// 0.978165
+0x7D35
+// 0.331828
+0x2A79
+// 0.828769
+0x6A15
+// 0.840307
+0x6B8F
+// 0.834455
+0x6ACF
+// 0.194817
+0x18F0
+// 0.095059
+0x0C2B
+// 0.536612
+0x44B0
+// 0.927268
+0x76B1
+// 0.263892
+0x21C7
+// 0.475127
+0x3CD1
+// 0.586474
+0x4B12
+// 0.296115
+0x25E7
+// 0.732476
+0x5DC2
+// 0.230045
+0x1D72
+// 0.699392
+0x5986
+// 0.537520
+0x44CD
+// 0.580789
+0x4A57
+// 0.972248
+0x7C73
+// 0.394553
+0x3281
+// 0.379203
+0x308A
+// 0.385159
+0x314D
+// 0.502242
+0x4049
+// 0.135404
+0x1155
+// 0.172509
+0x1615
+// 0.374612
+0x2FF3
+// 0.780952
+0x63F6
+// 0.102299
+0x0D18
+// 0.812945
+0x680F
+// 0.377814
+0x305C
+// 0.707240
+0x5A87
+// 0.259067
+0x2129
+// 0.719298
+0x5C12
+// 0.723671
+0x5CA1
+// 0.034828
+0x0475
+// 0.375823
+0x301B
+// 0.951140
+0x79BF
+// 0.813619
+0x6825
+// 0.382914
+0x3103
+// 0.098950
+0x0CAA
+// 0.775250
+0x633B
+// 0.321155
+0x291C
+// 0.616229
+0x4EE1
+// 0.496707
+0x3F94
+// 0.924855
+0x7662
+// 0.634966
+0x5147
 // 1.000000
 0x7FFF
-// 0.886497
-0x7179
-// 0.314000
-0x2831
-// 0.006694
-0x00DB
-// 0.146117
-0x12B4
-// 0.837186
-0x6B29
-// 0.539199
-0x4504
-// 0.052712
-0x06BF
-// 0.120008
-0x0F5C
-// 0.469465
-0x3C17
-// 0.625592
-0x5013
-// 0.940813
-0x786D
-// 0.312325
-0x27FA
-// 0.992701
-0x7F11
-// 0.216793
-0x1BC0
-// 0.840487
-0x6B95
-// 0.983659
-0x7DE9
-// 0.640823
-0x5206
-// 0.772204
-0x62D8
-// 0.569779
-0x48EF
-// 0.395524
-0x32A1
-// 0.645209
-0x5296
-// 0.502327
-0x404C
-// 0.271636
-0x22C5
-// 0.630360
-0x50B0
-// 0.912727
-0x74D4
-// 0.574745
-0x4991
-// 0.949312
-0x7983
-// 0.148133
-0x12F6
-// 0.717625
-0x5BDB
-// 0.735682
-0x5E2B
-// 0.999369
-0x7FEB
-// 0.552908
-0x46C6
-// 0.201162
-0x19C0
-// 0.301104
-0x268B
-// 0.149861
-0x132F
-// 0.024789
-0x032C
-// 0.317677
-0x28AA
-// 0.979017
-0x7D50
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Samples4_q31.txt b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Samples4_q31.txt
old mode 100644
new mode 100755
index f429406..9f87b9a
--- a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Samples4_q31.txt
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Samples4_q31.txt
@@ -1,514 +1,514 @@
 W
 256
-// 0.311464
-0x27DE0FCE
-// 0.814349
-0x683C9468
-// 0.964792
-0x7B7E4BEE
-// 0.749657
-0x5FF4C3D7
-// 0.920540
-0x75D443C4
-// 0.859487
-0x6E03ADEF
-// 0.895278
-0x72987B80
-// 0.394840
-0x328A1C70
-// 0.310312
-0x27B84C37
-// 0.935591
-0x77C16FE0
-// 0.933943
-0x778B7293
-// 0.110409
-0x0E21E060
-// 0.077296
-0x09E4D304
-// 0.163980
-0x14FD4D26
-// 0.027479
-0x03847171
-// 0.549362
-0x46517C6A
-// 0.887761
-0x71A229F3
-// 0.398807
-0x330C1B36
-// 0.925034
-0x76678531
-// 0.754441
-0x609186E3
-// 0.756075
-0x60C70F92
-// 0.958261
-0x7AA849C5
-// 0.465294
-0x3B8EC4B1
-// 0.282563
-0x242B0622
-// 0.454649
-0x3A31ED65
-// 0.475274
-0x3CD5C324
-// 0.807780
-0x67655882
-// 0.810743
-0x67C66BBF
-// 0.821368
-0x692293C2
-// 0.738624
-0x5E8B3781
-// 0.375387
-0x300CAC64
-// 0.339052
-0x2B660ECD
-// 0.182220
-0x1752FA47
-// 0.406085
-0x33FA9A88
-// 0.066662
-0x088864CB
-// 0.974345
-0x7CB758DA
-// 0.426469
-0x36968AC0
-// 0.172626
-0x16189843
-// 0.226558
-0x1CFFD795
-// 0.997138
-0x7FA23671
-// 0.504847
-0x409ECF8E
-// 0.257237
-0x20ED273B
-// 0.876855
-0x703CCC99
-// 0.744461
-0x5F4A80D2
-// 0.396795
-0x32CA2D96
-// 0.939501
-0x78418D94
-// 0.855848
-0x6D8C7158
-// 0.102450
-0x0D1D17C2
-// 0.512752
-0x41A1DEB3
-// 0.332515
-0x2A8FDE11
-// 0.501637
-0x4035A4AA
-// 0.318001
-0x28B44100
-// 0.989605
-0x7EAB63A2
-// 0.973289
-0x7C94BCCA
-// 0.758678
-0x611C5D3E
-// 0.419313
-0x35AC0E23
-// 0.569148
-0x48D9D54D
-// 0.025680
-0x03497AC7
-// 0.999827
-0x7FFA5468
-// 0.584569
-0x4AD32B2B
-// 0.849761
-0x6CC4FB1C
-// 0.457575
-0x3A91D262
-// 0.345882
-0x2C45DD28
-// 0.560748
-0x47C6931F
-// 0.324579
-0x298BCDB5
-// 0.161193
-0x14A1F920
-// 0.350431
-0x2CDAEAD1
-// 0.227318
-0x1D18C413
-// 0.712231
-0x5B2A5E88
-// 0.572139
-0x493BD5A9
-// 0.792871
-0x657CCD64
-// 0.899735
-0x732A8533
-// 0.826600
-0x69CE0761
-// 0.760153
-0x614CB0FE
-// 0.005478
-0x00B37DBF
-// 0.942023
-0x789435DA
-// 0.935003
-0x77AE29BC
-// 0.205823
-0x1A586A44
-// 0.713469
-0x5B52F029
-// 0.099191
-0x0CB24AB3
-// 0.206620
-0x1A728768
-// 0.146340
-0x12BB4430
-// 0.768677
-0x62640272
-// 0.498409
-0x3FCBDE7F
-// 0.301729
-0x269F0BFA
-// 0.992834
-0x7F152B19
-// 0.501500
-0x40312882
-// 0.023187
-0x02F7C8B2
-// 0.571564
-0x4928FF22
-// 0.686802
-0x57E921DB
-// 0.262772
-0x21A285D5
-// 0.889681
-0x71E11513
-// 0.549300
-0x464F7737
-// 0.881421
-0x70D265EC
-// 0.184671
-0x17A34EE0
-// 0.325892
-0x29B6D2BE
-// 0.439596
-0x3844AD4A
-// 0.691554
-0x5884D734
-// 0.509125
-0x412AFE7F
-// 0.951995
-0x79DAF95D
-// 0.484734
-0x3E0BC247
-// 0.494498
-0x3F4BB891
-// 0.756076
-0x60C71B14
-// 0.274260
-0x231AF410
-// 0.945468
-0x79051A58
-// 0.079106
-0x0A202325
-// 0.222502
-0x1C7AF3CE
-// 0.635894
-0x5164FD18
-// 0.112813
-0x0E70ABDE
-// 0.169612
-0x15B5DB5F
-// 0.381125
-0x30C8B0EE
-// 0.132813
-0x110001E9
-// 0.795690
-0x65D928FE
-// 0.279502
-0x23C6BB91
-// 0.415884
-0x353BB130
-// 0.592733
-0x4BDEAF7A
-// 0.526419
-0x4361B470
-// 0.488508
-0x3E876BBB
-// 0.268644
-0x2262F0FE
-// 0.827715
-0x69F293A1
-// 0.137878
-0x11A5FE48
-// 0.362534
-0x2E67863B
-// 0.422338
-0x360F28DE
-// 0.183790
-0x17866DD7
-// 0.049460
-0x0654B0CA
-// 0.264901
-0x21E84711
-// 0.383215
-0x310D32A5
-// 0.250466
-0x200F47C8
-// 0.148965
-0x13114774
-// 0.057600
-0x075F72B4
-// 0.841497
-0x6BB62C8A
-// 0.598408
-0x4C98A061
-// 0.206148
-0x1A630B30
-// 0.395092
-0x32925DEC
-// 0.036152
-0x04A0A267
-// 0.035879
-0x0497ACDE
-// 0.705383
-0x5A49FC16
-// 0.375554
-0x30122734
-// 0.223015
-0x1C8BC57C
-// 0.906621
-0x740C25EA
-// 0.944744
-0x78ED6024
-// 0.217778
-0x1BE02A5B
-// 0.884764
-0x713FF4A2
-// 0.125270
-0x1008DB7B
-// 0.725813
-0x5CE774D1
-// 0.443286
-0x38BD977C
-// 0.918821
-0x759BEB06
-// 0.074048
-0x097A6722
-// 0.632751
-0x50FDFCD8
-// 0.594298
-0x4C11F4BE
-// 0.652884
-0x5391B25D
-// 0.204446
-0x1A2B4C89
-// 0.709676
-0x5AD6AC56
-// 0.451558
-0x39CCA844
-// 0.133535
-0x1117ABE9
-// 0.389315
-0x31D50F57
-// 0.219234
-0x1C0FDF40
-// 0.343534
-0x2BF8E961
-// 0.964000
-0x7B6457C0
-// 0.168341
-0x158C3507
-// 0.597837
-0x4C85EF31
-// 0.104713
-0x0D67386C
-// 0.604241
-0x4D57C28C
-// 0.693053
-0x58B5F334
-// 0.639880
-0x51E794E3
-// 0.097347
-0x0C75E178
-// 0.565491
-0x486205A5
-// 0.676698
-0x569E0CC1
-// 0.936617
-0x77E31461
-// 0.074029
-0x0979CB41
-// 0.112188
-0x0E5C2C42
-// 0.156309
-0x1401F235
-// 0.466392
-0x3BB2BC76
-// 0.664904
-0x551B9160
-// 0.148683
-0x13080DA1
-// 0.180067
-0x170C6C73
-// 0.174089
-0x164888F1
-// 0.762244
-0x61913989
-// 0.608866
-0x4DEF5637
-// 0.777870
-0x63913C0D
-// 0.306665
-0x2740D07A
-// 0.937415
-0x77FD3653
-// 0.093322
-0x0BF1F606
-// 0.591256
-0x4BAE448F
-// 0.602836
-0x4D29B71C
-// 0.715381
-0x5B9197E8
-// 0.540957
-0x453E1463
-// 0.488833
-0x3E92149B
-// 0.193635
-0x18C90928
-// 0.371707
-0x2F94158D
-// 0.418380
-0x358D7670
-// 0.413141
-0x34E1CF75
-// 0.078147
-0x0A00B510
-// 0.561133
-0x47D331B4
-// 0.085707
-0x0AF870AD
-// 0.056919
-0x07491B35
-// 0.129227
-0x108A843B
-// 0.145953
-0x12AE9A25
-// 0.816711
-0x6889F95A
-// 0.902338
-0x737FCF9F
-// 0.672674
-0x561A2BBC
-// 0.867854
-0x6F15D5C5
-// 0.444524
-0x38E62A69
-// 0.483182
-0x3DD8E71F
-// 0.116483
-0x0EE8E78E
-// 0.896066
-0x72B24913
-// 0.464976
-0x3B84559C
-// 0.237816
-0x1E70C44B
-// 0.544608
-0x45B5B7D3
-// 0.308408
-0x2779EA69
-// 0.264958
-0x21EA2466
-// 0.727365
-0x5D1A4DCC
-// 0.237600
-0x1E69B05D
-// 0.998704
-0x7FD584D8
-// 0.380284
-0x30AD233A
-// 0.231462
-0x1DA08922
-// 0.085902
-0x0AFED23D
+// 0.245705
+0x1F734226
+// 0.761938
+0x618731DC
+// 0.981964
+0x7DB0FBEB
+// 0.742585
+0x5F0D0508
+// 0.565131
+0x48563944
+// 0.805666
+0x67200CAB
+// 0.397309
+0x32DB0685
+// 0.362971
+0x2E75D568
+// 0.436356
+0x37DA80F9
+// 0.195741
+0x190E07DD
+// 0.546248
+0x45EB71ED
+// 0.701406
+0x59C7AD50
+// 0.674982
+0x5665CFE0
+// 0.995812
+0x7F76C5C5
+// 0.752738
+0x6059B69C
+// 0.762369
+0x61955104
+// 0.746045
+0x5F7E6885
+// 0.317086
+0x28964887
+// 0.578217
+0x4A03057F
+// 0.616763
+0x4EF21858
+// 0.693276
+0x58BD469F
+// 0.320198
+0x28FC3DF2
+// 0.918477
+0x7590A9D6
+// 0.318981
+0x28D4628A
+// 0.560404
+0x47BB4F53
+// 0.715781
+0x5B9EB56F
+// 0.325314
+0x29A3E03E
+// 0.875466
+0x700F45D1
+// 0.971581
+0x7C5CC410
+// 0.822843
+0x6952EF47
+// 0.585406
+0x4AEE9857
+// 0.787242
+0x64C45711
+// 0.297300
+0x260DECE5
+// 0.705312
+0x5A47A942
+// 0.068622
+0x08C89876
+// 0.112350
+0x0E6177FF
+// 0.031097
+0x03FAFDD1
+// 0.752535
+0x605313C2
+// 0.831836
+0x6A79965A
+// 0.633166
+0x510B9535
+// 0.356045
+0x2D92DEDE
+// 0.326036
+0x29BB8892
+// 0.614708
+0x4EAEC208
+// 0.129206
+0x1089D0AD
+// 0.376641
+0x3035C40F
+// 0.078894
+0x0A193378
+// 0.203207
+0x1A02AF95
+// 0.554196
+0x46EFE5C6
+// 0.318317
+0x28BE9E52
+// 0.603198
+0x4D3595D9
+// 0.984224
+0x7DFB1100
+// 0.041311
+0x0549AB47
+// 0.973413
+0x7C98C90C
+// 0.976103
+0x7CF0F32D
+// 0.143794
+0x1267D482
+// 0.446938
+0x39354238
+// 0.878375
+0x706E996D
+// 0.200822
+0x19B485B7
+// 0.997835
+0x7FB91033
+// 0.527091
+0x4377B598
+// 0.048026
+0x0625B617
+// 0.654793
+0x53D04177
+// 0.789079
+0x65008E8E
+// 0.872005
+0x6F9DDC13
+// 0.642333
+0x5237F50F
+// 0.928206
+0x76CF771D
+// 0.700788
+0x59B36D2E
+// 0.388072
+0x31AC5A11
+// 0.608143
+0x4DD79FB6
+// 0.571287
+0x491FEECD
+// 0.890827
+0x7206A018
+// 0.657595
+0x542C1144
+// 0.910253
+0x74832DFD
+// 0.665658
+0x55344642
+// 0.586800
+0x4B1C40A4
+// 0.511547
+0x417A6061
+// 0.053479
+0x06D868E0
+// 0.651600
+0x5367A0C9
+// 0.005214
+0x00AAD7D3
+// 0.691574
+0x58857FBC
+// 0.980061
+0x7D72A6B1
+// 0.341575
+0x2BB8BABD
+// 0.892984
+0x724D4DB7
+// 0.971098
+0x7C4CF3D4
+// 0.145172
+0x12950030
+// 0.118294
+0x0F244080
+// 0.272396
+0x22DDDC99
+// 0.515324
+0x41F62434
+// 0.559056
+0x478F2409
+// 0.675538
+0x567808C9
+// 0.151216
+0x135B079F
+// 0.372440
+0x2FAC1C0E
+// 0.725762
+0x5CE5C4AC
+// 0.139923
+0x11E90218
+// 0.790378
+0x652B18A6
+// 0.115179
+0x0EBE2E6E
+// 0.732751
+0x5DCACB8B
+// 0.577567
+0x49EDB6B6
+// 0.684250
+0x579584EF
+// 0.655837
+0x53F2794B
+// 0.032292
+0x04222852
+// 0.505108
+0x40A75D90
+// 0.683665
+0x5782552A
+// 0.968466
+0x7BF6B5AC
+// 0.334678
+0x2AD6B82D
+// 0.743037
+0x5F1BD83D
+// 0.850433
+0x6CDAFF3C
+// 0.112254
+0x0E5E5A38
+// 0.111186
+0x0E3B576E
+// 0.625406
+0x500D4D67
+// 0.920380
+0x75CF0379
+// 0.910587
+0x748E1C24
+// 0.857903
+0x6DCFC2C9
+// 0.026959
+0x0373620B
+// 0.927741
+0x76C034C0
+// 0.652471
+0x53842D09
+// 0.088959
+0x0B6301EB
+// 0.838929
+0x6B620642
+// 0.382501
+0x30F5CC0B
+// 0.973743
+0x7CA39E36
+// 0.994434
+0x7F49A009
+// 0.915909
+0x753C844A
+// 0.858539
+0x6DE49BEB
+// 0.601251
+0x4CF5C95D
+// 0.350413
+0x2CDA5375
+// 0.059547
+0x079F3CD5
+// 0.778670
+0x63AB778A
+// 0.011581
+0x017B8006
+// 0.916889
+0x755C9C83
+// 0.422482
+0x3613E404
+// 0.524757
+0x432B38DB
+// 0.961285
+0x7B0B5F84
+// 0.838116
+0x6B47654B
+// 0.635292
+0x5151405B
+// 0.974690
+0x7CC2A1E3
+// 0.223461
+0x1C9A5BCE
+// 0.514066
+0x41CCECBF
+// 0.424767
+0x365EC596
+// 0.665550
+0x5530BCF6
+// 0.269270
+0x22777328
+// 0.849624
+0x6CC078F9
+// 0.593872
+0x4C03FB6B
+// 0.170973
+0x15E27321
+// 0.165958
+0x153E1B33
+// 0.982704
+0x7DC9407B
+// 0.596413
+0x4C5741BE
+// 0.449301
+0x3982B31C
+// 0.571839
+0x493205F7
+// 0.255695
+0x20BA9FF5
+// 0.312150
+0x27F48878
+// 0.601308
+0x4CF7AB2C
+// 0.798377
+0x66313680
+// 0.501464
+0x402FF7E3
+// 0.004285
+0x008C6612
+// 0.980429
+0x7D7EB1D0
+// 0.158966
+0x1458FF0D
+// 0.192237
+0x189B3B74
+// 0.082656
+0x0A9476F8
+// 0.133982
+0x11265313
+// 0.952128
+0x79DF544E
+// 0.536099
+0x449EE08B
+// 0.922068
+0x76065204
+// 0.131912
+0x10E28120
+// 0.137311
+0x11936B78
+// 0.900122
+0x7337331B
+// 0.990011
+0x7EB8AD6A
+// 0.359926
+0x2E120B25
+// 0.368617
+0x2F2ED77A
+// 0.960072
+0x7AE3A75F
+// 0.150415
+0x1340CB2B
+// 0.483621
+0x3DE74739
+// 0.316440
+0x28811D15
+// 0.934148
+0x77922783
+// 0.897459
+0x72DFF27A
+// 0.278544
+0x23A750C8
+// 0.084173
+0x0AC62F50
+// 0.237940
+0x1E74D15D
+// 0.346281
+0x2C52EE5F
+// 0.944648
+0x78EA39F5
+// 0.949603
+0x798C95E8
+// 0.119669
+0x0F514F0E
+// 0.557375
+0x47580FD2
+// 0.148449
+0x13005C5E
+// 0.188463
+0x181F8A54
+// 0.928893
+0x76E5F877
+// 0.749652
+0x5FF4969A
+// 0.689590
+0x58447DF7
+// 0.243198
+0x1F211F1A
+// 0.310656
+0x27C38FC4
+// 0.850749
+0x6CE554FA
+// 0.945258
+0x78FE359E
+// 0.128894
+0x107F9609
+// 0.276316
+0x235E5687
+// 0.419582
+0x35B4DBF3
+// 0.185013
+0x17AE8359
+// 0.524990
+0x4332E29A
+// 0.128635
+0x10771B86
+// 0.381665
+0x30DA6245
+// 0.189414
+0x183EB776
+// 0.672176
+0x5609DE89
+// 0.563809
+0x482AE202
+// 0.135520
+0x1158B828
+// 0.995287
+0x7F658F85
+// 0.871529
+0x6F8E433B
+// 0.547929
+0x46228BBC
+// 0.006156
+0x00C9B4AF
+// 0.775767
+0x634C540C
+// 0.219576
+0x1C1B1105
+// 0.801606
+0x669B0540
+// 0.978165
+0x7D3483F9
+// 0.331828
+0x2A7959F1
+// 0.828769
+0x6A151A6E
+// 0.840307
+0x6B8F29DF
+// 0.834455
+0x6ACF688C
+// 0.194817
+0x18EFC1D1
+// 0.095059
+0x0C2AE2BA
+// 0.536612
+0x44AFB68A
+// 0.927268
+0x76B0BB16
+// 0.263892
+0x21C735EC
+// 0.475127
+0x3CD0F666
+// 0.586474
+0x4B1190CF
+// 0.296115
+0x25E719F0
+// 0.732476
+0x5DC1C380
+// 0.230045
+0x1D721D77
+// 0.699392
+0x5985AE6D
+// 0.537520
+0x44CD710A
+// 0.580789
+0x4A574B63
+// 0.972248
+0x7C729EA3
+// 0.394553
+0x3280BA6D
+// 0.379203
+0x3089BD1E
+// 0.385159
+0x314CE10F
+// 0.502242
+0x4049731A
+// 0.135404
+0x1154E82F
+// 0.172509
+0x1614C716
+// 0.374612
+0x2FF347BF
+// 0.780952
+0x63F638F3
+// 0.102299
+0x0D181E32
+// 0.812945
+0x680E9733
+// 0.377814
+0x305C3594
+// 0.707240
+0x5A86D5EF
+// 0.259067
+0x21291C9D
+// 0.719298
+0x5C11F548
+// 0.723671
+0x5CA142CB
+// 0.034828
+0x04753C0F
+// 0.375823
+0x301AF688
+// 0.951140
+0x79BEF5A5
+// 0.813619
+0x6824A746
+// 0.382914
+0x31035622
+// 0.098950
+0x0CAA662F
+// 0.775250
+0x633B6485
+// 0.321155
+0x291B9A63
+// 0.616229
+0x4EE094CA
+// 0.496707
+0x3F94197C
+// 0.924855
+0x7661A4D6
+// 0.634966
+0x514690FE
 // 1.000000
 0x7FFFFFFF
-// 0.886497
-0x7178B8BA
-// 0.314000
-0x283125AF
-// 0.006694
-0x00DB571A
-// 0.146117
-0x12B3F39D
-// 0.837186
-0x6B28E665
-// 0.539199
-0x45047BB5
-// 0.052712
-0x06BF42AE
-// 0.120008
-0x0F5C6C14
-// 0.469465
-0x3C177195
-// 0.625592
-0x50136970
-// 0.940813
-0x786C8FEB
-// 0.312325
-0x27FA4443
-// 0.992701
-0x7F10D2D7
-// 0.216793
-0x1BBFDD9A
-// 0.840487
-0x6B9514C0
-// 0.983659
-0x7DE88773
-// 0.640823
-0x52067AE2
-// 0.772204
-0x62D790F9
-// 0.569779
-0x48EE8850
-// 0.395524
-0x32A0870C
-// 0.645209
-0x52963199
-// 0.502327
-0x404C4077
-// 0.271636
-0x22C4F91E
-// 0.630360
-0x50AFA3FB
-// 0.912727
-0x74D43906
-// 0.574745
-0x49913D13
-// 0.949312
-0x79830D45
-// 0.148133
-0x12F60187
-// 0.717625
-0x5BDB259F
-// 0.735682
-0x5E2AD4F3
-// 0.999369
-0x7FEB56AC
-// 0.552908
-0x46C5B086
-// 0.201162
-0x19BFAF64
-// 0.301104
-0x268A976E
-// 0.149861
-0x132EA745
-// 0.024789
-0x032C4960
-// 0.317677
-0x28A9A53C
-// 0.979017
-0x7D506BE8
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Samples5_q7.txt b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Samples5_q7.txt
old mode 100644
new mode 100755
index 40d1562..c32cab0
--- a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Samples5_q7.txt
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Samples5_q7.txt
@@ -1,514 +1,514 @@
 B
 256
-// 0.311464
-0x28
-// 0.814349
-0x68
-// 0.964792
-0x7B
-// 0.749657
-0x60
-// 0.920540
-0x76
-// 0.859487
-0x6E
-// 0.895278
-0x73
-// 0.394840
-0x33
-// 0.310312
-0x28
-// 0.935591
-0x78
-// 0.933943
-0x78
-// 0.110409
-0x0E
-// 0.077296
-0x0A
-// 0.163980
-0x15
-// 0.027479
-0x04
-// 0.549362
-0x46
-// 0.887761
-0x72
-// 0.398807
-0x33
-// 0.925034
-0x76
-// 0.754441
-0x61
-// 0.756075
-0x61
-// 0.958261
-0x7B
-// 0.465294
-0x3C
-// 0.282563
-0x24
-// 0.454649
-0x3A
-// 0.475274
-0x3D
-// 0.807780
+// 0.245705
+0x1F
+// 0.761938
+0x62
+// 0.981964
+0x7E
+// 0.742585
+0x5F
+// 0.565131
+0x48
+// 0.805666
 0x67
-// 0.810743
-0x68
-// 0.821368
-0x69
-// 0.738624
-0x5F
-// 0.375387
-0x30
-// 0.339052
-0x2B
-// 0.182220
-0x17
-// 0.406085
-0x34
-// 0.066662
-0x09
-// 0.974345
-0x7D
-// 0.426469
-0x37
-// 0.172626
-0x16
-// 0.226558
-0x1D
-// 0.997138
-0x7F
-// 0.504847
-0x41
-// 0.257237
-0x21
-// 0.876855
-0x70
-// 0.744461
-0x5F
-// 0.396795
+// 0.397309
 0x33
-// 0.939501
-0x78
-// 0.855848
-0x6E
-// 0.102450
-0x0D
-// 0.512752
-0x42
-// 0.332515
-0x2B
-// 0.501637
-0x40
-// 0.318001
-0x29
-// 0.989605
-0x7F
-// 0.973289
-0x7D
-// 0.758678
-0x61
-// 0.419313
-0x36
-// 0.569148
-0x49
-// 0.025680
-0x03
-// 0.999827
-0x7F
-// 0.584569
-0x4B
-// 0.849761
-0x6D
-// 0.457575
-0x3B
-// 0.345882
-0x2C
-// 0.560748
-0x48
-// 0.324579
-0x2A
-// 0.161193
-0x15
-// 0.350431
-0x2D
-// 0.227318
-0x1D
-// 0.712231
-0x5B
-// 0.572139
-0x49
-// 0.792871
-0x65
-// 0.899735
-0x73
-// 0.826600
-0x6A
-// 0.760153
-0x61
-// 0.005478
-0x01
-// 0.942023
-0x79
-// 0.935003
-0x78
-// 0.205823
-0x1A
-// 0.713469
-0x5B
-// 0.099191
-0x0D
-// 0.206620
-0x1A
-// 0.146340
-0x13
-// 0.768677
-0x62
-// 0.498409
-0x40
-// 0.301729
-0x27
-// 0.992834
-0x7F
-// 0.501500
-0x40
-// 0.023187
-0x03
-// 0.571564
-0x49
-// 0.686802
-0x58
-// 0.262772
-0x22
-// 0.889681
-0x72
-// 0.549300
-0x46
-// 0.881421
-0x71
-// 0.184671
-0x18
-// 0.325892
-0x2A
-// 0.439596
-0x38
-// 0.691554
-0x59
-// 0.509125
-0x41
-// 0.951995
-0x7A
-// 0.484734
-0x3E
-// 0.494498
-0x3F
-// 0.756076
-0x61
-// 0.274260
-0x23
-// 0.945468
-0x79
-// 0.079106
-0x0A
-// 0.222502
-0x1C
-// 0.635894
-0x51
-// 0.112813
-0x0E
-// 0.169612
-0x16
-// 0.381125
-0x31
-// 0.132813
-0x11
-// 0.795690
-0x66
-// 0.279502
-0x24
-// 0.415884
-0x35
-// 0.592733
-0x4C
-// 0.526419
-0x43
-// 0.488508
-0x3F
-// 0.268644
-0x22
-// 0.827715
-0x6A
-// 0.137878
-0x12
-// 0.362534
+// 0.362971
 0x2E
-// 0.422338
-0x36
-// 0.183790
-0x18
-// 0.049460
-0x06
-// 0.264901
-0x22
-// 0.383215
-0x31
-// 0.250466
-0x20
-// 0.148965
-0x13
-// 0.057600
-0x07
-// 0.841497
-0x6C
-// 0.598408
-0x4D
-// 0.206148
-0x1A
-// 0.395092
-0x33
-// 0.036152
-0x05
-// 0.035879
-0x05
-// 0.705383
-0x5A
-// 0.375554
-0x30
-// 0.223015
-0x1D
-// 0.906621
-0x74
-// 0.944744
-0x79
-// 0.217778
-0x1C
-// 0.884764
-0x71
-// 0.125270
-0x10
-// 0.725813
-0x5D
-// 0.443286
-0x39
-// 0.918821
-0x76
-// 0.074048
-0x09
-// 0.632751
-0x51
-// 0.594298
-0x4C
-// 0.652884
-0x54
-// 0.204446
-0x1A
-// 0.709676
-0x5B
-// 0.451558
-0x3A
-// 0.133535
-0x11
-// 0.389315
-0x32
-// 0.219234
-0x1C
-// 0.343534
-0x2C
-// 0.964000
-0x7B
-// 0.168341
-0x16
-// 0.597837
-0x4D
-// 0.104713
-0x0D
-// 0.604241
-0x4D
-// 0.693053
-0x59
-// 0.639880
-0x52
-// 0.097347
-0x0C
-// 0.565491
-0x48
-// 0.676698
-0x57
-// 0.936617
-0x78
-// 0.074029
-0x09
-// 0.112188
-0x0E
-// 0.156309
-0x14
-// 0.466392
-0x3C
-// 0.664904
-0x55
-// 0.148683
-0x13
-// 0.180067
-0x17
-// 0.174089
-0x16
-// 0.762244
-0x62
-// 0.608866
-0x4E
-// 0.777870
-0x64
-// 0.306665
-0x27
-// 0.937415
-0x78
-// 0.093322
-0x0C
-// 0.591256
-0x4C
-// 0.602836
-0x4D
-// 0.715381
-0x5C
-// 0.540957
-0x45
-// 0.488833
-0x3F
-// 0.193635
+// 0.436356
+0x38
+// 0.195741
 0x19
-// 0.371707
-0x30
-// 0.418380
-0x36
-// 0.413141
-0x35
-// 0.078147
-0x0A
-// 0.561133
-0x48
-// 0.085707
-0x0B
-// 0.056919
-0x07
-// 0.129227
-0x11
-// 0.145953
-0x13
-// 0.816711
-0x69
-// 0.902338
-0x73
-// 0.672674
-0x56
-// 0.867854
-0x6F
-// 0.444524
-0x39
-// 0.483182
-0x3E
-// 0.116483
-0x0F
-// 0.896066
-0x73
-// 0.464976
-0x3C
-// 0.237816
-0x1E
-// 0.544608
+// 0.546248
 0x46
-// 0.308408
-0x27
-// 0.264958
-0x22
-// 0.727365
-0x5D
-// 0.237600
-0x1E
-// 0.998704
+// 0.701406
+0x5A
+// 0.674982
+0x56
+// 0.995812
 0x7F
-// 0.380284
-0x31
-// 0.231462
-0x1E
-// 0.085902
+// 0.752738
+0x60
+// 0.762369
+0x62
+// 0.746045
+0x5F
+// 0.317086
+0x29
+// 0.578217
+0x4A
+// 0.616763
+0x4F
+// 0.693276
+0x59
+// 0.320198
+0x29
+// 0.918477
+0x76
+// 0.318981
+0x29
+// 0.560404
+0x48
+// 0.715781
+0x5C
+// 0.325314
+0x2A
+// 0.875466
+0x70
+// 0.971581
+0x7C
+// 0.822843
+0x69
+// 0.585406
+0x4B
+// 0.787242
+0x65
+// 0.297300
+0x26
+// 0.705312
+0x5A
+// 0.068622
+0x09
+// 0.112350
+0x0E
+// 0.031097
+0x04
+// 0.752535
+0x60
+// 0.831836
+0x6A
+// 0.633166
+0x51
+// 0.356045
+0x2E
+// 0.326036
+0x2A
+// 0.614708
+0x4F
+// 0.129206
+0x11
+// 0.376641
+0x30
+// 0.078894
+0x0A
+// 0.203207
+0x1A
+// 0.554196
+0x47
+// 0.318317
+0x29
+// 0.603198
+0x4D
+// 0.984224
+0x7E
+// 0.041311
+0x05
+// 0.973413
+0x7D
+// 0.976103
+0x7D
+// 0.143794
+0x12
+// 0.446938
+0x39
+// 0.878375
+0x70
+// 0.200822
+0x1A
+// 0.997835
+0x7F
+// 0.527091
+0x43
+// 0.048026
+0x06
+// 0.654793
+0x54
+// 0.789079
+0x65
+// 0.872005
+0x70
+// 0.642333
+0x52
+// 0.928206
+0x77
+// 0.700788
+0x5A
+// 0.388072
+0x32
+// 0.608143
+0x4E
+// 0.571287
+0x49
+// 0.890827
+0x72
+// 0.657595
+0x54
+// 0.910253
+0x75
+// 0.665658
+0x55
+// 0.586800
+0x4B
+// 0.511547
+0x41
+// 0.053479
+0x07
+// 0.651600
+0x53
+// 0.005214
+0x01
+// 0.691574
+0x59
+// 0.980061
+0x7D
+// 0.341575
+0x2C
+// 0.892984
+0x72
+// 0.971098
+0x7C
+// 0.145172
+0x13
+// 0.118294
+0x0F
+// 0.272396
+0x23
+// 0.515324
+0x42
+// 0.559056
+0x48
+// 0.675538
+0x56
+// 0.151216
+0x13
+// 0.372440
+0x30
+// 0.725762
+0x5D
+// 0.139923
+0x12
+// 0.790378
+0x65
+// 0.115179
+0x0F
+// 0.732751
+0x5E
+// 0.577567
+0x4A
+// 0.684250
+0x58
+// 0.655837
+0x54
+// 0.032292
+0x04
+// 0.505108
+0x41
+// 0.683665
+0x58
+// 0.968466
+0x7C
+// 0.334678
+0x2B
+// 0.743037
+0x5F
+// 0.850433
+0x6D
+// 0.112254
+0x0E
+// 0.111186
+0x0E
+// 0.625406
+0x50
+// 0.920380
+0x76
+// 0.910587
+0x75
+// 0.857903
+0x6E
+// 0.026959
+0x03
+// 0.927741
+0x77
+// 0.652471
+0x54
+// 0.088959
 0x0B
+// 0.838929
+0x6B
+// 0.382501
+0x31
+// 0.973743
+0x7D
+// 0.994434
+0x7F
+// 0.915909
+0x75
+// 0.858539
+0x6E
+// 0.601251
+0x4D
+// 0.350413
+0x2D
+// 0.059547
+0x08
+// 0.778670
+0x64
+// 0.011581
+0x01
+// 0.916889
+0x75
+// 0.422482
+0x36
+// 0.524757
+0x43
+// 0.961285
+0x7B
+// 0.838116
+0x6B
+// 0.635292
+0x51
+// 0.974690
+0x7D
+// 0.223461
+0x1D
+// 0.514066
+0x42
+// 0.424767
+0x36
+// 0.665550
+0x55
+// 0.269270
+0x22
+// 0.849624
+0x6D
+// 0.593872
+0x4C
+// 0.170973
+0x16
+// 0.165958
+0x15
+// 0.982704
+0x7E
+// 0.596413
+0x4C
+// 0.449301
+0x3A
+// 0.571839
+0x49
+// 0.255695
+0x21
+// 0.312150
+0x28
+// 0.601308
+0x4D
+// 0.798377
+0x66
+// 0.501464
+0x40
+// 0.004285
+0x01
+// 0.980429
+0x7D
+// 0.158966
+0x14
+// 0.192237
+0x19
+// 0.082656
+0x0B
+// 0.133982
+0x11
+// 0.952128
+0x7A
+// 0.536099
+0x45
+// 0.922068
+0x76
+// 0.131912
+0x11
+// 0.137311
+0x12
+// 0.900122
+0x73
+// 0.990011
+0x7F
+// 0.359926
+0x2E
+// 0.368617
+0x2F
+// 0.960072
+0x7B
+// 0.150415
+0x13
+// 0.483621
+0x3E
+// 0.316440
+0x29
+// 0.934148
+0x78
+// 0.897459
+0x73
+// 0.278544
+0x24
+// 0.084173
+0x0B
+// 0.237940
+0x1E
+// 0.346281
+0x2C
+// 0.944648
+0x79
+// 0.949603
+0x7A
+// 0.119669
+0x0F
+// 0.557375
+0x47
+// 0.148449
+0x13
+// 0.188463
+0x18
+// 0.928893
+0x77
+// 0.749652
+0x60
+// 0.689590
+0x58
+// 0.243198
+0x1F
+// 0.310656
+0x28
+// 0.850749
+0x6D
+// 0.945258
+0x79
+// 0.128894
+0x10
+// 0.276316
+0x23
+// 0.419582
+0x36
+// 0.185013
+0x18
+// 0.524990
+0x43
+// 0.128635
+0x10
+// 0.381665
+0x31
+// 0.189414
+0x18
+// 0.672176
+0x56
+// 0.563809
+0x48
+// 0.135520
+0x11
+// 0.995287
+0x7F
+// 0.871529
+0x70
+// 0.547929
+0x46
+// 0.006156
+0x01
+// 0.775767
+0x63
+// 0.219576
+0x1C
+// 0.801606
+0x67
+// 0.978165
+0x7D
+// 0.331828
+0x2A
+// 0.828769
+0x6A
+// 0.840307
+0x6C
+// 0.834455
+0x6B
+// 0.194817
+0x19
+// 0.095059
+0x0C
+// 0.536612
+0x45
+// 0.927268
+0x77
+// 0.263892
+0x22
+// 0.475127
+0x3D
+// 0.586474
+0x4B
+// 0.296115
+0x26
+// 0.732476
+0x5E
+// 0.230045
+0x1D
+// 0.699392
+0x5A
+// 0.537520
+0x45
+// 0.580789
+0x4A
+// 0.972248
+0x7C
+// 0.394553
+0x33
+// 0.379203
+0x31
+// 0.385159
+0x31
+// 0.502242
+0x40
+// 0.135404
+0x11
+// 0.172509
+0x16
+// 0.374612
+0x30
+// 0.780952
+0x64
+// 0.102299
+0x0D
+// 0.812945
+0x68
+// 0.377814
+0x30
+// 0.707240
+0x5B
+// 0.259067
+0x21
+// 0.719298
+0x5C
+// 0.723671
+0x5D
+// 0.034828
+0x04
+// 0.375823
+0x30
+// 0.951140
+0x7A
+// 0.813619
+0x68
+// 0.382914
+0x31
+// 0.098950
+0x0D
+// 0.775250
+0x63
+// 0.321155
+0x29
+// 0.616229
+0x4F
+// 0.496707
+0x40
+// 0.924855
+0x76
+// 0.634966
+0x51
 // 1.000000
 0x7F
-// 0.886497
-0x71
-// 0.314000
-0x28
-// 0.006694
-0x01
-// 0.146117
-0x13
-// 0.837186
-0x6B
-// 0.539199
-0x45
-// 0.052712
-0x07
-// 0.120008
-0x0F
-// 0.469465
-0x3C
-// 0.625592
-0x50
-// 0.940813
-0x78
-// 0.312325
-0x28
-// 0.992701
-0x7F
-// 0.216793
-0x1C
-// 0.840487
-0x6C
-// 0.983659
-0x7E
-// 0.640823
-0x52
-// 0.772204
-0x63
-// 0.569779
-0x49
-// 0.395524
-0x33
-// 0.645209
-0x53
-// 0.502327
-0x40
-// 0.271636
-0x23
-// 0.630360
-0x51
-// 0.912727
-0x75
-// 0.574745
-0x4A
-// 0.949312
-0x7A
-// 0.148133
-0x13
-// 0.717625
-0x5C
-// 0.735682
-0x5E
-// 0.999369
-0x7F
-// 0.552908
-0x47
-// 0.201162
-0x1A
-// 0.301104
-0x27
-// 0.149861
-0x13
-// 0.024789
-0x03
-// 0.317677
-0x29
-// 0.979017
-0x7D
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Weights6_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Weights6_f32.txt
old mode 100644
new mode 100755
index 1042190..6ac028c
--- a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Weights6_f32.txt
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportF32/Weights6_f32.txt
@@ -1,102 +1,102 @@
 W
 50
-// 0.468160
-0x3eefb2a1
-// 0.939742
-0x3f7092f6
-// 0.210822
-0x3e57e1b2
-// 0.287801
-0x3e935a97
-// 0.913583
-0x3f69e099
-// 0.707032
-0x3f35000f
-// 0.467643
-0x3eef6edd
-// 0.465243
-0x3eee3453
-// 0.153575
-0x3e1d42d8
-// 0.728677
-0x3f3a8a98
-// 0.152549
-0x3e1c35d9
-// 0.171905
-0x3e3007cc
-// 0.261915
-0x3e8619c5
-// 0.878720
-0x3f60f3c6
-// 0.752492
-0x3f40a355
-// 0.340597
-0x3eae62ae
-// 0.534328
-0x3f08c9b9
-// 0.131700
-0x3e06dc73
-// 0.779693
-0x3f4799f5
-// 0.380764
-0x3ec2f376
-// 0.082088
-0x3da81dc4
-// 0.031182
-0x3cff714f
-// 0.665445
-0x3f2a5a96
-// 0.360008
-0x3eb852f7
-// 0.720904
-0x3f388d28
-// 0.191224
-0x3e43d02d
-// 0.817279
-0x3f51392b
-// 0.623266
-0x3f1f8e57
-// 0.085331
-0x3daec1e6
-// 0.358897
-0x3eb7c159
-// 0.564157
-0x3f106c95
-// 0.389496
-0x3ec76c04
-// 0.439782
-0x3ee12b28
-// 0.337748
-0x3eaced58
-// 0.282143
-0x3e907504
-// 0.970976
-0x3f7891e3
-// 0.474926
-0x3ef32975
-// 0.809919
-0x3f4f56da
-// 0.186722
-0x3e3f3426
-// 0.782900
-0x3f486c1f
-// 0.831368
-0x3f54d481
-// 0.927085
-0x3f6d556f
-// 0.666678
-0x3f2aab66
-// 0.226498
-0x3e67ef18
-// 0.645167
-0x3f2529ae
-// 0.891565
-0x3f643d96
-// 0.219492
-0x3e60c27a
-// 0.568489
-0x3f118886
-// 0.673684
-0x3f2c768a
-// 0.503107
-0x3f00cba2
+// 0.860205
+0x3f5c365d
+// 0.479957
+0x3ef5bcf3
+// 0.530318
+0x3f07c2f1
+// 0.389647
+0x3ec77fde
+// 0.782948
+0x3f486f4c
+// 0.730787
+0x3f3b14d9
+// 0.436667
+0x3edf92dd
+// 0.128964
+0x3e040f3f
+// 0.081468
+0x3da6d898
+// 0.894475
+0x3f64fc4b
+// 0.325349
+0x3ea6942e
+// 0.329724
+0x3ea8d19f
+// 0.760409
+0x3f42aa22
+// 0.980233
+0x3f7af090
+// 0.324436
+0x3ea61c74
+// 0.589212
+0x3f16d69c
+// 0.636084
+0x3f22d66d
+// 0.744924
+0x3f3eb358
+// 0.431164
+0x3edcc17a
+// 0.053875
+0x3d5cac41
+// 0.903607
+0x3f6752c8
+// 0.688527
+0x3f30434e
+// 0.905704
+0x3f67dc39
+// 0.622548
+0x3f1f5f4d
+// 0.832056
+0x3f55019b
+// 0.278265
+0x3e8e78c4
+// 0.616294
+0x3f1dc570
+// 0.319104
+0x3ea3619d
+// 0.147046
+0x3e16932c
+// 0.115098
+0x3debb877
+// 0.032455
+0x3d04efe4
+// 0.106714
+0x3dda8cae
+// 0.591263
+0x3f175d01
+// 0.219966
+0x3e613eca
+// 0.973388
+0x3f792ff1
+// 0.522638
+0x3f05cb9e
+// 0.494399
+0x3efd21eb
+// 0.823635
+0x3f52d9bb
+// 0.888146
+0x3f635d8c
+// 0.740124
+0x3f3d78cc
+// 0.960118
+0x3f75ca43
+// 0.424414
+0x3ed94cbd
+// 0.596863
+0x3f18cc07
+// 0.944570
+0x3f71cf57
+// 0.600004
+0x3f1999e0
+// 0.740164
+0x3f3d7b64
+// 0.498437
+0x3eff331b
+// 0.537605
+0x3f09a083
+// 0.387346
+0x3ec65238
+// 0.216472
+0x3e5daacc
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ15/Samples1_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ15/Samples1_f32.txt
old mode 100644
new mode 100755
index 5d5d37c..3344f87
--- a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ15/Samples1_f32.txt
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ15/Samples1_f32.txt
@@ -1,514 +1,514 @@
 W
 256
-// 0.629808
-0x3f213b11
-// 0.767837
-0x3f4490f0
-// 0.406514
-0x3ed022a5
-// 0.736988
-0x3f3cab38
-// 0.019090
-0x3c9c623b
-// 0.259572
-0x3e84e6a0
-// 0.016164
-0x3c846a11
-// 0.992820
-0x3f7e2976
-// 0.434454
-0x3ede70cd
-// 0.491433
-0x3efb9d15
-// 0.135967
-0x3e0b3adb
-// 0.755845
-0x3f417f13
-// 0.564335
-0x3f10784a
-// 0.525125
-0x3f066e9f
-// 0.429784
-0x3edc0ca0
-// 0.804056
-0x3f4dd6a2
-// 0.859072
-0x3f5bec28
-// 0.806005
-0x3f4e5658
-// 0.442886
-0x3ee2c1ec
-// 0.109494
-0x3de03e2e
-// 0.525035
-0x3f0668b9
-// 0.399489
-0x3ecc89e2
-// 0.452378
-0x3ee79e24
-// 0.047941
-0x3d445dee
-// 0.862060
-0x3f5caffa
-// 0.243796
-0x3e79a59e
-// 0.969406
-0x3f782afe
-// 0.575658
-0x3f135e59
-// 0.542375
-0x3f0ad91d
-// 0.627904
-0x3f20be4b
-// 0.019669
-0x3ca120ab
-// 0.960356
-0x3f75d9e6
-// 0.630356
-0x3f215f01
-// 0.097618
-0x3dc7ec29
-// 0.051973
-0x3d54e122
-// 0.702347
-0x3f33cd07
-// 0.198601
-0x3e4b5e00
-// 0.151983
-0x3e1ba166
-// 0.126313
-0x3e015850
-// 0.684087
-0x3f2f2052
-// 0.634531
-0x3f2270a4
-// 0.066474
-0x3d882386
-// 0.281877
-0x3e905236
-// 0.934816
-0x3f6f501a
-// 0.529087
-0x3f077239
-// 0.008571
-0x3c0c6e1a
-// 0.752835
-0x3f40b9d3
-// 0.848600
-0x3f593de1
-// 0.856296
-0x3f5b363a
-// 0.834721
-0x3f55b04c
-// 0.781907
-0x3f482b0e
-// 0.438857
-0x3ee0b1e2
-// 0.401125
-0x3ecd6052
-// 0.375756
-0x3ec0630f
-// 0.173644
-0x3e31cfba
-// 0.798702
-0x3f4c77c2
-// 0.580714
-0x3f14a9b0
-// 0.351200
-0x3eb3d06d
-// 0.605000
-0x3f1ae140
-// 0.139355
-0x3e0eb2f8
-// 0.718442
-0x3f37ebd2
-// 0.709643
-0x3f35ab2a
-// 0.635820
-0x3f22c520
-// 0.458913
-0x3eeaf6ac
-// 0.712704
-0x3f3673c0
-// 0.197968
-0x3e4ab831
-// 0.148562
-0x3e1820b0
-// 0.599102
-0x3f195ec1
-// 0.152919
-0x3e1c96df
-// 0.334634
-0x3eab551d
-// 0.534337
-0x3f08ca4f
-// 0.340245
-0x3eae3497
-// 0.893406
-0x3f64b63d
-// 0.845651
-0x3f587c9c
-// 0.057369
-0x3d6afb7d
-// 0.409928
-0x3ed1e212
-// 0.831482
-0x3f54dc04
-// 0.344610
-0x3eb070ba
-// 0.451085
-0x3ee6f495
-// 0.720379
-0x3f386ac8
-// 0.743209
-0x3f3e42f5
-// 0.393717
-0x3ec9953c
-// 0.626817
-0x3f20770d
-// 0.949870
-0x3f732ab1
-// 0.726345
-0x3f39f1bd
-// 0.211445
-0x3e588502
-// 0.557236
-0x3f0ea706
-// 0.318143
-0x3ea2e3aa
-// 0.241738
-0x3e778a40
-// 0.426043
-0x3eda2252
-// 0.113255
-0x3de7f263
-// 0.587508
-0x3f1666f1
-// 0.476115
-0x3ef3c54f
-// 0.580168
-0x3f1485e3
-// 0.274054
-0x3e8c50ce
-// 0.129983
-0x3e051a41
-// 0.230382
-0x3e6be92a
-// 0.104931
-0x3dd6e5f3
-// 0.042404
-0x3d2db055
-// 0.459771
-0x3eeb6724
-// 0.391562
-0x3ec87ad9
-// 0.220224
-0x3e618265
-// 0.351126
-0x3eb3c6be
-// 0.305120
-0x3e9c38af
-// 0.761919
-0x3f430d25
-// 0.813118
-0x3f502887
-// 0.687890
-0x3f301996
-// 0.848190
-0x3f5922fd
-// 0.364696
-0x3ebab964
-// 0.532080
-0x3f083661
-// 0.070210
-0x3d8fca01
-// 0.832574
-0x3f55238d
-// 0.727285
-0x3f3a2f52
-// 0.163325
-0x3e273ea4
-// 0.010098
-0x3c25715c
-// 0.198483
-0x3e4b3f18
-// 0.639479
-0x3f23b4e6
-// 0.784054
-0x3f48b7c1
-// 0.993211
-0x3f7e430c
-// 0.401080
-0x3ecd5a53
-// 0.439452
-0x3ee0ffe7
-// 0.090064
-0x3db87386
-// 0.505854
-0x3f017f9f
-// 0.482874
-0x3ef73b34
-// 0.483374
-0x3ef77cc0
-// 0.395664
-0x3eca9482
-// 0.886004
-0x3f62d12b
-// 0.290896
-0x3e94f050
-// 0.349188
-0x3eb2c8cd
-// 0.126416
-0x3e01731a
-// 0.103028
-0x3dd30076
-// 0.498207
-0x3eff1502
-// 0.617724
-0x3f1e2321
-// 0.704543
-0x3f345cf1
-// 0.151486
-0x3e1b1f35
-// 0.097138
-0x3dc6f018
-// 0.844976
-0x3f58505c
-// 0.972863
-0x3f790d8b
-// 0.890981
-0x3f641754
-// 0.140507
-0x3e0fe121
-// 0.734462
-0x3f3c05ba
-// 0.056763
-0x3d688015
-// 0.098993
-0x3dcabcef
-// 0.967706
-0x3f77bb8f
-// 0.715449
-0x3f3727b3
-// 0.601449
-0x3f19f88f
-// 0.325030
-0x3ea66a54
-// 0.480209
-0x3ef5de04
-// 0.904712
-0x3f679b2d
-// 0.520916
-0x3f055aba
-// 0.000950
-0x3a78f30a
-// 0.598545
-0x3f193a3c
-// 0.404415
-0x3ecf0f70
-// 0.860223
-0x3f5c3797
-// 0.075844
-0x3d9b543f
-// 0.105481
-0x3dd8067d
-// 0.220873
-0x3e622ca9
-// 0.515987
-0x3f0417b7
-// 0.717252
-0x3f379dd4
-// 0.065977
-0x3d871ef5
-// 0.589880
-0x3f170259
-// 0.668825
-0x3f2b381e
-// 0.915636
-0x3f6a6720
-// 0.204173
-0x3e5112b9
-// 0.850150
-0x3f59a367
+// 0.611006
+0x3f1c6adf
+// 0.316972
+0x3ea24a37
+// 0.720369
+0x3f386a1e
+// 0.765887
+0x3f44112b
+// 0.055048
+0x3d6179b4
+// 0.897500
+0x3f65c290
+// 0.886540
+0x3f62f448
+// 0.591171
+0x3f1756f9
+// 0.480402
+0x3ef5f730
+// 0.010981
+0x3c33e8f0
+// 0.637205
+0x3f231fde
+// 0.744098
+0x3f3e7d32
+// 0.405430
+0x3ecf947a
+// 0.977699
+0x3f7a4a7c
+// 0.976139
+0x3f79e440
+// 0.170355
+0x3e2e716b
+// 0.313694
+0x3ea09c7b
+// 0.857921
+0x3f5ba0b4
+// 0.830430
+0x3f549707
+// 0.604045
+0x3f1aa2b2
+// 0.771265
+0x3f4571a3
+// 0.492615
+0x3efc3806
+// 0.733511
+0x3f3bc761
+// 0.743195
+0x3f3e41ff
+// 0.616850
+0x3f1de9df
+// 0.868267
+0x3f5e46b9
+// 0.644849
+0x3f2514d3
+// 0.446832
+0x3ee4c73a
+// 0.722755
+0x3f390678
+// 0.818522
+0x3f518aaa
+// 0.674442
+0x3f2ca835
+// 0.032346
+0x3d047d1e
+// 0.728255
+0x3f3a6ee4
+// 0.269538
+0x3e8a00da
+// 0.458039
+0x3eea8418
+// 0.507657
+0x3f01f5ce
+// 0.202315
+0x3e4f2ba3
+// 0.929005
+0x3f6dd342
+// 0.061843
+0x3d7d4f61
+// 0.303258
+0x3e9b44a5
+// 0.163605
+0x3e278813
+// 0.428289
+0x3edb48c0
+// 0.919665
+0x3f6b6f24
+// 0.656723
+0x3f281f06
+// 0.850228
+0x3f59a88c
+// 0.509593
+0x3f0274ad
+// 0.717675
+0x3f37b987
+// 0.302383
+0x3e9ad1e3
+// 0.575297
+0x3f1346b2
+// 0.327713
+0x3ea7ca06
+// 0.324320
+0x3ea60d3c
+// 0.883098
+0x3f6212b4
+// 0.803950
+0x3f4dcfa3
+// 0.172964
+0x3e311d94
+// 0.914720
+0x3f6a2b13
+// 0.846504
+0x3f58b474
+// 0.397253
+0x3ecb64be
+// 0.332927
+0x3eaa7563
+// 0.689093
+0x3f30686e
+// 0.096172
+0x3dc4f5d2
+// 0.415403
+0x3ed4afbd
+// 0.659488
+0x3f28d432
+// 0.201631
+0x3e4e7858
+// 0.528988
+0x3f076bc8
+// 0.820465
+0x3f5209f9
+// 0.264027
+0x3e872e95
+// 0.204290
+0x3e513169
+// 0.599283
+0x3f196a9d
+// 0.437967
+0x3ee03d32
+// 0.385779
+0x3ec584d1
+// 0.668709
+0x3f2b3085
+// 0.948382
+0x3f72c925
+// 0.613569
+0x3f1d12df
+// 0.692098
+0x3f312d56
+// 0.192712
+0x3e455660
+// 0.403895
+0x3ececb5e
+// 0.052291
+0x3d562ef9
+// 0.104153
+0x3dd54e32
+// 0.830333
+0x3f5490b4
+// 0.650485
+0x3f26862c
+// 0.466580
+0x3eeee38c
+// 0.908247
+0x3f6882e1
+// 0.165777
+0x3e29c15a
+// 0.307242
+0x3e9d4ec6
+// 0.094427
+0x3dc162d6
+// 0.713403
+0x3f36a194
+// 0.472098
+0x3ef1b6d7
+// 0.713582
+0x3f36ad51
+// 0.748804
+0x3f3fb1a1
+// 0.253223
+0x3e81a668
+// 0.299833
+0x3e9983bd
+// 0.850837
+0x3f59d079
+// 0.684142
+0x3f2f23f2
+// 0.308509
+0x3e9df4d7
+// 0.055875
+0x3d64dcb6
+// 0.253133
+0x3e819aae
+// 0.804924
+0x3f4e0f7c
+// 0.135016
+0x3e0a41b1
+// 0.367216
+0x3ebc03bc
+// 0.984489
+0x3f7c077e
+// 0.079602
+0x3da3061f
+// 0.452419
+0x3ee7a377
+// 0.427436
+0x3edad8d4
+// 0.239972
+0x3e75bb59
+// 0.109914
+0x3de11a61
+// 0.615127
+0x3f1d78fc
+// 0.948598
+0x3f72d753
+// 0.188341
+0x3e40dc61
+// 0.939840
+0x3f70995e
+// 0.111626
+0x3de49c49
+// 0.803266
+0x3f4da2d1
+// 0.720093
+0x3f38580b
+// 0.232146
+0x3e6db795
+// 0.555926
+0x3f0e5130
+// 0.910575
+0x3f691b6a
+// 0.218856
+0x3e601bb4
+// 0.908471
+0x3f689196
+// 0.807042
+0x3f4e9a4c
+// 0.387106
+0x3ec632cb
+// 0.169389
+0x3e2d7456
+// 0.433897
+0x3ede27b5
+// 0.169665
+0x3e2dbca6
+// 0.794839
+0x3f4b7a94
+// 0.739957
+0x3f3d6dd8
+// 0.042773
+0x3d2f3272
+// 0.170300
+0x3e2e633a
+// 0.523445
+0x3f060079
+// 0.398429
+0x3ecbfed7
+// 0.357274
+0x3eb6eca3
+// 0.932304
+0x3f6eab73
+// 0.190112
+0x3e42acc0
+// 0.856648
+0x3f5b4d4d
+// 0.597494
+0x3f18f55d
+// 0.761750
+0x3f43020f
+// 0.202077
+0x3e4eed62
+// 0.129072
+0x3e042b89
+// 0.101433
+0x3dcfbc03
+// 0.946349
+0x3f7243ee
+// 0.541427
+0x3f0a9aef
+// 0.640491
+0x3f23f737
+// 0.433438
+0x3eddeb97
+// 0.302414
+0x3e9ad60e
+// 0.164106
+0x3e280b49
+// 0.897952
+0x3f65e036
+// 0.949143
+0x3f72fb0f
+// 0.415980
+0x3ed4fb48
+// 0.404653
+0x3ecf2ea5
+// 0.776649
+0x3f46d277
+// 0.288609
+0x3e93c491
+// 0.314588
+0x3ea111b1
+// 0.843192
+0x3f57db68
+// 0.808076
+0x3f4ede18
+// 0.970269
+0x3f786390
+// 0.187041
+0x3e3f87b3
+// 0.117301
+0x3df03b70
+// 0.872583
+0x3f5f6193
+// 0.083488
+0x3daafbaf
+// 0.670409
+0x3f2b9fe6
+// 0.201448
+0x3e4e4865
+// 0.418215
+0x3ed62047
+// 0.653495
+0x3f274b78
+// 0.249680
+0x3e7fac39
+// 0.395696
+0x3eca98a6
+// 0.869253
+0x3f5e8763
+// 0.241535
+0x3e7754fd
+// 0.765568
+0x3f43fc3d
+// 0.074356
+0x3d9847fb
+// 0.305481
+0x3e9c680b
+// 0.344523
+0x3eb06547
+// 0.853043
+0x3f5a6106
+// 0.314140
+0x3ea0d6ff
+// 0.685484
+0x3f2f7be1
+// 0.434931
+0x3edeaf43
+// 0.427830
+0x3edb0c8f
+// 0.800760
+0x3f4cfe9e
+// 0.978834
+0x3f7a94e4
+// 0.864263
+0x3f5d4054
+// 0.230305
+0x3e6bd528
+// 0.351072
+0x3eb3bfba
+// 0.064649
+0x3d846680
+// 0.637090
+0x3f231854
+// 0.993854
+0x3f7e6d38
+// 0.564281
+0x3f1074bc
+// 0.620591
+0x3f1edf0c
+// 0.425228
+0x3ed9b78d
+// 0.931161
+0x3f6e608f
+// 0.802282
+0x3f4d625d
+// 0.298686
+0x3e98ed59
+// 0.019277
+0x3c9deb17
+// 0.323693
+0x3ea5bb1e
+// 0.483413
+0x3ef781da
+// 0.350656
+0x3eb3893a
+// 0.443162
+0x3ee2e632
+// 0.631354
+0x3f21a06c
+// 0.049215
+0x3d4995a8
+// 0.385729
+0x3ec57e3c
+// 0.715736
+0x3f373a76
+// 0.045253
+0x3d395b3a
+// 0.529656
+0x3f079784
+// 0.784850
+0x3f48ebf5
+// 0.058249
+0x3d6e966c
+// 0.465815
+0x3eee7f49
+// 0.045272
+0x3d396f94
+// 0.640264
+0x3f23e85e
 // 1.000000
 0x3f800000
-// 0.796123
-0x3f4bceb4
-// 0.615530
-0x3f1d9359
-// 0.244125
-0x3e79fbfd
-// 0.895382
-0x3f6537c6
-// 0.482606
-0x3ef71827
-// 0.988264
-0x3f7cfedf
-// 0.735498
-0x3f3c4996
-// 0.659869
-0x3f28ed26
-// 0.270493
-0x3e8a7e11
-// 0.255657
-0x3e82e570
-// 0.289213
-0x3e9413aa
-// 0.636228
-0x3f22dfd6
-// 0.207228
-0x3e543391
-// 0.607471
-0x3f1b833b
-// 0.607364
-0x3f1b7c3c
-// 0.460077
-0x3eeb8f3b
-// 0.247188
-0x3e7d1ed9
-// 0.705260
-0x3f348bf2
-// 0.973317
-0x3f792b4f
-// 0.888536
-0x3f637719
-// 0.395932
-0x3ecab795
-// 0.194524
-0x3e47314c
-// 0.431453
-0x3edce760
-// 0.646691
-0x3f258d8c
-// 0.155492
-0x3e1f3948
-// 0.102819
-0x3dd292f7
-// 0.525254
-0x3f067713
-// 0.409533
-0x3ed1ae5b
-// 0.123632
-0x3dfd32ad
-// 0.488512
-0x3efa1e3d
-// 0.529864
-0x3f07a52f
-// 0.120458
-0x3df6b293
-// 0.547321
-0x3f0c1d36
-// 0.527096
-0x3f06efbe
-// 0.487433
-0x3ef990cb
-// 0.302979
-0x3e9b2019
-// 0.665032
-0x3f2a3f89
-// 0.826376
-0x3f538d5c
-// 0.501373
-0x3f0059fd
-// 0.356095
-0x3eb65225
-// 0.604881
-0x3f1ad974
-// 0.271477
-0x3e8aff06
-// 0.274070
-0x3e8c52e2
-// 0.214623
-0x3e5bc626
-// 0.323710
-0x3ea5bd61
-// 0.830010
-0x3f547b87
-// 0.901649
-0x3f66d279
-// 0.618633
-0x3f1e5ec3
-// 0.996302
-0x3f7f0d9f
-// 0.336172
-0x3eac1eac
-// 0.592094
-0x3f179378
-// 0.223924
-0x3e654c34
-// 0.639678
-0x3f23c1eb
-// 0.051452
-0x3d52bf9f
-// 0.289750
-0x3e945a14
-// 0.337859
-0x3eacfbe9
-// 0.869576
-0x3f5e9c85
-// 0.608925
-0x3f1be283
-// 0.090629
-0x3db99bcb
-// 0.397193
-0x3ecb5cda
-// 0.221780
-0x3e631a5c
-// 0.385140
-0x3ec5311b
-// 0.480907
-0x3ef6397e
-// 0.029408
-0x3cf0e8f1
-// 0.546041
-0x3f0bc95c
-// 0.537465
-0x3f09974c
-// 0.252707
-0x3e8162d3
-// 0.116984
-0x3def9555
-// 0.695193
-0x3f31f82e
-// 0.524272
-0x3f0636a9
-// 0.937755
-0x3f7010bb
-// 0.484820
-0x3ef83a58
-// 0.951172
-0x3f737ffb
-// 0.515688
-0x3f04041a
-// 0.536603
-0x3f095ec8
-// 0.791043
-0x3f4a81d2
-// 0.295877
-0x3e977d2d
-// 0.206984
-0x3e53f3b0
-// 0.035968
-0x3d135320
-// 0.819304
-0x3f51bde2
-// 0.306870
-0x3e9d1e1a
-// 0.773333
-0x3f45f927
-// 0.873449
-0x3f5f9a61
-// 0.351634
-0x3eb4096f
-// 0.738334
-0x3f3d0372
-// 0.542984
-0x3f0b00fd
-// 0.186866
-0x3e3f59b7
-// 0.624734
-0x3f1fee89
-// 0.099261
-0x3dcb4956
-// 0.636030
-0x3f22d2e4
+// 0.473222
+0x3ef24a1c
+// 0.100652
+0x3dce2272
+// 0.404837
+0x3ecf46d4
+// 0.087717
+0x3db3a4c5
+// 0.222914
+0x3e64437f
+// 0.759238
+0x3f425d6c
+// 0.251504
+0x3e80c515
+// 0.783428
+0x3f488ebe
+// 0.236374
+0x3e720bec
+// 0.181562
+0x3e39eb72
+// 0.317967
+0x3ea2cc82
+// 0.360481
+0x3eb890e8
+// 0.539373
+0x3f0a1455
+// 0.175095
+0x3e334bfd
+// 0.416085
+0x3ed50920
+// 0.889162
+0x3f63a024
+// 0.412557
+0x3ed33aa2
+// 0.122631
+0x3dfb261c
+// 0.632899
+0x3f2205af
+// 0.017485
+0x3c8f3ca1
+// 0.897256
+0x3f65b290
+// 0.672790
+0x3f2c3bf5
+// 0.727910
+0x3f3a5847
+// 0.143488
+0x3e12eea4
+// 0.713107
+0x3f368e27
+// 0.941049
+0x3f70e89a
+// 0.303453
+0x3e9b5e42
+// 0.047812
+0x3d43d67a
+// 0.319685
+0x3ea3adcf
+// 0.171207
+0x3e2f50fa
+// 0.305832
+0x3e9c9609
+// 0.425621
+0x3ed9eaf7
+// 0.384851
+0x3ec50b41
+// 0.690732
+0x3f30d3cd
+// 0.550845
+0x3f0d042b
+// 0.079152
+0x3da21a63
+// 0.349299
+0x3eb2d75a
+// 0.293036
+0x3e9608d6
+// 0.873137
+0x3f5f85e1
+// 0.799771
+0x3f4cbdcf
+// 0.515084
+0x3f03dc84
+// 0.462522
+0x3eeccfaf
+// 0.814347
+0x3f507909
+// 0.780568
+0x3f47d355
+// 0.019021
+0x3c9bd261
+// 0.363366
+0x3eba0b10
+// 0.994428
+0x3f7e92cf
+// 0.458831
+0x3eeaebe9
+// 0.470851
+0x3ef11366
+// 0.979887
+0x3f7ad9e7
+// 0.641361
+0x3f243041
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ15/Samples3_q15.txt b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ15/Samples3_q15.txt
old mode 100644
new mode 100755
index 77ea8b9..aed18ae
--- a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ15/Samples3_q15.txt
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ15/Samples3_q15.txt
@@ -1,514 +1,514 @@
 H
 256
-// 0.629808
-0x509E
-// 0.767837
-0x6248
-// 0.406514
-0x3409
-// 0.736988
-0x5E56
-// 0.019090
-0x0272
-// 0.259572
-0x213A
-// 0.016164
-0x0212
-// 0.992820
-0x7F15
-// 0.434454
-0x379C
-// 0.491433
-0x3EE7
-// 0.135967
-0x1167
-// 0.755845
-0x60C0
-// 0.564335
-0x483C
-// 0.525125
-0x4337
-// 0.429784
-0x3703
-// 0.804056
-0x66EB
-// 0.859072
-0x6DF6
-// 0.806005
-0x672B
-// 0.442886
-0x38B0
-// 0.109494
-0x0E04
-// 0.525035
-0x4334
-// 0.399489
-0x3322
-// 0.452378
-0x39E8
-// 0.047941
-0x0623
-// 0.862060
-0x6E58
-// 0.243796
-0x1F35
-// 0.969406
-0x7C15
-// 0.575658
-0x49AF
-// 0.542375
-0x456D
-// 0.627904
-0x505F
-// 0.019669
-0x0285
-// 0.960356
-0x7AED
-// 0.630356
-0x50B0
-// 0.097618
-0x0C7F
-// 0.051973
-0x06A7
-// 0.702347
-0x59E7
-// 0.198601
-0x196C
-// 0.151983
-0x1374
-// 0.126313
-0x102B
-// 0.684087
-0x5790
-// 0.634531
-0x5138
-// 0.066474
-0x0882
-// 0.281877
-0x2415
-// 0.934816
-0x77A8
-// 0.529087
-0x43B9
-// 0.008571
-0x0119
-// 0.752835
-0x605D
-// 0.848600
-0x6C9F
-// 0.856296
-0x6D9B
-// 0.834721
-0x6AD8
-// 0.781907
-0x6416
-// 0.438857
-0x382C
-// 0.401125
-0x3358
-// 0.375756
-0x3019
-// 0.173644
-0x163A
-// 0.798702
-0x663C
-// 0.580714
-0x4A55
-// 0.351200
-0x2CF4
-// 0.605000
-0x4D71
-// 0.139355
-0x11D6
-// 0.718442
-0x5BF6
-// 0.709643
-0x5AD6
-// 0.635820
-0x5163
-// 0.458913
-0x3ABE
-// 0.712704
-0x5B3A
-// 0.197968
-0x1957
-// 0.148562
-0x1304
-// 0.599102
-0x4CAF
-// 0.152919
-0x1393
-// 0.334634
-0x2AD5
-// 0.534337
-0x4465
-// 0.340245
-0x2B8D
-// 0.893406
-0x725B
-// 0.845651
-0x6C3E
-// 0.057369
-0x0758
-// 0.409928
-0x3479
-// 0.831482
-0x6A6E
-// 0.344610
-0x2C1C
-// 0.451085
-0x39BD
-// 0.720379
+// 0.611006
+0x4E35
+// 0.316972
+0x2893
+// 0.720369
 0x5C35
-// 0.743209
+// 0.765887
+0x6209
+// 0.055048
+0x070C
+// 0.897500
+0x72E1
+// 0.886540
+0x717A
+// 0.591171
+0x4BAB
+// 0.480402
+0x3D7E
+// 0.010981
+0x0168
+// 0.637205
+0x5190
+// 0.744098
+0x5F3F
+// 0.405430
+0x33E5
+// 0.977699
+0x7D25
+// 0.976139
+0x7CF2
+// 0.170355
+0x15CE
+// 0.313694
+0x2827
+// 0.857921
+0x6DD0
+// 0.830430
+0x6A4C
+// 0.604045
+0x4D51
+// 0.771265
+0x62B9
+// 0.492615
+0x3F0E
+// 0.733511
+0x5DE4
+// 0.743195
 0x5F21
-// 0.393717
-0x3265
-// 0.626817
-0x503C
-// 0.949870
-0x7995
-// 0.726345
-0x5CF9
-// 0.211445
-0x1B11
-// 0.557236
-0x4754
-// 0.318143
-0x28B9
-// 0.241738
-0x1EF1
-// 0.426043
-0x3689
-// 0.113255
-0x0E7F
-// 0.587508
-0x4B33
-// 0.476115
-0x3CF1
-// 0.580168
-0x4A43
-// 0.274054
-0x2314
-// 0.129983
-0x10A3
-// 0.230382
-0x1D7D
-// 0.104931
-0x0D6E
-// 0.042404
-0x056E
-// 0.459771
-0x3ADA
-// 0.391562
-0x321F
-// 0.220224
-0x1C30
-// 0.351126
-0x2CF2
-// 0.305120
-0x270E
-// 0.761919
-0x6187
-// 0.813118
-0x6814
-// 0.687890
-0x580D
-// 0.848190
-0x6C91
-// 0.364696
-0x2EAE
-// 0.532080
-0x441B
-// 0.070210
-0x08FD
-// 0.832574
-0x6A92
-// 0.727285
-0x5D18
-// 0.163325
-0x14E8
-// 0.010098
-0x014B
-// 0.198483
-0x1968
-// 0.639479
-0x51DA
-// 0.784054
-0x645C
-// 0.993211
-0x7F22
-// 0.401080
-0x3357
-// 0.439452
-0x3840
-// 0.090064
-0x0B87
-// 0.505854
-0x40C0
-// 0.482874
-0x3DCF
-// 0.483374
-0x3DDF
-// 0.395664
-0x32A5
-// 0.886004
-0x7169
-// 0.290896
-0x253C
-// 0.349188
-0x2CB2
-// 0.126416
-0x102E
-// 0.103028
-0x0D30
-// 0.498207
-0x3FC5
-// 0.617724
-0x4F12
-// 0.704543
-0x5A2E
-// 0.151486
-0x1364
-// 0.097138
-0x0C6F
-// 0.844976
-0x6C28
-// 0.972863
-0x7C87
-// 0.890981
-0x720C
-// 0.140507
-0x11FC
-// 0.734462
-0x5E03
-// 0.056763
-0x0744
-// 0.098993
-0x0CAC
-// 0.967706
-0x7BDE
-// 0.715449
-0x5B94
-// 0.601449
-0x4CFC
-// 0.325030
-0x299B
-// 0.480209
-0x3D78
-// 0.904712
-0x73CE
-// 0.520916
-0x42AD
-// 0.000950
-0x001F
-// 0.598545
-0x4C9D
-// 0.404415
-0x33C4
-// 0.860223
-0x6E1C
-// 0.075844
-0x09B5
-// 0.105481
-0x0D80
-// 0.220873
-0x1C46
-// 0.515987
-0x420C
-// 0.717252
-0x5BCF
-// 0.065977
-0x0872
-// 0.589880
-0x4B81
-// 0.668825
-0x559C
-// 0.915636
-0x7534
-// 0.204173
-0x1A22
-// 0.850150
-0x6CD2
+// 0.616850
+0x4EF5
+// 0.868267
+0x6F23
+// 0.644849
+0x528A
+// 0.446832
+0x3932
+// 0.722755
+0x5C83
+// 0.818522
+0x68C5
+// 0.674442
+0x5654
+// 0.032346
+0x0424
+// 0.728255
+0x5D37
+// 0.269538
+0x2280
+// 0.458039
+0x3AA1
+// 0.507657
+0x40FB
+// 0.202315
+0x19E5
+// 0.929005
+0x76EA
+// 0.061843
+0x07EA
+// 0.303258
+0x26D1
+// 0.163605
+0x14F1
+// 0.428289
+0x36D2
+// 0.919665
+0x75B8
+// 0.656723
+0x5410
+// 0.850228
+0x6CD4
+// 0.509593
+0x413A
+// 0.717675
+0x5BDD
+// 0.302383
+0x26B4
+// 0.575297
+0x49A3
+// 0.327713
+0x29F3
+// 0.324320
+0x2983
+// 0.883098
+0x7109
+// 0.803950
+0x66E8
+// 0.172964
+0x1624
+// 0.914720
+0x7516
+// 0.846504
+0x6C5A
+// 0.397253
+0x32D9
+// 0.332927
+0x2A9D
+// 0.689093
+0x5834
+// 0.096172
+0x0C4F
+// 0.415403
+0x352C
+// 0.659488
+0x546A
+// 0.201631
+0x19CF
+// 0.528988
+0x43B6
+// 0.820465
+0x6905
+// 0.264027
+0x21CC
+// 0.204290
+0x1A26
+// 0.599283
+0x4CB5
+// 0.437967
+0x380F
+// 0.385779
+0x3161
+// 0.668709
+0x5598
+// 0.948382
+0x7965
+// 0.613569
+0x4E89
+// 0.692098
+0x5897
+// 0.192712
+0x18AB
+// 0.403895
+0x33B3
+// 0.052291
+0x06B1
+// 0.104153
+0x0D55
+// 0.830333
+0x6A48
+// 0.650485
+0x5343
+// 0.466580
+0x3BB9
+// 0.908247
+0x7441
+// 0.165777
+0x1538
+// 0.307242
+0x2754
+// 0.094427
+0x0C16
+// 0.713403
+0x5B51
+// 0.472098
+0x3C6E
+// 0.713582
+0x5B57
+// 0.748804
+0x5FD9
+// 0.253223
+0x206A
+// 0.299833
+0x2661
+// 0.850837
+0x6CE8
+// 0.684142
+0x5792
+// 0.308509
+0x277D
+// 0.055875
+0x0727
+// 0.253133
+0x2067
+// 0.804924
+0x6708
+// 0.135016
+0x1148
+// 0.367216
+0x2F01
+// 0.984489
+0x7E04
+// 0.079602
+0x0A30
+// 0.452419
+0x39E9
+// 0.427436
+0x36B6
+// 0.239972
+0x1EB7
+// 0.109914
+0x0E12
+// 0.615127
+0x4EBC
+// 0.948598
+0x796C
+// 0.188341
+0x181C
+// 0.939840
+0x784D
+// 0.111626
+0x0E4A
+// 0.803266
+0x66D1
+// 0.720093
+0x5C2C
+// 0.232146
+0x1DB7
+// 0.555926
+0x4729
+// 0.910575
+0x748E
+// 0.218856
+0x1C03
+// 0.908471
+0x7449
+// 0.807042
+0x674D
+// 0.387106
+0x318D
+// 0.169389
+0x15AF
+// 0.433897
+0x378A
+// 0.169665
+0x15B8
+// 0.794839
+0x65BD
+// 0.739957
+0x5EB7
+// 0.042773
+0x057A
+// 0.170300
+0x15CC
+// 0.523445
+0x4300
+// 0.398429
+0x3300
+// 0.357274
+0x2DBB
+// 0.932304
+0x7756
+// 0.190112
+0x1856
+// 0.856648
+0x6DA7
+// 0.597494
+0x4C7B
+// 0.761750
+0x6181
+// 0.202077
+0x19DE
+// 0.129072
+0x1085
+// 0.101433
+0x0CFC
+// 0.946349
+0x7922
+// 0.541427
+0x454D
+// 0.640491
+0x51FC
+// 0.433438
+0x377B
+// 0.302414
+0x26B6
+// 0.164106
+0x1501
+// 0.897952
+0x72F0
+// 0.949143
+0x797E
+// 0.415980
+0x353F
+// 0.404653
+0x33CC
+// 0.776649
+0x6369
+// 0.288609
+0x24F1
+// 0.314588
+0x2844
+// 0.843192
+0x6BEE
+// 0.808076
+0x676F
+// 0.970269
+0x7C32
+// 0.187041
+0x17F1
+// 0.117301
+0x0F04
+// 0.872583
+0x6FB1
+// 0.083488
+0x0AB0
+// 0.670409
+0x55D0
+// 0.201448
+0x19C9
+// 0.418215
+0x3588
+// 0.653495
+0x53A6
+// 0.249680
+0x1FF6
+// 0.395696
+0x32A6
+// 0.869253
+0x6F44
+// 0.241535
+0x1EEB
+// 0.765568
+0x61FE
+// 0.074356
+0x0984
+// 0.305481
+0x271A
+// 0.344523
+0x2C19
+// 0.853043
+0x6D31
+// 0.314140
+0x2836
+// 0.685484
+0x57BE
+// 0.434931
+0x37AC
+// 0.427830
+0x36C3
+// 0.800760
+0x667F
+// 0.978834
+0x7D4A
+// 0.864263
+0x6EA0
+// 0.230305
+0x1D7B
+// 0.351072
+0x2CF0
+// 0.064649
+0x0846
+// 0.637090
+0x518C
+// 0.993854
+0x7F37
+// 0.564281
+0x483A
+// 0.620591
+0x4F70
+// 0.425228
+0x366E
+// 0.931161
+0x7730
+// 0.802282
+0x66B1
+// 0.298686
+0x263B
+// 0.019277
+0x0278
+// 0.323693
+0x296F
+// 0.483413
+0x3DE0
+// 0.350656
+0x2CE2
+// 0.443162
+0x38BA
+// 0.631354
+0x50D0
+// 0.049215
+0x064D
+// 0.385729
+0x3160
+// 0.715736
+0x5B9D
+// 0.045253
+0x05CB
+// 0.529656
+0x43CC
+// 0.784850
+0x6476
+// 0.058249
+0x0775
+// 0.465815
+0x3BA0
+// 0.045272
+0x05CB
+// 0.640264
+0x51F4
 // 1.000000
 0x7FFF
-// 0.796123
-0x65E7
-// 0.615530
-0x4ECA
-// 0.244125
-0x1F3F
-// 0.895382
-0x729C
-// 0.482606
-0x3DC6
-// 0.988264
-0x7E7F
-// 0.735498
-0x5E25
-// 0.659869
-0x5477
-// 0.270493
-0x22A0
-// 0.255657
-0x20B9
-// 0.289213
-0x2505
-// 0.636228
-0x5170
-// 0.207228
-0x1A86
-// 0.607471
-0x4DC2
-// 0.607364
-0x4DBE
-// 0.460077
-0x3AE4
-// 0.247188
-0x1FA4
-// 0.705260
-0x5A46
-// 0.973317
-0x7C96
-// 0.888536
-0x71BC
-// 0.395932
-0x32AE
-// 0.194524
-0x18E6
-// 0.431453
-0x373A
-// 0.646691
-0x52C7
-// 0.155492
-0x13E7
-// 0.102819
-0x0D29
-// 0.525254
-0x433C
-// 0.409533
-0x346C
-// 0.123632
-0x0FD3
-// 0.488512
-0x3E88
-// 0.529864
-0x43D3
-// 0.120458
-0x0F6B
-// 0.547321
-0x460F
-// 0.527096
-0x4378
-// 0.487433
-0x3E64
-// 0.302979
-0x26C8
-// 0.665032
-0x5520
-// 0.826376
-0x69C7
-// 0.501373
-0x402D
-// 0.356095
-0x2D95
-// 0.604881
-0x4D6D
-// 0.271477
-0x22C0
-// 0.274070
-0x2315
-// 0.214623
-0x1B79
-// 0.323710
-0x296F
-// 0.830010
-0x6A3E
-// 0.901649
-0x7369
-// 0.618633
-0x4F2F
-// 0.996302
-0x7F87
-// 0.336172
-0x2B08
-// 0.592094
-0x4BCA
-// 0.223924
-0x1CAA
-// 0.639678
-0x51E1
-// 0.051452
-0x0696
-// 0.289750
-0x2517
-// 0.337859
-0x2B3F
-// 0.869576
-0x6F4E
-// 0.608925
-0x4DF1
-// 0.090629
-0x0B9A
-// 0.397193
-0x32D7
-// 0.221780
-0x1C63
-// 0.385140
-0x314C
-// 0.480907
-0x3D8E
-// 0.029408
-0x03C4
-// 0.546041
-0x45E5
-// 0.537465
-0x44CC
-// 0.252707
-0x2059
-// 0.116984
-0x0EF9
-// 0.695193
-0x58FC
-// 0.524272
-0x431B
-// 0.937755
-0x7808
-// 0.484820
-0x3E0F
-// 0.951172
-0x79C0
-// 0.515688
-0x4202
-// 0.536603
-0x44AF
-// 0.791043
-0x6541
-// 0.295877
-0x25DF
-// 0.206984
-0x1A7E
-// 0.035968
-0x049B
-// 0.819304
-0x68DF
-// 0.306870
-0x2748
-// 0.773333
-0x62FD
-// 0.873449
-0x6FCD
-// 0.351634
-0x2D02
-// 0.738334
-0x5E82
-// 0.542984
-0x4580
-// 0.186866
-0x17EB
-// 0.624734
-0x4FF7
-// 0.099261
-0x0CB5
-// 0.636030
-0x5169
+// 0.473222
+0x3C93
+// 0.100652
+0x0CE2
+// 0.404837
+0x33D2
+// 0.087717
+0x0B3A
+// 0.222914
+0x1C88
+// 0.759238
+0x612F
+// 0.251504
+0x2031
+// 0.783428
+0x6447
+// 0.236374
+0x1E41
+// 0.181562
+0x173D
+// 0.317967
+0x28B3
+// 0.360481
+0x2E24
+// 0.539373
+0x450A
+// 0.175095
+0x1669
+// 0.416085
+0x3542
+// 0.889162
+0x71D0
+// 0.412557
+0x34CF
+// 0.122631
+0x0FB2
+// 0.632899
+0x5103
+// 0.017485
+0x023D
+// 0.897256
+0x72D9
+// 0.672790
+0x561E
+// 0.727910
+0x5D2C
+// 0.143488
+0x125E
+// 0.713107
+0x5B47
+// 0.941049
+0x7874
+// 0.303453
+0x26D8
+// 0.047812
+0x061F
+// 0.319685
+0x28EB
+// 0.171207
+0x15EA
+// 0.305832
+0x2726
+// 0.425621
+0x367B
+// 0.384851
+0x3143
+// 0.690732
+0x586A
+// 0.550845
+0x4682
+// 0.079152
+0x0A22
+// 0.349299
+0x2CB6
+// 0.293036
+0x2582
+// 0.873137
+0x6FC3
+// 0.799771
+0x665F
+// 0.515084
+0x41EE
+// 0.462522
+0x3B34
+// 0.814347
+0x683D
+// 0.780568
+0x63EA
+// 0.019021
+0x026F
+// 0.363366
+0x2E83
+// 0.994428
+0x7F49
+// 0.458831
+0x3ABB
+// 0.470851
+0x3C45
+// 0.979887
+0x7D6D
+// 0.641361
+0x5218
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ15/Samples4_q15.txt b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ15/Samples4_q15.txt
deleted file mode 100644
index 01e200b..0000000
--- a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ15/Samples4_q15.txt
+++ /dev/null
@@ -1,514 +0,0 @@
-H
-256
-// 0.144391
-0x127B
-// 0.958651
-0x7AB5
-// 0.821446
-0x6925
-// 0.588280
-0x4B4D
-// 0.211205
-0x1B09
-// 0.175660
-0x167C
-// 0.791682
-0x6556
-// 0.056337
-0x0736
-// 0.793706
-0x6598
-// 0.732092
-0x5DB5
-// 0.349484
-0x2CBC
-// 0.368908
-0x2F38
-// 0.255966
-0x20C3
-// 0.492488
-0x3F0A
-// 0.193551
-0x18C6
-// 0.194452
-0x18E4
-// 0.179474
-0x16F9
-// 0.269020
-0x226F
-// 0.416449
-0x354E
-// 0.371049
-0x2F7F
-// 0.632028
-0x50E6
-// 0.200916
-0x19B8
-// 0.516230
-0x4214
-// 0.583335
-0x4AAB
-// 0.805884
-0x6727
-// 0.853732
-0x6D47
-// 0.125518
-0x1011
-// 0.771861
-0x62CC
-// 0.742817
-0x5F15
-// 0.839346
-0x6B70
-// 0.344994
-0x2C29
-// 0.505287
-0x40AD
-// 0.317059
-0x2895
-// 0.093700
-0x0BFE
-// 0.292193
-0x2567
-// 0.824347
-0x6984
-// 0.062673
-0x0806
-// 0.504570
-0x4096
-// 0.198705
-0x196F
-// 0.008418
-0x0114
-// 0.335745
-0x2AFA
-// 0.599795
-0x4CC6
-// 0.580309
-0x4A48
-// 0.124579
-0x0FF2
-// 0.898634
-0x7306
-// 0.647891
-0x52EE
-// 0.132613
-0x10F9
-// 0.307072
-0x274E
-// 0.494364
-0x3F47
-// 0.283631
-0x244E
-// 0.002380
-0x004E
-// 0.618162
-0x4F20
-// 0.773662
-0x6307
-// 0.154058
-0x13B8
-// 0.176731
-0x169F
-// 0.764287
-0x61D4
-// 0.453611
-0x3A10
-// 0.198728
-0x1970
-// 0.483312
-0x3DDD
-// 0.640955
-0x520B
-// 0.333781
-0x2AB9
-// 0.274713
-0x232A
-// 0.168260
-0x158A
-// 0.812896
-0x680D
-// 0.100032
-0x0CCE
-// 0.348647
-0x2CA0
-// 0.919179
-0x75A8
-// 0.003239
-0x006A
-// 0.923150
-0x762A
-// 0.448369
-0x3964
-// 0.238028
-0x1E78
-// 0.939050
-0x7833
-// 0.153408
-0x13A3
-// 0.791922
-0x655E
-// 0.027553
-0x0387
-// 0.915065
-0x7521
-// 0.913374
-0x74E9
-// 0.043437
-0x058F
-// 0.058099
-0x0770
-// 0.634992
-0x5147
-// 0.156831
-0x1413
-// 0.187441
-0x17FE
-// 0.280818
-0x23F2
-// 0.478383
-0x3D3C
-// 0.008012
-0x0107
-// 0.875134
-0x7004
-// 0.954758
-0x7A36
-// 0.990808
-0x7ED3
-// 0.119405
-0x0F49
-// 0.636543
-0x517A
-// 0.293915
-0x259F
-// 0.652468
-0x5384
-// 0.780183
-0x63DD
-// 0.994846
-0x7F57
-// 0.600115
-0x4CD1
-// 0.093462
-0x0BF7
-// 0.261326
-0x2173
-// 0.499249
-0x3FE7
-// 0.135400
-0x1155
-// 0.711795
-0x5B1C
-// 0.021319
-0x02BB
-// 0.091986
-0x0BC6
-// 0.620624
-0x4F71
-// 0.870688
-0x6F73
-// 0.917123
-0x7564
-// 0.542946
-0x457F
-// 0.679183
-0x56EF
-// 0.268538
-0x225F
-// 0.501282
-0x402A
-// 0.745693
-0x5F73
-// 0.054118
-0x06ED
-// 0.333073
-0x2AA2
-// 0.331481
-0x2A6E
-// 0.524626
-0x4327
-// 0.550856
-0x4682
-// 0.327838
-0x29F7
-// 0.377734
-0x305A
-// 0.853335
-0x6D3A
-// 0.541513
-0x4550
-// 0.750542
-0x6012
-// 0.302713
-0x26BF
-// 0.148314
-0x12FC
-// 0.645693
-0x52A6
-// 0.766775
-0x6226
-// 0.007420
-0x00F3
-// 0.584327
-0x4ACB
-// 0.523916
-0x4310
-// 0.340297
-0x2B8F
-// 0.685601
-0x57C2
-// 0.268302
-0x2258
-// 0.181190
-0x1731
-// 0.898530
-0x7303
-// 0.803442
-0x66D7
-// 0.887675
-0x719F
-// 0.397831
-0x32EC
-// 0.714396
-0x5B71
-// 0.285525
-0x248C
-// 0.029354
-0x03C2
-// 0.569143
-0x48DA
-// 0.455384
-0x3A4A
-// 0.685451
-0x57BD
-// 0.521159
-0x42B5
-// 0.174605
-0x1659
-// 0.020771
-0x02A9
-// 0.383662
-0x311C
-// 0.424883
-0x3663
-// 0.466041
-0x3BA7
-// 0.482080
-0x3DB5
-// 0.552090
-0x46AB
-// 0.754889
-0x60A0
-// 0.874189
-0x6FE5
-// 0.929138
-0x76EE
-// 0.782064
-0x641B
-// 0.163965
-0x14FD
-// 0.391992
-0x322D
-// 0.136031
-0x1169
-// 0.089010
-0x0B65
-// 0.260140
-0x214C
-// 0.672324
-0x560F
-// 0.441056
-0x3875
-// 0.120435
-0x0F6A
-// 0.668317
-0x558B
-// 0.505555
-0x40B6
-// 0.623165
-0x4FC4
-// 0.056906
-0x0749
-// 0.085830
-0x0AFC
-// 0.063736
-0x0829
-// 0.784411
-0x6468
-// 0.375764
-0x3019
-// 0.242515
-0x1F0B
-// 0.056171
-0x0731
-// 0.928458
-0x76D8
-// 0.895802
-0x72AA
-// 0.023369
-0x02FE
-// 0.547878
-0x4621
-// 0.693917
-0x58D2
-// 0.218422
-0x1BF5
-// 0.452458
-0x39EA
-// 0.767990
-0x624E
-// 0.211315
-0x1B0C
-// 0.516275
-0x4215
-// 0.862608
-0x6E6A
-// 0.278297
-0x239F
-// 0.825026
-0x699A
-// 0.169587
-0x15B5
-// 0.835446
-0x6AF0
-// 0.587282
-0x4B2C
-// 0.579881
-0x4A3A
-// 0.294639
-0x25B7
-// 0.747040
-0x5F9F
-// 0.307302
-0x2756
-// 0.682353
-0x5757
-// 0.035267
-0x0484
-// 0.978582
-0x7D42
-// 0.882420
-0x70F3
-// 0.447851
-0x3953
-// 0.818735
-0x68CC
-// 0.810363
-0x67BA
-// 0.731421
-0x5D9F
-// 0.377061
-0x3044
-// 0.637273
-0x5192
-// 0.476025
-0x3CEE
-// 0.864724
-0x6EAF
-// 0.002928
-0x0060
-// 0.661877
-0x54B8
-// 0.737435
-0x5E64
-// 0.017738
-0x0245
-// 0.527205
-0x437B
-// 0.181781
-0x1745
-// 0.479220
-0x3D57
-// 0.819948
-0x68F4
-// 0.566135
-0x4877
-// 0.265537
-0x21FD
-// 0.614799
-0x4EB2
-// 0.284862
-0x2476
-// 0.030165
-0x03DC
-// 0.590567
-0x4B98
-// 0.463878
-0x3B60
-// 0.524073
-0x4315
-// 0.013152
-0x01AF
-// 0.508600
-0x411A
-// 0.869588
-0x6F4F
-// 0.634318
-0x5131
-// 0.066571
-0x0885
-// 0.902473
-0x7384
-// 0.246566
-0x1F8F
-// 0.140008
-0x11EC
-// 0.365425
-0x2EC6
-// 0.512752
-0x41A2
-// 0.857152
-0x6DB7
-// 0.782718
-0x6430
-// 0.500798
-0x401A
-// 0.823944
-0x6977
-// 0.234420
-0x1E01
-// 0.401663
-0x336A
-// 0.856754
-0x6DAA
-// 0.687162
-0x57F5
-// 0.354414
-0x2D5D
-// 0.763903
-0x61C8
-// 0.190120
-0x1856
-// 0.425948
-0x3685
-// 0.235378
-0x1E21
-// 0.992316
-0x7F04
-// 0.611008
-0x4E36
-// 0.182368
-0x1758
-// 0.562894
-0x480D
-// 0.547377
-0x4610
-// 0.477196
-0x3D15
-// 0.518454
-0x425D
-// 0.330947
-0x2A5C
-// 0.668552
-0x5593
-// 0.512026
-0x418A
-// 0.507403
-0x40F3
-// 0.795365
-0x65CF
-// 0.067154
-0x0898
-// 0.249421
-0x1FED
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ15/Samples4_q31.txt b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ15/Samples4_q31.txt
old mode 100644
new mode 100755
index e86be28..c4c153a
--- a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ15/Samples4_q31.txt
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ15/Samples4_q31.txt
@@ -1,514 +1,514 @@
 W
 256
-// 0.629808
-0x509D8862
-// 0.767837
-0x624877F7
-// 0.406514
-0x3408A948
-// 0.736988
-0x5E559BCB
-// 0.019090
-0x027188EE
-// 0.259572
-0x2139A800
-// 0.016164
-0x0211A843
-// 0.992820
-0x7F14BADC
-// 0.434454
-0x379C332F
-// 0.491433
-0x3EE7452C
-// 0.135967
-0x11675B51
-// 0.755845
-0x60BF89AF
-// 0.564335
-0x483C2511
-// 0.525125
-0x43374F66
-// 0.429784
-0x370327E5
-// 0.804056
-0x66EB511A
-// 0.859072
-0x6DF61417
-// 0.806005
-0x672B2C23
-// 0.442886
-0x38B07AE8
-// 0.109494
-0x0E03E2DB
-// 0.525035
-0x43345C6E
-// 0.399489
-0x3322787B
-// 0.452378
-0x39E7890F
-// 0.047941
-0x0622EF73
-// 0.862060
-0x6E57FD00
-// 0.243796
-0x1F34B3CC
-// 0.969406
-0x7C157EC1
-// 0.575658
-0x49AF2C47
-// 0.542375
-0x456C8EBC
-// 0.627904
-0x505F256F
-// 0.019669
-0x028482AC
-// 0.960356
-0x7AECF334
-// 0.630356
-0x50AF80B4
-// 0.097618
-0x0C7EC295
-// 0.051973
-0x06A70910
-// 0.702347
-0x59E6834D
-// 0.198601
-0x196BC00C
-// 0.151983
-0x13742CB2
-// 0.126313
-0x102B09FC
-// 0.684087
-0x57902935
-// 0.634531
-0x513851DD
-// 0.066474
-0x08823859
-// 0.281877
-0x24148D8D
-// 0.934816
-0x77A80CE6
-// 0.529087
-0x43B91C67
-// 0.008571
-0x0118DC34
-// 0.752835
-0x605CE9B1
-// 0.848600
-0x6C9EF0A6
-// 0.856296
-0x6D9B1D30
-// 0.834721
-0x6AD825D1
-// 0.781907
-0x641586E9
-// 0.438857
-0x382C7879
-// 0.401125
-0x33581471
-// 0.375756
-0x3018C3BF
-// 0.173644
-0x1639F73A
-// 0.798702
-0x663BE0C7
-// 0.580714
-0x4A54D7F5
-// 0.351200
-0x2CF41B52
-// 0.605000
-0x4D70A003
-// 0.139355
-0x11D65EF9
-// 0.718442
-0x5BF5E93A
-// 0.709643
-0x5AD59505
-// 0.635820
-0x51628FF3
-// 0.458913
-0x3ABDAAF8
-// 0.712704
-0x5B39E03A
-// 0.197968
-0x19570619
-// 0.148562
-0x13041607
-// 0.599102
-0x4CAF60BB
-// 0.152919
-0x1392DBED
-// 0.334634
-0x2AD5475D
-// 0.534337
-0x4465276C
-// 0.340245
-0x2B8D25A6
-// 0.893406
-0x725B1EAE
-// 0.845651
-0x6C3E4DD1
-// 0.057369
-0x0757DBE7
-// 0.409928
-0x3478848B
-// 0.831482
-0x6A6E023D
-// 0.344610
-0x2C1C2E96
-// 0.451085
-0x39BD254D
-// 0.720379
-0x5C3563F0
-// 0.743209
-0x5F217A75
-// 0.393717
-0x32654EE3
-// 0.626817
-0x503B867A
-// 0.949870
-0x799558BC
-// 0.726345
-0x5CF8DE97
-// 0.211445
-0x1B10A044
-// 0.557236
-0x475382F4
-// 0.318143
-0x28B8EA6C
-// 0.241738
-0x1EF147F1
-// 0.426043
-0x3688948E
-// 0.113255
-0x0E7F262A
-// 0.587508
-0x4B33788E
-// 0.476115
-0x3CF153AE
-// 0.580168
-0x4A42F199
-// 0.274054
-0x2314336B
-// 0.129983
-0x10A34829
-// 0.230382
-0x1D7D2538
-// 0.104931
-0x0D6E5F31
-// 0.042404
-0x056D82AB
-// 0.459771
-0x3AD9C90E
-// 0.391562
-0x321EB627
-// 0.220224
-0x1C304CA4
-// 0.351126
-0x2CF1AF64
-// 0.305120
-0x270E2BDF
-// 0.761919
-0x61869260
-// 0.813118
-0x681443A8
-// 0.687890
-0x580CCADC
-// 0.848190
-0x6C917EAB
-// 0.364696
-0x2EAE58F5
-// 0.532080
-0x441B30AE
-// 0.070210
-0x08FCA015
-// 0.832574
-0x6A91C6BB
-// 0.727285
-0x5D17A91C
-// 0.163325
-0x14E7D470
-// 0.010098
-0x014AE2B9
-// 0.198483
-0x1967E301
-// 0.639479
-0x51DA72CA
-// 0.784054
-0x645BE0B5
-// 0.993211
-0x7F218621
-// 0.401080
-0x335694C6
-// 0.439452
-0x383FF9DE
-// 0.090064
-0x0B873866
-// 0.505854
-0x40BFCFA1
-// 0.482874
-0x3DCECD08
-// 0.483374
-0x3DDF301F
-// 0.395664
-0x32A52079
-// 0.886004
-0x716895B8
-// 0.290896
-0x253C1411
-// 0.349188
-0x2CB23360
-// 0.126416
-0x102E6345
-// 0.103028
-0x0D30075F
-// 0.498207
-0x3FC54088
-// 0.617724
-0x4F119072
-// 0.704543
-0x5A2E78AC
-// 0.151486
-0x1363E693
-// 0.097138
-0x0C6F017B
-// 0.844976
-0x6C282E06
-// 0.972863
-0x7C86C547
-// 0.890981
-0x720BAA1B
-// 0.140507
-0x11FC2411
-// 0.734462
-0x5E02DCD9
-// 0.056763
-0x074400A7
-// 0.098993
-0x0CABCEE8
-// 0.967706
-0x7BDDC793
-// 0.715449
-0x5B93D962
-// 0.601449
-0x4CFC47B9
-// 0.325030
-0x299A9515
-// 0.480209
-0x3D7780EA
-// 0.904712
-0x73CD96AA
-// 0.520916
-0x42AD5D0D
-// 0.000950
-0x001F1E61
-// 0.598545
-0x4C9D1DD8
-// 0.404415
-0x33C3DC1F
-// 0.860223
-0x6E1BCBA5
-// 0.075844
-0x09B543F3
-// 0.105481
-0x0D8067D5
-// 0.220873
-0x1C459519
-// 0.515987
-0x420BDB61
-// 0.717252
-0x5BCEEA33
-// 0.065977
-0x0871EF49
-// 0.589880
-0x4B812C68
-// 0.668825
-0x559C0EE8
-// 0.915636
-0x75339023
-// 0.204173
-0x1A225720
-// 0.850150
-0x6CD1B38B
+// 0.611006
+0x4E356F7A
+// 0.316972
+0x28928DB2
+// 0.720369
+0x5C350EDE
+// 0.765887
+0x6208959D
+// 0.055048
+0x070BCD9C
+// 0.897500
+0x72E147FF
+// 0.886540
+0x717A23FC
+// 0.591171
+0x4BAB7CAC
+// 0.480402
+0x3D7DCBE2
+// 0.010981
+0x0167D1E1
+// 0.637205
+0x518FEEDD
+// 0.744098
+0x5F3E990D
+// 0.405430
+0x33E51E69
+// 0.977699
+0x7D253DD3
+// 0.976139
+0x7CF2203D
+// 0.170355
+0x15CE2D64
+// 0.313694
+0x28271EAD
+// 0.857921
+0x6DD059E2
+// 0.830430
+0x6A4B83A7
+// 0.604045
+0x4D515914
+// 0.771265
+0x62B8D177
+// 0.492615
+0x3F0E0162
+// 0.733511
+0x5DE3B0AC
+// 0.743195
+0x5F20FFB9
+// 0.616850
+0x4EF4EF7B
+// 0.868267
+0x6F235C5B
+// 0.644849
+0x528A698F
+// 0.446832
+0x3931CE74
+// 0.722755
+0x5C833BC4
+// 0.818522
+0x68C55513
+// 0.674442
+0x56541A7A
+// 0.032346
+0x0423E8F2
+// 0.728255
+0x5D37720D
+// 0.269538
+0x2280368F
+// 0.458039
+0x3AA1061A
+// 0.507657
+0x40FAE6DA
+// 0.202315
+0x19E57462
+// 0.929005
+0x76E9A0DF
+// 0.061843
+0x07EA7B08
+// 0.303258
+0x26D1295B
+// 0.163605
+0x14F10256
+// 0.428289
+0x36D22FFB
+// 0.919665
+0x75B79235
+// 0.656723
+0x540F8339
+// 0.850228
+0x6CD445EA
+// 0.509593
+0x413A5670
+// 0.717675
+0x5BDCC361
+// 0.302383
+0x26B478C9
+// 0.575297
+0x49A358CF
+// 0.327713
+0x29F28166
+// 0.324320
+0x29834EEF
+// 0.883098
+0x710959C8
+// 0.803950
+0x66E7D1BC
+// 0.172964
+0x1623B282
+// 0.914720
+0x7515898A
+// 0.846504
+0x6C5A3A2C
+// 0.397253
+0x32D92F9A
+// 0.332927
+0x2A9D58A2
+// 0.689093
+0x583436DA
+// 0.096172
+0x0C4F5D21
+// 0.415403
+0x352BEF39
+// 0.659488
+0x546A18D9
+// 0.201631
+0x19CF0B0B
+// 0.528988
+0x43B5E428
+// 0.820465
+0x6904FC9F
+// 0.264027
+0x21CBA54F
+// 0.204290
+0x1A262D24
+// 0.599283
+0x4CB54E90
+// 0.437967
+0x380F4C85
+// 0.385779
+0x31613436
+// 0.668709
+0x55984276
+// 0.948382
+0x79649269
+// 0.613569
+0x4E896F72
+// 0.692098
+0x5896AAC6
+// 0.192712
+0x18AACC08
+// 0.403895
+0x33B2D783
+// 0.052291
+0x06B177CA
+// 0.104153
+0x0D54E324
+// 0.830333
+0x6A485A1D
+// 0.650485
+0x5343162B
+// 0.466580
+0x3BB8E2EA
+// 0.908247
+0x74417061
+// 0.165777
+0x15382B4D
+// 0.307242
+0x2753B19A
+// 0.094427
+0x0C162D66
+// 0.713403
+0x5B50CA29
+// 0.472098
+0x3C6DB5BE
+// 0.713582
+0x5B56A88E
+// 0.748804
+0x5FD8D049
+// 0.253223
+0x206999F3
+// 0.299833
+0x2660EF48
+// 0.850837
+0x6CE83CA6
+// 0.684142
+0x5791F8E0
+// 0.308509
+0x277D35DB
+// 0.055875
+0x0726E5B4
+// 0.253133
+0x2066AB77
+// 0.804924
+0x6707BE2A
+// 0.135016
+0x1148362C
+// 0.367216
+0x2F00EF12
+// 0.984489
+0x7E03BEEC
+// 0.079602
+0x0A3061F6
+// 0.452419
+0x39E8DDCE
+// 0.427436
+0x36B63511
+// 0.239972
+0x1EB76B25
+// 0.109914
+0x0E11A613
+// 0.615127
+0x4EBC7DD5
+// 0.948598
+0x796BA993
+// 0.188341
+0x181B8C30
+// 0.939840
+0x784CAEDD
+// 0.111626
+0x0E49C493
+// 0.803266
+0x66D16882
+// 0.720093
+0x5C2C0565
+// 0.232146
+0x1DB6F29F
+// 0.555926
+0x472897C0
+// 0.910575
+0x748DB539
+// 0.218856
+0x1C03768A
+// 0.908471
+0x7448CB17
+// 0.807042
+0x674D260E
+// 0.387106
+0x318CB2D4
+// 0.169389
+0x15AE8AC4
+// 0.433897
+0x3789ED26
+// 0.169665
+0x15B794C8
+// 0.794839
+0x65BD4A13
+// 0.739957
+0x5EB6EBD7
+// 0.042773
+0x0579938F
+// 0.170300
+0x15CC6748
+// 0.523445
+0x43003CBC
+// 0.398429
+0x32FFB5C5
+// 0.357274
+0x2DBB28DC
+// 0.932304
+0x7755B9AB
+// 0.190112
+0x18559805
+// 0.856648
+0x6DA6A652
+// 0.597494
+0x4C7AAEAC
+// 0.761750
+0x6181077B
+// 0.202077
+0x19DDAC3A
+// 0.129072
+0x1085712E
+// 0.101433
+0x0CFBC02B
+// 0.946349
+0x7921F70B
+// 0.541427
+0x454D7794
+// 0.640491
+0x51FB9B5F
+// 0.433438
+0x377AE5D7
+// 0.302414
+0x26B58382
+// 0.164106
+0x15016922
+// 0.897952
+0x72F01AFE
+// 0.949143
+0x797D87AE
+// 0.415980
+0x353ED1EE
+// 0.404653
+0x33CBA95A
+// 0.776649
+0x63693B4D
+// 0.288609
+0x24F1242C
+// 0.314588
+0x28446C36
+// 0.843192
+0x6BEDB406
+// 0.808076
+0x676F0BE8
+// 0.970269
+0x7C31C81B
+// 0.187041
+0x17F0F652
+// 0.117301
+0x0F03B701
+// 0.872583
+0x6FB0C9B4
+// 0.083488
+0x0AAFBAF7
+// 0.670409
+0x55CFF2FD
+// 0.201448
+0x19C90C9E
+// 0.418215
+0x358811B6
+// 0.653495
+0x53A5BBD6
+// 0.249680
+0x1FF5872D
+// 0.395696
+0x32A62971
+// 0.869253
+0x6F43B195
+// 0.241535
+0x1EEA9F9D
+// 0.765568
+0x61FE1E5B
+// 0.074356
+0x09847FB1
+// 0.305481
+0x271A02AD
+// 0.344523
+0x2C1951D5
+// 0.853043
+0x6D308301
+// 0.314140
+0x2835BFB9
+// 0.685484
+0x57BDF074
+// 0.434931
+0x37ABD0AA
+// 0.427830
+0x36C323AC
+// 0.800760
+0x667F4ECC
+// 0.978834
+0x7D4A7213
+// 0.864263
+0x6EA029D2
+// 0.230305
+0x1D7AA50C
+// 0.351072
+0x2CEFEE9E
+// 0.064649
+0x084667F9
+// 0.637090
+0x518C29DC
+// 0.993854
+0x7F369C2F
+// 0.564281
+0x483A5DE1
+// 0.620591
+0x4F6F85CE
+// 0.425228
+0x366DE326
+// 0.931161
+0x773047AD
+// 0.802282
+0x66B12E6C
+// 0.298686
+0x263B5634
+// 0.019277
+0x0277AC5D
+// 0.323693
+0x296EC763
+// 0.483413
+0x3DE0768E
+// 0.350656
+0x2CE24E9A
+// 0.443162
+0x38B98C79
+// 0.631354
+0x50D0361D
+// 0.049215
+0x064CAD42
+// 0.385729
+0x315F8F1B
+// 0.715736
+0x5B9D3B20
+// 0.045253
+0x05CAD9D3
+// 0.529656
+0x43CBC1EE
+// 0.784850
+0x6475FA94
+// 0.058249
+0x0774B35E
+// 0.465815
+0x3B9FD24B
+// 0.045272
+0x05CB7CA4
+// 0.640264
+0x51F42F1E
 // 1.000000
 0x7FFFFFFF
-// 0.796123
-0x65E759EB
-// 0.615530
-0x4EC9AC88
-// 0.244125
-0x1F3F7FA1
-// 0.895382
-0x729BE305
-// 0.482606
-0x3DC609B0
-// 0.988264
-0x7E7F6F9F
-// 0.735498
-0x5E24CAD8
-// 0.659869
-0x54769310
-// 0.270493
-0x229F842D
-// 0.255657
-0x20B95BE4
-// 0.289213
-0x2504EA69
-// 0.636228
-0x516FEAD8
-// 0.207228
-0x1A86722E
-// 0.607471
-0x4DC19D74
-// 0.607364
-0x4DBE1E23
-// 0.460077
-0x3AE3CEAC
-// 0.247188
-0x1FA3DB19
-// 0.705260
-0x5A45F8F3
-// 0.973317
-0x7C95A780
-// 0.888536
-0x71BB8C5A
-// 0.395932
-0x32ADE534
-// 0.194524
-0x18E6298C
-// 0.431453
-0x3739D80B
-// 0.646691
-0x52C6C5D3
-// 0.155492
-0x13E7290B
-// 0.102819
-0x0D292F6A
-// 0.525254
-0x433B899D
-// 0.409533
-0x346B96C2
-// 0.123632
-0x0FD32AD6
-// 0.488512
-0x3E878F3C
-// 0.529864
-0x43D2979F
-// 0.120458
-0x0F6B2936
-// 0.547321
-0x460E9B3F
-// 0.527096
-0x4377DEF8
-// 0.487433
-0x3E6432AC
-// 0.302979
-0x26C80639
-// 0.665032
-0x551FC4C0
-// 0.826376
-0x69C6ADD3
-// 0.501373
-0x402CFE4F
-// 0.356095
-0x2D94892B
-// 0.604881
-0x4D6CBA22
-// 0.271477
-0x22BFC198
-// 0.274070
-0x2314B866
-// 0.214623
-0x1B78C4BA
-// 0.323710
-0x296F5825
-// 0.830010
-0x6A3DC342
-// 0.901649
-0x73693C7B
-// 0.618633
-0x4F2F6196
-// 0.996302
-0x7F86CF86
-// 0.336172
-0x2B07AB00
-// 0.592094
-0x4BC9BC21
-// 0.223924
-0x1CA9868C
-// 0.639678
-0x51E0F5B5
-// 0.051452
-0x0695FCF5
-// 0.289750
-0x251684EB
-// 0.337859
-0x2B3EFA22
-// 0.869576
-0x6F4E429A
-// 0.608925
-0x4DF14171
-// 0.090629
-0x0B99BCB0
-// 0.397193
-0x32D7367E
-// 0.221780
-0x1C634B7C
-// 0.385140
-0x314C46C0
-// 0.480907
-0x3D8E5F6D
-// 0.029408
-0x03C3A3C5
-// 0.546041
-0x45E4ADF3
-// 0.537465
-0x44CBA613
-// 0.252707
-0x2058B4D2
-// 0.116984
-0x0EF9554E
-// 0.695193
-0x58FC16D3
-// 0.524272
-0x431B5447
-// 0.937755
-0x78085D5E
-// 0.484820
-0x3E0E9609
-// 0.951172
-0x79BFFDB0
-// 0.515688
-0x42020CF1
-// 0.536603
-0x44AF640D
-// 0.791043
-0x6540E908
-// 0.295877
-0x25DF4B21
-// 0.206984
-0x1A7E760A
-// 0.035968
-0x049A9900
-// 0.819304
-0x68DEF0C3
-// 0.306870
-0x2747866D
-// 0.773333
-0x62FC939E
-// 0.873449
-0x6FCD3067
-// 0.351634
-0x2D025BD8
-// 0.738334
-0x5E81B8DD
-// 0.542984
-0x45807E62
-// 0.186866
-0x17EB36D5
-// 0.624734
-0x4FF744BE
-// 0.099261
-0x0CB49561
-// 0.636030
-0x516971FB
+// 0.473222
+0x3C9286F0
+// 0.100652
+0x0CE2271E
+// 0.404837
+0x33D1B51E
+// 0.087717
+0x0B3A4C4C
+// 0.222914
+0x1C886FD5
+// 0.759238
+0x612EB635
+// 0.251504
+0x2031454B
+// 0.783428
+0x64475EE2
+// 0.236374
+0x1E417D73
+// 0.181562
+0x173D6E35
+// 0.317967
+0x28B32076
+// 0.360481
+0x2E243A09
+// 0.539373
+0x450A2A80
+// 0.175095
+0x16697FAF
+// 0.416085
+0x35424805
+// 0.889162
+0x71D01213
+// 0.412557
+0x34CEA8A0
+// 0.122631
+0x0FB261C7
+// 0.632899
+0x5102D7BB
+// 0.017485
+0x023CF284
+// 0.897256
+0x72D94811
+// 0.672790
+0x561DFA82
+// 0.727910
+0x5D2C237D
+// 0.143488
+0x125DD473
+// 0.713107
+0x5B47135C
+// 0.941049
+0x78744D12
+// 0.303453
+0x26D79069
+// 0.047812
+0x061EB3CD
+// 0.319685
+0x28EB73A0
+// 0.171207
+0x15EA1F4F
+// 0.305832
+0x2725824F
+// 0.425621
+0x367ABDB1
+// 0.384851
+0x3142D05D
+// 0.690732
+0x5869E69E
+// 0.550845
+0x468215A4
+// 0.079152
+0x0A21A635
+// 0.349299
+0x2CB5D678
+// 0.293036
+0x25823571
+// 0.873137
+0x6FC2F050
+// 0.799771
+0x665EE758
+// 0.515084
+0x41EE4214
+// 0.462522
+0x3B33EBAC
+// 0.814347
+0x683C8453
+// 0.780568
+0x63E9AA61
+// 0.019021
+0x026F4985
+// 0.363366
+0x2E82C3EE
+// 0.994428
+0x7F496791
+// 0.458831
+0x3ABAFA39
+// 0.470851
+0x3C44D984
+// 0.979887
+0x7D6CF392
+// 0.641361
+0x52182073
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ15/Samples5_q7.txt b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ15/Samples5_q7.txt
old mode 100644
new mode 100755
index 265b467..c30a9d7
--- a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ15/Samples5_q7.txt
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ15/Samples5_q7.txt
@@ -1,514 +1,514 @@
 B
 256
-// 0.629808
-0x51
-// 0.767837
-0x62
-// 0.406514
-0x34
-// 0.736988
-0x5E
-// 0.019090
-0x02
-// 0.259572
-0x21
-// 0.016164
-0x02
-// 0.992820
-0x7F
-// 0.434454
-0x38
-// 0.491433
-0x3F
-// 0.135967
-0x11
-// 0.755845
-0x61
-// 0.564335
-0x48
-// 0.525125
-0x43
-// 0.429784
-0x37
-// 0.804056
-0x67
-// 0.859072
-0x6E
-// 0.806005
-0x67
-// 0.442886
-0x39
-// 0.109494
-0x0E
-// 0.525035
-0x43
-// 0.399489
-0x33
-// 0.452378
-0x3A
-// 0.047941
-0x06
-// 0.862060
-0x6E
-// 0.243796
-0x1F
-// 0.969406
-0x7C
-// 0.575658
-0x4A
-// 0.542375
-0x45
-// 0.627904
-0x50
-// 0.019669
-0x03
-// 0.960356
-0x7B
-// 0.630356
-0x51
-// 0.097618
-0x0C
-// 0.051973
-0x07
-// 0.702347
-0x5A
-// 0.198601
-0x19
-// 0.151983
-0x13
-// 0.126313
-0x10
-// 0.684087
-0x58
-// 0.634531
-0x51
-// 0.066474
-0x09
-// 0.281877
-0x24
-// 0.934816
-0x78
-// 0.529087
-0x44
-// 0.008571
-0x01
-// 0.752835
-0x60
-// 0.848600
-0x6D
-// 0.856296
-0x6E
-// 0.834721
-0x6B
-// 0.781907
-0x64
-// 0.438857
-0x38
-// 0.401125
-0x33
-// 0.375756
-0x30
-// 0.173644
-0x16
-// 0.798702
-0x66
-// 0.580714
-0x4A
-// 0.351200
-0x2D
-// 0.605000
-0x4D
-// 0.139355
-0x12
-// 0.718442
-0x5C
-// 0.709643
-0x5B
-// 0.635820
-0x51
-// 0.458913
-0x3B
-// 0.712704
-0x5B
-// 0.197968
-0x19
-// 0.148562
-0x13
-// 0.599102
-0x4D
-// 0.152919
-0x14
-// 0.334634
-0x2B
-// 0.534337
-0x44
-// 0.340245
-0x2C
-// 0.893406
-0x72
-// 0.845651
-0x6C
-// 0.057369
-0x07
-// 0.409928
-0x34
-// 0.831482
-0x6A
-// 0.344610
-0x2C
-// 0.451085
-0x3A
-// 0.720379
-0x5C
-// 0.743209
-0x5F
-// 0.393717
-0x32
-// 0.626817
-0x50
-// 0.949870
-0x7A
-// 0.726345
-0x5D
-// 0.211445
-0x1B
-// 0.557236
-0x47
-// 0.318143
+// 0.611006
+0x4E
+// 0.316972
 0x29
-// 0.241738
-0x1F
-// 0.426043
-0x37
-// 0.113255
-0x0E
-// 0.587508
-0x4B
-// 0.476115
-0x3D
-// 0.580168
-0x4A
-// 0.274054
-0x23
-// 0.129983
-0x11
-// 0.230382
-0x1D
-// 0.104931
-0x0D
-// 0.042404
-0x05
-// 0.459771
-0x3B
-// 0.391562
-0x32
-// 0.220224
-0x1C
-// 0.351126
-0x2D
-// 0.305120
-0x27
-// 0.761919
+// 0.720369
+0x5C
+// 0.765887
 0x62
-// 0.813118
-0x68
-// 0.687890
-0x58
-// 0.848190
-0x6D
-// 0.364696
-0x2F
-// 0.532080
-0x44
-// 0.070210
-0x09
-// 0.832574
-0x6B
-// 0.727285
-0x5D
-// 0.163325
-0x15
-// 0.010098
-0x01
-// 0.198483
-0x19
-// 0.639479
-0x52
-// 0.784054
-0x64
-// 0.993211
-0x7F
-// 0.401080
-0x33
-// 0.439452
-0x38
-// 0.090064
-0x0C
-// 0.505854
-0x41
-// 0.482874
-0x3E
-// 0.483374
-0x3E
-// 0.395664
-0x33
-// 0.886004
-0x71
-// 0.290896
-0x25
-// 0.349188
-0x2D
-// 0.126416
-0x10
-// 0.103028
-0x0D
-// 0.498207
-0x40
-// 0.617724
-0x4F
-// 0.704543
-0x5A
-// 0.151486
-0x13
-// 0.097138
-0x0C
-// 0.844976
-0x6C
-// 0.972863
-0x7D
-// 0.890981
-0x72
-// 0.140507
-0x12
-// 0.734462
-0x5E
-// 0.056763
+// 0.055048
 0x07
-// 0.098993
-0x0D
-// 0.967706
-0x7C
-// 0.715449
-0x5C
-// 0.601449
-0x4D
-// 0.325030
-0x2A
-// 0.480209
-0x3D
-// 0.904712
-0x74
-// 0.520916
-0x43
-// 0.000950
-0x00
-// 0.598545
-0x4D
-// 0.404415
-0x34
-// 0.860223
-0x6E
-// 0.075844
-0x0A
-// 0.105481
-0x0E
-// 0.220873
-0x1C
-// 0.515987
-0x42
-// 0.717252
-0x5C
-// 0.065977
-0x08
-// 0.589880
+// 0.897500
+0x73
+// 0.886540
+0x71
+// 0.591171
 0x4C
-// 0.668825
+// 0.480402
+0x3D
+// 0.010981
+0x01
+// 0.637205
+0x52
+// 0.744098
+0x5F
+// 0.405430
+0x34
+// 0.977699
+0x7D
+// 0.976139
+0x7D
+// 0.170355
+0x16
+// 0.313694
+0x28
+// 0.857921
+0x6E
+// 0.830430
+0x6A
+// 0.604045
+0x4D
+// 0.771265
+0x63
+// 0.492615
+0x3F
+// 0.733511
+0x5E
+// 0.743195
+0x5F
+// 0.616850
+0x4F
+// 0.868267
+0x6F
+// 0.644849
+0x53
+// 0.446832
+0x39
+// 0.722755
+0x5D
+// 0.818522
+0x69
+// 0.674442
 0x56
-// 0.915636
-0x75
-// 0.204173
+// 0.032346
+0x04
+// 0.728255
+0x5D
+// 0.269538
+0x23
+// 0.458039
+0x3B
+// 0.507657
+0x41
+// 0.202315
 0x1A
-// 0.850150
+// 0.929005
+0x77
+// 0.061843
+0x08
+// 0.303258
+0x27
+// 0.163605
+0x15
+// 0.428289
+0x37
+// 0.919665
+0x76
+// 0.656723
+0x54
+// 0.850228
 0x6D
+// 0.509593
+0x41
+// 0.717675
+0x5C
+// 0.302383
+0x27
+// 0.575297
+0x4A
+// 0.327713
+0x2A
+// 0.324320
+0x2A
+// 0.883098
+0x71
+// 0.803950
+0x67
+// 0.172964
+0x16
+// 0.914720
+0x75
+// 0.846504
+0x6C
+// 0.397253
+0x33
+// 0.332927
+0x2B
+// 0.689093
+0x58
+// 0.096172
+0x0C
+// 0.415403
+0x35
+// 0.659488
+0x54
+// 0.201631
+0x1A
+// 0.528988
+0x44
+// 0.820465
+0x69
+// 0.264027
+0x22
+// 0.204290
+0x1A
+// 0.599283
+0x4D
+// 0.437967
+0x38
+// 0.385779
+0x31
+// 0.668709
+0x56
+// 0.948382
+0x79
+// 0.613569
+0x4F
+// 0.692098
+0x59
+// 0.192712
+0x19
+// 0.403895
+0x34
+// 0.052291
+0x07
+// 0.104153
+0x0D
+// 0.830333
+0x6A
+// 0.650485
+0x53
+// 0.466580
+0x3C
+// 0.908247
+0x74
+// 0.165777
+0x15
+// 0.307242
+0x27
+// 0.094427
+0x0C
+// 0.713403
+0x5B
+// 0.472098
+0x3C
+// 0.713582
+0x5B
+// 0.748804
+0x60
+// 0.253223
+0x20
+// 0.299833
+0x26
+// 0.850837
+0x6D
+// 0.684142
+0x58
+// 0.308509
+0x27
+// 0.055875
+0x07
+// 0.253133
+0x20
+// 0.804924
+0x67
+// 0.135016
+0x11
+// 0.367216
+0x2F
+// 0.984489
+0x7E
+// 0.079602
+0x0A
+// 0.452419
+0x3A
+// 0.427436
+0x37
+// 0.239972
+0x1F
+// 0.109914
+0x0E
+// 0.615127
+0x4F
+// 0.948598
+0x79
+// 0.188341
+0x18
+// 0.939840
+0x78
+// 0.111626
+0x0E
+// 0.803266
+0x67
+// 0.720093
+0x5C
+// 0.232146
+0x1E
+// 0.555926
+0x47
+// 0.910575
+0x75
+// 0.218856
+0x1C
+// 0.908471
+0x74
+// 0.807042
+0x67
+// 0.387106
+0x32
+// 0.169389
+0x16
+// 0.433897
+0x38
+// 0.169665
+0x16
+// 0.794839
+0x66
+// 0.739957
+0x5F
+// 0.042773
+0x05
+// 0.170300
+0x16
+// 0.523445
+0x43
+// 0.398429
+0x33
+// 0.357274
+0x2E
+// 0.932304
+0x77
+// 0.190112
+0x18
+// 0.856648
+0x6E
+// 0.597494
+0x4C
+// 0.761750
+0x62
+// 0.202077
+0x1A
+// 0.129072
+0x11
+// 0.101433
+0x0D
+// 0.946349
+0x79
+// 0.541427
+0x45
+// 0.640491
+0x52
+// 0.433438
+0x37
+// 0.302414
+0x27
+// 0.164106
+0x15
+// 0.897952
+0x73
+// 0.949143
+0x79
+// 0.415980
+0x35
+// 0.404653
+0x34
+// 0.776649
+0x63
+// 0.288609
+0x25
+// 0.314588
+0x28
+// 0.843192
+0x6C
+// 0.808076
+0x67
+// 0.970269
+0x7C
+// 0.187041
+0x18
+// 0.117301
+0x0F
+// 0.872583
+0x70
+// 0.083488
+0x0B
+// 0.670409
+0x56
+// 0.201448
+0x1A
+// 0.418215
+0x36
+// 0.653495
+0x54
+// 0.249680
+0x20
+// 0.395696
+0x33
+// 0.869253
+0x6F
+// 0.241535
+0x1F
+// 0.765568
+0x62
+// 0.074356
+0x0A
+// 0.305481
+0x27
+// 0.344523
+0x2C
+// 0.853043
+0x6D
+// 0.314140
+0x28
+// 0.685484
+0x58
+// 0.434931
+0x38
+// 0.427830
+0x37
+// 0.800760
+0x66
+// 0.978834
+0x7D
+// 0.864263
+0x6F
+// 0.230305
+0x1D
+// 0.351072
+0x2D
+// 0.064649
+0x08
+// 0.637090
+0x52
+// 0.993854
+0x7F
+// 0.564281
+0x48
+// 0.620591
+0x4F
+// 0.425228
+0x36
+// 0.931161
+0x77
+// 0.802282
+0x67
+// 0.298686
+0x26
+// 0.019277
+0x02
+// 0.323693
+0x29
+// 0.483413
+0x3E
+// 0.350656
+0x2D
+// 0.443162
+0x39
+// 0.631354
+0x51
+// 0.049215
+0x06
+// 0.385729
+0x31
+// 0.715736
+0x5C
+// 0.045253
+0x06
+// 0.529656
+0x44
+// 0.784850
+0x64
+// 0.058249
+0x07
+// 0.465815
+0x3C
+// 0.045272
+0x06
+// 0.640264
+0x52
 // 1.000000
 0x7F
-// 0.796123
-0x66
-// 0.615530
-0x4F
-// 0.244125
-0x1F
-// 0.895382
-0x73
-// 0.482606
-0x3E
-// 0.988264
-0x7E
-// 0.735498
-0x5E
-// 0.659869
-0x54
-// 0.270493
-0x23
-// 0.255657
-0x21
-// 0.289213
-0x25
-// 0.636228
-0x51
-// 0.207228
-0x1B
-// 0.607471
-0x4E
-// 0.607364
-0x4E
-// 0.460077
-0x3B
-// 0.247188
-0x20
-// 0.705260
-0x5A
-// 0.973317
-0x7D
-// 0.888536
-0x72
-// 0.395932
-0x33
-// 0.194524
-0x19
-// 0.431453
-0x37
-// 0.646691
-0x53
-// 0.155492
-0x14
-// 0.102819
+// 0.473222
+0x3D
+// 0.100652
 0x0D
-// 0.525254
-0x43
-// 0.409533
+// 0.404837
 0x34
-// 0.123632
-0x10
-// 0.488512
-0x3F
-// 0.529864
-0x44
-// 0.120458
-0x0F
-// 0.547321
-0x46
-// 0.527096
-0x43
-// 0.487433
-0x3E
-// 0.302979
-0x27
-// 0.665032
-0x55
-// 0.826376
-0x6A
-// 0.501373
-0x40
-// 0.356095
-0x2E
-// 0.604881
-0x4D
-// 0.271477
-0x23
-// 0.274070
-0x23
-// 0.214623
-0x1B
-// 0.323710
-0x29
-// 0.830010
-0x6A
-// 0.901649
-0x73
-// 0.618633
-0x4F
-// 0.996302
-0x7F
-// 0.336172
-0x2B
-// 0.592094
-0x4C
-// 0.223924
+// 0.087717
+0x0B
+// 0.222914
 0x1D
-// 0.639678
-0x52
-// 0.051452
-0x07
-// 0.289750
-0x25
-// 0.337859
-0x2B
-// 0.869576
-0x6F
-// 0.608925
-0x4E
-// 0.090629
-0x0C
-// 0.397193
-0x33
-// 0.221780
-0x1C
-// 0.385140
-0x31
-// 0.480907
-0x3E
-// 0.029408
-0x04
-// 0.546041
-0x46
-// 0.537465
-0x45
-// 0.252707
+// 0.759238
+0x61
+// 0.251504
 0x20
-// 0.116984
-0x0F
-// 0.695193
-0x59
-// 0.524272
-0x43
-// 0.937755
-0x78
-// 0.484820
-0x3E
-// 0.951172
-0x7A
-// 0.515688
-0x42
-// 0.536603
+// 0.783428
+0x64
+// 0.236374
+0x1E
+// 0.181562
+0x17
+// 0.317967
+0x29
+// 0.360481
+0x2E
+// 0.539373
 0x45
-// 0.791043
-0x65
-// 0.295877
-0x26
-// 0.206984
-0x1A
-// 0.035968
-0x05
-// 0.819304
-0x69
-// 0.306870
-0x27
-// 0.773333
-0x63
-// 0.873449
-0x70
-// 0.351634
-0x2D
-// 0.738334
-0x5F
-// 0.542984
-0x46
-// 0.186866
-0x18
-// 0.624734
-0x50
-// 0.099261
-0x0D
-// 0.636030
+// 0.175095
+0x16
+// 0.416085
+0x35
+// 0.889162
+0x72
+// 0.412557
+0x35
+// 0.122631
+0x10
+// 0.632899
 0x51
+// 0.017485
+0x02
+// 0.897256
+0x73
+// 0.672790
+0x56
+// 0.727910
+0x5D
+// 0.143488
+0x12
+// 0.713107
+0x5B
+// 0.941049
+0x78
+// 0.303453
+0x27
+// 0.047812
+0x06
+// 0.319685
+0x29
+// 0.171207
+0x16
+// 0.305832
+0x27
+// 0.425621
+0x36
+// 0.384851
+0x31
+// 0.690732
+0x58
+// 0.550845
+0x47
+// 0.079152
+0x0A
+// 0.349299
+0x2D
+// 0.293036
+0x26
+// 0.873137
+0x70
+// 0.799771
+0x66
+// 0.515084
+0x42
+// 0.462522
+0x3B
+// 0.814347
+0x68
+// 0.780568
+0x64
+// 0.019021
+0x02
+// 0.363366
+0x2F
+// 0.994428
+0x7F
+// 0.458831
+0x3B
+// 0.470851
+0x3C
+// 0.979887
+0x7D
+// 0.641361
+0x52
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ31/Samples1_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ31/Samples1_f32.txt
old mode 100644
new mode 100755
index 1249aaa..bd8575d
--- a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ31/Samples1_f32.txt
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ31/Samples1_f32.txt
@@ -1,514 +1,514 @@
 W
 256
-// 0.835545
-0x3f55e648
-// 0.638846
-0x3f238b6d
-// 0.560740
-0x3f0f8ca3
-// 0.506356
-0x3f01a089
-// 0.807961
-0x3f4ed68b
-// 0.045658
-0x3d3b03d1
-// 0.569414
-0x3f11c516
-// 0.755897
-0x3f418278
-// 0.852858
-0x3f5a54ef
-// 0.704046
-0x3f343c63
-// 0.334731
-0x3eab61cd
-// 0.954977
-0x3f747963
-// 0.204605
-0x3e5183f4
-// 0.235505
-0x3e712859
-// 0.000096
-0x38c90783
-// 0.857071
-0x3f5b6907
-// 0.216507
-0x3e5db3e5
-// 0.822731
-0x3f529e79
-// 0.376153
-0x3ec09730
-// 0.898637
-0x3f660d14
-// 0.081073
-0x3da609c1
-// 0.595647
-0x3f187c51
-// 0.189691
-0x3e423e5a
-// 0.535480
-0x3f09153a
-// 0.263896
-0x3e871d64
-// 0.557176
-0x3f0ea317
-// 0.147933
-0x3e177bc8
-// 0.524960
-0x3f0663bf
-// 0.909679
-0x3f68e0b6
-// 0.721971
-0x3f38d31a
-// 0.523110
-0x3f05ea8c
-// 0.101927
-0x3dd0bf4b
-// 0.879500
-0x3f6126e9
-// 0.886957
-0x3f630f9c
-// 0.815879
-0x3f50dd72
-// 0.598629
-0x3f193fc1
-// 0.953779
-0x3f742ae5
-// 0.650023
-0x3f2667e0
-// 0.845085
-0x3f585780
-// 0.913738
-0x3f69eab8
-// 0.951868
-0x3f73ada4
-// 0.238386
-0x3e741b72
-// 0.049935
-0x3d4c8898
-// 0.277091
-0x3e8dded4
-// 0.028002
-0x3ce56461
-// 0.786265
-0x3f4948a2
-// 0.381185
-0x3ec32aa5
-// 0.689025
-0x3f3063ec
-// 0.122163
-0x3dfa3076
-// 0.797583
-0x3f4c2e63
-// 0.221809
-0x3e6321d4
-// 0.043399
-0x3d31c338
-// 0.669953
-0x3f2b8209
-// 0.723420
-0x3f393207
-// 0.802370
-0x3f4d6826
-// 0.766696
-0x3f44462e
-// 0.015078
-0x3c770844
-// 0.095186
-0x3dc2f0a5
-// 0.419525
-0x3ed6cbf2
-// 0.691418
-0x3f3100cd
-// 0.657646
-0x3f285b81
-// 0.989273
-0x3f7d4100
+// 0.990260
+0x3f7d81b5
+// 0.375413
+0x3ec03616
+// 0.341420
+0x3eaece8e
+// 0.884480
+0x3f626d43
+// 0.790061
+0x3f4a4170
+// 0.586026
+0x3f1605c9
+// 0.007402
+0x3bf28bf3
+// 0.653782
+0x3f275e3e
+// 0.303552
+0x3e9b6b2a
+// 0.764775
+0x3f43c84a
+// 0.317265
+0x3ea27086
+// 0.390963
+0x3ec82c43
+// 0.588060
+0x3f168b18
+// 0.492069
+0x3efbf081
+// 0.190828
+0x3e43687f
+// 0.571696
+0x3f125aa8
+// 0.925200
+0x3f6cd9f0
+// 0.004348
+0x3b8e7baa
+// 0.279396
+0x3e8f0d04
+// 0.942470
+0x3f7145b7
+// 0.330061
+0x3ea8fdb7
+// 0.103383
+0x3dd3ba98
+// 0.747947
+0x3f3f797c
+// 0.760452
+0x3f42ad01
+// 0.935578
+0x3f6f820b
+// 0.352852
+0x3eb4a8ff
+// 0.387690
+0x3ec67f51
+// 0.506983
+0x3f01c9a0
+// 0.237057
+0x3e72bf1a
+// 0.126661
+0x3e01b37b
+// 0.744376
+0x3f3e8f6a
+// 0.065397
+0x3d85eee4
+// 0.288964
+0x3e93f31e
+// 0.272746
+0x3e8ba55c
+// 0.299016
+0x3e991893
+// 0.819512
+0x3f51cb89
+// 0.158810
+0x3e229f17
+// 0.122304
+0x3dfa7a73
+// 0.794702
+0x3f4b7198
+// 0.711576
+0x3f3629d1
+// 0.179740
+0x3e380dd0
+// 0.432703
+0x3edd8b4f
+// 0.816340
+0x3f50fba1
+// 0.653369
+0x3f27432f
+// 0.369872
+0x3ebd5fde
+// 0.621121
+0x3f1f01c1
+// 0.685031
+0x3f2f5e35
+// 0.049836
+0x3d4c207b
+// 0.366454
+0x3ebb9fd5
+// 0.395921
+0x3ecab62e
+// 0.623308
+0x3f1f9121
+// 0.889796
+0x3f63c9a7
+// 0.831311
+0x3f54d0cd
+// 0.256124
+0x3e8322bf
+// 0.672564
+0x3f2c2d24
+// 0.861025
+0x3f5c6c22
+// 0.663819
+0x3f29f00c
+// 0.811981
+0x3f4fddf7
+// 0.774593
+0x3f464bbd
+// 0.459444
+0x3eeb3c35
+// 0.591367
+0x3f1763d3
+// 0.178538
+0x3e36d28a
+// 0.232492
+0x3e6e125c
+// 0.553333
+0x3f0da737
+// 0.056911
+0x3d691b33
+// 0.807143
+0x3f4ea0f2
+// 0.888752
+0x3f638542
+// 0.801794
+0x3f4d4257
+// 0.739586
+0x3f3d557d
+// 0.427800
+0x3edb0894
+// 0.658018
+0x3f2873db
+// 0.143885
+0x3e13568a
+// 0.197539
+0x3e4a47b2
+// 0.994160
+0x3f7e8140
+// 0.194989
+0x3e47ab24
+// 0.442737
+0x3ee2ae68
+// 0.485228
+0x3ef86fce
+// 0.652720
+0x3f2718b0
+// 0.418656
+0x3ed65a21
+// 0.506375
+0x3f01a1d0
+// 0.209079
+0x3e5618dc
+// 0.851092
+0x3f59e126
+// 0.010087
+0x3c2545c5
+// 0.994785
+0x3f7eaa3c
+// 0.573313
+0x3f12c4aa
+// 0.845889
+0x3f588c31
+// 0.464265
+0x3eedb41e
+// 0.519880
+0x3f0516d5
+// 0.752225
+0x3f4091d2
+// 0.622828
+0x3f1f71a7
+// 0.405036
+0x3ecf60da
+// 0.207550
+0x3e5487e5
+// 0.102756
+0x3dd271bf
+// 0.286770
+0x3e92d37a
+// 0.103479
+0x3dd3ecb4
+// 0.525257
+0x3f06773f
+// 0.644868
+0x3f251615
+// 0.776045
+0x3f46aadc
+// 0.972448
+0x3f78f254
+// 0.049621
+0x3d4b3f40
+// 0.875992
+0x3f604105
+// 0.684350
+0x3f2f318f
+// 0.981140
+0x3f7b2c00
+// 0.589114
+0x3f16d02f
+// 0.501103
+0x3f004849
+// 0.229500
+0x3e6b0220
+// 0.834358
+0x3f559875
+// 0.289438
+0x3e943146
+// 0.857852
+0x3f5b9c35
+// 0.800483
+0x3f4cec6c
+// 0.475451
+0x3ef36e50
+// 0.483063
+0x3ef7540c
+// 0.226821
+0x3e6843ae
+// 0.338248
+0x3ead2ed7
+// 0.967654
+0x3f77b82f
+// 0.119796
+0x3df557c4
+// 0.128190
+0x3e034434
+// 0.454193
+0x3ee88c0c
+// 0.431212
+0x3edcc7e0
+// 0.208104
+0x3e551953
+// 0.360706
+0x3eb8ae79
+// 0.882085
+0x3f61d050
+// 0.730960
+0x3f3b2036
+// 0.440782
+0x3ee1ae20
+// 0.747201
+0x3f3f488b
+// 0.250680
+0x3e80591d
+// 0.114891
+0x3deb4bf4
+// 0.231086
+0x3e6ca1b7
+// 0.228035
+0x3e6981e7
+// 0.265304
+0x3e87d5f9
+// 0.815045
+0x3f50a6cb
+// 0.798001
+0x3f4c49ca
+// 0.441321
+0x3ee1f4c6
+// 0.747493
+0x3f3f5bb5
+// 0.428118
+0x3edb324e
+// 0.983506
+0x3f7bc713
+// 0.819905
+0x3f51e549
+// 0.388450
+0x3ec6e2df
+// 0.516303
+0x3f042c71
+// 0.716800
+0x3f37802f
+// 0.997215
+0x3f7f497e
+// 0.722171
+0x3f38e03a
+// 0.041429
+0x3d29b144
+// 0.888950
+0x3f639235
+// 0.047988
+0x3d448ef7
+// 0.887530
+0x3f63352b
+// 0.077732
+0x3d9f31ea
+// 0.629580
+0x3f212c2e
+// 0.737855
+0x3f3ce414
+// 0.676683
+0x3f2d3b16
+// 0.538823
+0x3f09f054
+// 0.746993
+0x3f3f3aec
+// 0.783849
+0x3f48aa56
+// 0.162979
+0x3e26e3f9
+// 0.116041
+0x3deda6c2
+// 0.907003
+0x3f683156
+// 0.994912
+0x3f7eb292
+// 0.122582
+0x3dfb0c1d
+// 0.645044
+0x3f252194
+// 0.801244
+0x3f4d1e53
+// 0.790032
+0x3f4a3f8b
+// 0.133377
+0x3e0893f6
+// 0.203033
+0x3e4fe7e5
+// 0.351499
+0x3eb3f7a2
+// 0.382012
+0x3ec3970c
+// 0.375419
+0x3ec036ee
+// 0.390116
+0x3ec7bd3e
+// 0.303282
+0x3e9b47ca
 // 1.000000
 0x3f800000
-// 0.470839
-0x3ef111cb
-// 0.276230
-0x3e8d6e09
-// 0.205377
-0x3e524e75
-// 0.082370
-0x3da8b18d
-// 0.817324
-0x3f513c28
-// 0.318232
-0x3ea2ef3e
-// 0.038883
-0x3d1f4358
-// 0.633098
-0x3f2212ae
-// 0.359554
-0x3eb81775
-// 0.928108
-0x3f6d9878
-// 0.168810
-0x3e2cdc89
-// 0.074536
-0x3d98a611
-// 0.536205
-0x3f0944b4
-// 0.722660
-0x3f39003c
-// 0.877975
-0x3f60c2fb
-// 0.620214
-0x3f1ec655
-// 0.990365
-0x3f7d8896
-// 0.122364
-0x3dfa99bf
-// 0.573924
-0x3f12ecad
-// 0.936161
-0x3f6fa845
-// 0.558318
-0x3f0eedf5
-// 0.258495
-0x3e845971
-// 0.468328
-0x3eefc8b9
-// 0.070950
-0x3d914e60
-// 0.346224
-0x3eb1443b
-// 0.456626
-0x3ee9cadd
-// 0.502726
-0x3f00b2a5
-// 0.537112
-0x3f098026
-// 0.419703
-0x3ed6e34c
-// 0.376586
-0x3ec0cfe6
-// 0.232880
-0x3e6e7809
-// 0.873721
-0x3f5fac2f
-// 0.813125
-0x3f5028f9
-// 0.368761
-0x3ebcce49
-// 0.500789
-0x3f0033ba
-// 0.539333
-0x3f0a11bc
-// 0.184180
-0x3e3c99b9
-// 0.867707
-0x3f5e2207
-// 0.421014
-0x3ed78f35
-// 0.595283
-0x3f18647f
-// 0.358320
-0x3eb775af
-// 0.885532
-0x3f62b23b
-// 0.735381
-0x3f3c41ef
-// 0.501407
-0x3f005c39
-// 0.674630
-0x3f2cb486
-// 0.844097
-0x3f5816c6
-// 0.896285
-0x3f6572ea
-// 0.109345
-0x3ddff061
-// 0.891765
-0x3f644ab0
-// 0.374597
-0x3ebfcb29
-// 0.421804
-0x3ed7f6bd
-// 0.781730
-0x3f481f6f
-// 0.293428
-0x3e963c23
-// 0.133157
-0x3e085a68
-// 0.072411
-0x3d944c66
-// 0.786389
-0x3f4950cf
-// 0.314438
-0x3ea0fe03
-// 0.647087
-0x3f25a783
-// 0.204199
-0x3e5119a2
-// 0.008081
-0x3c0464d5
-// 0.772364
-0x3f45b9ad
-// 0.465679
-0x3eee6d6d
-// 0.120055
-0x3df5df40
-// 0.440559
-0x3ee190ed
-// 0.165381
-0x3e295988
-// 0.153327
-0x3e1d01d7
-// 0.047534
-0x3d42b343
-// 0.831882
-0x3f54f635
-// 0.771083
-0x3f4565aa
-// 0.165597
-0x3e29925e
-// 0.520151
-0x3f052896
-// 0.595240
-0x3f1861ab
-// 0.469548
-0x3ef068a6
-// 0.404394
-0x3ecf0cb2
-// 0.248171
-0x3e7e206c
-// 0.039008
-0x3d1fc6f5
-// 0.763937
-0x3f439158
-// 0.496994
-0x3efe760f
-// 0.964809
-0x3f76fdbc
-// 0.126668
-0x3e01b541
-// 0.328926
-0x3ea868f0
-// 0.274303
-0x3e8c716b
-// 0.708450
-0x3f355cfd
-// 0.460126
-0x3eeb95b3
-// 0.364484
-0x3eba9db5
-// 0.707633
-0x3f35276c
-// 0.948517
-0x3f72d1ff
-// 0.514019
-0x3f0396be
-// 0.101433
-0x3dcfbc51
-// 0.971785
-0x3f78c6e6
-// 0.041218
-0x3d28d4b8
-// 0.970202
-0x3f785f23
-// 0.137811
-0x3e0d1e6b
-// 0.653814
-0x3f276055
-// 0.634408
-0x3f226897
-// 0.635064
-0x3f229393
-// 0.217709
-0x3e5eef26
-// 0.309742
-0x3e9e9691
-// 0.378571
-0x3ec1d415
-// 0.980248
-0x3f7af18d
-// 0.819155
-0x3f51b41d
-// 0.712649
-0x3f367026
-// 0.331675
-0x3ea9d144
-// 0.488784
-0x3efa41f4
-// 0.126670
-0x3e01b5ca
-// 0.187287
-0x3e3fc81c
-// 0.958358
-0x3f7556ed
-// 0.701330
-0x3f338a60
-// 0.994753
-0x3f7ea81d
-// 0.611093
-0x3f1c7091
-// 0.131297
-0x3e0672d4
-// 0.732784
-0x3f3b97bf
-// 0.511658
-0x3f02fc0b
-// 0.310061
-0x3e9ec05b
-// 0.820000
-0x3f51eb82
-// 0.493150
-0x3efc7e18
-// 0.473498
-0x3ef26e4b
-// 0.164626
-0x3e2893bf
-// 0.164194
-0x3e282262
-// 0.770922
-0x3f455b22
-// 0.183890
-0x3e3c4d89
-// 0.210706
-0x3e57c33b
-// 0.706973
-0x3f34fc36
-// 0.755982
-0x3f41880f
-// 0.766450
-0x3f443611
-// 0.051903
-0x3d549829
-// 0.604214
-0x3f1aadc7
-// 0.147565
-0x3e171b3c
-// 0.819342
-0x3f51c062
-// 0.035799
-0x3d12a231
-// 0.070757
-0x3d90e904
-// 0.692521
-0x3f31490d
-// 0.821179
-0x3f5238d1
-// 0.669606
-0x3f2b6b4a
-// 0.905185
-0x3f67ba2e
-// 0.601727
-0x3f1a0ac9
-// 0.313387
-0x3ea0743e
-// 0.810837
-0x3f4f92fc
-// 0.529720
-0x3f079bbe
-// 0.436287
-0x3edf610e
-// 0.593336
-0x3f17e4dc
-// 0.864106
-0x3f5d360e
-// 0.779255
-0x3f477d3f
-// 0.112078
-0x3de58917
-// 0.190585
-0x3e4328a3
-// 0.769410
-0x3f44f809
-// 0.335442
-0x3eabbf1c
-// 0.463786
-0x3eed755b
-// 0.937023
-0x3f6fe0ba
-// 0.027384
-0x3ce0537c
-// 0.032313
-0x3d045a5e
-// 0.668192
-0x3f2b0ea4
-// 0.589001
-0x3f16c8bd
-// 0.078089
-0x3d9fecea
-// 0.085746
-0x3daf9bd0
-// 0.498882
-0x3eff6d6b
-// 0.456033
-0x3ee97d33
-// 0.737705
-0x3f3cda38
-// 0.463232
-0x3eed2cb6
-// 0.894536
-0x3f650056
-// 0.174357
-0x3e328ac4
-// 0.905967
-0x3f67ed6e
-// 0.573419
-0x3f12cb9b
-// 0.848698
-0x3f594444
-// 0.659455
-0x3f28d20f
-// 0.099005
-0x3dcac32f
-// 0.931548
-0x3f6e79ef
-// 0.651282
-0x3f26ba64
-// 0.083401
-0x3daace5f
-// 0.674452
-0x3f2ca8dd
-// 0.897314
-0x3f65b65f
-// 0.186839
-0x3e3f52af
-// 0.930641
-0x3f6e3e78
-// 0.407207
-0x3ed07d62
-// 0.481987
-0x3ef6c70a
-// 0.596825
-0x3f18c984
-// 0.608179
-0x3f1bb1a4
-// 0.879241
-0x3f6115f6
-// 0.789183
-0x3f4a07df
-// 0.178856
-0x3e37260c
-// 0.845083
-0x3f585762
-// 0.557538
-0x3f0ebacd
-// 0.177218
-0x3e3578ab
-// 0.291060
-0x3e9505d4
-// 0.921219
-0x3f6bd509
-// 0.982905
-0x3f7b9fb1
-// 0.705997
-0x3f34bc35
-// 0.683280
-0x3f2eeb76
-// 0.135006
-0x3e0a3f04
-// 0.773225
-0x3f45f215
-// 0.981177
-0x3f7b2e69
-// 0.855113
-0x3f5ae8af
-// 0.123843
-0x3dfda13d
+// 0.233631
+0x3e6f3d13
+// 0.109884
+0x3de10aa2
+// 0.502643
+0x3f00ad32
+// 0.960147
+0x3f75cc34
+// 0.827813
+0x3f53eb8d
+// 0.500968
+0x3f003f6a
+// 0.506207
+0x3f0196c5
+// 0.523404
+0x3f05fdc8
+// 0.284019
+0x3e916ae1
+// 0.345894
+0x3eb11907
+// 0.226135
+0x3e679008
+// 0.133541
+0x3e08bf18
+// 0.382769
+0x3ec3fa42
+// 0.408752
+0x3ed147ea
+// 0.157062
+0x3e20d4c4
+// 0.217180
+0x3e5e6487
+// 0.476817
+0x3ef42155
+// 0.211244
+0x3e585068
+// 0.381758
+0x3ec375bf
+// 0.451141
+0x3ee6fbe9
+// 0.208644
+0x3e55a6b8
+// 0.594838
+0x3f184753
+// 0.393380
+0x3ec96928
+// 0.068864
+0x3d8d086a
+// 0.234867
+0x3e708100
+// 0.380181
+0x3ec2a71a
+// 0.971641
+0x3f78bd71
+// 0.254321
+0x3e823651
+// 0.329406
+0x3ea8a7e5
+// 0.584228
+0x3f158ff6
+// 0.891768
+0x3f644ae9
+// 0.639745
+0x3f23c64c
+// 0.674681
+0x3f2cb7dd
+// 0.097242
+0x3dc726e7
+// 0.786967
+0x3f4976a7
+// 0.178202
+0x3e367a84
+// 0.627605
+0x3f20aabd
+// 0.142632
+0x3e120dfe
+// 0.974853
+0x3f798ff4
+// 0.326506
+0x3ea72bce
+// 0.002317
+0x3b17d180
+// 0.618229
+0x3f1e443c
+// 0.608150
+0x3f1bafb3
+// 0.288862
+0x3e93e5b5
+// 0.505923
+0x3f018432
+// 0.315579
+0x3ea193a2
+// 0.683672
+0x3f2f0520
+// 0.584594
+0x3f15a7f3
+// 0.855191
+0x3f5aedc7
+// 0.325796
+0x3ea6ceb9
+// 0.405995
+0x3ecfde89
+// 0.503245
+0x3f00d4a8
+// 0.903596
+0x3f67520e
+// 0.352676
+0x3eb491f9
+// 0.241311
+0x3e771a37
+// 0.125698
+0x3e00b717
+// 0.930951
+0x3f6e52d5
+// 0.102932
+0x3dd2ce0f
+// 0.419274
+0x3ed6ab09
+// 0.208833
+0x3e55d85b
+// 0.486260
+0x3ef8f702
+// 0.396494
+0x3ecb0151
+// 0.087167
+0x3db28485
+// 0.709592
+0x3f35a7da
+// 0.962132
+0x3f764e4b
+// 0.913174
+0x3f69c5c7
+// 0.557443
+0x3f0eb497
+// 0.145512
+0x3e150126
+// 0.035116
+0x3d0fd597
+// 0.888805
+0x3f6388bf
+// 0.239020
+0x3e74c1ca
+// 0.726691
+0x3f3a0871
+// 0.864539
+0x3f5d526b
+// 0.143218
+0x3e12a7ad
+// 0.907504
+0x3f68522b
+// 0.670077
+0x3f2b8a28
+// 0.162471
+0x3e265ed7
+// 0.097374
+0x3dc76c38
+// 0.573777
+0x3f12e310
+// 0.963715
+0x3f76b5ff
+// 0.361492
+0x3eb91570
+// 0.640549
+0x3f23fb06
+// 0.091447
+0x3dbb487b
+// 0.223977
+0x3e655a2c
+// 0.500107
+0x3f000702
+// 0.707069
+0x3f350272
+// 0.534330
+0x3f08c9d8
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ31/Samples3_q15.txt b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ31/Samples3_q15.txt
old mode 100644
new mode 100755
index 1954d10..d29c4a5
--- a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ31/Samples3_q15.txt
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ31/Samples3_q15.txt
@@ -1,514 +1,514 @@
 H
 256
-// 0.835545
-0x6AF3
-// 0.638846
-0x51C6
-// 0.560740
-0x47C6
-// 0.506356
-0x40D0
-// 0.807961
-0x676B
-// 0.045658
-0x05D8
-// 0.569414
-0x48E3
-// 0.755897
-0x60C1
-// 0.852858
-0x6D2A
-// 0.704046
-0x5A1E
-// 0.334731
-0x2AD8
-// 0.954977
-0x7A3D
-// 0.204605
-0x1A30
-// 0.235505
-0x1E25
-// 0.000096
-0x0003
-// 0.857071
-0x6DB5
-// 0.216507
-0x1BB6
-// 0.822731
-0x694F
-// 0.376153
-0x3026
-// 0.898637
-0x7307
-// 0.081073
-0x0A61
-// 0.595647
-0x4C3E
-// 0.189691
-0x1848
-// 0.535480
-0x448B
-// 0.263896
-0x21C7
-// 0.557176
-0x4752
-// 0.147933
-0x12EF
-// 0.524960
-0x4332
-// 0.909679
-0x7470
-// 0.721971
-0x5C6A
-// 0.523110
-0x42F5
-// 0.101927
-0x0D0C
-// 0.879500
-0x7093
-// 0.886957
-0x7188
-// 0.815879
-0x686F
-// 0.598629
-0x4CA0
-// 0.953779
-0x7A15
-// 0.650023
-0x5334
-// 0.845085
-0x6C2C
-// 0.913738
-0x74F5
-// 0.951868
-0x79D7
-// 0.238386
-0x1E83
-// 0.049935
-0x0664
-// 0.277091
-0x2378
-// 0.028002
-0x0396
-// 0.786265
-0x64A4
-// 0.381185
-0x30CB
-// 0.689025
-0x5832
-// 0.122163
-0x0FA3
-// 0.797583
-0x6617
-// 0.221809
-0x1C64
-// 0.043399
-0x058E
-// 0.669953
-0x55C1
-// 0.723420
-0x5C99
-// 0.802370
-0x66B4
-// 0.766696
-0x6223
-// 0.015078
-0x01EE
-// 0.095186
-0x0C2F
-// 0.419525
-0x35B3
-// 0.691418
-0x5880
-// 0.657646
-0x542E
-// 0.989273
-0x7EA1
+// 0.990260
+0x7EC1
+// 0.375413
+0x300E
+// 0.341420
+0x2BB4
+// 0.884480
+0x7137
+// 0.790061
+0x6521
+// 0.586026
+0x4B03
+// 0.007402
+0x00F3
+// 0.653782
+0x53AF
+// 0.303552
+0x26DB
+// 0.764775
+0x61E4
+// 0.317265
+0x289C
+// 0.390963
+0x320B
+// 0.588060
+0x4B46
+// 0.492069
+0x3EFC
+// 0.190828
+0x186D
+// 0.571696
+0x492D
+// 0.925200
+0x766D
+// 0.004348
+0x008E
+// 0.279396
+0x23C3
+// 0.942470
+0x78A3
+// 0.330061
+0x2A3F
+// 0.103383
+0x0D3C
+// 0.747947
+0x5FBD
+// 0.760452
+0x6157
+// 0.935578
+0x77C1
+// 0.352852
+0x2D2A
+// 0.387690
+0x31A0
+// 0.506983
+0x40E5
+// 0.237057
+0x1E58
+// 0.126661
+0x1036
+// 0.744376
+0x5F48
+// 0.065397
+0x085F
+// 0.288964
+0x24FD
+// 0.272746
+0x22E9
+// 0.299016
+0x2646
+// 0.819512
+0x68E6
+// 0.158810
+0x1454
+// 0.122304
+0x0FA8
+// 0.794702
+0x65B9
+// 0.711576
+0x5B15
+// 0.179740
+0x1702
+// 0.432703
+0x3763
+// 0.816340
+0x687E
+// 0.653369
+0x53A2
+// 0.369872
+0x2F58
+// 0.621121
+0x4F81
+// 0.685031
+0x57AF
+// 0.049836
+0x0661
+// 0.366454
+0x2EE8
+// 0.395921
+0x32AE
+// 0.623308
+0x4FC9
+// 0.889796
+0x71E5
+// 0.831311
+0x6A68
+// 0.256124
+0x20C9
+// 0.672564
+0x5617
+// 0.861025
+0x6E36
+// 0.663819
+0x54F8
+// 0.811981
+0x67EF
+// 0.774593
+0x6326
+// 0.459444
+0x3ACF
+// 0.591367
+0x4BB2
+// 0.178538
+0x16DA
+// 0.232492
+0x1DC2
+// 0.553333
+0x46D4
+// 0.056911
+0x0749
+// 0.807143
+0x6750
+// 0.888752
+0x71C3
+// 0.801794
+0x66A1
+// 0.739586
+0x5EAB
+// 0.427800
+0x36C2
+// 0.658018
+0x543A
+// 0.143885
+0x126B
+// 0.197539
+0x1949
+// 0.994160
+0x7F41
+// 0.194989
+0x18F5
+// 0.442737
+0x38AC
+// 0.485228
+0x3E1C
+// 0.652720
+0x538C
+// 0.418656
+0x3597
+// 0.506375
+0x40D1
+// 0.209079
+0x1AC3
+// 0.851092
+0x6CF1
+// 0.010087
+0x014B
+// 0.994785
+0x7F55
+// 0.573313
+0x4962
+// 0.845889
+0x6C46
+// 0.464265
+0x3B6D
+// 0.519880
+0x428B
+// 0.752225
+0x6049
+// 0.622828
+0x4FB9
+// 0.405036
+0x33D8
+// 0.207550
+0x1A91
+// 0.102756
+0x0D27
+// 0.286770
+0x24B5
+// 0.103479
+0x0D3F
+// 0.525257
+0x433C
+// 0.644868
+0x528B
+// 0.776045
+0x6355
+// 0.972448
+0x7C79
+// 0.049621
+0x065A
+// 0.875992
+0x7021
+// 0.684350
+0x5799
+// 0.981140
+0x7D96
+// 0.589114
+0x4B68
+// 0.501103
+0x4024
+// 0.229500
+0x1D60
+// 0.834358
+0x6ACC
+// 0.289438
+0x250C
+// 0.857852
+0x6DCE
+// 0.800483
+0x6676
+// 0.475451
+0x3CDC
+// 0.483063
+0x3DD5
+// 0.226821
+0x1D08
+// 0.338248
+0x2B4C
+// 0.967654
+0x7BDC
+// 0.119796
+0x0F55
+// 0.128190
+0x1069
+// 0.454193
+0x3A23
+// 0.431212
+0x3732
+// 0.208104
+0x1AA3
+// 0.360706
+0x2E2C
+// 0.882085
+0x70E8
+// 0.730960
+0x5D90
+// 0.440782
+0x386C
+// 0.747201
+0x5FA4
+// 0.250680
+0x2016
+// 0.114891
+0x0EB5
+// 0.231086
+0x1D94
+// 0.228035
+0x1D30
+// 0.265304
+0x21F5
+// 0.815045
+0x6853
+// 0.798001
+0x6625
+// 0.441321
+0x387D
+// 0.747493
+0x5FAE
+// 0.428118
+0x36CD
+// 0.983506
+0x7DE4
+// 0.819905
+0x68F3
+// 0.388450
+0x31B9
+// 0.516303
+0x4216
+// 0.716800
+0x5BC0
+// 0.997215
+0x7FA5
+// 0.722171
+0x5C70
+// 0.041429
+0x054E
+// 0.888950
+0x71C9
+// 0.047988
+0x0624
+// 0.887530
+0x719B
+// 0.077732
+0x09F3
+// 0.629580
+0x5096
+// 0.737855
+0x5E72
+// 0.676683
+0x569E
+// 0.538823
+0x44F8
+// 0.746993
+0x5F9D
+// 0.783849
+0x6455
+// 0.162979
+0x14DC
+// 0.116041
+0x0EDA
+// 0.907003
+0x7419
+// 0.994912
+0x7F59
+// 0.122582
+0x0FB1
+// 0.645044
+0x5291
+// 0.801244
+0x668F
+// 0.790032
+0x6520
+// 0.133377
+0x1112
+// 0.203033
+0x19FD
+// 0.351499
+0x2CFE
+// 0.382012
+0x30E6
+// 0.375419
+0x300E
+// 0.390116
+0x31EF
+// 0.303282
+0x26D2
 // 1.000000
 0x7FFF
-// 0.470839
-0x3C44
-// 0.276230
-0x235C
-// 0.205377
-0x1A4A
-// 0.082370
-0x0A8B
-// 0.817324
-0x689E
-// 0.318232
-0x28BC
-// 0.038883
-0x04FA
-// 0.633098
-0x5109
-// 0.359554
-0x2E06
-// 0.928108
-0x76CC
-// 0.168810
-0x159C
-// 0.074536
-0x098A
-// 0.536205
-0x44A2
-// 0.722660
-0x5C80
-// 0.877975
-0x7061
-// 0.620214
-0x4F63
-// 0.990365
-0x7EC4
-// 0.122364
-0x0FAA
-// 0.573924
-0x4976
-// 0.936161
-0x77D4
-// 0.558318
-0x4777
-// 0.258495
-0x2116
-// 0.468328
-0x3BF2
-// 0.070950
-0x0915
-// 0.346224
-0x2C51
-// 0.456626
-0x3A73
-// 0.502726
-0x4059
-// 0.537112
-0x44C0
-// 0.419703
-0x35B9
-// 0.376586
-0x3034
-// 0.232880
-0x1DCF
-// 0.873721
-0x6FD6
-// 0.813125
-0x6814
-// 0.368761
-0x2F34
-// 0.500789
-0x401A
-// 0.539333
-0x4509
-// 0.184180
-0x1793
-// 0.867707
-0x6F11
-// 0.421014
-0x35E4
-// 0.595283
-0x4C32
-// 0.358320
-0x2DDD
-// 0.885532
-0x7159
-// 0.735381
-0x5E21
-// 0.501407
-0x402E
-// 0.674630
-0x565A
-// 0.844097
-0x6C0B
-// 0.896285
-0x72B9
-// 0.109345
-0x0DFF
-// 0.891765
+// 0.233631
+0x1DE8
+// 0.109884
+0x0E11
+// 0.502643
+0x4057
+// 0.960147
+0x7AE6
+// 0.827813
+0x69F6
+// 0.500968
+0x4020
+// 0.506207
+0x40CB
+// 0.523404
+0x42FF
+// 0.284019
+0x245B
+// 0.345894
+0x2C46
+// 0.226135
+0x1CF2
+// 0.133541
+0x1118
+// 0.382769
+0x30FF
+// 0.408752
+0x3452
+// 0.157062
+0x141B
+// 0.217180
+0x1BCD
+// 0.476817
+0x3D08
+// 0.211244
+0x1B0A
+// 0.381758
+0x30DD
+// 0.451141
+0x39BF
+// 0.208644
+0x1AB5
+// 0.594838
+0x4C24
+// 0.393380
+0x325A
+// 0.068864
+0x08D1
+// 0.234867
+0x1E10
+// 0.380181
+0x30AA
+// 0.971641
+0x7C5F
+// 0.254321
+0x208E
+// 0.329406
+0x2A2A
+// 0.584228
+0x4AC8
+// 0.891768
 0x7225
-// 0.374597
-0x2FF3
-// 0.421804
-0x35FE
-// 0.781730
-0x6410
-// 0.293428
-0x258F
-// 0.133157
-0x110B
-// 0.072411
-0x0945
-// 0.786389
-0x64A8
-// 0.314438
-0x2840
-// 0.647087
-0x52D4
-// 0.204199
-0x1A23
-// 0.008081
-0x0109
-// 0.772364
-0x62DD
-// 0.465679
-0x3B9B
-// 0.120055
-0x0F5E
-// 0.440559
-0x3864
-// 0.165381
-0x152B
-// 0.153327
-0x13A0
-// 0.047534
-0x0616
-// 0.831882
-0x6A7B
-// 0.771083
-0x62B3
-// 0.165597
-0x1532
-// 0.520151
-0x4294
-// 0.595240
-0x4C31
-// 0.469548
-0x3C1A
-// 0.404394
-0x33C3
-// 0.248171
-0x1FC4
-// 0.039008
-0x04FE
-// 0.763937
-0x61C9
-// 0.496994
-0x3F9E
-// 0.964809
-0x7B7F
-// 0.126668
-0x1037
-// 0.328926
-0x2A1A
-// 0.274303
-0x231C
-// 0.708450
-0x5AAE
-// 0.460126
-0x3AE5
-// 0.364484
-0x2EA7
-// 0.707633
-0x5A94
-// 0.948517
-0x7969
-// 0.514019
-0x41CB
-// 0.101433
-0x0CFC
-// 0.971785
-0x7C63
-// 0.041218
-0x0547
-// 0.970202
-0x7C30
-// 0.137811
-0x11A4
-// 0.653814
-0x53B0
-// 0.634408
-0x5134
-// 0.635064
-0x514A
-// 0.217709
-0x1BDE
-// 0.309742
-0x27A6
-// 0.378571
-0x3075
-// 0.980248
-0x7D79
-// 0.819155
-0x68DA
-// 0.712649
-0x5B38
-// 0.331675
-0x2A74
-// 0.488784
-0x3E90
-// 0.126670
-0x1037
-// 0.187287
-0x17F9
-// 0.958358
-0x7AAB
-// 0.701330
-0x59C5
-// 0.994753
-0x7F54
-// 0.611093
-0x4E38
-// 0.131297
-0x10CE
-// 0.732784
-0x5DCC
-// 0.511658
-0x417E
-// 0.310061
-0x27B0
-// 0.820000
-0x68F6
-// 0.493150
-0x3F20
-// 0.473498
-0x3C9C
-// 0.164626
-0x1512
-// 0.164194
-0x1504
-// 0.770922
-0x62AE
-// 0.183890
-0x178A
-// 0.210706
-0x1AF8
-// 0.706973
-0x5A7E
-// 0.755982
-0x60C4
-// 0.766450
-0x621B
-// 0.051903
-0x06A5
-// 0.604214
-0x4D57
-// 0.147565
-0x12E3
-// 0.819342
-0x68E0
-// 0.035799
-0x0495
-// 0.070757
-0x090F
-// 0.692521
-0x58A5
-// 0.821179
-0x691C
-// 0.669606
-0x55B6
-// 0.905185
-0x73DD
-// 0.601727
-0x4D05
-// 0.313387
-0x281D
-// 0.810837
-0x67C9
-// 0.529720
-0x43CE
-// 0.436287
-0x37D8
-// 0.593336
-0x4BF2
-// 0.864106
-0x6E9B
-// 0.779255
-0x63BF
-// 0.112078
-0x0E59
-// 0.190585
-0x1865
-// 0.769410
-0x627C
-// 0.335442
-0x2AF0
-// 0.463786
-0x3B5D
-// 0.937023
-0x77F0
-// 0.027384
-0x0381
-// 0.032313
-0x0423
-// 0.668192
-0x5587
-// 0.589001
-0x4B64
-// 0.078089
-0x09FF
-// 0.085746
-0x0AFA
-// 0.498882
-0x3FDB
-// 0.456033
-0x3A5F
-// 0.737705
-0x5E6D
-// 0.463232
-0x3B4B
-// 0.894536
-0x7280
-// 0.174357
-0x1651
-// 0.905967
-0x73F7
-// 0.573419
-0x4966
-// 0.848698
-0x6CA2
-// 0.659455
-0x5469
-// 0.099005
-0x0CAC
-// 0.931548
-0x773D
-// 0.651282
-0x535D
-// 0.083401
-0x0AAD
-// 0.674452
-0x5654
-// 0.897314
-0x72DB
-// 0.186839
-0x17EA
-// 0.930641
-0x771F
-// 0.407207
-0x341F
-// 0.481987
-0x3DB2
-// 0.596825
-0x4C65
-// 0.608179
-0x4DD9
-// 0.879241
-0x708B
-// 0.789183
-0x6504
-// 0.178856
-0x16E5
-// 0.845083
-0x6C2C
-// 0.557538
-0x475D
-// 0.177218
-0x16AF
-// 0.291060
-0x2541
-// 0.921219
-0x75EB
-// 0.982905
-0x7DD0
-// 0.705997
-0x5A5E
-// 0.683280
-0x5776
-// 0.135006
-0x1148
-// 0.773225
-0x62F9
-// 0.981177
-0x7D97
-// 0.855113
-0x6D74
-// 0.123843
-0x0FDA
+// 0.639745
+0x51E3
+// 0.674681
+0x565C
+// 0.097242
+0x0C72
+// 0.786967
+0x64BB
+// 0.178202
+0x16CF
+// 0.627605
+0x5055
+// 0.142632
+0x1242
+// 0.974853
+0x7CC8
+// 0.326506
+0x29CB
+// 0.002317
+0x004C
+// 0.618229
+0x4F22
+// 0.608150
+0x4DD8
+// 0.288862
+0x24F9
+// 0.505923
+0x40C2
+// 0.315579
+0x2865
+// 0.683672
+0x5783
+// 0.584594
+0x4AD4
+// 0.855191
+0x6D77
+// 0.325796
+0x29B4
+// 0.405995
+0x33F8
+// 0.503245
+0x406A
+// 0.903596
+0x73A9
+// 0.352676
+0x2D24
+// 0.241311
+0x1EE3
+// 0.125698
+0x1017
+// 0.930951
+0x7729
+// 0.102932
+0x0D2D
+// 0.419274
+0x35AB
+// 0.208833
+0x1ABB
+// 0.486260
+0x3E3E
+// 0.396494
+0x32C0
+// 0.087167
+0x0B28
+// 0.709592
+0x5AD4
+// 0.962132
+0x7B27
+// 0.913174
+0x74E3
+// 0.557443
+0x475A
+// 0.145512
+0x12A0
+// 0.035116
+0x047F
+// 0.888805
+0x71C4
+// 0.239020
+0x1E98
+// 0.726691
+0x5D04
+// 0.864539
+0x6EA9
+// 0.143218
+0x1255
+// 0.907504
+0x7429
+// 0.670077
+0x55C5
+// 0.162471
+0x14CC
+// 0.097374
+0x0C77
+// 0.573777
+0x4972
+// 0.963715
+0x7B5B
+// 0.361492
+0x2E45
+// 0.640549
+0x51FE
+// 0.091447
+0x0BB5
+// 0.223977
+0x1CAB
+// 0.500107
+0x4004
+// 0.707069
+0x5A81
+// 0.534330
+0x4465
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ31/Samples4_q31.txt b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ31/Samples4_q31.txt
old mode 100644
new mode 100755
index c86a6b8..57c6dbb
--- a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ31/Samples4_q31.txt
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ31/Samples4_q31.txt
@@ -1,514 +1,514 @@
 W
 256
-// 0.835545
-0x6AF3242E
-// 0.638846
-0x51C5B68D
-// 0.560740
-0x47C651B4
-// 0.506356
-0x40D04483
-// 0.807961
-0x676B45A0
-// 0.045658
-0x05D81E89
-// 0.569414
-0x48E28ADE
-// 0.755897
-0x60C13C3E
-// 0.852858
-0x6D2A7744
-// 0.704046
-0x5A1E316D
-// 0.334731
-0x2AD87331
-// 0.954977
-0x7A3CB15A
-// 0.204605
-0x1A307E74
-// 0.235505
-0x1E250B23
-// 0.000096
-0x0003241E
-// 0.857071
-0x6DB48393
-// 0.216507
-0x1BB67C9B
-// 0.822731
-0x694F3CA6
-// 0.376153
-0x3025CBFA
-// 0.898637
-0x730689FD
-// 0.081073
-0x0A609C0D
-// 0.595647
-0x4C3E2841
-// 0.189691
-0x1847CB4C
-// 0.535480
-0x448A9CF7
-// 0.263896
-0x21C75902
-// 0.557176
-0x47518BA7
-// 0.147933
-0x12EF7905
-// 0.524960
-0x4331DF98
-// 0.909679
-0x74705AE1
-// 0.721971
-0x5C698D06
-// 0.523110
-0x42F5460B
-// 0.101927
-0x0D0BF4AD
-// 0.879500
-0x70937459
-// 0.886957
-0x7187CDCE
-// 0.815879
-0x686EB8E0
-// 0.598629
-0x4C9FE088
-// 0.953779
-0x7A15724D
-// 0.650023
-0x5333F02A
-// 0.845085
-0x6C2BC001
-// 0.913738
-0x74F55BD7
-// 0.951868
-0x79D6D1ED
-// 0.238386
-0x1E836E34
-// 0.049935
-0x066444BE
-// 0.277091
-0x2377B4E3
-// 0.028002
-0x03959184
-// 0.786265
-0x64A450E9
-// 0.381185
-0x30CAA923
-// 0.689025
-0x5831F5D6
-// 0.122163
-0x0FA3075E
-// 0.797583
-0x661731B3
-// 0.221809
-0x1C643A79
-// 0.043399
-0x058E19BC
-// 0.669953
-0x55C10484
-// 0.723420
-0x5C990354
-// 0.802370
-0x66B4132F
-// 0.766696
-0x622316C0
-// 0.015078
-0x01EE1088
-// 0.095186
-0x0C2F0A4F
-// 0.419525
-0x35B2FC8C
-// 0.691418
-0x588066A5
-// 0.657646
-0x542DC071
-// 0.989273
-0x7EA08025
+// 0.990260
+0x7EC0DA9F
+// 0.375413
+0x300D8567
+// 0.341420
+0x2BB3A36E
+// 0.884480
+0x7136A168
+// 0.790061
+0x6520B7C7
+// 0.586026
+0x4B02E46B
+// 0.007402
+0x00F28BF3
+// 0.653782
+0x53AF1EED
+// 0.303552
+0x26DACA64
+// 0.764775
+0x61E42533
+// 0.317265
+0x289C2195
+// 0.390963
+0x320B10A6
+// 0.588060
+0x4B458BC8
+// 0.492069
+0x3EFC205D
+// 0.190828
+0x186D0FD2
+// 0.571696
+0x492D543D
+// 0.925200
+0x766CF7FC
+// 0.004348
+0x008E7BAA
+// 0.279396
+0x23C340ED
+// 0.942470
+0x78A2DB82
+// 0.330061
+0x2A3F6DA9
+// 0.103383
+0x0D3BA980
+// 0.747947
+0x5FBCBDDE
+// 0.760452
+0x6156807C
+// 0.935578
+0x77C1054B
+// 0.352852
+0x2D2A3FB6
+// 0.387690
+0x319FD45F
+// 0.506983
+0x40E4CFE0
+// 0.237057
+0x1E57E339
+// 0.126661
+0x10366F57
+// 0.744376
+0x5F47B4E1
+// 0.065397
+0x085EEE46
+// 0.288964
+0x24FCC76A
+// 0.272746
+0x22E956F1
+// 0.299016
+0x264624C9
+// 0.819512
+0x68E5C459
+// 0.158810
+0x1453E2D4
+// 0.122304
+0x0FA7A730
+// 0.794702
+0x65B8CC3C
+// 0.711576
+0x5B14E87D
+// 0.179740
+0x1701BA00
+// 0.432703
+0x3762D3BD
+// 0.816340
+0x687DD069
+// 0.653369
+0x53A197BD
+// 0.369872
+0x2F57F76B
+// 0.621121
+0x4F80E077
+// 0.685031
+0x57AF1A55
+// 0.049836
+0x066103DA
+// 0.366454
+0x2EE7F54D
+// 0.395921
+0x32AD8B74
+// 0.623308
+0x4FC8905A
+// 0.889796
+0x71E4D3A6
+// 0.831311
+0x6A686669
+// 0.256124
+0x20C8AFB3
+// 0.672564
+0x561691C1
+// 0.861025
+0x6E3610FF
+// 0.663819
+0x54F805CE
+// 0.811981
+0x67EEFB61
+// 0.774593
+0x6325DE47
+// 0.459444
+0x3ACF0D51
+// 0.591367
+0x4BB1E9BC
+// 0.178538
+0x16DA5132
+// 0.232492
+0x1DC24B7F
+// 0.553333
+0x46D39B7D
+// 0.056911
+0x0748D99A
+// 0.807143
+0x67507907
+// 0.888752
+0x71C2A0CE
+// 0.801794
+0x66A12B5E
+// 0.739586
+0x5EAABE83
+// 0.427800
+0x36C22505
+// 0.658018
+0x5439ED56
+// 0.143885
+0x126AD140
+// 0.197539
+0x1948F636
+// 0.994160
+0x7F409FEF
+// 0.194989
+0x18F56483
+// 0.442737
+0x38AB99E5
+// 0.485228
+0x3E1BF383
+// 0.652720
+0x538C5818
+// 0.418656
+0x3596884D
+// 0.506375
+0x40D0E7E8
+// 0.209079
+0x1AC31B77
+// 0.851092
+0x6CF092DD
+// 0.010087
+0x014A8B8A
+// 0.994785
+0x7F551DEA
+// 0.573313
+0x496254F2
+// 0.845889
+0x6C461888
+// 0.464265
+0x3B6D079C
+// 0.519880
+0x428B6A46
+// 0.752225
+0x6048E928
+// 0.622828
+0x4FB8D370
+// 0.405036
+0x33D83670
+// 0.207550
+0x1A90FCAC
+// 0.102756
+0x0D271BEC
+// 0.286770
+0x24B4DE7B
+// 0.103479
+0x0D3ECB47
+// 0.525257
+0x433B9F97
+// 0.644868
+0x528B0A89
+// 0.776045
+0x63556DE3
+// 0.972448
+0x7C7929E5
+// 0.049621
+0x0659F9FF
+// 0.875992
+0x702082A0
+// 0.684350
+0x5798C74A
+// 0.981140
+0x7D960034
+// 0.589114
+0x4B681785
+// 0.501103
+0x402424B5
+// 0.229500
+0x1D60440C
+// 0.834358
+0x6ACC3AA5
+// 0.289438
+0x250C518A
+// 0.857852
+0x6DCE1A85
+// 0.800483
+0x66763618
+// 0.475451
+0x3CDB940A
+// 0.483063
+0x3DD502EB
+// 0.226821
+0x1D0875CE
+// 0.338248
+0x2B4BB5CC
+// 0.967654
+0x7BDC1788
+// 0.119796
+0x0F557C39
+// 0.128190
+0x1068867B
+// 0.454193
+0x3A2302E7
+// 0.431212
+0x3731F7E3
+// 0.208104
+0x1AA32A53
+// 0.360706
+0x2E2B9E2A
+// 0.882085
+0x70E827E4
+// 0.730960
+0x5D901AF0
+// 0.440782
+0x386B8802
+// 0.747201
+0x5FA445A9
+// 0.250680
+0x20164734
+// 0.114891
+0x0EB4BF42
+// 0.231086
+0x1D9436E2
+// 0.228035
+0x1D303CD8
+// 0.265304
+0x21F57E58
+// 0.815045
+0x68536562
+// 0.798001
+0x6624E4E5
+// 0.441321
+0x387D3164
+// 0.747493
+0x5FADDABE
+// 0.428118
+0x36CC936A
+// 0.983506
+0x7DE389A8
+// 0.819905
+0x68F2A47E
+// 0.388450
+0x31B8B7DA
+// 0.516303
+0x421638B0
+// 0.716800
+0x5BC0179D
+// 0.997215
+0x7FA4BF39
+// 0.722171
+0x5C701CFE
+// 0.041429
+0x054D8A1D
+// 0.888950
+0x71C91AB5
+// 0.047988
+0x062477BA
+// 0.887530
+0x719A957E
+// 0.077732
+0x09F31E9D
+// 0.629580
+0x509616E3
+// 0.737855
+0x5E7209E6
+// 0.676683
+0x569D8B13
+// 0.538823
+0x44F829E3
+// 0.746993
+0x5F9D760E
+// 0.783849
+0x64552B0B
+// 0.162979
+0x14DC7F16
+// 0.116041
+0x0EDA6C23
+// 0.907003
+0x7418AB03
+// 0.994912
+0x7F594927
+// 0.122582
+0x0FB0C1D0
+// 0.645044
+0x5290CA0C
+// 0.801244
+0x668F298D
+// 0.790032
+0x651FC58F
+// 0.133377
+0x11127EB0
+// 0.203033
+0x19FCFC93
+// 0.351499
+0x2CFDE885
+// 0.382012
+0x30E5C31E
+// 0.375419
+0x300DBB85
+// 0.390116
+0x31EF4F9F
+// 0.303282
+0x26D1F262
 // 1.000000
 0x7FFFFFFF
-// 0.470839
-0x3C4472AE
-// 0.276230
-0x235B824B
-// 0.205377
-0x1A49CEA3
-// 0.082370
-0x0A8B18CA
-// 0.817324
-0x689E13C2
-// 0.318232
-0x28BBCF95
-// 0.038883
-0x04FA1ABE
-// 0.633098
-0x510956F1
-// 0.359554
-0x2E05DD41
-// 0.928108
-0x76CC3C3F
-// 0.168810
-0x159B9110
-// 0.074536
-0x098A6118
-// 0.536205
-0x44A25A18
-// 0.722660
-0x5C801DE9
-// 0.877975
-0x70617D77
-// 0.620214
-0x4F632AB3
-// 0.990365
-0x7EC44AD8
-// 0.122364
-0x0FA99BF7
-// 0.573924
-0x49765678
-// 0.936161
-0x77D422A3
-// 0.558318
-0x4776FA80
-// 0.258495
-0x21165C49
-// 0.468328
-0x3BF22E25
-// 0.070950
-0x0914E607
-// 0.346224
-0x2C510ECC
-// 0.456626
-0x3A72B72A
-// 0.502726
-0x4059529E
-// 0.537112
-0x44C012C6
-// 0.419703
-0x35B8D30F
-// 0.376586
-0x3033F985
-// 0.232880
-0x1DCF011B
-// 0.873721
-0x6FD6176D
-// 0.813125
-0x68147C93
-// 0.368761
-0x2F339223
-// 0.500789
-0x4019DD3C
-// 0.539333
-0x4508DDEC
-// 0.184180
-0x17933715
-// 0.867707
-0x6F110350
-// 0.421014
-0x35E3CD3E
-// 0.595283
-0x4C323F5F
-// 0.358320
-0x2DDD6BB6
-// 0.885532
-0x71591D6D
-// 0.735381
-0x5E20F78D
-// 0.501407
-0x402E1C7F
-// 0.674630
-0x565A4310
-// 0.844097
-0x6C0B62F0
-// 0.896285
-0x72B974EE
-// 0.109345
-0x0DFF0611
-// 0.891765
-0x72255808
-// 0.374597
-0x2FF2CA2C
-// 0.421804
-0x35FDAF51
-// 0.781730
-0x640FB786
-// 0.293428
-0x258F08D9
-// 0.133157
-0x110B4CF5
-// 0.072411
-0x0944C661
-// 0.786389
-0x64A86796
-// 0.314438
-0x283F80D1
-// 0.647087
-0x52D3C1A3
-// 0.204199
-0x1A233443
-// 0.008081
-0x0108C9A9
-// 0.772364
-0x62DCD642
-// 0.465679
-0x3B9B5B29
-// 0.120055
-0x0F5DF403
-// 0.440559
-0x38643B30
-// 0.165381
-0x152B30F4
-// 0.153327
-0x13A03AEF
-// 0.047534
-0x06159A1B
-// 0.831882
-0x6A7B1A86
-// 0.771083
-0x62B2D529
-// 0.165597
-0x15324BB5
-// 0.520151
-0x42944B2A
-// 0.595240
-0x4C30D584
-// 0.469548
-0x3C1A2988
-// 0.404394
-0x33C32CA0
-// 0.248171
-0x1FC40D8F
-// 0.039008
-0x04FE37AB
-// 0.763937
-0x61C8AC1F
-// 0.496994
-0x3F9D83AC
-// 0.964809
-0x7B7EDE1A
-// 0.126668
-0x1036A823
-// 0.328926
-0x2A1A3C0A
-// 0.274303
-0x231C5AD6
-// 0.708450
-0x5AAE7EAC
-// 0.460126
-0x3AE56CA1
-// 0.364484
-0x2EA76D2E
-// 0.707633
-0x5A93B5F4
-// 0.948517
-0x7968FF55
-// 0.514019
-0x41CB5F21
-// 0.101433
-0x0CFBC518
-// 0.971785
-0x7C63730A
-// 0.041218
-0x0546A5BF
-// 0.970202
-0x7C2F91BF
-// 0.137811
-0x11A3CD5D
-// 0.653814
-0x53B02A83
-// 0.634408
-0x51344B9E
-// 0.635064
-0x5149C94D
-// 0.217709
-0x1BDDE4C7
-// 0.309742
-0x27A5A449
-// 0.378571
-0x30750558
-// 0.980248
-0x7D78C649
-// 0.819155
-0x68DA0EBD
-// 0.712649
-0x5B381336
-// 0.331675
-0x2A7450E3
-// 0.488784
-0x3E907D00
-// 0.126670
-0x1036B931
-// 0.187287
-0x17F90383
-// 0.958358
-0x7AAB7681
-// 0.701330
-0x59C52FCB
-// 0.994753
-0x7F540EB5
-// 0.611093
-0x4E384860
-// 0.131297
-0x10CE5A8E
-// 0.732784
-0x5DCBDFA9
-// 0.511658
-0x417E0564
-// 0.310061
-0x27B016AB
-// 0.820000
-0x68F5C0F9
-// 0.493150
-0x3F1F85E7
-// 0.473498
-0x3C9B92B0
-// 0.164626
-0x151277E8
-// 0.164194
-0x15044C3C
-// 0.770922
-0x62AD90D0
-// 0.183890
-0x1789B11B
-// 0.210706
-0x1AF86764
-// 0.706973
-0x5A7E1AC8
-// 0.755982
-0x60C40773
-// 0.766450
-0x621B089C
-// 0.051903
-0x06A4C148
-// 0.604214
-0x4D56E367
-// 0.147565
-0x12E3677B
-// 0.819342
-0x68E030DC
-// 0.035799
-0x04951184
-// 0.070757
-0x090E903C
-// 0.692521
-0x58A486AE
-// 0.821179
-0x691C685D
-// 0.669606
-0x55B5A4C0
-// 0.905185
-0x73DD16CA
-// 0.601727
-0x4D056497
-// 0.313387
-0x281D0F87
-// 0.810837
-0x67C97DD3
-// 0.529720
-0x43CDDEE1
-// 0.436287
-0x37D8438E
-// 0.593336
-0x4BF26E37
-// 0.864106
-0x6E9B0724
-// 0.779255
-0x63BE9F4D
-// 0.112078
-0x0E589176
-// 0.190585
-0x1865146B
-// 0.769410
-0x627C04AA
-// 0.335442
-0x2AEFC6EE
-// 0.463786
-0x3B5D56BF
-// 0.937023
-0x77F05CC1
-// 0.027384
-0x03814DF0
-// 0.032313
-0x0422D2F0
-// 0.668192
-0x55875239
-// 0.589001
-0x4B645E96
-// 0.078089
-0x09FECE9A
-// 0.085746
-0x0AF9BCF9
-// 0.498882
-0x3FDB5ADB
-// 0.456033
-0x3A5F4CD9
-// 0.737705
-0x5E6D1BC8
-// 0.463232
-0x3B4B2D90
-// 0.894536
-0x72802AF5
-// 0.174357
-0x16515883
-// 0.905967
-0x73F6B734
-// 0.573419
-0x4965CD46
-// 0.848698
-0x6CA221C6
-// 0.659455
-0x54690754
-// 0.099005
-0x0CAC32EF
-// 0.931548
-0x773CF758
-// 0.651282
-0x535D3215
-// 0.083401
-0x0AACE5F6
-// 0.674452
-0x56546E7B
-// 0.897314
-0x72DB2FB2
-// 0.186839
-0x17EA55EC
-// 0.930641
-0x771F3C3C
-// 0.407207
-0x341F586A
-// 0.481987
-0x3DB1C294
-// 0.596825
-0x4C64C1FA
-// 0.608179
-0x4DD8D1E6
-// 0.879241
-0x708AFB12
-// 0.789183
-0x6503EF7F
-// 0.178856
-0x16E4C179
-// 0.845083
-0x6C2BB11A
-// 0.557538
-0x475D6685
-// 0.177218
-0x16AF1570
-// 0.291060
-0x2541751D
-// 0.921219
-0x75EA8474
-// 0.982905
-0x7DCFD85C
-// 0.705997
-0x5A5E1A52
-// 0.683280
-0x5775BAE4
-// 0.135006
-0x1147E074
-// 0.773225
-0x62F90A7C
-// 0.981177
-0x7D97349A
-// 0.855113
-0x6D745791
-// 0.123843
-0x0FDA13CC
+// 0.233631
+0x1DE7A255
+// 0.109884
+0x0E10AA1A
+// 0.502643
+0x40569908
+// 0.960147
+0x7AE61A22
+// 0.827813
+0x69F5C66F
+// 0.500968
+0x401FB521
+// 0.506207
+0x40CB62A5
+// 0.523404
+0x42FEE3C4
+// 0.284019
+0x245AB85D
+// 0.345894
+0x2C4641DB
+// 0.226135
+0x1CF200FF
+// 0.133541
+0x1117E2F5
+// 0.382769
+0x30FE9091
+// 0.408752
+0x3451FA7B
+// 0.157062
+0x141A9887
+// 0.217180
+0x1BCC90DA
+// 0.476817
+0x3D085542
+// 0.211244
+0x1B0A0D05
+// 0.381758
+0x30DD6FC6
+// 0.451141
+0x39BEFA2C
+// 0.208644
+0x1AB4D70F
+// 0.594838
+0x4C23A981
+// 0.393380
+0x325A4A0E
+// 0.068864
+0x08D0869C
+// 0.234867
+0x1E10200B
+// 0.380181
+0x30A9C66F
+// 0.971641
+0x7C5EB84B
+// 0.254321
+0x208D9434
+// 0.329406
+0x2A29F93F
+// 0.584228
+0x4AC7FAC3
+// 0.891768
+0x7225746B
+// 0.639745
+0x51E325F3
+// 0.674681
+0x565BEE9F
+// 0.097242
+0x0C726E6E
+// 0.786967
+0x64BB53B2
+// 0.178202
+0x16CF5076
+// 0.627605
+0x50555E8E
+// 0.142632
+0x1241BFCE
+// 0.974853
+0x7CC7F9CB
+// 0.326506
+0x29CAF376
+// 0.002317
+0x004BE8C0
+// 0.618229
+0x4F221E3D
+// 0.608150
+0x4DD7D95A
+// 0.288862
+0x24F96D3C
+// 0.505923
+0x40C2190F
+// 0.315579
+0x2864E88C
+// 0.683672
+0x57829007
+// 0.584594
+0x4AD3F9B2
+// 0.855191
+0x6D76E399
+// 0.325796
+0x29B3AE51
+// 0.405995
+0x33F7A257
+// 0.503245
+0x406A541C
+// 0.903596
+0x73A906E1
+// 0.352676
+0x2D247E53
+// 0.241311
+0x1EE346D9
+// 0.125698
+0x1016E2E7
+// 0.930951
+0x77296AB5
+// 0.102932
+0x0D2CE0F4
+// 0.419274
+0x35AAC25B
+// 0.208833
+0x1ABB0B51
+// 0.486260
+0x3E3DC093
+// 0.396494
+0x32C05430
+// 0.087167
+0x0B284854
+// 0.709592
+0x5AD3ED27
+// 0.962132
+0x7B27254C
+// 0.913174
+0x74E2E388
+// 0.557443
+0x475A4B56
+// 0.145512
+0x12A024CC
+// 0.035116
+0x047EACBC
+// 0.888805
+0x71C45F87
+// 0.239020
+0x1E983936
+// 0.726691
+0x5D043868
+// 0.864539
+0x6EA935A8
+// 0.143218
+0x1254F5AD
+// 0.907504
+0x742915B4
+// 0.670077
+0x55C51426
+// 0.162471
+0x14CBDAD3
+// 0.097374
+0x0C76C37C
+// 0.573777
+0x497187E5
+// 0.963715
+0x7B5AFF52
+// 0.361492
+0x2E455C16
+// 0.640549
+0x51FD82D8
+// 0.091447
+0x0BB487B1
+// 0.223977
+0x1CAB4585
+// 0.500107
+0x40038105
+// 0.707069
+0x5A81393B
+// 0.534330
+0x4464EC3B
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ31/Samples5_q7.txt b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ31/Samples5_q7.txt
old mode 100644
new mode 100755
index 8db8a55..2d464ee
--- a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ31/Samples5_q7.txt
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ31/Samples5_q7.txt
@@ -1,514 +1,514 @@
 B
 256
-// 0.835545
-0x6B
-// 0.638846
-0x52
-// 0.560740
-0x48
-// 0.506356
-0x41
-// 0.807961
-0x67
-// 0.045658
-0x06
-// 0.569414
-0x49
-// 0.755897
-0x61
-// 0.852858
-0x6D
-// 0.704046
-0x5A
-// 0.334731
-0x2B
-// 0.954977
-0x7A
-// 0.204605
-0x1A
-// 0.235505
-0x1E
-// 0.000096
-0x00
-// 0.857071
-0x6E
-// 0.216507
-0x1C
-// 0.822731
-0x69
-// 0.376153
-0x30
-// 0.898637
-0x73
-// 0.081073
-0x0A
-// 0.595647
-0x4C
-// 0.189691
-0x18
-// 0.535480
-0x45
-// 0.263896
-0x22
-// 0.557176
-0x47
-// 0.147933
-0x13
-// 0.524960
-0x43
-// 0.909679
-0x74
-// 0.721971
-0x5C
-// 0.523110
-0x43
-// 0.101927
-0x0D
-// 0.879500
-0x71
-// 0.886957
-0x72
-// 0.815879
-0x68
-// 0.598629
-0x4D
-// 0.953779
-0x7A
-// 0.650023
-0x53
-// 0.845085
-0x6C
-// 0.913738
-0x75
-// 0.951868
-0x7A
-// 0.238386
-0x1F
-// 0.049935
-0x06
-// 0.277091
-0x23
-// 0.028002
-0x04
-// 0.786265
-0x65
-// 0.381185
-0x31
-// 0.689025
-0x58
-// 0.122163
-0x10
-// 0.797583
-0x66
-// 0.221809
-0x1C
-// 0.043399
-0x06
-// 0.669953
-0x56
-// 0.723420
-0x5D
-// 0.802370
-0x67
-// 0.766696
-0x62
-// 0.015078
-0x02
-// 0.095186
-0x0C
-// 0.419525
-0x36
-// 0.691418
-0x59
-// 0.657646
-0x54
-// 0.989273
+// 0.990260
 0x7F
+// 0.375413
+0x30
+// 0.341420
+0x2C
+// 0.884480
+0x71
+// 0.790061
+0x65
+// 0.586026
+0x4B
+// 0.007402
+0x01
+// 0.653782
+0x54
+// 0.303552
+0x27
+// 0.764775
+0x62
+// 0.317265
+0x29
+// 0.390963
+0x32
+// 0.588060
+0x4B
+// 0.492069
+0x3F
+// 0.190828
+0x18
+// 0.571696
+0x49
+// 0.925200
+0x76
+// 0.004348
+0x01
+// 0.279396
+0x24
+// 0.942470
+0x79
+// 0.330061
+0x2A
+// 0.103383
+0x0D
+// 0.747947
+0x60
+// 0.760452
+0x61
+// 0.935578
+0x78
+// 0.352852
+0x2D
+// 0.387690
+0x32
+// 0.506983
+0x41
+// 0.237057
+0x1E
+// 0.126661
+0x10
+// 0.744376
+0x5F
+// 0.065397
+0x08
+// 0.288964
+0x25
+// 0.272746
+0x23
+// 0.299016
+0x26
+// 0.819512
+0x69
+// 0.158810
+0x14
+// 0.122304
+0x10
+// 0.794702
+0x66
+// 0.711576
+0x5B
+// 0.179740
+0x17
+// 0.432703
+0x37
+// 0.816340
+0x68
+// 0.653369
+0x54
+// 0.369872
+0x2F
+// 0.621121
+0x50
+// 0.685031
+0x58
+// 0.049836
+0x06
+// 0.366454
+0x2F
+// 0.395921
+0x33
+// 0.623308
+0x50
+// 0.889796
+0x72
+// 0.831311
+0x6A
+// 0.256124
+0x21
+// 0.672564
+0x56
+// 0.861025
+0x6E
+// 0.663819
+0x55
+// 0.811981
+0x68
+// 0.774593
+0x63
+// 0.459444
+0x3B
+// 0.591367
+0x4C
+// 0.178538
+0x17
+// 0.232492
+0x1E
+// 0.553333
+0x47
+// 0.056911
+0x07
+// 0.807143
+0x67
+// 0.888752
+0x72
+// 0.801794
+0x67
+// 0.739586
+0x5F
+// 0.427800
+0x37
+// 0.658018
+0x54
+// 0.143885
+0x12
+// 0.197539
+0x19
+// 0.994160
+0x7F
+// 0.194989
+0x19
+// 0.442737
+0x39
+// 0.485228
+0x3E
+// 0.652720
+0x54
+// 0.418656
+0x36
+// 0.506375
+0x41
+// 0.209079
+0x1B
+// 0.851092
+0x6D
+// 0.010087
+0x01
+// 0.994785
+0x7F
+// 0.573313
+0x49
+// 0.845889
+0x6C
+// 0.464265
+0x3B
+// 0.519880
+0x43
+// 0.752225
+0x60
+// 0.622828
+0x50
+// 0.405036
+0x34
+// 0.207550
+0x1B
+// 0.102756
+0x0D
+// 0.286770
+0x25
+// 0.103479
+0x0D
+// 0.525257
+0x43
+// 0.644868
+0x53
+// 0.776045
+0x63
+// 0.972448
+0x7C
+// 0.049621
+0x06
+// 0.875992
+0x70
+// 0.684350
+0x58
+// 0.981140
+0x7E
+// 0.589114
+0x4B
+// 0.501103
+0x40
+// 0.229500
+0x1D
+// 0.834358
+0x6B
+// 0.289438
+0x25
+// 0.857852
+0x6E
+// 0.800483
+0x66
+// 0.475451
+0x3D
+// 0.483063
+0x3E
+// 0.226821
+0x1D
+// 0.338248
+0x2B
+// 0.967654
+0x7C
+// 0.119796
+0x0F
+// 0.128190
+0x10
+// 0.454193
+0x3A
+// 0.431212
+0x37
+// 0.208104
+0x1B
+// 0.360706
+0x2E
+// 0.882085
+0x71
+// 0.730960
+0x5E
+// 0.440782
+0x38
+// 0.747201
+0x60
+// 0.250680
+0x20
+// 0.114891
+0x0F
+// 0.231086
+0x1E
+// 0.228035
+0x1D
+// 0.265304
+0x22
+// 0.815045
+0x68
+// 0.798001
+0x66
+// 0.441321
+0x38
+// 0.747493
+0x60
+// 0.428118
+0x37
+// 0.983506
+0x7E
+// 0.819905
+0x69
+// 0.388450
+0x32
+// 0.516303
+0x42
+// 0.716800
+0x5C
+// 0.997215
+0x7F
+// 0.722171
+0x5C
+// 0.041429
+0x05
+// 0.888950
+0x72
+// 0.047988
+0x06
+// 0.887530
+0x72
+// 0.077732
+0x0A
+// 0.629580
+0x51
+// 0.737855
+0x5E
+// 0.676683
+0x57
+// 0.538823
+0x45
+// 0.746993
+0x60
+// 0.783849
+0x64
+// 0.162979
+0x15
+// 0.116041
+0x0F
+// 0.907003
+0x74
+// 0.994912
+0x7F
+// 0.122582
+0x10
+// 0.645044
+0x53
+// 0.801244
+0x67
+// 0.790032
+0x65
+// 0.133377
+0x11
+// 0.203033
+0x1A
+// 0.351499
+0x2D
+// 0.382012
+0x31
+// 0.375419
+0x30
+// 0.390116
+0x32
+// 0.303282
+0x27
 // 1.000000
 0x7F
-// 0.470839
-0x3C
-// 0.276230
-0x23
-// 0.205377
-0x1A
-// 0.082370
-0x0B
-// 0.817324
-0x69
-// 0.318232
-0x29
-// 0.038883
-0x05
-// 0.633098
-0x51
-// 0.359554
-0x2E
-// 0.928108
-0x77
-// 0.168810
-0x16
-// 0.074536
-0x0A
-// 0.536205
-0x45
-// 0.722660
-0x5D
-// 0.877975
-0x70
-// 0.620214
-0x4F
-// 0.990365
-0x7F
-// 0.122364
-0x10
-// 0.573924
-0x49
-// 0.936161
-0x78
-// 0.558318
-0x47
-// 0.258495
-0x21
-// 0.468328
-0x3C
-// 0.070950
-0x09
-// 0.346224
-0x2C
-// 0.456626
-0x3A
-// 0.502726
-0x40
-// 0.537112
-0x45
-// 0.419703
-0x36
-// 0.376586
-0x30
-// 0.232880
+// 0.233631
 0x1E
-// 0.873721
-0x70
-// 0.813125
-0x68
-// 0.368761
-0x2F
-// 0.500789
-0x40
-// 0.539333
-0x45
-// 0.184180
-0x18
-// 0.867707
-0x6F
-// 0.421014
-0x36
-// 0.595283
-0x4C
-// 0.358320
-0x2E
-// 0.885532
-0x71
-// 0.735381
-0x5E
-// 0.501407
-0x40
-// 0.674630
-0x56
-// 0.844097
-0x6C
-// 0.896285
-0x73
-// 0.109345
+// 0.109884
 0x0E
-// 0.891765
-0x72
-// 0.374597
-0x30
-// 0.421804
-0x36
-// 0.781730
-0x64
-// 0.293428
-0x26
-// 0.133157
-0x11
-// 0.072411
-0x09
-// 0.786389
-0x65
-// 0.314438
-0x28
-// 0.647087
-0x53
-// 0.204199
-0x1A
-// 0.008081
-0x01
-// 0.772364
-0x63
-// 0.465679
-0x3C
-// 0.120055
-0x0F
-// 0.440559
-0x38
-// 0.165381
-0x15
-// 0.153327
-0x14
-// 0.047534
-0x06
-// 0.831882
+// 0.502643
+0x40
+// 0.960147
+0x7B
+// 0.827813
 0x6A
-// 0.771083
-0x63
-// 0.165597
-0x15
-// 0.520151
-0x43
-// 0.595240
-0x4C
-// 0.469548
-0x3C
-// 0.404394
-0x34
-// 0.248171
-0x20
-// 0.039008
-0x05
-// 0.763937
-0x62
-// 0.496994
+// 0.500968
 0x40
-// 0.964809
-0x7B
-// 0.126668
-0x10
-// 0.328926
-0x2A
-// 0.274303
-0x23
-// 0.708450
-0x5B
-// 0.460126
-0x3B
-// 0.364484
-0x2F
-// 0.707633
-0x5B
-// 0.948517
-0x79
-// 0.514019
-0x42
-// 0.101433
-0x0D
-// 0.971785
-0x7C
-// 0.041218
-0x05
-// 0.970202
-0x7C
-// 0.137811
-0x12
-// 0.653814
-0x54
-// 0.634408
-0x51
-// 0.635064
-0x51
-// 0.217709
-0x1C
-// 0.309742
-0x28
-// 0.378571
-0x30
-// 0.980248
-0x7D
-// 0.819155
-0x69
-// 0.712649
-0x5B
-// 0.331675
-0x2A
-// 0.488784
-0x3F
-// 0.126670
-0x10
-// 0.187287
-0x18
-// 0.958358
-0x7B
-// 0.701330
-0x5A
-// 0.994753
-0x7F
-// 0.611093
-0x4E
-// 0.131297
-0x11
-// 0.732784
-0x5E
-// 0.511658
+// 0.506207
 0x41
-// 0.310061
-0x28
-// 0.820000
-0x69
-// 0.493150
-0x3F
-// 0.473498
-0x3D
-// 0.164626
-0x15
-// 0.164194
-0x15
-// 0.770922
-0x63
-// 0.183890
-0x18
-// 0.210706
-0x1B
-// 0.706973
-0x5A
-// 0.755982
-0x61
-// 0.766450
-0x62
-// 0.051903
-0x07
-// 0.604214
-0x4D
-// 0.147565
-0x13
-// 0.819342
-0x69
-// 0.035799
-0x05
-// 0.070757
-0x09
-// 0.692521
-0x59
-// 0.821179
-0x69
-// 0.669606
-0x56
-// 0.905185
-0x74
-// 0.601727
-0x4D
-// 0.313387
-0x28
-// 0.810837
-0x68
-// 0.529720
-0x44
-// 0.436287
-0x38
-// 0.593336
-0x4C
-// 0.864106
-0x6F
-// 0.779255
-0x64
-// 0.112078
-0x0E
-// 0.190585
-0x18
-// 0.769410
-0x62
-// 0.335442
-0x2B
-// 0.463786
-0x3B
-// 0.937023
-0x78
-// 0.027384
-0x04
-// 0.032313
-0x04
-// 0.668192
-0x56
-// 0.589001
-0x4B
-// 0.078089
-0x0A
-// 0.085746
-0x0B
-// 0.498882
-0x40
-// 0.456033
-0x3A
-// 0.737705
-0x5E
-// 0.463232
-0x3B
-// 0.894536
-0x73
-// 0.174357
-0x16
-// 0.905967
-0x74
-// 0.573419
-0x49
-// 0.848698
-0x6D
-// 0.659455
-0x54
-// 0.099005
-0x0D
-// 0.931548
-0x77
-// 0.651282
-0x53
-// 0.083401
-0x0B
-// 0.674452
-0x56
-// 0.897314
-0x73
-// 0.186839
-0x18
-// 0.930641
-0x77
-// 0.407207
-0x34
-// 0.481987
-0x3E
-// 0.596825
-0x4C
-// 0.608179
-0x4E
-// 0.879241
-0x71
-// 0.789183
-0x65
-// 0.178856
-0x17
-// 0.845083
-0x6C
-// 0.557538
-0x47
-// 0.177218
-0x17
-// 0.291060
-0x25
-// 0.921219
-0x76
-// 0.982905
-0x7E
-// 0.705997
-0x5A
-// 0.683280
-0x57
-// 0.135006
+// 0.523404
+0x43
+// 0.284019
+0x24
+// 0.345894
+0x2C
+// 0.226135
+0x1D
+// 0.133541
 0x11
-// 0.773225
-0x63
-// 0.981177
-0x7E
-// 0.855113
+// 0.382769
+0x31
+// 0.408752
+0x34
+// 0.157062
+0x14
+// 0.217180
+0x1C
+// 0.476817
+0x3D
+// 0.211244
+0x1B
+// 0.381758
+0x31
+// 0.451141
+0x3A
+// 0.208644
+0x1B
+// 0.594838
+0x4C
+// 0.393380
+0x32
+// 0.068864
+0x09
+// 0.234867
+0x1E
+// 0.380181
+0x31
+// 0.971641
+0x7C
+// 0.254321
+0x21
+// 0.329406
+0x2A
+// 0.584228
+0x4B
+// 0.891768
+0x72
+// 0.639745
+0x52
+// 0.674681
+0x56
+// 0.097242
+0x0C
+// 0.786967
+0x65
+// 0.178202
+0x17
+// 0.627605
+0x50
+// 0.142632
+0x12
+// 0.974853
+0x7D
+// 0.326506
+0x2A
+// 0.002317
+0x00
+// 0.618229
+0x4F
+// 0.608150
+0x4E
+// 0.288862
+0x25
+// 0.505923
+0x41
+// 0.315579
+0x28
+// 0.683672
+0x58
+// 0.584594
+0x4B
+// 0.855191
 0x6D
-// 0.123843
+// 0.325796
+0x2A
+// 0.405995
+0x34
+// 0.503245
+0x40
+// 0.903596
+0x74
+// 0.352676
+0x2D
+// 0.241311
+0x1F
+// 0.125698
 0x10
+// 0.930951
+0x77
+// 0.102932
+0x0D
+// 0.419274
+0x36
+// 0.208833
+0x1B
+// 0.486260
+0x3E
+// 0.396494
+0x33
+// 0.087167
+0x0B
+// 0.709592
+0x5B
+// 0.962132
+0x7B
+// 0.913174
+0x75
+// 0.557443
+0x47
+// 0.145512
+0x13
+// 0.035116
+0x04
+// 0.888805
+0x72
+// 0.239020
+0x1F
+// 0.726691
+0x5D
+// 0.864539
+0x6F
+// 0.143218
+0x12
+// 0.907504
+0x74
+// 0.670077
+0x56
+// 0.162471
+0x15
+// 0.097374
+0x0C
+// 0.573777
+0x49
+// 0.963715
+0x7B
+// 0.361492
+0x2E
+// 0.640549
+0x52
+// 0.091447
+0x0C
+// 0.223977
+0x1D
+// 0.500107
+0x40
+// 0.707069
+0x5B
+// 0.534330
+0x44
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ7/Samples1_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ7/Samples1_f32.txt
old mode 100644
new mode 100755
index 06c2fe3..8d107f2
--- a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ7/Samples1_f32.txt
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ7/Samples1_f32.txt
@@ -1,514 +1,514 @@
 W
 256
-// 0.341434
-0x3eaed064
-// 0.625706
-0x3f202e3d
-// 0.367693
-0x3ebc424e
-// 0.840190
-0x3f5716aa
-// 0.353336
-0x3eb4e870
-// 0.374623
-0x3ebfce88
-// 0.689465
-0x3f3080cd
-// 0.365593
-0x3ebb2eff
-// 0.937962
-0x3f701e4c
-// 0.317542
-0x3ea294e3
-// 0.556230
-0x3f0e650f
-// 0.257369
-0x3e83c5d2
-// 0.100619
-0x3dce1120
-// 0.607059
-0x3f1b683e
-// 0.242816
-0x3e78a4c8
-// 0.536536
-0x3f095a73
-// 0.174139
-0x3e325192
-// 0.457675
-0x3eea545c
-// 0.128673
-0x3e03c2f9
-// 0.213695
-0x3e5ad2c5
-// 0.118922
-0x3df38d30
-// 0.811033
-0x3f4f9fe4
-// 0.236002
-0x3e71aaa2
-// 0.161531
-0x3e25684d
-// 0.017582
-0x3c900890
-// 0.639957
-0x3f23d43b
-// 0.121038
-0x3df7e2dc
-// 0.325535
-0x3ea6ac84
-// 0.178542
-0x3e36d3af
-// 0.074606
-0x3d98cae3
-// 0.654698
-0x3f279a4b
-// 0.849161
-0x3f596296
-// 0.949852
-0x3f73297f
-// 0.132888
-0x3e0813b4
-// 0.640812
-0x3f240c43
-// 0.139409
-0x3e0ec11c
-// 0.379631
-0x3ec25ef4
-// 0.583928
-0x3f157c4b
-// 0.457137
-0x3eea0dea
-// 0.389952
-0x3ec7a7cb
-// 0.400562
-0x3ecd166a
-// 0.934797
-0x3f6f4edb
-// 0.405032
-0x3ecf6065
-// 0.735545
-0x3f3c4caf
-// 0.667204
-0x3f2acddb
-// 0.045283
-0x3d397a36
-// 0.733515
-0x3f3bc7a3
-// 0.415208
-0x3ed4961e
-// 0.483800
-0x3ef7b492
-// 0.432415
-0x3edd657a
-// 0.103197
-0x3dd358dc
-// 0.642838
-0x3f249104
-// 0.073383
-0x3d9649eb
-// 0.033096
-0x3d078fb1
-// 0.894193
-0x3f64e9d8
-// 0.934805
-0x3f6f4f61
-// 0.117007
-0x3defa143
-// 0.745683
-0x3f3ee51c
-// 0.769223
-0x3f44ebd2
-// 0.661710
-0x3f2965d4
-// 0.468670
-0x3eeff575
-// 0.970189
-0x3f785e4e
-// 0.540589
-0x3f0a6410
-// 0.936936
-0x3f6fdb03
-// 0.095866
-0x3dc4557a
-// 0.255943
-0x3e830ae6
-// 0.292675
-0x3e95d98f
-// 0.028668
-0x3cead9c1
-// 0.730100
-0x3f3ae7d2
-// 0.870014
-0x3f5eb941
-// 0.439508
-0x3ee10721
-// 0.439086
-0x3ee0cfd4
-// 0.907084
-0x3f6836a2
-// 0.246381
-0x3e7c4b41
-// 0.505914
-0x3f01838e
-// 0.173586
-0x3e31c0a6
-// 0.285085
-0x3e91f6b6
-// 0.783357
-0x3f488a0e
-// 0.143989
-0x3e1371bf
-// 0.995191
-0x3f7ec4df
-// 0.450870
-0x3ee6d862
-// 0.976845
-0x3f7a1287
-// 0.220387
-0x3e61ad0c
-// 0.441769
-0x3ee22f96
-// 0.124620
-0x3dff38b7
-// 0.108551
-0x3dde4fd0
-// 0.410144
-0x3ed1fe61
-// 0.599344
-0x3f196e96
-// 0.391830
-0x3ec89de5
-// 0.944308
-0x3f71be28
-// 0.168011
-0x3e2c0af5
-// 0.752546
-0x3f40a6de
-// 0.202564
-0x3e4f6cdf
-// 0.857716
-0x3f5b9341
-// 0.542999
-0x3f0b0200
-// 0.776854
-0x3f46dfe1
-// 0.065549
-0x3d863ec0
-// 0.673693
-0x3f2c7725
-// 0.221176
-0x3e627c0b
-// 0.502694
-0x3f00b08c
-// 0.176221
-0x3e347368
-// 0.510459
-0x3f02ad76
-// 0.566704
-0x3f11137e
-// 0.935178
-0x3f6f67d1
-// 0.544133
-0x3f0b4c49
-// 0.449166
-0x3ee5f909
-// 0.638736
-0x3f238437
-// 0.110871
-0x3de3102b
-// 0.533860
-0x3f08ab0e
-// 0.348646
-0x3eb281c4
-// 0.570144
-0x3f11f4fb
-// 0.212931
-0x3e5a0a96
-// 0.476051
-0x3ef3bcef
-// 0.204053
-0x3e50f340
-// 0.918915
-0x3f6b3dff
-// 0.338948
-0x3ead8aa3
-// 0.347816
-0x3eb214e9
-// 0.111496
-0x3de45838
-// 0.989986
-0x3f7d6fba
-// 0.624135
-0x3f1fc752
-// 0.802075
-0x3f4d54c5
-// 0.120256
-0x3df648cf
-// 0.807395
-0x3f4eb176
-// 0.010449
-0x3c2b30e8
-// 0.672358
-0x3f2c1fa1
-// 0.138225
-0x3e0d8ad7
-// 0.581201
-0x3f14c998
-// 0.024142
-0x3cc5c4d1
-// 0.503112
-0x3f00cbf1
-// 0.248574
-0x3e7e8a29
-// 0.245295
-0x3e7b2e8d
-// 0.819581
-0x3f51d014
-// 0.753177
-0x3f40d031
-// 0.420321
-0x3ed73442
-// 0.827901
-0x3f53f14f
-// 0.611148
-0x3f1c7439
-// 0.450767
-0x3ee6caf7
-// 0.509755
-0x3f027f48
-// 0.443579
-0x3ee31cd3
-// 0.350954
-0x3eb3b04c
-// 0.682486
-0x3f2eb769
-// 0.693444
-0x3f31858b
-// 0.867376
-0x3f5e0c54
-// 0.806139
-0x3f4e5f27
-// 0.846993
-0x3f58d48b
-// 0.777025
-0x3f46eb1e
-// 0.598501
-0x3f193758
-// 0.275748
-0x3e8d2ee0
-// 0.191624
-0x3e443934
-// 0.708103
-0x3f354635
-// 0.427232
-0x3edabe1b
-// 0.679942
-0x3f2e10b4
-// 0.026511
-0x3cd92caf
-// 0.637714
-0x3f234139
-// 0.016782
-0x3c8979e6
-// 0.391127
-0x3ec841cb
-// 0.913429
-0x3f69d673
-// 0.321302
-0x3ea481bc
-// 0.719137
-0x3f381962
-// 0.767802
-0x3f448ea4
+// 0.026695
+0x3cdaae8c
+// 0.778538
+0x3f474e41
+// 0.069889
+0x3d8f21ec
+// 0.645287
+0x3f25318a
+// 0.384884
+0x3ec50f7e
+// 0.738481
+0x3f3d0d19
+// 0.245743
+0x3e7ba409
+// 0.873584
+0x3f5fa32d
+// 0.160067
+0x3e23e890
+// 0.504569
+0x3f012b75
+// 0.512346
+0x3f032914
+// 0.978994
+0x3f7a9f5c
+// 0.490347
+0x3efb0ebc
+// 0.027475
+0x3ce11291
+// 0.448696
+0x3ee5bb7f
+// 0.373480
+0x3ebf38d3
+// 0.521155
+0x3f056a6e
+// 0.882182
+0x3f61d6ab
+// 0.247009
+0x3e7ceff0
+// 0.569573
+0x3f11cf88
+// 0.443429
+0x3ee3091e
+// 0.335110
+0x3eab939a
+// 0.338518
+0x3ead5245
+// 0.219981
+0x3e6142b9
+// 0.827766
+0x3f53e874
+// 0.024095
+0x3cc56327
+// 0.523940
+0x3f0620ee
+// 0.953230
+0x3f7406e6
+// 0.575335
+0x3f134927
+// 0.795386
+0x3f4b9e6a
+// 0.953251
+0x3f740848
+// 0.074715
+0x3d990424
+// 0.913491
+0x3f69da88
+// 0.801566
+0x3f4d3369
+// 0.904085
+0x3f677219
+// 0.291240
+0x3e951d6c
+// 0.369036
+0x3ebcf24b
+// 0.729768
+0x3f3ad20d
+// 0.487047
+0x3ef95e32
+// 0.196860
+0x3e49959a
+// 0.767170
+0x3f446541
+// 0.987300
+0x3f7cbfb2
+// 0.392036
+0x3ec8b8ee
+// 0.734384
+0x3f3c009a
+// 0.989110
+0x3f7d3653
+// 0.471644
+0x3ef17b53
+// 0.528268
+0x3f073c8d
+// 0.558753
+0x3f0f0a6f
+// 0.639758
+0x3f23c72d
+// 0.715957
+0x3f3748f7
+// 0.355820
+0x3eb62e0c
+// 0.993838
+0x3f7e6c27
+// 0.874203
+0x3f5fcbc6
+// 0.673433
+0x3f2c6615
+// 0.536575
+0x3f095cf9
+// 0.781101
+0x3f47f639
+// 0.658234
+0x3f288205
+// 0.600048
+0x3f199cc0
+// 0.143036
+0x3e127817
+// 0.351440
+0x3eb3eff8
+// 0.835343
+0x3f55d902
+// 0.657780
+0x3f286448
+// 0.202655
+0x3e4f84cf
+// 0.847247
+0x3f58e534
+// 0.311972
+0x3e9fbad8
+// 0.051149
+0x3d5181b6
+// 0.104352
+0x3dd5b675
+// 0.455041
+0x3ee8fb1f
+// 0.870840
+0x3f5eef65
+// 0.872796
+0x3f5f6f8d
+// 0.025107
+0x3ccdacdf
+// 0.442646
+0x3ee2a28e
+// 0.662511
+0x3f299a57
+// 0.276778
+0x3e8db5d8
+// 0.654128
+0x3f2774ea
+// 0.270441
+0x3e8a774b
+// 0.293766
+0x3e96688a
+// 0.025122
+0x3ccdcc40
+// 0.560890
+0x3f0f9678
+// 0.610751
+0x3f1c5a25
+// 0.228088
+0x3e698fc9
+// 0.966808
+0x3f7780b4
+// 0.970834
+0x3f78888d
+// 0.787894
+0x3f49b36f
+// 0.820639
+0x3f521562
+// 0.980661
+0x3f7b0c9e
+// 0.520135
+0x3f052794
+// 0.460491
+0x3eebc571
+// 0.610384
+0x3f1c421b
+// 0.320473
+0x3ea414fb
+// 0.510613
+0x3f02b782
+// 0.712514
+0x3f36674e
+// 0.405694
+0x3ecfb71a
+// 0.539556
+0x3f0a2058
+// 0.138168
+0x3e0d7c0b
+// 0.298291
+0x3e98b990
+// 0.445734
+0x3ee4372f
+// 0.908171
+0x3f687ded
+// 0.861903
+0x3f5ca5a6
+// 0.174280
+0x3e327686
+// 0.446270
+0x3ee47d8e
+// 0.065286
+0x3d85b4af
+// 0.520163
+0x3f052964
+// 0.313890
+0x3ea0b631
+// 0.175290
+0x3e337f1b
+// 0.162520
+0x3e266bc5
+// 0.831606
+0x3f54e428
+// 0.497382
+0x3efea8e6
+// 0.391594
+0x3ec87ef5
+// 0.237378
+0x3e73134e
+// 0.503784
+0x3f00f7fe
+// 0.786093
+0x3f493d5f
+// 0.652255
+0x3f26fa35
+// 0.314646
+0x3ea11938
+// 0.475890
+0x3ef3a7e0
+// 0.745297
+0x3f3ecbc5
+// 0.208157
+0x3e552735
+// 0.040289
+0x3d2505d9
+// 0.645444
+0x3f253bd5
+// 0.968871
+0x3f7807f1
+// 0.806593
+0x3f4e7ce6
+// 0.974799
+0x3f798c6f
+// 0.209073
+0x3e56174e
+// 0.434090
+0x3ede4108
+// 0.361435
+0x3eb90dfc
+// 0.001950
+0x3affa413
+// 0.982812
+0x3f7b998d
+// 0.238943
+0x3e74ad6c
+// 0.490565
+0x3efb2b5b
+// 0.457949
+0x3eea783c
+// 0.452314
+0x3ee795b1
+// 0.125164
+0x3e002afa
+// 0.624265
+0x3f1fcfd7
+// 0.628562
+0x3f20e973
+// 0.418482
+0x3ed6434f
+// 0.970227
+0x3f7860d0
+// 0.760829
+0x3f42c5ab
+// 0.993005
+0x3f7e3599
+// 0.381342
+0x3ec33f48
+// 0.808672
+0x3f4f051e
+// 0.962103
+0x3f764c5f
+// 0.357582
+0x3eb714ed
+// 0.313763
+0x3ea0a588
+// 0.612882
+0x3f1ce5dd
+// 0.759483
+0x3f426d77
+// 0.720741
+0x3f38827a
+// 0.262655
+0x3e867abc
+// 0.001494
+0x3ac3ca12
+// 0.905236
+0x3f67bd88
+// 0.475971
+0x3ef3b27e
+// 0.089246
+0x3db6c68d
+// 0.708706
+0x3f356dbe
+// 0.461310
+0x3eec30df
+// 0.771791
+0x3f45941d
+// 0.650635
+0x3f26900b
+// 0.865024
+0x3f5d723e
+// 0.177783
+0x3e360ccc
+// 0.105361
+0x3dd7c7b9
+// 0.746970
+0x3f3f3974
+// 0.547275
+0x3f0c1a39
+// 0.572427
+0x3f128a8c
+// 0.979508
+0x3f7ac105
+// 0.420236
+0x3ed72933
+// 0.129812
+0x3e04ed79
+// 0.404496
+0x3ecf1a0e
+// 0.802437
+0x3f4d6c8a
+// 0.268112
+0x3e8945f8
+// 0.853468
+0x3f5a7cdb
+// 0.969207
+0x3f781df4
+// 0.387310
+0x3ec64d82
+// 0.287606
+0x3e934118
+// 0.651370
+0x3f26c02e
+// 0.272862
+0x3e8bb48f
+// 0.979001
+0x3f7a9fce
+// 0.617860
+0x3f1e2c17
+// 0.133522
+0x3e08b9fb
+// 0.011051
+0x3c350d33
+// 0.106561
+0x3dda3cbf
+// 0.662463
+0x3f299733
+// 0.314405
+0x3ea0f9ae
+// 0.788679
+0x3f49e6e1
+// 0.124685
+0x3dff5af4
+// 0.985599
+0x3f7c502f
+// 0.959727
+0x3f75b0a5
+// 0.366079
+0x3ebb6ebd
+// 0.339452
+0x3eadcc9e
+// 0.881994
+0x3f61ca63
+// 0.890744
+0x3f6407ca
+// 0.916080
+0x3f6a8432
+// 0.724661
+0x3f39835c
+// 0.850090
+0x3f599f87
+// 0.800476
+0x3f4cec04
+// 0.560247
+0x3f0f6c5a
+// 0.304178
+0x3e9bbd45
+// 0.002195
+0x3b0fe09d
+// 0.140718
+0x3e101866
+// 0.342823
+0x3eaf8689
+// 0.376369
+0x3ec0b364
+// 0.019151
+0x3c9ce29b
+// 0.165196
+0x3e292903
+// 0.583952
+0x3f157de0
+// 0.229985
+0x3e6b8118
+// 0.252301
+0x3e812da2
+// 0.393749
+0x3ec99988
+// 0.368520
+0x3ebcae9d
+// 0.737370
+0x3f3cc440
+// 0.134943
+0x3e0a2e6e
+// 0.629192
+0x3f2112b5
+// 0.594611
+0x3f183869
+// 0.748385
+0x3f3f9623
+// 0.635702
+0x3f22bd63
+// 0.260252
+0x3e853fb0
+// 0.877189
+0x3f608f6f
+// 0.444494
+0x3ee394b2
+// 0.261411
+0x3e85d7a8
+// 0.140906
+0x3e1049a3
+// 0.894313
+0x3f64f1b8
+// 0.695394
+0x3f32055e
+// 0.880966
+0x3f6186fd
+// 0.372417
+0x3ebead61
+// 0.428420
+0x3edb59ee
+// 0.788624
+0x3f49e340
+// 0.362604
+0x3eb9a749
+// 0.157601
+0x3e21622b
+// 0.122216
+0x3dfa4c99
+// 0.288650
+0x3e93c9fa
+// 0.103290
+0x3dd389af
+// 0.883440
+0x3f622926
 // 1.000000
 0x3f800000
-// 0.573987
-0x3f12f0cd
-// 0.619844
-0x3f1eae16
-// 0.128859
-0x3e03f3b8
-// 0.344614
-0x3eb07145
-// 0.630698
-0x3f217565
-// 0.092255
-0x3dbcf025
-// 0.890112
-0x3f63de65
-// 0.600315
-0x3f19ae3d
-// 0.278682
-0x3e8eaf69
-// 0.198740
-0x3e4b829f
-// 0.553982
-0x3f0dd1bd
-// 0.627434
-0x3f209f7d
-// 0.157238
-0x3e2102e8
-// 0.097875
-0x3dc872f0
-// 0.915082
-0x3f6a42ce
-// 0.995413
-0x3f7ed361
-// 0.193739
-0x3e466396
-// 0.242796
-0x3e789f78
-// 0.780877
-0x3f47e796
-// 0.218470
-0x3e5fb6ab
-// 0.177386
-0x3e35a4c2
-// 0.119751
-0x3df54023
-// 0.495797
-0x3efdd91b
-// 0.953778
-0x3f742ac7
-// 0.520738
-0x3f054f19
-// 0.077837
-0x3d9f68dc
-// 0.438645
-0x3ee09623
-// 0.033170
-0x3d07ddbc
-// 0.604559
-0x3f1ac469
-// 0.358489
-0x3eb78be0
-// 0.937511
-0x3f7000b7
-// 0.242114
-0x3e77eca2
-// 0.254972
-0x3e828bb1
-// 0.981259
-0x3f7b33c8
-// 0.403211
-0x3ece71ba
-// 0.075431
-0x3d9a7b5d
-// 0.617362
-0x3f1e0b75
-// 0.398779
-0x3ecc2cbb
-// 0.730602
-0x3f3b08b7
-// 0.969320
-0x3f782562
-// 0.126019
-0x3e010b19
-// 0.787441
-0x3f4995b7
-// 0.701549
-0x3f3398be
-// 0.007095
-0x3be88070
-// 0.789549
-0x3f4a1fe0
-// 0.466180
-0x3eeeaf1f
-// 0.291312
-0x3e9526e6
-// 0.511352
-0x3f02e7f4
-// 0.120415
-0x3df69bec
-// 0.297764
-0x3e98748d
-// 0.289067
-0x3e940097
-// 0.999234
-0x3f7fcdca
-// 0.102883
-0x3dd2b446
-// 0.957922
-0x3f753a63
-// 0.861563
-0x3f5c8f69
-// 0.859701
-0x3f5c155b
-// 0.736768
-0x3f3c9cdb
-// 0.420754
-0x3ed76d21
-// 0.922098
-0x3f6c0e9b
-// 0.668796
-0x3f2b3634
-// 0.881307
-0x3f619d5d
-// 0.195934
-0x3e48a303
-// 0.558863
-0x3f0f11aa
-// 0.003515
-0x3b6656f4
-// 0.032567
-0x3d0564cf
-// 0.792406
-0x3f4adb25
-// 0.601457
-0x3f19f91b
-// 0.424264
-0x3ed93922
-// 0.342124
-0x3eaf2adb
-// 0.004661
-0x3b98b7b1
-// 0.661830
-0x3f296db0
-// 0.045984
-0x3d3c593d
-// 0.369319
-0x3ebd175d
-// 0.175438
-0x3e33a5e9
-// 0.764628
-0x3f43beac
-// 0.632118
-0x3f21d277
-// 0.219794
-0x3e6111b6
-// 0.951982
-0x3f73b51c
-// 0.990057
-0x3f7d745b
-// 0.318919
-0x3ea34962
-// 0.297529
-0x3e9855be
-// 0.948716
-0x3f72df0c
-// 0.455555
-0x3ee93e7d
-// 0.014161
-0x3c6802c5
-// 0.291566
-0x3e954815
-// 0.116305
-0x3dee3159
-// 0.074308
-0x3d982ecd
-// 0.972470
-0x3f78f3d1
-// 0.403592
-0x3ecea39a
-// 0.832230
-0x3f550d05
-// 0.351250
-0x3eb3d709
-// 0.392505
-0x3ec8f668
-// 0.595677
-0x3f187e4f
-// 0.735795
-0x3f3c5d17
-// 0.507004
-0x3f01cafe
+// 0.568247
+0x3f1178a2
+// 0.432154
+0x3edd4357
+// 0.922684
+0x3f6c34ff
+// 0.253662
+0x3e81dffe
+// 0.844961
+0x3f584f58
+// 0.202025
+0x3e4edfb3
+// 0.776422
+0x3f46c39b
+// 0.231072
+0x3e6c9e3b
+// 0.006216
+0x3bcbafc0
+// 0.903692
+0x3f675856
+// 0.301173
+0x3e9a3362
+// 0.520790
+0x3f055282
+// 0.833602
+0x3f5566f9
+// 0.644484
+0x3f24fceb
+// 0.646444
+0x3f257d5c
+// 0.488369
+0x3efa0b8b
+// 0.017545
+0x3c8fb9ee
+// 0.145921
+0x3e156c40
+// 0.146540
+0x3e160e9b
+// 0.945323
+0x3f7200ae
+// 0.338550
+0x3ead566d
+// 0.436116
+0x3edf4aa7
+// 0.614086
+0x3f1d34c5
+// 0.355728
+0x3eb62204
+// 0.050163
+0x3d4d7776
+// 0.607701
+0x3f1b9252
+// 0.538730
+0x3f09ea32
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ7/Samples3_q15.txt b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ7/Samples3_q15.txt
old mode 100644
new mode 100755
index d84d1c9..c082c99
--- a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ7/Samples3_q15.txt
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ7/Samples3_q15.txt
@@ -1,514 +1,514 @@
 H
 256
-// 0.341434
-0x2BB4
-// 0.625706
-0x5017
-// 0.367693
-0x2F11
-// 0.840190
-0x6B8B
-// 0.353336
-0x2D3A
-// 0.374623
-0x2FF4
-// 0.689465
-0x5840
-// 0.365593
-0x2ECC
-// 0.937962
-0x780F
-// 0.317542
-0x28A5
-// 0.556230
-0x4733
-// 0.257369
-0x20F1
-// 0.100619
-0x0CE1
-// 0.607059
-0x4DB4
-// 0.242816
-0x1F15
-// 0.536536
-0x44AD
-// 0.174139
-0x164A
-// 0.457675
-0x3A95
-// 0.128673
-0x1078
-// 0.213695
-0x1B5A
-// 0.118922
-0x0F39
-// 0.811033
-0x67D0
-// 0.236002
-0x1E35
-// 0.161531
-0x14AD
-// 0.017582
-0x0240
-// 0.639957
-0x51EA
-// 0.121038
-0x0F7E
-// 0.325535
-0x29AB
-// 0.178542
-0x16DA
-// 0.074606
-0x098D
-// 0.654698
-0x53CD
-// 0.849161
-0x6CB1
-// 0.949852
-0x7995
-// 0.132888
-0x1102
-// 0.640812
-0x5206
-// 0.139409
-0x11D8
-// 0.379631
-0x3098
-// 0.583928
-0x4ABE
-// 0.457137
-0x3A83
-// 0.389952
-0x31EA
-// 0.400562
-0x3346
-// 0.934797
-0x77A7
-// 0.405032
-0x33D8
-// 0.735545
-0x5E26
-// 0.667204
-0x5567
-// 0.045283
-0x05CC
-// 0.733515
-0x5DE4
-// 0.415208
-0x3526
-// 0.483800
-0x3DED
-// 0.432415
-0x3759
-// 0.103197
-0x0D36
-// 0.642838
-0x5249
-// 0.073383
-0x0965
-// 0.033096
-0x043C
-// 0.894193
-0x7275
-// 0.934805
-0x77A8
-// 0.117007
-0x0EFA
-// 0.745683
-0x5F73
-// 0.769223
-0x6276
-// 0.661710
-0x54B3
-// 0.468670
-0x3BFD
-// 0.970189
-0x7C2F
-// 0.540589
-0x4532
-// 0.936936
-0x77EE
-// 0.095866
-0x0C45
-// 0.255943
-0x20C3
-// 0.292675
-0x2576
-// 0.028668
-0x03AB
-// 0.730100
-0x5D74
-// 0.870014
-0x6F5D
-// 0.439508
-0x3842
-// 0.439086
-0x3834
-// 0.907084
-0x741B
-// 0.246381
-0x1F89
-// 0.505914
-0x40C2
-// 0.173586
-0x1638
-// 0.285085
-0x247E
-// 0.783357
-0x6445
-// 0.143989
-0x126E
-// 0.995191
-0x7F62
-// 0.450870
-0x39B6
-// 0.976845
-0x7D09
-// 0.220387
-0x1C36
-// 0.441769
-0x388C
-// 0.124620
-0x0FF4
-// 0.108551
-0x0DE5
-// 0.410144
-0x3480
-// 0.599344
-0x4CB7
-// 0.391830
-0x3227
-// 0.944308
-0x78DF
-// 0.168011
-0x1581
-// 0.752546
-0x6053
-// 0.202564
-0x19EE
-// 0.857716
-0x6DCA
-// 0.542999
-0x4581
-// 0.776854
-0x6370
-// 0.065549
-0x0864
-// 0.673693
-0x563C
-// 0.221176
-0x1C50
-// 0.502694
-0x4058
-// 0.176221
-0x168E
-// 0.510459
-0x4157
-// 0.566704
-0x488A
-// 0.935178
-0x77B4
-// 0.544133
-0x45A6
-// 0.449166
-0x397E
-// 0.638736
-0x51C2
-// 0.110871
-0x0E31
-// 0.533860
-0x4456
-// 0.348646
-0x2CA0
-// 0.570144
-0x48FA
-// 0.212931
-0x1B41
-// 0.476051
-0x3CEF
-// 0.204053
-0x1A1E
-// 0.918915
-0x759F
-// 0.338948
-0x2B63
-// 0.347816
-0x2C85
-// 0.111496
-0x0E46
-// 0.989986
-0x7EB8
-// 0.624135
-0x4FE4
-// 0.802075
-0x66AA
-// 0.120256
-0x0F65
-// 0.807395
-0x6759
-// 0.010449
-0x0156
-// 0.672358
-0x5610
-// 0.138225
-0x11B1
-// 0.581201
-0x4A65
-// 0.024142
-0x0317
-// 0.503112
-0x4066
-// 0.248574
-0x1FD1
-// 0.245295
-0x1F66
-// 0.819581
-0x68E8
-// 0.753177
-0x6068
-// 0.420321
-0x35CD
-// 0.827901
-0x69F9
-// 0.611148
-0x4E3A
-// 0.450767
-0x39B3
-// 0.509755
-0x4140
-// 0.443579
-0x38C7
-// 0.350954
-0x2CEC
-// 0.682486
-0x575C
-// 0.693444
-0x58C3
-// 0.867376
-0x6F06
-// 0.806139
-0x6730
-// 0.846993
-0x6C6A
-// 0.777025
-0x6376
-// 0.598501
-0x4C9C
-// 0.275748
-0x234C
-// 0.191624
-0x1887
-// 0.708103
-0x5AA3
-// 0.427232
-0x36B0
-// 0.679942
-0x5708
-// 0.026511
-0x0365
-// 0.637714
-0x51A1
-// 0.016782
-0x0226
-// 0.391127
-0x3210
-// 0.913429
-0x74EB
-// 0.321302
-0x2920
-// 0.719137
-0x5C0D
-// 0.767802
-0x6247
+// 0.026695
+0x036B
+// 0.778538
+0x63A7
+// 0.069889
+0x08F2
+// 0.645287
+0x5299
+// 0.384884
+0x3144
+// 0.738481
+0x5E87
+// 0.245743
+0x1F75
+// 0.873584
+0x6FD2
+// 0.160067
+0x147D
+// 0.504569
+0x4096
+// 0.512346
+0x4195
+// 0.978994
+0x7D50
+// 0.490347
+0x3EC4
+// 0.027475
+0x0384
+// 0.448696
+0x396F
+// 0.373480
+0x2FCE
+// 0.521155
+0x42B5
+// 0.882182
+0x70EB
+// 0.247009
+0x1F9E
+// 0.569573
+0x48E8
+// 0.443429
+0x38C2
+// 0.335110
+0x2AE5
+// 0.338518
+0x2B55
+// 0.219981
+0x1C28
+// 0.827766
+0x69F4
+// 0.024095
+0x0316
+// 0.523940
+0x4310
+// 0.953230
+0x7A03
+// 0.575335
+0x49A5
+// 0.795386
+0x65CF
+// 0.953251
+0x7A04
+// 0.074715
+0x0990
+// 0.913491
+0x74ED
+// 0.801566
+0x669A
+// 0.904085
+0x73B9
+// 0.291240
+0x2547
+// 0.369036
+0x2F3D
+// 0.729768
+0x5D69
+// 0.487047
+0x3E58
+// 0.196860
+0x1933
+// 0.767170
+0x6233
+// 0.987300
+0x7E60
+// 0.392036
+0x322E
+// 0.734384
+0x5E00
+// 0.989110
+0x7E9B
+// 0.471644
+0x3C5F
+// 0.528268
+0x439E
+// 0.558753
+0x4785
+// 0.639758
+0x51E4
+// 0.715957
+0x5BA4
+// 0.355820
+0x2D8C
+// 0.993838
+0x7F36
+// 0.874203
+0x6FE6
+// 0.673433
+0x5633
+// 0.536575
+0x44AE
+// 0.781101
+0x63FB
+// 0.658234
+0x5441
+// 0.600048
+0x4CCE
+// 0.143036
+0x124F
+// 0.351440
+0x2CFC
+// 0.835343
+0x6AED
+// 0.657780
+0x5432
+// 0.202655
+0x19F1
+// 0.847247
+0x6C73
+// 0.311972
+0x27EF
+// 0.051149
+0x068C
+// 0.104352
+0x0D5B
+// 0.455041
+0x3A3F
+// 0.870840
+0x6F78
+// 0.872796
+0x6FB8
+// 0.025107
+0x0337
+// 0.442646
+0x38A9
+// 0.662511
+0x54CD
+// 0.276778
+0x236D
+// 0.654128
+0x53BA
+// 0.270441
+0x229E
+// 0.293766
+0x259A
+// 0.025122
+0x0337
+// 0.560890
+0x47CB
+// 0.610751
+0x4E2D
+// 0.228088
+0x1D32
+// 0.966808
+0x7BC0
+// 0.970834
+0x7C44
+// 0.787894
+0x64DA
+// 0.820639
+0x690B
+// 0.980661
+0x7D86
+// 0.520135
+0x4294
+// 0.460491
+0x3AF1
+// 0.610384
+0x4E21
+// 0.320473
+0x2905
+// 0.510613
+0x415C
+// 0.712514
+0x5B34
+// 0.405694
+0x33EE
+// 0.539556
+0x4510
+// 0.138168
+0x11B0
+// 0.298291
+0x262E
+// 0.445734
+0x390E
+// 0.908171
+0x743F
+// 0.861903
+0x6E53
+// 0.174280
+0x164F
+// 0.446270
+0x391F
+// 0.065286
+0x085B
+// 0.520163
+0x4295
+// 0.313890
+0x282E
+// 0.175290
+0x1670
+// 0.162520
+0x14CD
+// 0.831606
+0x6A72
+// 0.497382
+0x3FAA
+// 0.391594
+0x3220
+// 0.237378
+0x1E62
+// 0.503784
+0x407C
+// 0.786093
+0x649F
+// 0.652255
+0x537D
+// 0.314646
+0x2846
+// 0.475890
+0x3CEA
+// 0.745297
+0x5F66
+// 0.208157
+0x1AA5
+// 0.040289
+0x0528
+// 0.645444
+0x529E
+// 0.968871
+0x7C04
+// 0.806593
+0x673E
+// 0.974799
+0x7CC6
+// 0.209073
+0x1AC3
+// 0.434090
+0x3790
+// 0.361435
+0x2E43
+// 0.001950
+0x0040
+// 0.982812
+0x7DCD
+// 0.238943
+0x1E96
+// 0.490565
+0x3ECB
+// 0.457949
+0x3A9E
+// 0.452314
+0x39E5
+// 0.125164
+0x1005
+// 0.624265
+0x4FE8
+// 0.628562
+0x5075
+// 0.418482
+0x3591
+// 0.970227
+0x7C30
+// 0.760829
+0x6163
+// 0.993005
+0x7F1B
+// 0.381342
+0x30D0
+// 0.808672
+0x6783
+// 0.962103
+0x7B26
+// 0.357582
+0x2DC5
+// 0.313763
+0x2829
+// 0.612882
+0x4E73
+// 0.759483
+0x6137
+// 0.720741
+0x5C41
+// 0.262655
+0x219F
+// 0.001494
+0x0031
+// 0.905236
+0x73DF
+// 0.475971
+0x3CED
+// 0.089246
+0x0B6C
+// 0.708706
+0x5AB7
+// 0.461310
+0x3B0C
+// 0.771791
+0x62CA
+// 0.650635
+0x5348
+// 0.865024
+0x6EB9
+// 0.177783
+0x16C2
+// 0.105361
+0x0D7C
+// 0.746970
+0x5F9D
+// 0.547275
+0x460D
+// 0.572427
+0x4945
+// 0.979508
+0x7D61
+// 0.420236
+0x35CA
+// 0.129812
+0x109E
+// 0.404496
+0x33C7
+// 0.802437
+0x66B6
+// 0.268112
+0x2251
+// 0.853468
+0x6D3E
+// 0.969207
+0x7C0F
+// 0.387310
+0x3193
+// 0.287606
+0x24D0
+// 0.651370
+0x5360
+// 0.272862
+0x22ED
+// 0.979001
+0x7D50
+// 0.617860
+0x4F16
+// 0.133522
+0x1117
+// 0.011051
+0x016A
+// 0.106561
+0x0DA4
+// 0.662463
+0x54CC
+// 0.314405
+0x283E
+// 0.788679
+0x64F3
+// 0.124685
+0x0FF6
+// 0.985599
+0x7E28
+// 0.959727
+0x7AD8
+// 0.366079
+0x2EDC
+// 0.339452
+0x2B73
+// 0.881994
+0x70E5
+// 0.890744
+0x7204
+// 0.916080
+0x7542
+// 0.724661
+0x5CC2
+// 0.850090
+0x6CD0
+// 0.800476
+0x6676
+// 0.560247
+0x47B6
+// 0.304178
+0x26EF
+// 0.002195
+0x0048
+// 0.140718
+0x1203
+// 0.342823
+0x2BE2
+// 0.376369
+0x302D
+// 0.019151
+0x0274
+// 0.165196
+0x1525
+// 0.583952
+0x4ABF
+// 0.229985
+0x1D70
+// 0.252301
+0x204B
+// 0.393749
+0x3266
+// 0.368520
+0x2F2C
+// 0.737370
+0x5E62
+// 0.134943
+0x1146
+// 0.629192
+0x5089
+// 0.594611
+0x4C1C
+// 0.748385
+0x5FCB
+// 0.635702
+0x515F
+// 0.260252
+0x2150
+// 0.877189
+0x7048
+// 0.444494
+0x38E5
+// 0.261411
+0x2176
+// 0.140906
+0x1209
+// 0.894313
+0x7279
+// 0.695394
+0x5903
+// 0.880966
+0x70C3
+// 0.372417
+0x2FAB
+// 0.428420
+0x36D6
+// 0.788624
+0x64F2
+// 0.362604
+0x2E6A
+// 0.157601
+0x142C
+// 0.122216
+0x0FA5
+// 0.288650
+0x24F2
+// 0.103290
+0x0D39
+// 0.883440
+0x7115
 // 1.000000
 0x7FFF
-// 0.573987
-0x4978
-// 0.619844
-0x4F57
-// 0.128859
-0x107E
-// 0.344614
-0x2C1C
-// 0.630698
-0x50BB
-// 0.092255
-0x0BCF
-// 0.890112
-0x71EF
-// 0.600315
-0x4CD7
-// 0.278682
-0x23AC
-// 0.198740
-0x1970
-// 0.553982
-0x46E9
-// 0.627434
-0x5050
-// 0.157238
-0x1420
-// 0.097875
-0x0C87
-// 0.915082
-0x7521
-// 0.995413
-0x7F6A
-// 0.193739
-0x18CC
-// 0.242796
-0x1F14
-// 0.780877
-0x63F4
-// 0.218470
-0x1BF7
-// 0.177386
-0x16B5
-// 0.119751
-0x0F54
-// 0.495797
-0x3F76
-// 0.953778
-0x7A15
-// 0.520738
-0x42A8
-// 0.077837
-0x09F7
-// 0.438645
-0x3826
-// 0.033170
-0x043F
-// 0.604559
-0x4D62
-// 0.358489
-0x2DE3
-// 0.937511
-0x7800
-// 0.242114
-0x1EFE
-// 0.254972
-0x20A3
-// 0.981259
-0x7D9A
-// 0.403211
-0x339C
-// 0.075431
-0x09A8
-// 0.617362
-0x4F06
-// 0.398779
-0x330B
-// 0.730602
-0x5D84
-// 0.969320
-0x7C13
-// 0.126019
-0x1021
-// 0.787441
-0x64CB
-// 0.701549
-0x59CC
-// 0.007095
-0x00E9
-// 0.789549
-0x6510
-// 0.466180
-0x3BAC
-// 0.291312
-0x254A
-// 0.511352
-0x4174
-// 0.120415
-0x0F6A
-// 0.297764
-0x261D
-// 0.289067
-0x2500
-// 0.999234
-0x7FE7
-// 0.102883
-0x0D2B
-// 0.957922
-0x7A9D
-// 0.861563
-0x6E48
-// 0.859701
-0x6E0B
-// 0.736768
-0x5E4E
-// 0.420754
-0x35DB
-// 0.922098
-0x7607
-// 0.668796
-0x559B
-// 0.881307
-0x70CF
-// 0.195934
-0x1914
-// 0.558863
-0x4789
-// 0.003515
-0x0073
-// 0.032567
-0x042B
-// 0.792406
-0x656E
-// 0.601457
-0x4CFD
-// 0.424264
-0x364E
-// 0.342124
-0x2BCB
-// 0.004661
-0x0099
-// 0.661830
-0x54B7
-// 0.045984
-0x05E3
-// 0.369319
-0x2F46
-// 0.175438
-0x1675
-// 0.764628
-0x61DF
-// 0.632118
-0x50E9
-// 0.219794
-0x1C22
-// 0.951982
-0x79DB
-// 0.990057
-0x7EBA
-// 0.318919
-0x28D2
-// 0.297529
-0x2615
-// 0.948716
-0x7970
-// 0.455555
-0x3A50
-// 0.014161
-0x01D0
-// 0.291566
-0x2552
-// 0.116305
-0x0EE3
-// 0.074308
-0x0983
-// 0.972470
-0x7C7A
-// 0.403592
-0x33A9
-// 0.832230
-0x6A87
-// 0.351250
-0x2CF6
-// 0.392505
-0x323E
-// 0.595677
-0x4C3F
-// 0.735795
-0x5E2F
-// 0.507004
-0x40E5
+// 0.568247
+0x48BC
+// 0.432154
+0x3751
+// 0.922684
+0x761A
+// 0.253662
+0x2078
+// 0.844961
+0x6C28
+// 0.202025
+0x19DC
+// 0.776422
+0x6362
+// 0.231072
+0x1D94
+// 0.006216
+0x00CC
+// 0.903692
+0x73AC
+// 0.301173
+0x268D
+// 0.520790
+0x42A9
+// 0.833602
+0x6AB3
+// 0.644484
+0x527E
+// 0.646444
+0x52BF
+// 0.488369
+0x3E83
+// 0.017545
+0x023F
+// 0.145921
+0x12AE
+// 0.146540
+0x12C2
+// 0.945323
+0x7900
+// 0.338550
+0x2B56
+// 0.436116
+0x37D3
+// 0.614086
+0x4E9A
+// 0.355728
+0x2D89
+// 0.050163
+0x066C
+// 0.607701
+0x4DC9
+// 0.538730
+0x44F5
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ7/Samples4_q31.txt b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ7/Samples4_q31.txt
old mode 100644
new mode 100755
index 170be21..36a6667
--- a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ7/Samples4_q31.txt
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ7/Samples4_q31.txt
@@ -1,514 +1,514 @@
 W
 256
-// 0.341434
-0x2BB418F9
-// 0.625706
-0x50171E56
-// 0.367693
-0x2F109370
-// 0.840190
-0x6B8B54E3
-// 0.353336
-0x2D3A1C00
-// 0.374623
-0x2FF3A217
-// 0.689465
-0x58406676
-// 0.365593
-0x2ECBBFAC
-// 0.937962
-0x780F2630
-// 0.317542
-0x28A538AA
-// 0.556230
-0x4732876A
-// 0.257369
-0x20F17476
-// 0.100619
-0x0CE11200
-// 0.607059
-0x4DB41ED6
-// 0.242816
-0x1F14990A
-// 0.536536
-0x44AD39AC
-// 0.174139
-0x164A3248
-// 0.457675
-0x3A9516FF
-// 0.128673
-0x10785F1B
-// 0.213695
-0x1B5A5897
-// 0.118922
-0x0F38D304
-// 0.811033
-0x67CFF1D7
-// 0.236002
-0x1E355444
-// 0.161531
-0x14AD0991
-// 0.017582
-0x02402241
-// 0.639957
-0x51EA1D74
-// 0.121038
-0x0F7E2DC4
-// 0.325535
-0x29AB2109
-// 0.178542
-0x16DA75D0
-// 0.074606
-0x098CAE30
-// 0.654698
-0x53CD2598
-// 0.849161
-0x6CB14B31
-// 0.949852
-0x7994BF5B
-// 0.132888
-0x11027679
-// 0.640812
-0x5206215E
-// 0.139409
-0x11D8237B
-// 0.379631
-0x3097BCE2
-// 0.583928
-0x4ABE25A4
-// 0.457137
-0x3A837A76
-// 0.389952
-0x31E9F2D5
-// 0.400562
-0x33459A9C
-// 0.934797
-0x77A76D66
-// 0.405032
-0x33D81955
-// 0.735545
-0x5E265758
-// 0.667204
-0x5566ED6B
-// 0.045283
-0x05CBD1B0
-// 0.733515
-0x5DE3D14D
-// 0.415208
-0x3525878A
-// 0.483800
-0x3DED2489
-// 0.432415
-0x37595E73
-// 0.103197
-0x0D358DBC
-// 0.642838
-0x524881F4
-// 0.073383
-0x09649EB4
-// 0.033096
-0x043C7D88
-// 0.894193
-0x7274EBE7
-// 0.934805
-0x77A7B0BC
-// 0.117007
-0x0EFA1432
-// 0.745683
-0x5F728E32
-// 0.769223
-0x6275E937
-// 0.661710
-0x54B2EA1C
-// 0.468670
-0x3BFD5D2E
-// 0.970189
-0x7C2F26C5
-// 0.540589
-0x453207FC
-// 0.936936
-0x77ED817F
-// 0.095866
-0x0C4557A1
-// 0.255943
-0x20C2B987
-// 0.292675
-0x257663DB
-// 0.028668
-0x03AB6705
-// 0.730100
-0x5D73E8CD
-// 0.870014
-0x6F5CA053
-// 0.439508
-0x3841C83F
-// 0.439086
-0x3833F4E6
-// 0.907084
-0x741B50C1
-// 0.246381
-0x1F89681E
-// 0.505914
-0x40C1C6D8
-// 0.173586
-0x163814BF
-// 0.285085
-0x247DAD7E
-// 0.783357
-0x64450701
-// 0.143989
-0x126E37DE
-// 0.995191
-0x7F626F5B
-// 0.450870
-0x39B61895
-// 0.976845
-0x7D0943BB
-// 0.220387
-0x1C35A187
-// 0.441769
-0x388BE57B
-// 0.124620
-0x0FF38B77
-// 0.108551
-0x0DE4FD00
-// 0.410144
-0x347F9831
-// 0.599344
-0x4CB74AEE
-// 0.391830
-0x32277925
-// 0.944308
-0x78DF141B
-// 0.168011
-0x15815E92
-// 0.752546
-0x60536EFF
-// 0.202564
-0x19ED9BEF
-// 0.857716
-0x6DC9A054
-// 0.542999
-0x4581001A
-// 0.776854
-0x636FF0BA
-// 0.065549
-0x0863EC04
-// 0.673693
-0x563B92BA
-// 0.221176
-0x1C4F8153
-// 0.502694
-0x40584638
-// 0.176221
-0x168E6CF1
-// 0.510459
-0x4156BACE
-// 0.566704
-0x4889BECD
-// 0.935178
-0x77B3E844
-// 0.544133
-0x45A624AB
-// 0.449166
-0x397E4256
-// 0.638736
-0x51C21B75
-// 0.110871
-0x0E3102B3
-// 0.533860
-0x44558740
-// 0.348646
-0x2CA07108
-// 0.570144
-0x48FA7D91
-// 0.212931
-0x1B4152BB
-// 0.476051
-0x3CEF3BD8
-// 0.204053
-0x1A1E67FB
-// 0.918915
-0x759EFFB7
-// 0.338948
-0x2B62A8CF
-// 0.347816
-0x2C853A33
-// 0.111496
-0x0E45837A
-// 0.989986
-0x7EB7DD13
-// 0.624135
-0x4FE3A919
-// 0.802075
-0x66AA624A
-// 0.120256
-0x0F648CEB
-// 0.807395
-0x6758BAE3
-// 0.010449
-0x015661D0
-// 0.672358
-0x560FD069
-// 0.138225
-0x11B15AD7
-// 0.581201
-0x4A64CBDB
-// 0.024142
-0x03171344
-// 0.503112
-0x4065F8A9
-// 0.248574
-0x1FD1451B
-// 0.245295
-0x1F65D197
-// 0.819581
-0x68E809DA
-// 0.753177
-0x606818B7
-// 0.420321
-0x35CD109D
-// 0.827901
-0x69F8A799
-// 0.611148
-0x4E3A1CAF
-// 0.450767
-0x39B2BDDE
-// 0.509755
-0x413FA3FC
-// 0.443579
-0x38C734A9
-// 0.350954
-0x2CEC131C
-// 0.682486
-0x575BB469
-// 0.693444
-0x58C2C550
-// 0.867376
-0x6F0629C1
-// 0.806139
-0x672F938F
-// 0.846993
-0x6C6A4562
-// 0.777025
-0x63758EF1
-// 0.598501
-0x4C9BABD1
-// 0.275748
-0x234BB81A
-// 0.191624
-0x18872681
-// 0.708103
-0x5AA31A59
-// 0.427232
-0x36AF86B1
-// 0.679942
-0x570859FD
-// 0.026511
-0x0364B2BC
-// 0.637714
-0x51A09CBD
-// 0.016782
-0x0225E796
-// 0.391127
-0x321072B0
-// 0.913429
-0x74EB39AD
-// 0.321302
-0x29206F02
-// 0.719137
-0x5C0CB0DB
-// 0.767802
-0x624751F2
+// 0.026695
+0x036ABA30
+// 0.778538
+0x63A72056
+// 0.069889
+0x08F21EC3
+// 0.645287
+0x5298C4D1
+// 0.384884
+0x3143DF8E
+// 0.738481
+0x5E868C6A
+// 0.245743
+0x1F74812D
+// 0.873584
+0x6FD19645
+// 0.160067
+0x147D11F8
+// 0.504569
+0x4095BA41
+// 0.512346
+0x41948A36
+// 0.978994
+0x7D4FAE07
+// 0.490347
+0x3EC3AF17
+// 0.027475
+0x03844A44
+// 0.448696
+0x396EDFCE
+// 0.373480
+0x2FCE34A8
+// 0.521155
+0x42B53700
+// 0.882182
+0x70EB556F
+// 0.247009
+0x1F9DFDF4
+// 0.569573
+0x48E7C43E
+// 0.443429
+0x38C2479A
+// 0.335110
+0x2AE4E692
+// 0.338518
+0x2B549121
+// 0.219981
+0x1C28572F
+// 0.827766
+0x69F43A1F
+// 0.024095
+0x03158C9D
+// 0.523940
+0x4310771A
+// 0.953230
+0x7A0372E7
+// 0.575335
+0x49A49346
+// 0.795386
+0x65CF3502
+// 0.953251
+0x7A04242D
+// 0.074715
+0x0990423C
+// 0.913491
+0x74ED43EE
+// 0.801566
+0x6699B4BF
+// 0.904085
+0x73B90C71
+// 0.291240
+0x25475B1F
+// 0.369036
+0x2F3C92CA
+// 0.729768
+0x5D690649
+// 0.487047
+0x3E578C97
+// 0.196860
+0x1932B34C
+// 0.767170
+0x6232A0BA
+// 0.987300
+0x7E5FD8F7
+// 0.392036
+0x322E3B8B
+// 0.734384
+0x5E004D1E
+// 0.989110
+0x7E9B295C
+// 0.471644
+0x3C5ED4C8
+// 0.528268
+0x439E465C
+// 0.558753
+0x4785375B
+// 0.639758
+0x51E39649
+// 0.715957
+0x5BA47B41
+// 0.355820
+0x2D8B82EF
+// 0.993838
+0x7F361349
+// 0.874203
+0x6FE5E2E4
+// 0.673433
+0x56330A93
+// 0.536575
+0x44AE7C82
+// 0.781101
+0x63FB1C85
+// 0.658234
+0x54410273
+// 0.600048
+0x4CCE5FDD
+// 0.143036
+0x124F02E6
+// 0.351440
+0x2CFBFDEA
+// 0.835343
+0x6AEC813F
+// 0.657780
+0x5432242C
+// 0.202655
+0x19F099EE
+// 0.847247
+0x6C729A2C
+// 0.311972
+0x27EEB60E
+// 0.051149
+0x068C0DB3
+// 0.104352
+0x0D5B674A
+// 0.455041
+0x3A3EC7D0
+// 0.870840
+0x6F77B25A
+// 0.872796
+0x6FB7C67C
+// 0.025107
+0x0336B37D
+// 0.442646
+0x38A8A37A
+// 0.662511
+0x54CD2B8E
+// 0.276778
+0x236D761F
+// 0.654128
+0x53BA74DC
+// 0.270441
+0x229DD2A4
+// 0.293766
+0x259A2289
+// 0.025122
+0x033730FE
+// 0.560890
+0x47CB3BE6
+// 0.610751
+0x4E2D12AA
+// 0.228088
+0x1D31F92C
+// 0.966808
+0x7BC05A24
+// 0.970834
+0x7C4446B7
+// 0.787894
+0x64D9B797
+// 0.820639
+0x690AB101
+// 0.980661
+0x7D864F39
+// 0.520135
+0x4293CA05
+// 0.460491
+0x3AF15C29
+// 0.610384
+0x4E210D4E
+// 0.320473
+0x29053EBF
+// 0.510613
+0x415BC0CA
+// 0.712514
+0x5B33A6D6
+// 0.405694
+0x33EDC696
+// 0.539556
+0x45102BC6
+// 0.138168
+0x11AF8152
+// 0.298291
+0x262E63F9
+// 0.445734
+0x390DCBD2
+// 0.908171
+0x743EF644
+// 0.861903
+0x6E52D30F
+// 0.174280
+0x164ED0CA
+// 0.446270
+0x391F6377
+// 0.065286
+0x085B4AF1
+// 0.520163
+0x4294B218
+// 0.313890
+0x282D8C32
+// 0.175290
+0x166FE35E
+// 0.162520
+0x14CD789E
+// 0.831606
+0x6A7213CC
+// 0.497382
+0x3FAA397F
+// 0.391594
+0x321FBD36
+// 0.237378
+0x1E6269B8
+// 0.503784
+0x407BFEF9
+// 0.786093
+0x649EAF83
+// 0.652255
+0x537D1A68
+// 0.314646
+0x28464E0B
+// 0.475890
+0x3CE9F801
+// 0.745297
+0x5F65E2A1
+// 0.208157
+0x1AA4E691
+// 0.040289
+0x05282EC7
+// 0.645444
+0x529DEA90
+// 0.968871
+0x7C03F8BC
+// 0.806593
+0x673E72DD
+// 0.974799
+0x7CC6375F
+// 0.209073
+0x1AC2E9C0
+// 0.434090
+0x3790420B
+// 0.361435
+0x2E437F1A
+// 0.001950
+0x003FE905
+// 0.982812
+0x7DCCC64D
+// 0.238943
+0x1E95AD8D
+// 0.490565
+0x3ECAD6D1
+// 0.457949
+0x3A9E0EE3
+// 0.452314
+0x39E56C2D
+// 0.125164
+0x10055F45
+// 0.624265
+0x4FE7EBAA
+// 0.628562
+0x5074B948
+// 0.418482
+0x3590D3CF
+// 0.970227
+0x7C3067F4
+// 0.760829
+0x6162D570
+// 0.993005
+0x7F1ACC71
+// 0.381342
+0x30CFD1E1
+// 0.808672
+0x67828EEF
+// 0.962103
+0x7B262FA6
+// 0.357582
+0x2DC53B2D
+// 0.313763
+0x28296209
+// 0.612882
+0x4E72EE76
+// 0.759483
+0x6136BB67
+// 0.720741
+0x5C413D07
+// 0.262655
+0x219EAF09
+// 0.001494
+0x0030F284
+// 0.905236
+0x73DEC3E5
+// 0.475971
+0x3CEC9F99
+// 0.089246
+0x0B6C68CF
+// 0.708706
+0x5AB6DEFD
+// 0.461310
+0x3B0C37DA
+// 0.771791
+0x62CA0E41
+// 0.650635
+0x53480582
+// 0.865024
+0x6EB91EE4
+// 0.177783
+0x16C19988
+// 0.105361
+0x0D7C7B96
+// 0.746970
+0x5F9CBA3C
+// 0.547275
+0x460D1C43
+// 0.572427
+0x4945461F
+// 0.979508
+0x7D6082B5
+// 0.420236
+0x35CA4CBC
+// 0.129812
+0x109DAF2C
+// 0.404496
+0x33C6839A
+// 0.802437
+0x66B644CA
+// 0.268112
+0x22517DE8
+// 0.853468
+0x6D3E6D50
+// 0.969207
+0x7C0EFA03
+// 0.387310
+0x31936074
+// 0.287606
+0x24D045FD
+// 0.651370
+0x536016E6
+// 0.272862
+0x22ED23C0
+// 0.979001
+0x7D4FE73B
+// 0.617860
+0x4F160BB7
+// 0.133522
+0x11173F5B
+// 0.011051
+0x016A1A65
+// 0.106561
+0x0DA3CBF1
+// 0.662463
+0x54CB9950
+// 0.314405
+0x283E6B96
+// 0.788679
+0x64F37085
+// 0.124685
+0x0FF5AF3A
+// 0.985599
+0x7E2817AA
+// 0.959727
+0x7AD8526A
+// 0.366079
+0x2EDBAF50
+// 0.339452
+0x2B732762
+// 0.881994
+0x70E53141
+// 0.890744
+0x7203E4F2
+// 0.916080
+0x754218EC
+// 0.724661
+0x5CC1ADE0
+// 0.850090
+0x6CCFC351
+// 0.800476
+0x66760217
+// 0.560247
+0x47B62CC2
+// 0.304178
+0x26EF515A
+// 0.002195
+0x0047F04F
+// 0.140718
+0x12030CCF
+// 0.342823
+0x2BE1A243
+// 0.376369
+0x302CD907
+// 0.019151
+0x02738A6D
+// 0.165196
+0x15252058
+// 0.583952
+0x4ABEEFC8
+// 0.229985
+0x1D70230E
+// 0.252301
+0x204B6878
+// 0.393749
+0x32666212
+// 0.368520
+0x2F2BA744
+// 0.737370
+0x5E622004
+// 0.134943
+0x1145CDC2
+// 0.629192
+0x50895AAC
+// 0.594611
+0x4C1C3451
+// 0.748385
+0x5FCB1169
+// 0.635702
+0x515EB15F
+// 0.260252
+0x214FEC0E
+// 0.877189
+0x7047B7A9
+// 0.444494
+0x38E52C85
+// 0.261411
+0x2175EA15
+// 0.140906
+0x12093460
+// 0.894313
+0x7278DC3A
+// 0.695394
+0x5902AF19
+// 0.880966
+0x70C37E74
+// 0.372417
+0x2FAB583A
+// 0.428420
+0x36D67B9E
+// 0.788624
+0x64F19FE6
+// 0.362604
+0x2E69D223
+// 0.157601
+0x142C4560
+// 0.122216
+0x0FA4C98C
+// 0.288650
+0x24F27E8F
+// 0.103290
+0x0D389AF6
+// 0.883440
+0x711492D0
 // 1.000000
 0x7FFFFFFF
-// 0.573987
-0x49786658
-// 0.619844
-0x4F570B15
-// 0.128859
-0x107E770C
-// 0.344614
-0x2C1C5146
-// 0.630698
-0x50BAB290
-// 0.092255
-0x0BCF024C
-// 0.890112
-0x71EF329A
-// 0.600315
-0x4CD71E95
-// 0.278682
-0x23ABDA31
-// 0.198740
-0x197053E3
-// 0.553982
-0x46E8DE9C
-// 0.627434
-0x504FBE5D
-// 0.157238
-0x14205CF5
-// 0.097875
-0x0C872EFA
-// 0.915082
-0x75216716
-// 0.995413
-0x7F69B0B0
-// 0.193739
-0x18CC72C2
-// 0.242796
-0x1F13EF10
-// 0.780877
-0x63F3CB2A
-// 0.218470
-0x1BF6D55B
-// 0.177386
-0x16B49844
-// 0.119751
-0x0F54022E
-// 0.495797
-0x3F7646DF
-// 0.953778
-0x7A1563A3
-// 0.520738
-0x42A78C82
-// 0.077837
-0x09F68DC5
-// 0.438645
-0x382588B2
-// 0.033170
-0x043EEDDD
-// 0.604559
-0x4D623486
-// 0.358489
-0x2DE2F807
-// 0.937511
-0x78005BBC
-// 0.242114
-0x1EFD943A
-// 0.254972
-0x20A2EC29
-// 0.981259
-0x7D99E3F1
-// 0.403211
-0x339C6E75
-// 0.075431
-0x09A7B5D3
-// 0.617362
-0x4F05BA49
-// 0.398779
-0x330B2EB6
-// 0.730602
-0x5D845B53
-// 0.969320
-0x7C12B0FE
-// 0.126019
-0x10216318
-// 0.787441
-0x64CADB74
-// 0.701549
-0x59CC5F21
-// 0.007095
-0x00E88070
-// 0.789549
-0x650FF01F
-// 0.466180
-0x3BABC7B5
-// 0.291312
-0x2549B96A
-// 0.511352
-0x4173FA18
-// 0.120415
-0x0F69BEBB
-// 0.297764
-0x261D232C
-// 0.289067
-0x250025CF
-// 0.999234
-0x7FE6E4F3
-// 0.102883
-0x0D2B445E
-// 0.957922
-0x7A9D318B
-// 0.861563
-0x6E47B46A
-// 0.859701
-0x6E0AAD99
-// 0.736768
-0x5E4E6D75
-// 0.420754
-0x35DB484D
-// 0.922098
-0x76074D71
-// 0.668796
-0x559B1A2A
-// 0.881307
-0x70CEAE8E
-// 0.195934
-0x19146065
-// 0.558863
-0x4788D4FD
-// 0.003515
-0x00732B7A
-// 0.032567
-0x042B2675
-// 0.792406
-0x656D9259
-// 0.601457
-0x4CFC8D8D
-// 0.424264
-0x364E4868
-// 0.342124
-0x2BCAB6C2
-// 0.004661
-0x0098B7B1
-// 0.661830
-0x54B6D7CA
-// 0.045984
-0x05E2C9E8
-// 0.369319
-0x2F45D756
-// 0.175438
-0x1674BD10
-// 0.764628
-0x61DF55F8
-// 0.632118
-0x50E93B9E
-// 0.219794
-0x1C2236CA
-// 0.951982
-0x79DA8E0B
-// 0.990057
-0x7EBA2D79
-// 0.318919
-0x28D25897
-// 0.297529
-0x26156F78
-// 0.948716
-0x796F85DE
-// 0.455555
-0x3A4F9F40
-// 0.014161
-0x01D0058B
-// 0.291566
-0x25520531
-// 0.116305
-0x0EE3158C
-// 0.074308
-0x0982ECD3
-// 0.972470
-0x7C79E854
-// 0.403592
-0x33A8E67A
-// 0.832230
-0x6A8682A5
-// 0.351250
-0x2CF5C24F
-// 0.392505
-0x323D99FA
-// 0.595677
-0x4C3F274D
-// 0.735795
-0x5E2E8B91
-// 0.507004
-0x40E57F32
+// 0.568247
+0x48BC50FC
+// 0.432154
+0x3750D5DC
+// 0.922684
+0x761A7FBB
+// 0.253662
+0x2077FF97
+// 0.844961
+0x6C27ABD5
+// 0.202025
+0x19DBF65F
+// 0.776422
+0x6361CD72
+// 0.231072
+0x1D93C756
+// 0.006216
+0x00CBAFC0
+// 0.903692
+0x73AC2AF2
+// 0.301173
+0x268CD890
+// 0.520790
+0x42A9413E
+// 0.833602
+0x6AB37C88
+// 0.644484
+0x527E75BB
+// 0.646444
+0x52BEAE19
+// 0.488369
+0x3E82E2B7
+// 0.017545
+0x023EE7B9
+// 0.145921
+0x12AD87F6
+// 0.146540
+0x12C1D360
+// 0.945323
+0x790056F2
+// 0.338550
+0x2B559B3D
+// 0.436116
+0x37D2A9C7
+// 0.614086
+0x4E9A6259
+// 0.355728
+0x2D888103
+// 0.050163
+0x066BBBB2
+// 0.607701
+0x4DC9291E
+// 0.538730
+0x44F518FD
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ7/Samples5_q7.txt b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ7/Samples5_q7.txt
old mode 100644
new mode 100755
index 54c6cc0..c3050c0
--- a/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ7/Samples5_q7.txt
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Support/SupportQ7/Samples5_q7.txt
@@ -1,514 +1,514 @@
 B
 256
-// 0.341434
-0x2C
-// 0.625706
-0x50
-// 0.367693
-0x2F
-// 0.840190
-0x6C
-// 0.353336
-0x2D
-// 0.374623
-0x30
-// 0.689465
-0x58
-// 0.365593
-0x2F
-// 0.937962
-0x78
-// 0.317542
-0x29
-// 0.556230
-0x47
-// 0.257369
-0x21
-// 0.100619
-0x0D
-// 0.607059
-0x4E
-// 0.242816
-0x1F
-// 0.536536
-0x45
-// 0.174139
-0x16
-// 0.457675
-0x3B
-// 0.128673
-0x10
-// 0.213695
-0x1B
-// 0.118922
-0x0F
-// 0.811033
-0x68
-// 0.236002
-0x1E
-// 0.161531
-0x15
-// 0.017582
-0x02
-// 0.639957
-0x52
-// 0.121038
-0x0F
-// 0.325535
-0x2A
-// 0.178542
-0x17
-// 0.074606
-0x0A
-// 0.654698
-0x54
-// 0.849161
-0x6D
-// 0.949852
-0x7A
-// 0.132888
-0x11
-// 0.640812
-0x52
-// 0.139409
-0x12
-// 0.379631
-0x31
-// 0.583928
-0x4B
-// 0.457137
-0x3B
-// 0.389952
-0x32
-// 0.400562
-0x33
-// 0.934797
-0x78
-// 0.405032
-0x34
-// 0.735545
-0x5E
-// 0.667204
-0x55
-// 0.045283
-0x06
-// 0.733515
-0x5E
-// 0.415208
-0x35
-// 0.483800
-0x3E
-// 0.432415
-0x37
-// 0.103197
-0x0D
-// 0.642838
-0x52
-// 0.073383
-0x09
-// 0.033096
-0x04
-// 0.894193
-0x72
-// 0.934805
-0x78
-// 0.117007
-0x0F
-// 0.745683
-0x5F
-// 0.769223
-0x62
-// 0.661710
-0x55
-// 0.468670
-0x3C
-// 0.970189
-0x7C
-// 0.540589
-0x45
-// 0.936936
-0x78
-// 0.095866
-0x0C
-// 0.255943
-0x21
-// 0.292675
-0x25
-// 0.028668
-0x04
-// 0.730100
-0x5D
-// 0.870014
-0x6F
-// 0.439508
-0x38
-// 0.439086
-0x38
-// 0.907084
-0x74
-// 0.246381
-0x20
-// 0.505914
-0x41
-// 0.173586
-0x16
-// 0.285085
-0x24
-// 0.783357
+// 0.026695
+0x03
+// 0.778538
 0x64
-// 0.143989
-0x12
-// 0.995191
-0x7F
-// 0.450870
-0x3A
-// 0.976845
-0x7D
-// 0.220387
-0x1C
-// 0.441769
-0x39
-// 0.124620
-0x10
-// 0.108551
-0x0E
-// 0.410144
-0x34
-// 0.599344
-0x4D
-// 0.391830
-0x32
-// 0.944308
-0x79
-// 0.168011
-0x16
-// 0.752546
-0x60
-// 0.202564
-0x1A
-// 0.857716
-0x6E
-// 0.542999
-0x46
-// 0.776854
-0x63
-// 0.065549
-0x08
-// 0.673693
-0x56
-// 0.221176
-0x1C
-// 0.502694
-0x40
-// 0.176221
-0x17
-// 0.510459
-0x41
-// 0.566704
-0x49
-// 0.935178
-0x78
-// 0.544133
-0x46
-// 0.449166
-0x39
-// 0.638736
-0x52
-// 0.110871
-0x0E
-// 0.533860
-0x44
-// 0.348646
-0x2D
-// 0.570144
-0x49
-// 0.212931
-0x1B
-// 0.476051
-0x3D
-// 0.204053
-0x1A
-// 0.918915
-0x76
-// 0.338948
-0x2B
-// 0.347816
-0x2D
-// 0.111496
-0x0E
-// 0.989986
-0x7F
-// 0.624135
-0x50
-// 0.802075
-0x67
-// 0.120256
-0x0F
-// 0.807395
-0x67
-// 0.010449
-0x01
-// 0.672358
-0x56
-// 0.138225
-0x12
-// 0.581201
-0x4A
-// 0.024142
-0x03
-// 0.503112
-0x40
-// 0.248574
-0x20
-// 0.245295
+// 0.069889
+0x09
+// 0.645287
+0x53
+// 0.384884
+0x31
+// 0.738481
+0x5F
+// 0.245743
 0x1F
-// 0.819581
-0x69
-// 0.753177
-0x60
-// 0.420321
-0x36
-// 0.827901
-0x6A
-// 0.611148
-0x4E
-// 0.450767
-0x3A
-// 0.509755
+// 0.873584
+0x70
+// 0.160067
+0x14
+// 0.504569
 0x41
-// 0.443579
+// 0.512346
+0x42
+// 0.978994
+0x7D
+// 0.490347
+0x3F
+// 0.027475
+0x04
+// 0.448696
 0x39
-// 0.350954
-0x2D
-// 0.682486
-0x57
-// 0.693444
-0x59
-// 0.867376
-0x6F
-// 0.806139
-0x67
-// 0.846993
-0x6C
-// 0.777025
-0x63
-// 0.598501
-0x4D
-// 0.275748
-0x23
-// 0.191624
-0x19
-// 0.708103
-0x5B
-// 0.427232
-0x37
-// 0.679942
-0x57
-// 0.026511
+// 0.373480
+0x30
+// 0.521155
+0x43
+// 0.882182
+0x71
+// 0.247009
+0x20
+// 0.569573
+0x49
+// 0.443429
+0x39
+// 0.335110
+0x2B
+// 0.338518
+0x2B
+// 0.219981
+0x1C
+// 0.827766
+0x6A
+// 0.024095
 0x03
-// 0.637714
-0x52
-// 0.016782
-0x02
-// 0.391127
-0x32
-// 0.913429
+// 0.523940
+0x43
+// 0.953230
+0x7A
+// 0.575335
+0x4A
+// 0.795386
+0x66
+// 0.953251
+0x7A
+// 0.074715
+0x0A
+// 0.913491
 0x75
-// 0.321302
-0x29
-// 0.719137
-0x5C
-// 0.767802
+// 0.801566
+0x67
+// 0.904085
+0x74
+// 0.291240
+0x25
+// 0.369036
+0x2F
+// 0.729768
+0x5D
+// 0.487047
+0x3E
+// 0.196860
+0x19
+// 0.767170
 0x62
+// 0.987300
+0x7E
+// 0.392036
+0x32
+// 0.734384
+0x5E
+// 0.989110
+0x7F
+// 0.471644
+0x3C
+// 0.528268
+0x44
+// 0.558753
+0x48
+// 0.639758
+0x52
+// 0.715957
+0x5C
+// 0.355820
+0x2E
+// 0.993838
+0x7F
+// 0.874203
+0x70
+// 0.673433
+0x56
+// 0.536575
+0x45
+// 0.781101
+0x64
+// 0.658234
+0x54
+// 0.600048
+0x4D
+// 0.143036
+0x12
+// 0.351440
+0x2D
+// 0.835343
+0x6B
+// 0.657780
+0x54
+// 0.202655
+0x1A
+// 0.847247
+0x6C
+// 0.311972
+0x28
+// 0.051149
+0x07
+// 0.104352
+0x0D
+// 0.455041
+0x3A
+// 0.870840
+0x6F
+// 0.872796
+0x70
+// 0.025107
+0x03
+// 0.442646
+0x39
+// 0.662511
+0x55
+// 0.276778
+0x23
+// 0.654128
+0x54
+// 0.270441
+0x23
+// 0.293766
+0x26
+// 0.025122
+0x03
+// 0.560890
+0x48
+// 0.610751
+0x4E
+// 0.228088
+0x1D
+// 0.966808
+0x7C
+// 0.970834
+0x7C
+// 0.787894
+0x65
+// 0.820639
+0x69
+// 0.980661
+0x7E
+// 0.520135
+0x43
+// 0.460491
+0x3B
+// 0.610384
+0x4E
+// 0.320473
+0x29
+// 0.510613
+0x41
+// 0.712514
+0x5B
+// 0.405694
+0x34
+// 0.539556
+0x45
+// 0.138168
+0x12
+// 0.298291
+0x26
+// 0.445734
+0x39
+// 0.908171
+0x74
+// 0.861903
+0x6E
+// 0.174280
+0x16
+// 0.446270
+0x39
+// 0.065286
+0x08
+// 0.520163
+0x43
+// 0.313890
+0x28
+// 0.175290
+0x16
+// 0.162520
+0x15
+// 0.831606
+0x6A
+// 0.497382
+0x40
+// 0.391594
+0x32
+// 0.237378
+0x1E
+// 0.503784
+0x40
+// 0.786093
+0x65
+// 0.652255
+0x53
+// 0.314646
+0x28
+// 0.475890
+0x3D
+// 0.745297
+0x5F
+// 0.208157
+0x1B
+// 0.040289
+0x05
+// 0.645444
+0x53
+// 0.968871
+0x7C
+// 0.806593
+0x67
+// 0.974799
+0x7D
+// 0.209073
+0x1B
+// 0.434090
+0x38
+// 0.361435
+0x2E
+// 0.001950
+0x00
+// 0.982812
+0x7E
+// 0.238943
+0x1F
+// 0.490565
+0x3F
+// 0.457949
+0x3B
+// 0.452314
+0x3A
+// 0.125164
+0x10
+// 0.624265
+0x50
+// 0.628562
+0x50
+// 0.418482
+0x36
+// 0.970227
+0x7C
+// 0.760829
+0x61
+// 0.993005
+0x7F
+// 0.381342
+0x31
+// 0.808672
+0x68
+// 0.962103
+0x7B
+// 0.357582
+0x2E
+// 0.313763
+0x28
+// 0.612882
+0x4E
+// 0.759483
+0x61
+// 0.720741
+0x5C
+// 0.262655
+0x22
+// 0.001494
+0x00
+// 0.905236
+0x74
+// 0.475971
+0x3D
+// 0.089246
+0x0B
+// 0.708706
+0x5B
+// 0.461310
+0x3B
+// 0.771791
+0x63
+// 0.650635
+0x53
+// 0.865024
+0x6F
+// 0.177783
+0x17
+// 0.105361
+0x0D
+// 0.746970
+0x60
+// 0.547275
+0x46
+// 0.572427
+0x49
+// 0.979508
+0x7D
+// 0.420236
+0x36
+// 0.129812
+0x11
+// 0.404496
+0x34
+// 0.802437
+0x67
+// 0.268112
+0x22
+// 0.853468
+0x6D
+// 0.969207
+0x7C
+// 0.387310
+0x32
+// 0.287606
+0x25
+// 0.651370
+0x53
+// 0.272862
+0x23
+// 0.979001
+0x7D
+// 0.617860
+0x4F
+// 0.133522
+0x11
+// 0.011051
+0x01
+// 0.106561
+0x0E
+// 0.662463
+0x55
+// 0.314405
+0x28
+// 0.788679
+0x65
+// 0.124685
+0x10
+// 0.985599
+0x7E
+// 0.959727
+0x7B
+// 0.366079
+0x2F
+// 0.339452
+0x2B
+// 0.881994
+0x71
+// 0.890744
+0x72
+// 0.916080
+0x75
+// 0.724661
+0x5D
+// 0.850090
+0x6D
+// 0.800476
+0x66
+// 0.560247
+0x48
+// 0.304178
+0x27
+// 0.002195
+0x00
+// 0.140718
+0x12
+// 0.342823
+0x2C
+// 0.376369
+0x30
+// 0.019151
+0x02
+// 0.165196
+0x15
+// 0.583952
+0x4B
+// 0.229985
+0x1D
+// 0.252301
+0x20
+// 0.393749
+0x32
+// 0.368520
+0x2F
+// 0.737370
+0x5E
+// 0.134943
+0x11
+// 0.629192
+0x51
+// 0.594611
+0x4C
+// 0.748385
+0x60
+// 0.635702
+0x51
+// 0.260252
+0x21
+// 0.877189
+0x70
+// 0.444494
+0x39
+// 0.261411
+0x21
+// 0.140906
+0x12
+// 0.894313
+0x72
+// 0.695394
+0x59
+// 0.880966
+0x71
+// 0.372417
+0x30
+// 0.428420
+0x37
+// 0.788624
+0x65
+// 0.362604
+0x2E
+// 0.157601
+0x14
+// 0.122216
+0x10
+// 0.288650
+0x25
+// 0.103290
+0x0D
+// 0.883440
+0x71
 // 1.000000
 0x7F
-// 0.573987
+// 0.568247
 0x49
-// 0.619844
-0x4F
-// 0.128859
-0x10
-// 0.344614
-0x2C
-// 0.630698
-0x51
-// 0.092255
-0x0C
-// 0.890112
-0x72
-// 0.600315
-0x4D
-// 0.278682
-0x24
-// 0.198740
-0x19
-// 0.553982
-0x47
-// 0.627434
-0x50
-// 0.157238
-0x14
-// 0.097875
-0x0D
-// 0.915082
-0x75
-// 0.995413
-0x7F
-// 0.193739
-0x19
-// 0.242796
-0x1F
-// 0.780877
-0x64
-// 0.218470
-0x1C
-// 0.177386
-0x17
-// 0.119751
-0x0F
-// 0.495797
-0x3F
-// 0.953778
-0x7A
-// 0.520738
-0x43
-// 0.077837
-0x0A
-// 0.438645
-0x38
-// 0.033170
-0x04
-// 0.604559
-0x4D
-// 0.358489
-0x2E
-// 0.937511
-0x78
-// 0.242114
-0x1F
-// 0.254972
-0x21
-// 0.981259
-0x7E
-// 0.403211
-0x34
-// 0.075431
-0x0A
-// 0.617362
-0x4F
-// 0.398779
-0x33
-// 0.730602
-0x5E
-// 0.969320
-0x7C
-// 0.126019
-0x10
-// 0.787441
-0x65
-// 0.701549
-0x5A
-// 0.007095
-0x01
-// 0.789549
-0x65
-// 0.466180
-0x3C
-// 0.291312
-0x25
-// 0.511352
-0x41
-// 0.120415
-0x0F
-// 0.297764
-0x26
-// 0.289067
-0x25
-// 0.999234
-0x7F
-// 0.102883
-0x0D
-// 0.957922
-0x7B
-// 0.861563
-0x6E
-// 0.859701
-0x6E
-// 0.736768
-0x5E
-// 0.420754
-0x36
-// 0.922098
+// 0.432154
+0x37
+// 0.922684
 0x76
-// 0.668796
-0x56
-// 0.881307
-0x71
-// 0.195934
-0x19
-// 0.558863
-0x48
-// 0.003515
-0x00
-// 0.032567
-0x04
-// 0.792406
-0x65
-// 0.601457
-0x4D
-// 0.424264
-0x36
-// 0.342124
-0x2C
-// 0.004661
+// 0.253662
+0x20
+// 0.844961
+0x6C
+// 0.202025
+0x1A
+// 0.776422
+0x63
+// 0.231072
+0x1E
+// 0.006216
 0x01
-// 0.661830
-0x55
-// 0.045984
-0x06
-// 0.369319
-0x2F
-// 0.175438
-0x16
-// 0.764628
-0x62
-// 0.632118
-0x51
-// 0.219794
-0x1C
-// 0.951982
-0x7A
-// 0.990057
-0x7F
-// 0.318919
-0x29
-// 0.297529
-0x26
-// 0.948716
-0x79
-// 0.455555
-0x3A
-// 0.014161
-0x02
-// 0.291566
-0x25
-// 0.116305
-0x0F
-// 0.074308
-0x0A
-// 0.972470
-0x7C
-// 0.403592
-0x34
-// 0.832230
+// 0.903692
+0x74
+// 0.301173
+0x27
+// 0.520790
+0x43
+// 0.833602
 0x6B
-// 0.351250
-0x2D
-// 0.392505
-0x32
-// 0.595677
-0x4C
-// 0.735795
-0x5E
-// 0.507004
-0x41
+// 0.644484
+0x52
+// 0.646444
+0x53
+// 0.488369
+0x3F
+// 0.017545
+0x02
+// 0.145921
+0x13
+// 0.146540
+0x13
+// 0.945323
+0x79
+// 0.338550
+0x2B
+// 0.436116
+0x38
+// 0.614086
+0x4F
+// 0.355728
+0x2E
+// 0.050163
+0x06
+// 0.607701
+0x4E
+// 0.538730
+0x45
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/SupportBarF32/Coefs1_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/SupportBarF32/Coefs1_f32.txt
index 8e478cc..6ed8974 100755
--- a/CMSIS/DSP/Testing/Patterns/DSP/SupportBarF32/Coefs1_f32.txt
+++ b/CMSIS/DSP/Testing/Patterns/DSP/SupportBarF32/Coefs1_f32.txt
@@ -1,258 +1,258 @@
 W
 128
-// 0.490048
-0x3efae796
-// 0.704208
-0x3f3446f9
-// 0.775887
-0x3f46a08d
-// 0.236513
-0x3e723090
-// 0.806055
-0x3f4e59a1
-// 0.269034
-0x3e89bed7
-// 0.103345
-0x3dd3a6a2
-// 0.527148
-0x3f06f324
-// 0.530931
-0x3f07eb12
-// 0.673681
-0x3f2c7661
-// 0.997954
-0x3f7f79f2
-// 0.177911
-0x3e362e30
-// 0.420123
-0x3ed71a5e
-// 0.144080
-0x3e13899f
-// 0.776180
-0x3f46b3b7
-// 0.527794
-0x3f071d7f
-// 0.845129
-0x3f585a5f
-// 0.535218
-0x3f090413
-// 0.416486
-0x3ed53daf
-// 0.854902
-0x3f5adadd
-// 0.310757
-0x3e9f1b91
-// 0.718802
-0x3f38036d
-// 0.372222
-0x3ebe93d7
-// 0.603514
-0x3f1a7fe5
-// 0.549520
-0x3f0cad58
-// 0.184390
-0x3e3cd0b9
-// 0.821388
-0x3f52467e
-// 0.117784
-0x3df13882
-// 0.925371
-0x3f6ce521
-// 0.836535
-0x3f56272b
-// 0.010744
-0x3c3007d0
-// 0.233896
-0x3e6f825f
-// 0.433463
-0x3eddeede
-// 0.312641
-0x3ea01277
-// 0.710051
-0x3f35c5eb
-// 0.936182
-0x3f6fa998
-// 0.676834
-0x3f2d44ff
-// 0.125042
-0x3e000aef
-// 0.296962
-0x3e980b6f
-// 0.471580
-0x3ef172e1
-// 0.269794
-0x3e8a2267
-// 0.109838
-0x3de0f2c3
-// 0.971647
-0x3f78bde2
-// 0.823644
-0x3f52da5c
-// 0.046008
-0x3d3c734c
-// 0.611267
-0x3f1c7c04
-// 0.561090
-0x3f0fa3a0
-// 0.243332
-0x3e792bee
-// 0.798292
-0x3f4c5cdf
-// 0.980044
-0x3f7ae424
-// 0.843796
-0x3f580308
-// 0.454852
-0x3ee8e261
-// 0.944197
-0x3f71b6de
-// 0.983913
-0x3f7be1b4
-// 0.567290
-0x3f1139f1
-// 0.918478
-0x3f6b215d
-// 0.118576
-0x3df2d832
-// 0.455504
-0x3ee937c1
-// 0.878599
-0x3f60ebdb
-// 0.476628
-0x3ef4088e
-// 0.695358
-0x3f3202f7
-// 0.698262
-0x3f32c151
-// 0.203007
-0x3e4fe10e
-// 0.810758
-0x3f4f8dd0
-// 0.048515
-0x3d46b72b
-// 0.049118
-0x3d492fc2
-// 0.274576
-0x3e8c953f
-// 0.979040
-0x3f7aa261
-// 0.757077
-0x3f41cfc9
-// 0.884463
-0x3f626c2a
-// 0.950454
-0x3f7350f3
-// 0.815323
-0x3f50b8fd
-// 0.715000
-0x3f370a42
-// 0.810878
-0x3f4f95b6
-// 0.265277
-0x3e87d262
-// 0.947210
-0x3f727c53
-// 0.799743
-0x3f4cbbf7
-// 0.781028
-0x3f47f172
-// 0.426747
-0x3eda7e9a
-// 0.653096
-0x3f27314b
-// 0.777779
-0x3f471c7f
-// 0.583154
-0x3f15499c
-// 0.282098
-0x3e906f35
-// 0.040769
-0x3d26fcfc
-// 0.569547
-0x3f11cdd0
-// 0.188674
-0x3e4133cf
-// 0.497435
-0x3efeafcd
-// 0.326025
-0x3ea6ecce
-// 0.514940
-0x3f03d31a
-// 0.519322
-0x3f04f24c
-// 0.973643
-0x3f7940a8
-// 0.458811
-0x3eeae950
-// 0.745273
-0x3f3eca3b
-// 0.381777
-0x3ec37856
-// 0.259870
-0x3e850da1
-// 0.250778
-0x3e806601
-// 0.717425
-0x3f37a925
-// 0.249856
-0x3e7fda30
-// 0.026318
-0x3cd79872
-// 0.423311
-0x3ed8bc47
-// 0.868962
-0x3f5e7446
-// 0.083402
-0x3daaced3
-// 0.215957
-0x3e5d23d4
-// 0.023580
-0x3cc129f2
-// 0.186946
-0x3e3f6ee5
-// 0.956533
-0x3f74df53
-// 0.475889
-0x3ef3a7b3
-// 0.553593
-0x3f0db842
-// 0.638898
-0x3f238ed8
-// 0.443885
-0x3ee344ea
-// 0.509493
-0x3f026e21
-// 0.765582
-0x3f43fd35
-// 0.517761
-0x3f048c02
-// 0.637105
-0x3f231953
-// 0.184768
-0x3e3d33c9
-// 0.553288
-0x3f0da449
-// 0.924723
-0x3f6cbaac
-// 0.584215
-0x3f158f17
-// 0.198191
-0x3e4af284
-// 0.468793
-0x3ef005a2
-// 0.919979
-0x3f6b83c4
-// 0.170317
-0x3e2e6787
-// 0.836600
-0x3f562b6c
-// 0.773325
-0x3f45f8a5
-// 0.996780
-0x3f7f2d01
-// 0.103502
-0x3dd3f913
-// 0.318752
-0x3ea33367
-// 0.070315
-0x3d900153
+// 0.464132
+0x3eeda2bb
+// 0.092668
+0x3dbdc89c
+// 0.798223
+0x3f4c584f
+// 0.480280
+0x3ef5e742
+// 0.721850
+0x3f38cb31
+// 0.212568
+0x3e59ab69
+// 0.778193
+0x3f4737ab
+// 0.634733
+0x3f227ddd
+// 0.401475
+0x3ecd8e25
+// 0.934914
+0x3f6f5681
+// 0.400055
+0x3eccd3fc
+// 0.952664
+0x3f73e1d1
+// 0.182723
+0x3e3b1bb3
+// 0.844379
+0x3f582937
+// 0.566629
+0x3f110e94
+// 0.331388
+0x3ea9abb6
+// 0.945658
+0x3f7216a5
+// 0.335220
+0x3eaba204
+// 0.521303
+0x3f057423
+// 0.679026
+0x3f2dd4a2
+// 0.260864
+0x3e858fff
+// 0.488728
+0x3efa3a8f
+// 0.782244
+0x3f484122
+// 0.244554
+0x3e7a6c78
+// 0.535817
+0x3f092b4a
+// 0.617097
+0x3f1dfa0f
+// 0.586511
+0x3f16259a
+// 0.026488
+0x3cd8fcfa
+// 0.150626
+0x3e1a3da3
+// 0.215742
+0x3e5ceb80
+// 0.710143
+0x3f35cbf3
+// 0.816658
+0x3f51107a
+// 0.599002
+0x3f195830
+// 0.612913
+0x3f1ce7d6
+// 0.945306
+0x3f71ff94
+// 0.580647
+0x3f14a545
+// 0.452774
+0x3ee7d204
+// 0.717610
+0x3f37b550
+// 0.639673
+0x3f23c1a4
+// 0.300885
+0x3e9a0d91
+// 0.811503
+0x3f4fbeab
+// 0.680670
+0x3f2e4060
+// 0.302187
+0x3e9ab84f
+// 0.993911
+0x3f7e70fb
+// 0.077638
+0x3d9f00cf
+// 0.787715
+0x3f49a7b0
+// 0.882760
+0x3f61fc88
+// 0.193113
+0x3e45bf52
+// 0.094195
+0x3dc0e979
+// 0.567861
+0x3f115f57
+// 0.264678
+0x3e8783d8
+// 0.968875
+0x3f780835
+// 0.459873
+0x3eeb747f
+// 0.520713
+0x3f054d71
+// 0.173165
+0x3e315213
+// 0.796347
+0x3f4bdd60
+// 0.310622
+0x3e9f09d9
+// 0.704239
+0x3f3448fa
+// 0.983174
+0x3f7bb144
+// 0.717770
+0x3f37bfc5
+// 0.393864
+0x3ec9a881
+// 0.020328
+0x3ca68782
+// 0.258437
+0x3e8451dd
+// 0.901242
+0x3f66b7c8
+// 0.608206
+0x3f1bb36b
+// 0.073031
+0x3d959114
+// 0.731745
+0x3f3b53a4
+// 0.982715
+0x3f7b9331
+// 0.003384
+0x3b5dc61f
+// 0.562125
+0x3f0fe76d
+// 0.542362
+0x3f0ad83e
+// 0.453201
+0x3ee809f6
+// 0.418136
+0x3ed615e3
+// 0.812219
+0x3f4fed92
+// 0.730998
+0x3f3b22b3
+// 0.733477
+0x3f3bc529
+// 0.213151
+0x3e5a4423
+// 0.931644
+0x3f6e803c
+// 0.060643
+0x3d786468
+// 0.834928
+0x3f55bdda
+// 0.023410
+0x3cbfc56b
+// 0.180293
+0x3e389ea8
+// 0.416549
+0x3ed545e1
+// 0.188981
+0x3e418447
+// 0.024989
+0x3cccb5e9
+// 0.430242
+0x3edc48a9
+// 0.513186
+0x3f03602d
+// 0.435018
+0x3edebab6
+// 0.162261
+0x3e2627d8
+// 0.170523
+0x3e2e9d7e
+// 0.286601
+0x3e92bd6d
+// 0.409616
+0x3ed1b93d
+// 0.419303
+0x3ed6aedc
+// 0.408633
+0x3ed13860
+// 0.561338
+0x3f0fb3db
+// 0.004226
+0x3b8a7c32
+// 0.676595
+0x3f2d3550
+// 0.065136
+0x3d856627
+// 0.467927
+0x3eef941b
+// 0.181533
+0x3e39e3d3
+// 0.828455
+0x3f5415a5
+// 0.492221
+0x3efc0463
+// 0.295231
+0x3e972893
+// 0.258667
+0x3e84700c
+// 0.215292
+0x3e5c7561
+// 0.448817
+0x3ee5cb61
+// 0.150856
+0x3e1a79f3
+// 0.979271
+0x3f7ab187
+// 0.560446
+0x3f0f7967
+// 0.316280
+0x3ea1ef73
+// 0.147708
+0x3e1740ac
+// 0.702072
+0x3f33bb01
+// 0.330467
+0x3ea93304
+// 0.916540
+0x3f6aa260
+// 0.517742
+0x3f048ab7
+// 0.206991
+0x3e53f57f
+// 0.351950
+0x3eb432cc
+// 0.458316
+0x3eeaa869
+// 0.046514
+0x3d3e84fa
+// 0.037893
+0x3d1b353e
+// 0.631020
+0x3f218a87
+// 0.040447
+0x3d25ab9e
+// 0.232831
+0x3e6e6b3f
+// 0.741326
+0x3f3dc783
+// 0.393026
+0x3ec93aaa
+// 0.825431
+0x3f534f6f
+// 0.821452
+0x3f524aad
+// 0.459047
+0x3eeb083d
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/SupportBarF32/Inputs1_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/SupportBarF32/Inputs1_f32.txt
index 1e3e2e2..a09280d 100755
--- a/CMSIS/DSP/Testing/Patterns/DSP/SupportBarF32/Inputs1_f32.txt
+++ b/CMSIS/DSP/Testing/Patterns/DSP/SupportBarF32/Inputs1_f32.txt
@@ -1,916 +1,916 @@
 W
 457
-// 0.202022
-0x3e4eded9
-// 0.371752
-0x3ebe5644
-// 0.384953
-0x3ec51884
-// 0.362395
-0x3eb98bcb
-// 0.740524
-0x3f3d9302
-// 0.524887
-0x3f065ef7
-// 0.203831
-0x3e50b901
-// 0.502925
-0x3f00bfb1
-// 0.597241
-0x3f18e4c7
-// 0.984476
-0x3f7c06a2
-// 0.891837
-0x3f644f70
-// 0.456645
-0x3ee9cd50
-// 0.570476
-0x3f120ab1
-// 0.439833
-0x3ee131c9
-// 0.606316
-0x3f1b3780
-// 0.437166
-0x3edfd442
-// 0.110915
-0x3de32734
-// 0.297464
-0x3e984d30
-// 0.541318
-0x3f0a93d4
-// 0.551973
-0x3f0d4e22
-// 0.599657
-0x3f19831f
-// 0.860852
-0x3f5c60cb
-// 0.477249
-0x3ef459fa
-// 0.768838
-0x3f44d295
-// 0.052379
-0x3d568b63
-// 0.050616
-0x3d4f52b3
-// 0.299378
-0x3e99480b
-// 0.328758
-0x3ea852f9
-// 0.945739
-0x3f721bf9
-// 0.699001
-0x3f32f1c2
-// 0.307110
-0x3e9d3d79
-// 0.756374
-0x3f41a1bd
-// 0.456843
-0x3ee9e74b
-// 0.324973
-0x3ea662d1
-// 0.357555
-0x3eb71162
-// 0.995108
-0x3f7ebf66
-// 0.471419
-0x3ef15dde
-// 0.943071
-0x3f716d1e
-// 0.549118
-0x3f0c92f8
-// 0.446103
-0x3ee467a4
-// 0.651540
-0x3f26cb51
-// 0.010110
-0x3c25a677
-// 0.021277
-0x3cae4c99
-// 0.724423
-0x3f3973c2
-// 0.466351
-0x3eeec59f
-// 0.222940
-0x3e644a4f
-// 0.411101
-0x3ed27bda
-// 0.123558
-0x3dfd0c3a
-// 0.886395
-0x3f62eac6
-// 0.201871
-0x3e4eb755
-// 0.785732
-0x3f4925bc
-// 0.411642
-0x3ed2c2b3
-// 0.292374
-0x3e95b210
-// 0.240009
-0x3e75c4ff
-// 0.943417
-0x3f7183cf
-// 0.107633
-0x3ddc6eba
-// 0.403333
-0x3ece81b4
-// 0.695149
-0x3f31f551
-// 0.690819
-0x3f30d988
-// 0.128181
-0x3e0341f7
-// 0.115034
-0x3deb96e3
-// 0.093845
-0x3dc0320f
-// 0.814723
-0x3f5091b0
-// 0.978033
-0x3f7a605a
-// 0.758008
-0x3f420cc9
-// 0.520767
-0x3f0550fc
-// 0.357402
-0x3eb6fd66
-// 0.490394
-0x3efb14e0
-// 0.784207
-0x3f48c1d0
-// 0.217680
-0x3e5ee778
-// 0.668313
-0x3f2b1696
-// 0.952349
-0x3f73cd22
-// 0.324438
-0x3ea61cae
-// 0.323305
-0x3ea5883e
-// 0.783050
-0x3f4875f0
-// 0.755399
-0x3f4161d8
-// 0.367534
-0x3ebc2d63
-// 0.415007
-0x3ed47bbf
-// 0.728819
-0x3f3a93e7
-// 0.449311
-0x3ee60c13
-// 0.462467
-0x3eecc88a
-// 0.280038
-0x3e8f6115
-// 0.036144
-0x3d140bd8
-// 0.643505
-0x3f24bcbb
-// 0.481546
-0x3ef68d30
-// 0.463615
-0x3eed5eed
-// 0.887453
-0x3f63301e
-// 0.911485
-0x3f695712
-// 0.638451
-0x3f237180
-// 0.509788
-0x3f028176
-// 0.438566
-0x3ee08bbb
-// 0.580594
-0x3f14a1d3
-// 0.944596
-0x3f71d104
-// 0.020210
-0x3ca5900d
-// 0.926046
-0x3f6d115b
-// 0.437035
-0x3edfc2fd
-// 0.587772
-0x3f167835
-// 0.717273
-0x3f379f3b
-// 0.259990
-0x3e851d6d
-// 0.090391
-0x3db91ebf
-// 0.254581
-0x3e825871
-// 0.317697
-0x3ea2a929
-// 0.011581
-0x3c3dbd6c
-// 0.363057
-0x3eb9e2a2
-// 0.904403
-0x3f6786f7
-// 0.626574
-0x3f20672f
-// 0.154053
-0x3e1dc015
-// 0.240977
-0x3e76c293
-// 0.721151
-0x3f389d5d
-// 0.223129
-0x3e647bcf
-// 0.614093
-0x3f1d3536
-// 0.568851
-0x3f11a03f
-// 0.615111
-0x3f1d77f1
-// 0.775308
-0x3f467a9c
-// 0.132236
-0x3e0768f1
-// 0.372023
-0x3ebe79d7
-// 0.567722
-0x3f11563d
-// 0.346549
-0x3eb16ede
-// 0.981750
-0x3f7b53f7
-// 0.112684
-0x3de6c703
-// 0.365506
-0x3ebb2392
-// 0.115491
-0x3dec868b
-// 0.043555
-0x3d326644
-// 0.521918
-0x3f059c6c
-// 0.094884
-0x3dc2528b
-// 0.394060
-0x3ec9c23e
-// 0.292163
-0x3e959660
-// 0.926897
-0x3f6d491e
-// 0.846918
-0x3f58cf9e
-// 0.345841
-0x3eb11217
-// 0.809170
-0x3f4f25c8
-// 0.823746
-0x3f52e10a
-// 0.135469
-0x3e0ab882
-// 0.600946
-0x3f19d79e
-// 0.224901
-0x3e664c6a
-// 0.077065
-0x3d9dd462
-// 0.376238
-0x3ec0a24f
-// 0.030182
-0x3cf74138
-// 0.039094
-0x3d2020eb
-// 0.080199
-0x3da43f9d
-// 0.044408
-0x3d35e554
-// 0.029057
-0x3cee093d
-// 0.929173
-0x3f6dde44
-// 0.978367
-0x3f7a7640
-// 0.732798
-0x3f3b98a6
-// 0.645933
-0x3f255bd5
-// 0.086109
-0x3db059d6
-// 0.153021
-0x3e1cb197
-// 0.428761
-0x3edb869a
-// 0.959723
-0x3f75b064
-// 0.346243
-0x3eb146b3
-// 0.369737
-0x3ebd4e30
-// 0.170090
-0x3e2e2c17
-// 0.529862
-0x3f07a50b
-// 0.683281
-0x3f2eeb81
-// 0.964018
-0x3f76c9de
-// 0.443750
-0x3ee3333b
-// 0.508901
-0x3f024756
-// 0.110124
-0x3de1889e
-// 0.608851
-0x3f1bddb1
-// 0.589105
-0x3f16cf9e
-// 0.709421
-0x3f359ca2
-// 0.745403
-0x3f3ed2be
-// 0.120770
-0x3df7560f
-// 0.284895
-0x3e91ddc4
-// 0.256088
-0x3e831ded
-// 0.287916
-0x3e9369c7
-// 0.700291
-0x3f33463e
-// 0.516975
-0x3f045876
-// 0.633144
-0x3f2215ba
-// 0.330614
-0x3ea94641
-// 0.605315
-0x3f1af5e9
-// 0.531744
-0x3f082064
-// 0.469408
-0x3ef0563d
-// 0.936114
-0x3f6fa526
-// 0.573452
-0x3f12cdc0
-// 0.554629
-0x3f0dfc28
-// 0.151615
-0x3e1b40ec
-// 0.528828
-0x3f07614b
-// 0.889825
-0x3f63cb9a
-// 0.687901
-0x3f301a42
-// 0.654820
-0x3f27a24d
-// 0.702037
-0x3f33b8b5
-// 0.524922
-0x3f06614f
-// 0.703604
-0x3f341f62
-// 0.079782
-0x3da364f8
-// 0.449042
-0x3ee5e8d0
-// 0.218757
-0x3e6001e9
-// 0.414476
-0x3ed4363b
-// 0.091564
-0x3dbb85f8
-// 0.026559
-0x3cd99212
-// 0.253654
-0x3e81dee8
-// 0.408412
-0x3ed11b6f
-// 0.708992
-0x3f358081
-// 0.653740
-0x3f275b7a
-// 0.222845
-0x3e64316f
-// 0.242817
-0x3e78a51f
-// 0.243520
-0x3e795d3b
-// 0.855137
-0x3f5aea43
-// 0.245645
-0x3e7b8a43
-// 0.056006
-0x3d65661f
-// 0.967363
-0x3f77a514
-// 0.082936
-0x3da9da47
-// 0.220977
-0x3e6247ae
-// 0.229776
-0x3e6b4a4f
-// 0.507371
-0x3f01e314
-// 0.987559
-0x3f7cd0a6
-// 0.374008
-0x3ebf7df9
-// 0.587241
-0x3f165573
-// 0.173576
-0x3e31be02
-// 0.595906
-0x3f188d44
-// 0.949560
-0x3f731661
-// 0.564630
-0x3f108b90
-// 0.645377
-0x3f253767
-// 0.506615
-0x3f01b17e
-// 0.272704
-0x3e8b9fdc
-// 0.535241
-0x3f09058f
-// 0.118259
-0x3df231ab
-// 0.186739
-0x3e3f3882
-// 0.827931
-0x3f53f346
-// 0.668722
-0x3f2b3163
-// 0.311980
-0x3e9fbbe4
-// 0.722921
-0x3f39115b
-// 0.919259
-0x3f6b5487
-// 0.595196
-0x3f185ec1
-// 0.672936
-0x3f2c4583
-// 0.780200
-0x3f47bb2c
-// 0.457339
-0x3eea2861
-// 0.479292
-0x3ef565d1
-// 0.135912
-0x3e0b2c75
-// 0.377731
-0x3ec165fe
-// 0.574229
-0x3f1300ab
-// 0.706334
-0x3f34d248
-// 0.126597
-0x3e01a2ad
-// 0.448834
-0x3ee5cd99
-// 0.584661
-0x3f15ac54
-// 0.628412
-0x3f20dfa2
-// 0.243481
-0x3e795318
-// 0.691425
-0x3f310138
-// 0.131676
-0x3e06d600
-// 0.748948
-0x3f3fbb10
-// 0.768105
-0x3f44a288
-// 0.422726
-0x3ed86f9b
-// 0.026032
-0x3cd540f3
-// 0.977696
-0x3f7a4a49
-// 0.315630
-0x3ea19a48
-// 0.755726
-0x3f41773c
-// 0.255297
-0x3e82b650
-// 0.778020
-0x3f472c50
-// 0.141916
-0x3e11526a
-// 0.257991
-0x3e84176c
-// 0.451822
-0x3ee75529
-// 0.386191
-0x3ec5bae0
-// 0.335129
-0x3eab960a
-// 0.151933
-0x3e1b9464
-// 0.277191
-0x3e8dec03
-// 0.191939
-0x3e448bb3
-// 0.332022
-0x3ea9fed9
-// 0.153515
-0x3e1d32e8
-// 0.411374
-0x3ed29f96
-// 0.864298
-0x3f5d429e
-// 0.945480
-0x3f720b02
-// 0.624440
-0x3f1fdb45
-// 0.123858
-0x3dfda975
-// 0.112582
-0x3de69197
-// 0.512383
-0x3f032b84
-// 0.897417
-0x3f65bd1f
-// 0.643912
-0x3f24d766
-// 0.739743
-0x3f3d5fd0
-// 0.521134
-0x3f05690d
-// 0.041749
-0x3d2b0132
-// 0.670093
-0x3f2b8b34
-// 0.900301
-0x3f667a28
-// 0.073873
-0x3d974add
-// 0.137374
-0x3e0cabba
-// 0.299921
-0x3e998f35
-// 0.141808
-0x3e113613
-// 0.576132
-0x3f137d60
-// 0.532594
-0x3f08581a
-// 0.845791
-0x3f5885c0
-// 0.677782
-0x3f2d8327
-// 0.332949
-0x3eaa7840
-// 0.970733
-0x3f7881f9
-// 0.926732
-0x3f6d3e4a
-// 0.129789
-0x3e04e77b
-// 0.869519
-0x3f5e98d3
-// 0.715172
-0x3f37157f
-// 0.843388
-0x3f57e83f
-// 0.001861
-0x3af3ee04
-// 0.625571
-0x3f202571
-// 0.305001
-0x3e9c291d
-// 0.778023
-0x3f472c7d
-// 0.129399
-0x3e048141
-// 0.075855
-0x3d9b59a8
-// 0.700214
-0x3f334137
-// 0.753408
-0x3f40df59
-// 0.797528
-0x3f4c2ac8
-// 0.465931
-0x3eee8e72
-// 0.608046
-0x3f1ba8ee
-// 0.888381
-0x3f636ceb
-// 0.263305
-0x3e86cfed
-// 0.232366
-0x3e6df139
-// 0.456352
-0x3ee9a6f6
-// 0.379060
-0x3ec2142b
-// 0.363851
-0x3eba4aab
-// 0.592490
-0x3f17ad68
-// 0.875084
-0x3f600580
-// 0.421525
-0x3ed7d214
-// 0.540390
-0x3f0a5707
-// 0.539206
-0x3f0a096f
-// 0.445560
-0x3ee4206a
-// 0.859167
-0x3f5bf262
-// 0.857342
-0x3f5b7abf
-// 0.460620
-0x3eebd665
-// 0.817673
-0x3f5152fc
-// 0.609339
-0x3f1bfda1
-// 0.055992
-0x3d6557bd
-// 0.834780
-0x3f55b420
-// 0.674639
-0x3f2cb528
-// 0.350088
-0x3eb33ec0
-// 0.907930
-0x3f686e21
-// 0.839298
-0x3f56dc3e
-// 0.612124
-0x3f1cb429
-// 0.503062
-0x3f00c8b2
-// 0.436795
-0x3edfa3a9
-// 0.771938
-0x3f459dc1
-// 0.400491
-0x3ecd0d22
-// 0.170653
-0x3e2ebfae
-// 0.946409
-0x3f7247dd
-// 0.521517
-0x3f058225
-// 0.499754
-0x3effdfc1
-// 0.003847
-0x3b7c1a68
-// 0.031452
-0x3d00d377
-// 0.189918
-0x3e4279d6
-// 0.905590
-0x3f67d4ba
-// 0.536832
-0x3f096dd8
-// 0.462931
-0x3eed0541
-// 0.651242
-0x3f26b7c7
-// 0.844518
-0x3f583259
-// 0.365474
-0x3ebb1f65
-// 0.428492
-0x3edb635e
-// 0.849757
-0x3f5989b1
-// 0.807476
-0x3f4eb6b7
-// 0.663738
-0x3f29eab8
-// 0.564569
-0x3f108798
-// 0.930894
-0x3f6e4f11
-// 0.529796
-0x3f07a0bd
-// 0.819260
-0x3f51bb02
-// 0.927215
-0x3f6d5df9
-// 0.172303
-0x3e307021
-// 0.575984
-0x3f1373b3
-// 0.962591
-0x3f766c5a
-// 0.053876
-0x3d5cad41
-// 0.977619
-0x3f7a4542
-// 0.137601
-0x3e0ce73a
-// 0.134100
-0x3e095169
-// 0.218763
-0x3e600348
-// 0.460480
-0x3eebc410
-// 0.617678
-0x3f1e201f
-// 0.381988
-0x3ec393e4
-// 0.342959
-0x3eaf9852
-// 0.838856
-0x3f56bf3c
-// 0.901484
-0x3f66c7a2
-// 0.745819
-0x3f3eedff
-// 0.062484
-0x3d7feee0
-// 0.932213
-0x3f6ea57b
-// 0.504579
-0x3f012c11
-// 0.839069
-0x3f56cd37
-// 0.783761
-0x3f48a497
-// 0.923460
-0x3f6c67d8
-// 0.704330
-0x3f344ef8
-// 0.786908
-0x3f4972cd
-// 0.237690
-0x3e736507
-// 0.684359
-0x3f2f3220
-// 0.073496
-0x3d968528
-// 0.756034
-0x3f418b74
-// 0.455617
-0x3ee946b1
-// 0.282815
-0x3e90cd1d
-// 0.861923
-0x3f5ca6fc
-// 0.783835
-0x3f48a968
-// 0.274421
-0x3e8c80d9
-// 0.091873
-0x3dbc2813
-// 0.551815
-0x3f0d43c3
-// 0.302086
-0x3e9aab0e
-// 0.946258
-0x3f723df2
-// 0.511298
-0x3f02e474
-// 0.339072
-0x3ead9acf
-// 0.152871
-0x3e1c8a20
-// 0.545724
-0x3f0bb48f
-// 0.102971
-0x3dd2e2b6
-// 0.122001
-0x3df9db83
-// 0.256391
-0x3e8345a7
-// 0.126767
-0x3e01cf57
-// 0.650605
-0x3f268e11
-// 0.115708
-0x3decf826
-// 0.222984
-0x3e64560c
-// 0.190540
-0x3e431ce8
-// 0.345840
-0x3eb111ff
-// 0.137063
-0x3e0c5a48
-// 0.974950
-0x3f79964f
-// 0.026423
-0x3cd874b5
-// 0.348770
-0x3eb29208
-// 0.716337
-0x3f3761de
-// 0.100283
-0x3dcd6104
-// 0.543104
-0x3f0b08db
-// 0.275957
-0x3e8d4a35
-// 0.564413
-0x3f107d57
-// 0.514150
-0x3f039f52
-// 0.115677
-0x3dece816
-// 0.256457
-0x3e834e60
-// 0.140397
-0x3e0fc45a
-// 0.399176
-0x3ecc60cf
-// 0.392170
-0x3ec8ca75
-// 0.212819
-0x3e59ed2b
-// 0.734211
-0x3f3bf543
-// 0.530723
-0x3f07dd7e
-// 0.098695
-0x3dca205c
-// 0.326716
-0x3ea7475d
-// 0.051574
-0x3d533f22
-// 0.133688
-0x3e08e58a
-// 0.862044
-0x3f5caeec
-// 0.458805
-0x3eeae877
-// 0.046181
-0x3d3d27d0
-// 0.291177
-0x3e95152e
-// 0.409668
-0x3ed1bff7
-// 0.876992
-0x3f608285
-// 0.803164
-0x3f4d9c2a
-// 0.104789
-0x3dd69bcb
-// 0.444605
-0x3ee3a339
-// 0.630735
-0x3f2177d8
-// 0.322071
-0x3ea4e681
-// 0.190926
-0x3e4381fb
-// 0.748636
-0x3f3fa699
-// 0.846591
-0x3f58ba35
-// 0.884872
-0x3f6286f6
-// 0.385454
-0x3ec55a36
-// 0.845470
-0x3f5870b2
-// 0.743436
-0x3f3e51ce
-// 0.545102
-0x3f0b8bd6
-// 0.407043
-0x3ed067fb
-// 0.273191
-0x3e8bdfa9
-// 0.808307
-0x3f4eed30
-// 0.200404
-0x3e4d36b9
-// 0.552369
-0x3f0d6807
-// 0.205869
-0x3e52cf42
-// 0.469932
-0x3ef09ae9
-// 0.220036
-0x3e61512c
-// 0.429293
-0x3edbcc54
-// 0.513411
-0x3f036ee6
-// 0.368786
-0x3ebcd17a
-// 0.563629
-0x3f104a02
-// 0.823568
-0x3f52d55c
-// 0.979260
-0x3f7ab0c5
-// 0.131403
-0x3e068e82
-// 0.704394
-0x3f34532c
-// 0.070249
-0x3d8fdeb6
-// 0.932098
-0x3f6e9dfa
+// 0.244252
+0x3e7a1d31
+// 0.195723
+0x3e486b96
+// 0.932751
+0x3f6ec8cd
+// 0.044527
+0x3d36626c
+// 0.390626
+0x3ec80012
+// 0.882452
+0x3f61e85a
+// 0.051101
+0x3d514f51
+// 0.665752
+0x3f2a6eb7
+// 0.891753
+0x3f6449f2
+// 0.062080
+0x3d7e4722
+// 0.875518
+0x3f6021f2
+// 0.593427
+0x3f17ead4
+// 0.708033
+0x3f3541a5
+// 0.951961
+0x3f73b3bd
+// 0.906999
+0x3f683113
+// 0.923224
+0x3f6c5870
+// 0.834344
+0x3f55978d
+// 0.613720
+0x3f1d1cc2
+// 0.415390
+0x3ed4adff
+// 0.495019
+0x3efd732c
+// 0.943796
+0x3f719c9c
+// 0.840206
+0x3f5717be
+// 0.717712
+0x3f37bbfb
+// 0.309486
+0x3e9e74f9
+// 0.495041
+0x3efd7608
+// 0.556559
+0x3f0e7aa8
+// 0.059668
+0x3d746666
+// 0.058115
+0x3d6e0a19
+// 0.346146
+0x3eb13a0c
+// 0.572375
+0x3f128731
+// 0.213619
+0x3e5abef8
+// 0.901875
+0x3f66e14e
+// 0.573586
+0x3f12d680
+// 0.457058
+0x3eea038e
+// 0.913086
+0x3f69bffd
+// 0.090616
+0x3db994af
+// 0.940270
+0x3f70b58f
+// 0.677123
+0x3f2d57f5
+// 0.096996
+0x3dc6a60a
+// 0.683444
+0x3f2ef62e
+// 0.192454
+0x3e45128e
+// 0.313779
+0x3ea0a799
+// 0.976521
+0x3f79fd4c
+// 0.045942
+0x3d3c2e1b
+// 0.231251
+0x3e6ccd08
+// 0.175086
+0x3e3349c7
+// 0.880599
+0x3f616ee9
+// 0.560552
+0x3f0f805e
+// 0.193890
+0x3e468b31
+// 0.499678
+0x3effd5dc
+// 0.841986
+0x3f578c65
+// 0.153270
+0x3e1cf2de
+// 0.652904
+0x3f2724be
+// 0.162919
+0x3e26d45b
+// 0.955503
+0x3f749bd2
+// 0.168825
+0x3e2ce063
+// 0.772166
+0x3f45aca4
+// 0.220189
+0x3e61791b
+// 0.520935
+0x3f055c00
+// 0.833707
+0x3f556dd1
+// 0.621971
+0x3f1f3986
+// 0.445066
+0x3ee3dfb8
+// 0.819468
+0x3f51c8ae
+// 0.082585
+0x3da92278
+// 0.491056
+0x3efb6ba9
+// 0.605182
+0x3f1aed3a
+// 0.591054
+0x3f174f50
+// 0.543562
+0x3f0b26e5
+// 0.769514
+0x3f44fedf
+// 0.972459
+0x3f78f312
+// 0.853798
+0x3f5a9280
+// 0.403257
+0x3ece77ad
+// 0.262094
+0x3e863130
+// 0.332961
+0x3eaa79d2
+// 0.686555
+0x3f2fc20a
+// 0.855660
+0x3f5b0c8f
+// 0.172902
+0x3e310d3a
+// 0.827429
+0x3f53d264
+// 0.321622
+0x3ea4aba8
+// 0.831575
+0x3f54e220
+// 0.038891
+0x3d1f4bb2
+// 0.697505
+0x3f328fad
+// 0.868681
+0x3f5e61e5
+// 0.300143
+0x3e99ac59
+// 0.319280
+0x3ea378ae
+// 0.030095
+0x3cf68a1c
+// 0.118031
+0x3df1ba62
+// 0.613129
+0x3f1cf60c
+// 0.795044
+0x3f4b8801
+// 0.534611
+0x3f08dc47
+// 0.020122
+0x3ca4d766
+// 0.105417
+0x3dd7e4dc
+// 0.002944
+0x3b40f0b2
+// 0.593715
+0x3f17fdb3
+// 0.639606
+0x3f23bd35
+// 0.350728
+0x3eb39299
+// 0.975154
+0x3f79a3b2
+// 0.908114
+0x3f687a2d
+// 0.836452
+0x3f5621b6
+// 0.487483
+0x3ef99762
+// 0.367756
+0x3ebc4a84
+// 0.690701
+0x3f30d1ca
+// 0.567371
+0x3f113f3e
+// 0.478305
+0x3ef4e468
+// 0.355207
+0x3eb5dda9
+// 0.292950
+0x3e95fd88
+// 0.368899
+0x3ebce048
+// 0.221019
+0x3e6252b8
+// 0.043407
+0x3d31cbfe
+// 0.393990
+0x3ec9b91b
+// 0.744746
+0x3f3ea7a5
+// 0.929061
+0x3f6dd6ea
+// 0.323942
+0x3ea5dbb2
+// 0.269623
+0x3e8a0bfc
+// 0.332454
+0x3eaa3777
+// 0.854751
+0x3f5ad0fe
+// 0.911719
+0x3f696667
+// 0.450326
+0x3ee69115
+// 0.412625
+0x3ed34398
+// 0.152164
+0x3e1bd0eb
+// 0.343392
+0x3eafd11d
+// 0.894193
+0x3f64e9d6
+// 0.249591
+0x3e7f94c0
+// 0.049224
+0x3d499fa1
+// 0.140640
+0x3e1003ce
+// 0.664350
+0x3f2a12d5
+// 0.115096
+0x3debb768
+// 0.551221
+0x3f0d1cd8
+// 0.182620
+0x3e3b00c3
+// 0.858151
+0x3f5bafca
+// 0.250960
+0x3e807dcf
+// 0.454398
+0x3ee8a6cd
+// 0.016469
+0x3c86eaf6
+// 0.796109
+0x3f4bcdcf
+// 0.005433
+0x3bb2079f
+// 0.382936
+0x3ec4102a
+// 0.691901
+0x3f31206d
+// 0.212950
+0x3e5a0f81
+// 0.594824
+0x3f18465c
+// 0.518705
+0x3f04c9d1
+// 0.579876
+0x3f1472ba
+// 0.972313
+0x3f78e985
+// 0.467566
+0x3eef64c1
+// 0.492904
+0x3efc5ddf
+// 0.878249
+0x3f60d4e7
+// 0.278703
+0x3e8eb219
+// 0.166078
+0x3e2a1060
+// 0.433081
+0x3eddbcc0
+// 0.138330
+0x3e0da658
+// 0.166909
+0x3e2aea20
+// 0.890242
+0x3f63e6e0
+// 0.464548
+0x3eedd938
+// 0.331689
+0x3ea9d334
+// 0.160050
+0x3e23e424
+// 0.986343
+0x3f7c80f6
+// 0.831689
+0x3f54e99a
+// 0.487335
+0x3ef983eb
+// 0.939777
+0x3f709536
+// 0.301630
+0x3e9a6f34
+// 0.718751
+0x3f380012
+// 0.055498
+0x3d63520d
+// 0.093962
+0x3dc06f66
+// 0.467853
+0x3eef8a76
+// 0.728825
+0x3f3a9443
+// 0.942643
+0x3f715106
+// 0.267490
+0x3e88f47e
+// 0.264119
+0x3e873a96
+// 0.152244
+0x3e1be5be
+// 0.936011
+0x3f6f9e6f
+// 0.505001
+0x3f0147c5
+// 0.361698
+0x3eb93088
+// 0.477859
+0x3ef4a9fc
+// 0.683855
+0x3f2f1121
+// 0.020741
+0x3ca9e9a9
+// 0.904876
+0x3f67a5f8
+// 0.971457
+0x3f78b170
+// 0.591207
+0x3f175959
+// 0.857560
+0x3f5b8915
+// 0.218556
+0x3e5fcd31
+// 0.950776
+0x3f73660f
+// 0.275001
+0x3e8cccfa
+// 0.778776
+0x3f475de4
+// 0.061301
+0x3d7b1665
+// 0.260261
+0x3e8540e3
+// 0.317587
+0x3ea29ab8
+// 0.907130
+0x3f6839b0
+// 0.602646
+0x3f1a4706
+// 0.501640
+0x3f006b75
+// 0.492284
+0x3efc0cb6
+// 0.418016
+0x3ed60625
+// 0.881627
+0x3f61b248
+// 0.783447
+0x3f489003
+// 0.945613
+0x3f7213b2
+// 0.591089
+0x3f1751a4
+// 0.811603
+0x3f4fc534
+// 0.925229
+0x3f6cdbcf
+// 0.606216
+0x3f1b30ff
+// 0.972352
+0x3f78ec17
+// 0.355185
+0x3eb5dac7
+// 0.704344
+0x3f344fe1
+// 0.875126
+0x3f600841
+// 0.118622
+0x3df2f023
+// 0.132344
+0x3e078529
+// 0.741139
+0x3f3dbb4b
+// 0.856136
+0x3f5b2bb7
+// 0.802218
+0x3f4d5e28
+// 0.929642
+0x3f6dfd09
+// 0.490143
+0x3efaf402
+// 0.151195
+0x3e1ad2d9
+// 0.749767
+0x3f3ff0c1
+// 0.916186
+0x3f6a8b23
+// 0.219383
+0x3e60a5d4
+// 0.706207
+0x3f34ca00
+// 0.577044
+0x3f13b928
+// 0.141545
+0x3e10f142
+// 0.208944
+0x3e55f578
+// 0.672739
+0x3f2c38a1
+// 0.944317
+0x3f71bebc
+// 0.788616
+0x3f49e2b8
+// 0.774650
+0x3f464f7d
+// 0.758170
+0x3f42176c
+// 0.326917
+0x3ea761b7
+// 0.848263
+0x3f5927c7
+// 0.582809
+0x3f1532f2
+// 0.717000
+0x3f378d54
+// 0.313186
+0x3ea059e1
+// 0.406234
+0x3ecffde4
+// 0.395484
+0x3eca7ce5
+// 0.827912
+0x3f53f20c
+// 0.306999
+0x3e9d2ef1
+// 0.019439
+0x3c9f3f30
+// 0.676427
+0x3f2d2a55
+// 0.330369
+0x3ea92624
+// 0.037281
+0x3d18b407
+// 0.876654
+0x3f606c66
+// 0.056877
+0x3d68f7fe
+// 0.587940
+0x3f168334
+// 0.767870
+0x3f449327
+// 0.047261
+0x3d4194b3
+// 0.661801
+0x3f296bce
+// 0.513167
+0x3f035eea
+// 0.452386
+0x3ee79f20
+// 0.910893
+0x3f693050
+// 0.241483
+0x3e774730
+// 0.888567
+0x3f637925
+// 0.323500
+0x3ea5a1c8
+// 0.483063
+0x3ef75415
+// 0.300784
+0x3e9a0068
+// 0.396763
+0x3ecb247e
+// 0.644839
+0x3f25142a
+// 0.916615
+0x3f6aa74a
+// 0.955203
+0x3f748830
+// 0.613836
+0x3f1d2455
+// 0.739957
+0x3f3d6dd4
+// 0.915784
+0x3f6a70d7
+// 0.163047
+0x3e26f5d8
+// 0.855371
+0x3f5af99d
+// 0.403682
+0x3eceaf6c
+// 0.489827
+0x3efacaa6
+// 0.656834
+0x3f28264d
+// 0.575497
+0x3f1353be
+// 0.764102
+0x3f439c2f
+// 0.161081
+0x3e24f26d
+// 0.728914
+0x3f3a9a1b
+// 0.788219
+0x3f49c8c1
+// 0.794474
+0x3f4b62a8
+// 0.172812
+0x3e30f5b2
+// 0.341967
+0x3eaf1641
+// 0.609271
+0x3f1bf934
+// 0.623693
+0x3f1faa59
+// 0.771416
+0x3f457b7f
+// 0.047600
+0x3d42f82a
+// 0.623865
+0x3f1fb59c
+// 0.022077
+0x3cb4dba6
+// 0.532831
+0x3f086797
+// 0.214766
+0x3e5bebb6
+// 0.471146
+0x3ef13a04
+// 0.466721
+0x3eeef61e
+// 0.721816
+0x3f38c8f1
+// 0.240768
+0x3e768bdf
+// 0.874352
+0x3f5fd582
+// 0.783958
+0x3f48b174
+// 0.723128
+0x3f391ee4
+// 0.720801
+0x3f388666
+// 0.998727
+0x3f7fac99
+// 0.281763
+0x3e904331
+// 0.367698
+0x3ebc42db
+// 0.926724
+0x3f6d3dcf
+// 0.755759
+0x3f41796d
+// 0.931392
+0x3f6e6fb8
+// 0.561158
+0x3f0fa815
+// 0.558134
+0x3f0ee1e0
+// 0.851205
+0x3f59e895
+// 0.627630
+0x3f20ac55
+// 0.559003
+0x3f0f1ad2
+// 0.963032
+0x3f76894a
+// 0.536265
+0x3f0948a8
+// 0.633061
+0x3f221041
+// 0.575833
+0x3f1369c9
+// 0.777304
+0x3f46fd69
+// 0.700969
+0x3f3372b6
+// 0.328973
+0x3ea86f17
+// 0.968193
+0x3f77db84
+// 0.156929
+0x3e20b1e8
+// 0.763198
+0x3f4360f9
+// 0.297671
+0x3e98685c
+// 0.830064
+0x3f547f17
+// 0.051623
+0x3d537295
+// 0.130687
+0x3e05d2c9
+// 0.252962
+0x3e81844c
+// 0.042967
+0x3d2ffe3a
+// 0.777896
+0x3f47242f
+// 0.902479
+0x3f6708dc
+// 0.873017
+0x3f5f7e10
+// 0.536232
+0x3f094687
+// 0.041184
+0x3d28b078
+// 0.943566
+0x3f718d91
+// 0.003987
+0x3b82a4d7
+// 0.704458
+0x3f345757
+// 0.223443
+0x3e64ce2e
+// 0.907800
+0x3f68658f
+// 0.251852
+0x3e80f2cc
+// 0.528127
+0x3f073356
+// 0.479863
+0x3ef5b0aa
+// 0.814917
+0x3f509e69
+// 0.132366
+0x3e078b07
+// 0.577587
+0x3f13dcb9
+// 0.876920
+0x3f607dd1
+// 0.257250
+0x3e83b640
+// 0.161514
+0x3e2563ff
+// 0.010103
+0x3c258797
+// 0.348125
+0x3eb23d6b
+// 0.279227
+0x3e8ef6cc
+// 0.493604
+0x3efcb9ac
+// 0.903131
+0x3f673392
+// 0.841607
+0x3f577397
+// 0.897604
+0x3f65c95b
+// 0.162969
+0x3e26e15c
+// 0.182143
+0x3e3a83cb
+// 0.291846
+0x3e956ccc
+// 0.529414
+0x3f0787b3
+// 0.279778
+0x3e8f3f20
+// 0.793678
+0x3f4b2e7b
+// 0.180523
+0x3e38db26
+// 0.239710
+0x3e757693
+// 0.156074
+0x3e1fd1f6
+// 0.893533
+0x3f64be9c
+// 0.383075
+0x3ec4226d
+// 0.018936
+0x3c9b1fdb
+// 0.109723
+0x3de0b690
+// 0.138808
+0x3e0e23a2
+// 0.093839
+0x3dc02e8b
+// 0.308488
+0x3e9df223
+// 0.202894
+0x3e4fc356
+// 0.714204
+0x3f36d60b
+// 0.001260
+0x3aa52dd9
+// 0.873521
+0x3f5f9f19
+// 0.347832
+0x3eb21718
+// 0.799217
+0x3f4c997e
+// 0.579566
+0x3f145e75
+// 0.469507
+0x3ef0633d
+// 0.761648
+0x3f42fb62
+// 0.367605
+0x3ebc36bf
+// 0.721070
+0x3f38980e
+// 0.500542
+0x3f00238c
+// 0.350121
+0x3eb3431b
+// 0.792690
+0x3f4aedbc
+// 0.594575
+0x3f183617
+// 0.880473
+0x3f6166a8
+// 0.920730
+0x3f6bb4f1
+// 0.321646
+0x3ea4aed9
+// 0.814366
+0x3f507a4b
+// 0.219176
+0x3e606f8f
+// 0.972050
+0x3f78d843
+// 0.836059
+0x3f5607ef
+// 0.182237
+0x3e3a9c66
+// 0.573722
+0x3f12df73
+// 0.805522
+0x3f4e36a9
+// 0.334338
+0x3eab2e62
+// 0.382353
+0x3ec3c3bd
+// 0.237190
+0x3e72e1d1
+// 0.860557
+0x3f5c4d7a
+// 0.253948
+0x3e82057b
+// 0.652954
+0x3f2727fc
+// 0.443155
+0x3ee2e53a
+// 0.582058
+0x3f1501c7
+// 0.528825
+0x3f076112
+// 0.662503
+0x3f2999cd
+// 0.840235
+0x3f5719a5
+// 0.158641
+0x3e2272ca
+// 0.853623
+0x3f5a8708
+// 0.575882
+0x3f136cfc
+// 0.913521
+0x3f69dc87
+// 0.159152
+0x3e22f8b5
+// 0.356372
+0x3eb67673
+// 0.780639
+0x3f47d7f3
+// 0.402812
+0x3ece3d57
+// 0.871107
+0x3f5f00e2
+// 0.408481
+0x3ed1245c
+// 0.964066
+0x3f76cd0a
+// 0.627118
+0x3f208ac7
+// 0.048145
+0x3d453342
+// 0.195488
+0x3e482dff
+// 0.936085
+0x3f6fa340
+// 0.055442
+0x3d63173a
+// 0.000915
+0x3a6ff618
+// 0.224496
+0x3e65e260
+// 0.357639
+0x3eb71c67
+// 0.153398
+0x3e1d1448
+// 0.574098
+0x3f12f81a
+// 0.441722
+0x3ee22959
+// 0.149872
+0x3e19780c
+// 0.925266
+0x3f6cde41
+// 0.626038
+0x3f204404
+// 0.633525
+0x3f222eb7
+// 0.541790
+0x3f0ab2b9
+// 0.857965
+0x3f5ba391
+// 0.109882
+0x3de10a0f
+// 0.295157
+0x3e971ed9
+// 0.842300
+0x3f57a0fa
+// 0.438793
+0x3ee0a974
+// 0.633709
+0x3f223ac9
+// 0.932110
+0x3f6e9eca
+// 0.924173
+0x3f6c96a2
+// 0.660045
+0x3f28f8b4
+// 0.418182
+0x3ed61bf5
+// 0.078914
+0x3da19dc8
+// 0.260595
+0x3e856cc2
+// 0.855972
+0x3f5b20fc
+// 0.060760
+0x3d78dfef
+// 0.330701
+0x3ea951a0
+// 0.635551
+0x3f22b37a
+// 0.785755
+0x3f49273e
+// 0.620247
+0x3f1ec888
+// 0.305242
+0x3e9c48aa
+// 0.683108
+0x3f2ee023
+// 0.231464
+0x3e6d04de
+// 0.264393
+0x3e875e78
+// 0.635567
+0x3f22b48a
+// 0.772475
+0x3f45c0e7
+// 0.756553
+0x3f41ad7b
+// 0.025900
+0x3cd42baa
+// 0.049302
+0x3d49f068
+// 0.039333
+0x3d211bb1
+// 0.508480
+0x3f022bc4
+// 0.615273
+0x3f1d828e
+// 0.018554
+0x3c97ff88
+// 0.235110
+0x3e70c0c6
+// 0.951786
+0x3f73a83c
+// 0.762933
+0x3f434f97
+// 0.153630
+0x3e1d5148
+// 0.650653
+0x3f269130
+// 0.051672
+0x3d53a5f8
+// 0.287451
+0x3e932cbd
+// 0.878586
+0x3f60eafd
+// 0.294360
+0x3e96b66a
+// 0.440727
+0x3ee1a6ff
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/SupportBarF32/Ref1_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/SupportBarF32/Ref1_f32.txt
index 1622b78..93014da 100755
--- a/CMSIS/DSP/Testing/Patterns/DSP/SupportBarF32/Ref1_f32.txt
+++ b/CMSIS/DSP/Testing/Patterns/DSP/SupportBarF32/Ref1_f32.txt
@@ -1,136 +1,136 @@
 W
 67
-// 0.559878
-0x3f0f542d
-// 0.585454
-0x3f15e04e
-// 0.492499
-0x3efc28e4
-// 0.449032
-0x3ee5e787
-// 0.385893
-0x3ec593bc
-// 0.420280
-0x3ed72eec
-// 0.400310
-0x3eccf57b
-// 0.614750
-0x3f1d603c
-// 0.473568
-0x3ef2778b
-// 0.347829
-0x3eb216a0
-// 0.686953
-0x3f2fdc27
-// 0.571618
-0x3f125596
-// 0.681641
-0x3f2e7fff
-// 0.148905
-0x3e187a6d
-// 0.604157
-0x3f1aaa02
-// 0.439170
-0x3ee0dae3
-// 0.698104
-0x3f32b6ed
-// 0.678908
-0x3f2dccea
-// 0.228072
-0x3e698bbb
-// 0.174486
-0x3e32ac65
-// 0.319483
-0x3ea39345
-// 0.398938
-0x3ecc41a7
-// 0.614460
-0x3f1d4d3d
-// 0.486926
-0x3ef94e62
-// 0.499551
-0x3effc523
-// 0.355033
-0x3eb5c6df
-// 0.281067
-0x3e8fe805
-// 0.440111
-0x3ee1563b
-// 0.540498
-0x3f0a5e17
-// 0.376198
-0x3ec09cfb
-// 0.654702
-0x3f279a87
-// 0.420753
-0x3ed76cf7
-// 0.547592
-0x3f0c2efc
-// 0.481569
-0x3ef69026
-// 0.455937
-0x3ee97087
-// 0.380431
-0x3ec2c7e0
-// 0.725685
-0x3f39c67a
-// 0.622322
-0x3f1f5087
-// 0.314591
-0x3ea11214
-// 0.449233
-0x3ee601e2
-// 0.585362
-0x3f15da47
-// 0.466328
-0x3eeec282
-// 0.610593
-0x3f1c4fd9
-// 0.674908
-0x3f2cc6c2
-// 0.679146
-0x3f2ddc7c
-// 0.444889
-0x3ee3c88c
-// 0.597607
-0x3f18fcc7
-// 0.617882
-0x3f1e2d82
-// 0.495462
-0x3efdad29
-// 0.403872
-0x3ecec85b
-// 0.537412
-0x3f0993d4
-// 0.561653
-0x3f0fc87b
-// 0.448801
-0x3ee5c93a
-// 0.628857
-0x3f20fcca
-// 0.466694
-0x3eeef290
-// 0.649631
-0x3f264e3d
-// 0.507202
-0x3f01d800
-// 0.417461
-0x3ed5bd6a
-// 0.263895
-0x3e871d41
-// 0.402715
-0x3ece309d
-// 0.654568
-0x3f2791bd
-// 0.461800
-0x3eec710e
-// 0.388539
-0x3ec6ee97
-// 0.447489
-0x3ee51d4e
-// 0.430088
-0x3edc3478
-// 0.458576
-0x3eeaca73
-// 0.653474
-0x3f274a18
+// 0.596808
+0x3f18c86f
+// 0.796050
+0x3f4bc9f5
+// 0.801370
+0x3f4d2692
+// 0.738276
+0x3f3cffa0
+// 0.614401
+0x3f1d495b
+// 0.547164
+0x3f0c12ee
+// 0.474666
+0x3ef30774
+// 0.432130
+0x3edd4019
+// 0.420265
+0x3ed72d08
+// 0.568646
+0x3f1192ce
+// 0.709796
+0x3f35b532
+// 0.499295
+0x3effa399
+// 0.133793
+0x3e0900f5
+// 0.416822
+0x3ed569bd
+// 0.539315
+0x3f0a1091
+// 0.594493
+0x3f1830b5
+// 0.668246
+0x3f2b122a
+// 0.560381
+0x3f0f751d
+// 0.442629
+0x3ee2a039
+// 0.471084
+0x3ef131f6
+// 0.349558
+0x3eb2f935
+// 0.550835
+0x3f0d0381
+// 0.381200
+0x3ec32cb3
+// 0.439638
+0x3ee1182f
+// 0.365433
+0x3ebb1a13
+// 0.472631
+0x3ef1fcc1
+// 0.508219
+0x3f021aac
+// 0.518392
+0x3f04b551
+// 0.656716
+0x3f281e83
+// 0.595974
+0x3f1891c4
+// 0.435007
+0x3edeb937
+// 0.567822
+0x3f115cc5
+// 0.584904
+0x3f15bc43
+// 0.485141
+0x3ef8646e
+// 0.699624
+0x3f331a8d
+// 0.565857
+0x3f10dc0a
+// 0.457726
+0x3eea5b03
+// 0.672618
+0x3f2c30ba
+// 0.799877
+0x3f4cc4b6
+// 0.528268
+0x3f073c99
+// 0.754116
+0x3f410db9
+// 0.658600
+0x3f289a03
+// 0.361144
+0x3eb8e7cf
+// 0.488775
+0x3efa40c8
+// 0.771961
+0x3f459f44
+// 0.463524
+0x3eed530b
+// 0.569758
+0x3f11dbad
+// 0.408365
+0x3ed11547
+// 0.679229
+0x3f2de1fc
+// 0.311130
+0x3e9f4c72
+// 0.695238
+0x3f31fb18
+// 0.328946
+0x3ea86bad
+// 0.705453
+0x3f349899
+// 0.450900
+0x3ee6dc51
+// 0.680740
+0x3f2e44fb
+// 0.565020
+0x3f10a527
+// 0.444496
+0x3ee39506
+// 0.485820
+0x3ef8bd73
+// 0.443981
+0x3ee3518a
+// 0.671648
+0x3f2bf120
+// 0.330937
+0x3ea9709a
+// 0.563184
+0x3f102cd8
+// 0.712350
+0x3f365c8f
+// 0.400947
+0x3ecd48f8
+// 0.268236
+0x3e895642
+// 0.283435
+0x3e911e62
+// 0.510057
+0x3f02931b
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/SupportBarF32/Samples1_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/SupportBarF32/Samples1_f32.txt
index 6987aa6..e32d48a 100755
--- a/CMSIS/DSP/Testing/Patterns/DSP/SupportBarF32/Samples1_f32.txt
+++ b/CMSIS/DSP/Testing/Patterns/DSP/SupportBarF32/Samples1_f32.txt
@@ -1,3842 +1,3842 @@
 W
 1920
-// 0.422988
-0x3ed891f1
-// 0.870288
-0x3f5ecb36
-// 0.772983
-0x3f45e23f
-// 0.513012
-0x3f0354c9
-// 0.988298
-0x3f7d011e
-// 0.886596
-0x3f62f7f6
-// 0.764243
-0x3f43a56b
-// 0.223841
-0x3e653683
-// 0.952180
-0x3f73c212
-// 0.881733
-0x3f61b93f
-// 0.569076
-0x3f11aefd
-// 0.694672
-0x3f31d60d
-// 0.304354
-0x3e9bd445
-// 0.282626
-0x3e90b461
-// 0.108691
-0x3dde9954
-// 0.963234
-0x3f769682
-// 0.849209
-0x3f5965c7
-// 0.772864
-0x3f45da71
-// 0.979507
-0x3f7ac0f3
-// 0.315537
-0x3ea18e1c
-// 0.004323
-0x3b8da45e
-// 0.378063
-0x3ec1916c
-// 0.169400
-0x3e2d774d
-// 0.362542
-0x3eb99f0e
-// 0.811166
-0x3f4fa898
-// 0.093703
-0x3dbfe72d
-// 0.531837
-0x3f082678
-// 0.178881
-0x3e372c8d
-// 0.984680
-0x3f7c1405
-// 0.159315
-0x3e232397
-// 0.219602
-0x3e60df6a
-// 0.158327
-0x3e22207c
-// 0.360948
-0x3eb8ce20
-// 0.368730
-0x3ebcca29
-// 0.825121
-0x3f533b25
-// 0.172104
-0x3e303bf2
-// 0.106225
-0x3dd98c40
-// 0.646203
-0x3f256d96
-// 0.895585
-0x3f65450f
-// 0.716026
-0x3f374d7b
-// 0.997768
-0x3f7f6dbe
-// 0.855137
-0x3f5aea48
-// 0.762576
-0x3f433829
-// 0.076002
-0x3d9ba733
-// 0.636977
-0x3f2310e5
-// 0.264864
-0x3e879c4b
-// 0.148228
-0x3e17c917
-// 0.041368
-0x3d297117
-// 0.041917
-0x3d2bb15b
-// 0.620389
-0x3f1ed1cd
-// 0.988731
-0x3f7d1d74
-// 0.697210
-0x3f327c53
-// 0.245720
-0x3e7b9e14
-// 0.760694
-0x3f42bcd9
-// 0.944781
-0x3f71dd31
-// 0.536615
-0x3f095f93
-// 0.302172
-0x3e9ab65b
-// 0.865843
-0x3f5da7e1
-// 0.884616
-0x3f627639
-// 0.986734
-0x3f7c9a9b
-// 0.831992
-0x3f54fd74
-// 0.277692
-0x3e8e2d9d
-// 0.249539
-0x3e7f872e
-// 0.202638
-0x3e4f8039
-// 0.333610
-0x3eaaceef
-// 0.906000
-0x3f67efa6
-// 0.234252
-0x3e6fdfa8
-// 0.709610
-0x3f35a906
-// 0.307412
-0x3e9d6522
-// 0.334821
-0x3eab6da2
-// 0.271211
-0x3e8adc23
-// 0.968373
-0x3f77e753
-// 0.006616
-0x3bd8c862
-// 0.035283
-0x3d108559
-// 0.047934
-0x3d4456ac
-// 0.879313
-0x3f611aae
-// 0.191357
-0x3e43f331
-// 0.442978
-0x3ee2ce0a
-// 0.228227
-0x3e69b451
-// 0.620052
-0x3f1ebbbd
-// 0.775041
-0x3f466914
-// 0.146273
-0x3e15c88d
-// 0.727340
-0x3f3a32f5
-// 0.462530
-0x3eecd0af
-// 0.024930
-0x3ccc3a36
-// 0.441205
-0x3ee1e593
-// 0.727535
-0x3f3a3fb9
-// 0.099763
-0x3dcc5085
-// 0.847513
-0x3f58f6a0
-// 0.037572
-0x3d19e4e1
-// 0.717153
-0x3f379750
-// 0.499771
-0x3effe1f6
-// 0.416630
-0x3ed55084
-// 0.008773
-0x3c0fbd22
-// 0.317904
-0x3ea2c445
-// 0.015038
-0x3c766379
-// 0.778107
-0x3f473205
-// 0.488412
-0x3efa112a
-// 0.072524
-0x3d9487b8
-// 0.180748
-0x3e3915e6
-// 0.727283
-0x3f3a2f31
-// 0.953171
-0x3f740306
-// 0.056791
-0x3d689e13
-// 0.371195
-0x3ebe0d53
-// 0.156222
-0x3e1ff8ad
-// 0.172491
-0x3e30a173
-// 0.804478
-0x3f4df240
-// 0.774062
-0x3f4628ee
-// 0.870452
-0x3f5ed5ea
-// 0.920786
-0x3f6bb8a9
-// 0.431844
-0x3edd1aad
-// 0.483581
-0x3ef797ec
-// 0.845098
-0x3f585858
-// 0.494478
-0x3efd2c37
-// 0.570181
-0x3f11f75e
-// 0.782915
-0x3f486d23
-// 0.967623
-0x3f77b62a
-// 0.812205
-0x3f4feca8
-// 0.723151
-0x3f39206d
-// 0.056432
-0x3d672563
-// 0.976351
-0x3f79f227
-// 0.344627
-0x3eb072f7
-// 0.337946
-0x3ead073f
-// 0.290359
-0x3e94a9ff
-// 0.409968
-0x3ed1e74d
-// 0.937697
-0x3f700ce2
-// 0.517032
-0x3f045c2e
-// 0.811166
-0x3f4fa890
-// 0.816408
-0x3f510016
-// 0.082942
-0x3da9dd3d
-// 0.716878
-0x3f37854f
-// 0.316891
-0x3ea23f81
-// 0.439194
-0x3ee0de0f
-// 0.600820
-0x3f19cf5f
-// 0.716575
-0x3f377179
-// 0.277195
-0x3e8dec8a
-// 0.412950
-0x3ed36e24
-// 0.888334
-0x3f6369da
-// 0.668292
-0x3f2b152b
-// 0.642574
-0x3f247fb7
-// 0.344682
-0x3eb07a2c
-// 0.089358
-0x3db70134
-// 0.961938
-0x3f764197
-// 0.924267
-0x3f6c9cc7
-// 0.989311
-0x3f7d437d
-// 0.263084
-0x3e86b2f1
-// 0.838632
-0x3f56b09d
-// 0.400164
-0x3ecce25a
-// 0.004920
-0x3ba134dd
-// 0.645066
-0x3f25230a
-// 0.952218
-0x3f73c48d
-// 0.496667
-0x3efe4b26
-// 0.269171
-0x3e89d0bb
-// 0.291832
-0x3e956b0d
-// 0.274698
-0x3e8ca539
-// 0.839642
-0x3f56f2cb
-// 0.772857
-0x3f45d9f5
-// 0.767010
-0x3f445acd
-// 0.956903
-0x3f74f797
-// 0.831563
-0x3f54e14f
-// 0.300789
-0x3e9a00fb
-// 0.335170
-0x3eab9b5f
-// 0.135137
-0x3e0a6149
-// 0.702123
-0x3f33be53
-// 0.928929
-0x3f6dce47
-// 0.926908
-0x3f6d49d4
-// 0.784822
-0x3f48ea1f
-// 0.465155
-0x3eee28cb
-// 0.968577
-0x3f77f4b1
-// 0.448328
-0x3ee58b37
-// 0.443654
-0x3ee3268f
-// 0.945777
-0x3f721e6c
-// 0.927251
-0x3f6d6058
-// 0.958047
-0x3f75428f
-// 0.965184
-0x3f771652
-// 0.232300
-0x3e6de00c
-// 0.723600
-0x3f393dd7
-// 0.523958
-0x3f062214
-// 0.005140
-0x3ba86fbc
-// 0.009301
-0x3c1863a5
-// 0.962122
-0x3f764da8
-// 0.638545
-0x3f2377b0
-// 0.047999
-0x3d449a7a
-// 0.937925
-0x3f701bde
-// 0.195531
-0x3e483936
-// 0.414158
-0x3ed40c93
-// 0.315374
-0x3ea178c1
-// 0.328827
-0x3ea85bf9
-// 0.559962
-0x3f0f59b2
-// 0.747018
-0x3f3f3c94
-// 0.637683
-0x3f233f29
-// 0.086375
-0x3db0e554
-// 0.774162
-0x3f462f78
-// 0.957753
-0x3f752f50
-// 0.270271
-0x3e8a60fe
-// 0.837752
-0x3f5676f0
-// 0.031882
-0x3d029682
-// 0.157944
-0x3e21bc27
-// 0.052060
-0x3d553ca2
-// 0.920566
-0x3f6baa34
-// 0.376901
-0x3ec0f91e
-// 0.498832
-0x3eff66dc
-// 0.881939
-0x3f61c6c5
-// 0.321690
-0x3ea4b488
-// 0.162807
-0x3e26b6e7
-// 0.720825
-0x3f3887fb
-// 0.367228
-0x3ebc0552
-// 0.940470
-0x3f70c2a4
-// 0.954528
-0x3f745bf5
-// 0.325953
-0x3ea6e347
-// 0.783167
-0x3f487da6
-// 0.135952
-0x3e0b371f
-// 0.478194
-0x3ef4d5cf
-// 0.068705
-0x3d8cb56f
-// 0.003997
-0x3b82fba8
-// 0.346775
-0x3eb18c86
-// 0.777727
-0x3f471921
-// 0.535159
-0x3f090030
-// 0.381307
-0x3ec33aa4
-// 0.744446
-0x3f3e940a
-// 0.788434
-0x3f49d6c8
-// 0.260825
-0x3e858ae6
-// 0.525015
-0x3f06676a
-// 0.957232
-0x3f750d24
-// 0.730499
-0x3f3b01f4
-// 0.798429
-0x3f4c65d7
-// 0.066027
-0x3d87391e
-// 0.718846
-0x3f380648
-// 0.965013
-0x3f770b10
-// 0.939757
-0x3f7093ea
-// 0.924192
-0x3f6c97d2
-// 0.949863
-0x3f732a3b
-// 0.085053
-0x3dae3014
-// 0.400818
-0x3ecd37ff
-// 0.078868
-0x3da18578
-// 0.179492
-0x3e37ccba
-// 0.982977
-0x3f7ba45a
-// 0.103443
-0x3dd3d9aa
-// 0.634453
-0x3f226b88
-// 0.625435
-0x3f201c80
-// 0.023726
-0x3cc25dc5
-// 0.623109
-0x3f1f8416
-// 0.128786
-0x3e03e08e
-// 0.761835
-0x3f43079e
-// 0.058064
-0x3d6dd4f1
-// 0.045343
-0x3d39b941
-// 0.847006
-0x3f58d563
-// 0.135804
-0x3e0b103d
-// 0.372009
-0x3ebe77f9
-// 0.387257
-0x3ec6468d
-// 0.640192
-0x3f23e39e
-// 0.033422
-0x3d08e5dd
-// 0.114389
-0x3dea44f1
-// 0.162746
-0x3e26a6f6
-// 0.365748
-0x3ebb4355
-// 0.276909
-0x3e8dc6f5
-// 0.821557
-0x3f525196
-// 0.523261
-0x3f05f46c
+// 0.946458
+0x3f724b14
+// 0.720305
+0x3f3865e2
+// 0.586459
+0x3f162234
+// 0.895798
+0x3f655302
+// 0.850455
+0x3f59b769
+// 0.174952
+0x3e3326bf
+// 0.754906
+0x3f414184
+// 0.699186
+0x3f32fde1
+// 0.761129
+0x3f42d960
+// 0.960656
+0x3f75ed87
+// 0.453416
+0x3ee8261a
+// 0.409805
+0x3ed1d1fa
+// 0.820393
+0x3f52054f
+// 0.170311
+0x3e2e660e
+// 0.263564
+0x3e86f1cf
+// 0.613708
+0x3f1d1bfc
+// 0.969071
+0x3f78150a
+// 0.892893
+0x3f6494a7
+// 0.904532
+0x3f678f6e
+// 0.996926
+0x3f7f368c
+// 0.506293
+0x3f019c70
+// 0.026276
+0x3cd740f6
+// 0.917064
+0x3f6ac4b5
+// 0.639200
+0x3f23a2a0
+// 0.569177
+0x3f11b59d
+// 0.879753
+0x3f61377c
+// 0.402181
+0x3ecdeab8
+// 0.960229
+0x3f75d18a
+// 0.614749
+0x3f1d602e
+// 0.858815
+0x3f5bdb51
+// 0.534638
+0x3f08de06
+// 0.852230
+0x3f5a2bc7
+// 0.173490
+0x3e31a77d
+// 0.154887
+0x3e1e9a9e
+// 0.927475
+0x3f6d6eff
+// 0.782090
+0x3f48370c
+// 0.734396
+0x3f3c0165
+// 0.635318
+0x3f22a43c
+// 0.298854
+0x3e99036d
+// 0.469966
+0x3ef09f72
+// 0.432714
+0x3edd8caf
+// 0.887389
+0x3f632bea
+// 0.016346
+0x3c85e740
+// 0.933880
+0x3f6f12c2
+// 0.911226
+0x3f69461f
+// 0.544321
+0x3f0b58a6
+// 0.239808
+0x3e759038
+// 0.604135
+0x3f1aa894
+// 0.975814
+0x3f79ceee
+// 0.833347
+0x3f55563e
+// 0.097701
+0x3dc81770
+// 0.133130
+0x3e085344
+// 0.405577
+0x3ecfa7c8
+// 0.291970
+0x3e957d13
+// 0.703928
+0x3f343499
+// 0.629404
+0x3f2120a7
+// 0.663093
+0x3f29c07e
+// 0.940506
+0x3f70c502
+// 0.861130
+0x3f5c7302
+// 0.949877
+0x3f732b2a
+// 0.083961
+0x3dabf3ff
+// 0.161024
+0x3e24e388
+// 0.249414
+0x3e7f6655
+// 0.248761
+0x3e7ebb45
+// 0.714466
+0x3f36e737
+// 0.615645
+0x3f1d9ae1
+// 0.973482
+0x3f793620
+// 0.421935
+0x3ed807e2
+// 0.664443
+0x3f2a18f1
+// 0.242813
+0x3e78a3e3
+// 0.979206
+0x3f7aad3e
+// 0.440811
+0x3ee1b1eb
+// 0.630274
+0x3f2159a1
+// 0.393402
+0x3ec96c07
+// 0.205722
+0x3e52a8b3
+// 0.736975
+0x3f3caa62
+// 0.193356
+0x3e45ff3a
+// 0.025742
+0x3cd2e0e0
+// 0.681556
+0x3f2e7a6d
+// 0.470765
+0x3ef1081b
+// 0.315974
+0x3ea1c763
+// 0.372961
+0x3ebef4b6
+// 0.154568
+0x3e1e4718
+// 0.633229
+0x3f221b46
+// 0.746893
+0x3f3f3469
 // 0.329865
-0x3ea8e40a
-// 0.870529
-0x3f5edafd
-// 0.763951
-0x3f43924f
-// 0.624622
-0x3f1fe73c
-// 0.040143
-0x3d246d2d
-// 0.225376
-0x3e66c90a
-// 0.509216
-0x3f025c01
-// 0.076245
-0x3d9c264c
-// 0.276155
-0x3e8d6433
-// 0.205458
-0x3e5263b2
-// 0.331687
-0x3ea9d2d8
-// 0.834437
-0x3f559dad
-// 0.316745
-0x3ea22c5a
-// 0.830388
-0x3f549450
-// 0.573956
-0x3f12eec8
-// 0.682319
-0x3f2eac74
-// 0.624102
-0x3f1fc52c
-// 0.299390
-0x3e99499e
-// 0.137464
-0x3e0cc36a
-// 0.064716
-0x3d8489d9
-// 0.974629
-0x3f798142
-// 0.715899
-0x3f374524
-// 0.271979
-0x3e8b40db
-// 0.089365
-0x3db704f9
-// 0.552129
-0x3f0d584c
-// 0.083037
-0x3daa0f60
-// 0.672343
-0x3f2c1ea9
-// 0.718963
-0x3f380df2
-// 0.657439
-0x3f284df3
-// 0.780804
-0x3f47e2c5
-// 0.574445
-0x3f130ed7
-// 0.527777
-0x3f071c62
-// 0.265736
-0x3e880e88
-// 0.469564
-0x3ef06ab5
-// 0.569950
-0x3f11e841
-// 0.636530
-0x3f22f3a3
-// 0.836334
-0x3f5619f5
-// 0.522061
-0x3f05a5cb
-// 0.837194
-0x3f565256
-// 0.456068
-0x3ee981cf
-// 0.038332
-0x3d1d01d8
-// 0.054468
-0x3d5f1968
-// 0.451063
-0x3ee6f1ba
-// 0.105893
-0x3dd8de8a
-// 0.914710
-0x3f6a2a76
-// 0.644341
-0x3f24f382
-// 0.164456
-0x3e286706
-// 0.120556
-0x3df6e642
-// 0.547943
-0x3f0c45fd
-// 0.631460
-0x3f21a765
-// 0.928860
-0x3f6dc9c9
-// 0.013542
-0x3c5de0d9
-// 0.084557
-0x3dad2c0e
-// 0.761033
-0x3f42d309
-// 0.886240
-0x3f62e099
-// 0.059871
-0x3d753ad1
-// 0.691633
-0x3f310ed5
-// 0.526855
-0x3f06dfff
-// 0.315792
-0x3ea1af75
-// 0.289699
-0x3e945368
-// 0.786405
-0x3f4951d0
-// 0.807970
-0x3f4ed71f
-// 0.840264
-0x3f571b90
-// 0.263537
-0x3e86ee49
-// 0.432923
-0x3edda81e
-// 0.944511
-0x3f71cb77
-// 0.109068
-0x3ddf5eca
-// 0.795716
-0x3f4bb406
-// 0.195081
-0x3e47c334
-// 0.666971
-0x3f2abea4
-// 0.770502
-0x3f453f99
-// 0.988080
-0x3f7cf2d1
-// 0.054758
-0x3d6049fa
-// 0.977560
-0x3f7a4162
-// 0.514144
-0x3f039ef9
-// 0.816355
-0x3f50fca4
-// 0.831853
-0x3f54f44d
-// 0.387995
-0x3ec6a73e
-// 0.523692
-0x3f0610b2
-// 0.352461
-0x3eb475be
-// 0.414339
-0x3ed42444
-// 0.452700
-0x3ee7c85c
-// 0.197042
-0x3e49c580
-// 0.904680
-0x3f679916
-// 0.023939
-0x3cc41ab5
-// 0.047918
-0x3d4445f3
-// 0.377181
-0x3ec11dda
-// 0.824289
-0x3f53049c
-// 0.957229
-0x3f750cf2
-// 0.642847
-0x3f249197
-// 0.976431
-0x3f79f76a
-// 0.046323
-0x3d3dbd10
-// 0.074564
-0x3d98b4fb
-// 0.139198
-0x3e0e89d9
-// 0.080914
-0x3da5b612
-// 0.969742
-0x3f784102
-// 0.015232
-0x3c798e4e
-// 0.249331
-0x3e7f5089
-// 0.766876
-0x3f4451f5
-// 0.463892
-0x3eed8338
-// 0.823192
-0x3f52bcb6
-// 0.946605
-0x3f7254b7
-// 0.397227
-0x3ecb6163
-// 0.776530
-0x3f46caad
+0x3ea8e41b
+// 0.294706
+0x3e96e3c4
+// 0.508763
+0x3f023e50
+// 0.215496
+0x3e5caaf5
+// 0.399092
+0x3ecc55c1
+// 0.345581
+0x3eb0f001
+// 0.850128
+0x3f59a204
 // 0.228052
-0x3e698682
-// 0.539280
-0x3f0a0e39
-// 0.506796
-0x3f01bd64
-// 0.481703
-0x3ef6a1cd
-// 0.034456
-0x3d0d2208
-// 0.099977
-0x3dccc0b5
-// 0.234947
-0x3e7095f6
-// 0.515499
-0x3f03f7b6
-// 0.245665
-0x3e7b8f8e
-// 0.570950
-0x3f1229c5
-// 0.698005
-0x3f32b07d
-// 0.208545
-0x3e558cf1
-// 0.884024
-0x3f624f65
-// 0.114414
-0x3dea5212
-// 0.105903
-0x3dd8e3b3
-// 0.939327
-0x3f7077b6
-// 0.309944
-0x3e9eb0ed
-// 0.808249
-0x3f4ee96e
-// 0.378414
-0x3ec1bf70
-// 0.120579
-0x3df6f206
-// 0.284719
-0x3e91c6aa
-// 0.731797
-0x3f3b5710
-// 0.816823
-0x3f511b51
-// 0.495402
-0x3efda551
-// 0.727837
-0x3f3a538e
-// 0.908863
-0x3f68ab40
-// 0.927651
-0x3f6d7a81
-// 0.306653
-0x3e9d0197
-// 0.027090
-0x3cddeae5
-// 0.349245
-0x3eb2d037
-// 0.383013
-0x3ec41a3a
-// 0.864710
-0x3f5d5da0
-// 0.977015
-0x3f7a1dab
-// 0.004793
-0x3b9d0c31
-// 0.260252
-0x3e853fb1
-// 0.402405
-0x3ece080e
-// 0.615744
-0x3f1da161
-// 0.077392
-0x3d9e7fd3
-// 0.326286
-0x3ea70ef2
-// 0.277060
-0x3e8ddabe
-// 0.375558
-0x3ec04925
-// 0.940745
-0x3f70d4a8
-// 0.093213
-0x3dbee69a
-// 0.143905
-0x3e135bc3
-// 0.176384
-0x3e349e12
-// 0.394536
-0x3eca00af
-// 0.888156
-0x3f635e29
-// 0.076583
-0x3d9cd7c4
-// 0.795470
-0x3f4ba3f4
-// 0.972293
-0x3f78e82d
-// 0.798751
-0x3f4c7af2
-// 0.823298
-0x3f52c3ae
-// 0.726940
-0x3f3a18c3
-// 0.275957
-0x3e8d4a38
-// 0.710351
-0x3f35d997
-// 0.792396
-0x3f4ada79
-// 0.122688
-0x3dfb43e1
-// 0.701443
-0x3f3391c9
-// 0.201178
-0x3e4e017d
-// 0.803577
-0x3f4db73d
-// 0.550418
-0x3f0ce838
-// 0.497073
-0x3efe8069
-// 0.609056
-0x3f1beb1c
-// 0.678428
-0x3f2dad70
-// 0.340119
-0x3eae240e
-// 0.053038
-0x3d593eb7
-// 0.921544
-0x3f6bea56
-// 0.423090
-0x3ed89f39
-// 0.813810
-0x3f5055d3
-// 0.710526
-0x3f35e505
-// 0.863897
-0x3f5d2861
-// 0.641264
-0x3f2429e5
-// 0.557821
-0x3f0ecd58
-// 0.679941
-0x3f2e10a1
-// 0.906983
-0x3f68300f
-// 0.221062
-0x3e625e04
-// 0.830960
-0x3f54b9cb
-// 0.771750
-0x3f459167
-// 0.774692
-0x3f465232
-// 0.691050
-0x3f30e8a8
-// 0.376146
-0x3ec09637
-// 0.175311
-0x3e3384a4
-// 0.315347
-0x3ea1751a
-// 0.697910
-0x3f32aa3f
-// 0.688145
-0x3f302a48
-// 0.838807
-0x3f56bc12
-// 0.402004
-0x3ecdd368
-// 0.293220
-0x3e9620e8
-// 0.086294
-0x3db0baf5
-// 0.198165
-0x3e4aebac
-// 0.421765
-0x3ed7f188
-// 0.899482
-0x3f664474
-// 0.417876
-0x3ed5f3dd
-// 0.830481
-0x3f549a60
-// 0.059862
-0x3d7531bb
-// 0.033458
-0x3d090b7c
-// 0.379501
-0x3ec24e04
-// 0.796412
-0x3f4be1a9
-// 0.202156
-0x3e4f01e6
-// 0.655603
-0x3f27d59d
-// 0.827379
-0x3f53cf1b
-// 0.985833
-0x3f7c5f94
-// 0.244437
-0x3e7a4da5
-// 0.710966
-0x3f3601e2
-// 0.454819
-0x3ee8de06
-// 0.952132
-0x3f73bef0
-// 0.563777
-0x3f1053b8
-// 0.656259
-0x3f28009e
-// 0.795804
-0x3f4bb9d4
-// 0.014596
-0x3c6f2321
-// 0.838523
-0x3f56a973
-// 0.120687
-0x3df72aaf
-// 0.048193
-0x3d4565d4
-// 0.689145
-0x3f306bc9
-// 0.314651
-0x3ea119f3
-// 0.066869
-0x3d88f2a5
-// 0.637002
-0x3f231294
-// 0.452762
-0x3ee7d064
-// 0.000530
-0x3a0b0356
-// 0.400532
-0x3ecd1298
-// 0.323425
-0x3ea597f9
-// 0.205655
-0x3e529749
-// 0.867854
-0x3f5e2ba7
-// 0.259050
-0x3e84a228
-// 0.958399
-0x3f7559ab
-// 0.439045
-0x3ee0ca85
-// 0.479602
-0x3ef58e5c
-// 0.737181
-0x3f3cb7e0
-// 0.379806
-0x3ec275f3
-// 0.509599
-0x3f02751b
-// 0.887341
-0x3f6328cc
-// 0.725403
-0x3f39b406
-// 0.325151
-0x3ea67a2f
-// 0.427002
-0x3edaa009
-// 0.207274
-0x3e543f9b
-// 0.586787
-0x3f1637a6
-// 0.806130
-0x3f4e5e88
-// 0.347607
-0x3eb1f98b
-// 0.933830
-0x3f6f0f7e
-// 0.355948
-0x3eb63ee1
-// 0.083044
-0x3daa12cb
-// 0.141997
-0x3e116792
-// 0.753655
-0x3f40ef8d
-// 0.235421
-0x3e71124f
-// 0.218198
-0x3e5f6f5b
-// 0.499741
-0x3effde15
-// 0.735930
-0x3f3c65e1
-// 0.669089
-0x3f2b496c
-// 0.105522
-0x3dd81be5
-// 0.246895
-0x3e7cd20e
-// 0.559876
-0x3f0f540a
-// 0.183458
-0x3e3bdc81
-// 0.819991
-0x3f51eaec
-// 0.477802
-0x3ef4a271
-// 0.187608
-0x3e401c56
-// 0.266138
-0x3e884339
-// 0.260962
-0x3e859cd6
-// 0.926733
-0x3f6d3e61
-// 0.915446
-0x3f6a5aae
-// 0.613092
-0x3f1cf39e
-// 0.970609
-0x3f7879db
-// 0.712793
-0x3f36799b
-// 0.231537
-0x3e6d181c
-// 0.647717
-0x3f25d0cd
-// 0.402971
-0x3ece5244
-// 0.691500
-0x3f310627
-// 0.797348
-0x3f4c1eff
-// 0.178823
-0x3e371d43
-// 0.995680
-0x3f7ee4e4
-// 0.611383
-0x3f1c8398
-// 0.972715
-0x3f7903d2
-// 0.183289
-0x3e3baffc
-// 0.609423
-0x3f1c0321
-// 0.121421
-0x3df8ab74
-// 0.667191
-0x3f2acd0f
-// 0.290807
-0x3e94e4a1
-// 0.874895
-0x3f5ff91f
-// 0.733261
-0x3f3bb6fe
-// 0.088113
-0x3db47467
-// 0.961087
-0x3f7609d2
-// 0.295549
-0x3e975227
-// 0.486388
-0x3ef907d5
-// 0.701162
-0x3f337f62
-// 0.642822
-0x3f248ff7
-// 0.318254
-0x3ea2f223
-// 0.631135
-0x3f219213
-// 0.708860
-0x3f3577d2
-// 0.943334
-0x3f717e5d
-// 0.434474
-0x3ede735f
-// 0.801345
-0x3f4d24ed
-// 0.297336
-0x3e983c6f
-// 0.819738
-0x3f51da5c
-// 0.896879
-0x3f6599db
-// 0.180118
-0x3e3870e6
-// 0.057390
-0x3d6b1233
-// 0.005526
-0x3bb5148d
-// 0.945032
-0x3f71eda0
-// 0.247207
-0x3e7d23e2
-// 0.843995
-0x3f58100b
-// 0.823746
-0x3f52e105
-// 0.293159
-0x3e9618fe
-// 0.608568
-0x3f1bcb25
-// 0.821649
-0x3f52579b
-// 0.764722
-0x3f43c4cd
-// 0.141657
-0x3e110e77
-// 0.758280
-0x3f421e9e
-// 0.593919
-0x3f180b16
-// 0.870471
-0x3f5ed72c
-// 0.122605
-0x3dfb1878
-// 0.130020
-0x3e0523df
-// 0.342742
-0x3eaf7bee
-// 0.738772
-0x3f3d2031
-// 0.787096
-0x3f497f1c
-// 0.542574
-0x3f0ae626
-// 0.741255
-0x3f3dc2eb
-// 0.700672
-0x3f335f37
-// 0.290831
-0x3e94e7c3
-// 0.359015
-0x3eb7d0d0
-// 0.614986
-0x3f1d6fbd
-// 0.463630
-0x3eed60e1
-// 0.108655
-0x3dde869f
-// 0.354848
-0x3eb5aeb0
-// 0.157692
-0x3e217a20
-// 0.402282
-0x3ecdf7da
-// 0.783975
-0x3f48b295
-// 0.454286
-0x3ee89834
-// 0.299078
-0x3e9920bf
-// 0.733473
-0x3f3bc4dd
-// 0.030883
-0x3cfcfe9a
-// 0.587026
-0x3f164759
-// 0.716805
-0x3f37808d
-// 0.060702
-0x3d78a326
-// 0.141405
-0x3e10cc80
-// 0.832842
-0x3f55351d
-// 0.211566
-0x3e58a4c3
-// 0.928003
-0x3f6d9199
-// 0.250565
-0x3e804a0b
-// 0.761288
-0x3f42e3c3
-// 0.594219
-0x3f181ebe
-// 0.742730
-0x3f3e2392
-// 0.183776
-0x3e3c2fc1
-// 0.188806
-0x3e41566e
-// 0.098094
-0x3dc8e595
-// 0.932419
-0x3f6eb2fe
-// 0.123024
-0x3dfbf3e0
-// 0.060298
-0x3d76fb2e
-// 0.530248
-0x3f07be4d
-// 0.876349
-0x3f605861
-// 0.788168
-0x3f49c561
-// 0.509516
-0x3f026f9d
-// 0.531472
-0x3f080e91
-// 0.451556
-0x3ee7324e
-// 0.146368
-0x3e15e167
-// 0.167412
-0x3e2b6e09
-// 0.004750
-0x3b9ba33d
-// 0.023072
-0x3cbd01dd
-// 0.884470
-0x3f626c9c
-// 0.082462
-0x3da8e1ea
-// 0.158706
-0x3e2283d9
-// 0.488047
-0x3ef9e14d
-// 0.241482
-0x3e7746f0
-// 0.151942
-0x3e1b96bc
-// 0.932898
-0x3f6ed269
-// 0.177449
-0x3e35b537
-// 0.309869
-0x3e9ea735
-// 0.122600
-0x3dfb15a0
-// 0.522290
-0x3f05b4c6
-// 0.487154
-0x3ef96c35
-// 0.184535
-0x3e3cf6dd
-// 0.646522
-0x3f258279
-// 0.767118
-0x3f4461dc
-// 0.724302
-0x3f396bd7
-// 0.726084
-0x3f39e0a5
-// 0.363832
-0x3eba4822
-// 0.862378
-0x3f5cc4d5
-// 0.876925
-0x3f607e24
-// 0.970041
-0x3f785496
-// 0.411983
-0x3ed2ef65
-// 0.264359
-0x3e875a1d
-// 0.582473
-0x3f151cf9
-// 0.658149
-0x3f287c6d
-// 0.632245
-0x3f21dace
-// 0.246288
-0x3e7c32d5
-// 0.196405
-0x3e491e6f
-// 0.839763
-0x3f56fab8
-// 0.779820
-0x3f47a246
-// 0.469211
-0x3ef03c7b
-// 0.457510
-0x3eea3ebc
-// 0.322979
-0x3ea55d73
-// 0.135882
-0x3e0b248c
-// 0.716367
-0x3f3763d4
-// 0.567949
-0x3f116516
-// 0.612019
-0x3f1cad46
-// 0.014904
-0x3c742ff8
-// 0.059777
-0x3d74d859
-// 0.718937
-0x3f380c42
-// 0.592692
-0x3f17baaa
-// 0.732655
-0x3f3b8f4f
-// 0.609547
-0x3f1c0b48
-// 0.125030
-0x3e0007c2
-// 0.875468
-0x3f601eb0
-// 0.339311
-0x3eadba36
-// 0.653921
-0x3f276761
-// 0.875771
-0x3f60328c
-// 0.086894
-0x3db1f585
-// 0.629610
-0x3f212e1c
-// 0.379514
-0x3ec24fa7
-// 0.003834
-0x3b7b47de
-// 0.994283
-0x3f7e894e
-// 0.694659
-0x3f31d532
-// 0.583729
-0x3f156f42
-// 0.148367
-0x3e17ed9c
-// 0.185001
-0x3e3d70ff
-// 0.415238
-0x3ed49a07
-// 0.245396
-0x3e7b490a
-// 0.248810
-0x3e7ec803
-// 0.878863
-0x3f60fd28
-// 0.407633
-0x3ed0b53c
-// 0.582539
-0x3f152143
-// 0.496136
-0x3efe057c
-// 0.788340
-0x3f49d0a8
-// 0.055115
-0x3d61c060
-// 0.174130
-0x3e324f1f
-// 0.434695
-0x3ede9055
-// 0.446366
-0x3ee48a0b
-// 0.565031
-0x3f10a5dd
-// 0.538493
-0x3f09daa7
-// 0.976657
-0x3f7a062c
-// 0.467212
-0x3eef365c
-// 0.989520
-0x3f7d5135
-// 0.386729
-0x3ec60164
-// 0.017160
-0x3c8c93a4
-// 0.853313
-0x3f5a72be
-// 0.731103
-0x3f3b298d
-// 0.785288
-0x3f4908a0
-// 0.490692
-0x3efb3bf0
-// 0.698334
-0x3f32c60b
-// 0.167212
-0x3e2b39a1
-// 0.494923
-0x3efd6697
-// 0.758692
-0x3f4239a9
-// 0.370039
-0x3ebd75b7
-// 0.083591
-0x3dab31c3
-// 0.466805
-0x3eef0109
-// 0.997988
-0x3f7f7c2b
-// 0.100601
-0x3dce07bb
-// 0.098140
-0x3dc8fd9e
-// 0.750245
-0x3f401016
-// 0.925525
-0x3f6cef3b
-// 0.791369
-0x3f4a9728
-// 0.880643
-0x3f6171d5
-// 0.946128
-0x3f72356b
-// 0.201745
-0x3e4e961e
-// 0.556851
-0x3f0e8dcb
-// 0.486597
-0x3ef92345
-// 0.581267
-0x3f14cde4
-// 0.487048
-0x3ef95e61
-// 0.637141
-0x3f231ba7
-// 0.115572
-0x3decb116
-// 0.062811
-0x3d80a2dc
-// 0.343681
-0x3eaff6fc
-// 0.347408
-0x3eb1df82
-// 0.858444
-0x3f5bc303
-// 0.398190
-0x3ecbdf82
-// 0.897036
-0x3f65a42c
-// 0.118026
-0x3df1b7cc
-// 0.689498
-0x3f3082f9
-// 0.946195
-0x3f7239db
-// 0.162556
-0x3e267526
-// 0.268376
-0x3e8968a1
-// 0.635867
-0x3f22c82d
-// 0.520261
-0x3f052fda
-// 0.518722
-0x3f04caf2
-// 0.890337
-0x3f63ed1c
-// 0.729030
-0x3f3aa1ae
-// 0.204155
-0x3e510e07
-// 0.851609
-0x3f5a0304
-// 0.202797
-0x3e4faa24
-// 0.859468
-0x3f5c061a
-// 0.715389
-0x3f3723b5
-// 0.292694
-0x3e95dc04
-// 0.792406
-0x3f4adb1b
-// 0.010179
-0x3c26c4e9
-// 0.148149
-0x3e17b473
-// 0.007455
-0x3bf44a1c
-// 0.806566
-0x3f4e7b1c
-// 0.107115
-0x3ddb5f34
-// 0.574145
-0x3f12fb25
-// 0.357421
-0x3eb6ffe3
-// 0.371658
-0x3ebe4a06
-// 0.063458
-0x3d81f65a
-// 0.117429
-0x3df07e92
-// 0.824517
-0x3f53138f
-// 0.033454
-0x3d090734
-// 0.476750
-0x3ef41883
-// 0.604639
-0x3f1ac9a1
-// 0.962565
-0x3f766aa5
-// 0.875402
-0x3f601a52
-// 0.935986
-0x3f6f9cc1
-// 0.142114
-0x3e118646
-// 0.821869
-0x3f526600
-// 0.194592
-0x3e474308
-// 0.400711
-0x3ecd29fa
-// 0.237740
-0x3e73722b
-// 0.663783
-0x3f29eda7
-// 0.364501
-0x3eba9fe0
-// 0.375448
-0x3ec03ab6
-// 0.836572
-0x3f562997
-// 0.803856
-0x3f4dc983
-// 0.003463
-0x3b62f698
-// 0.152773
-0x3e1c707b
-// 0.150750
-0x3e1a5e22
-// 0.112124
-0x3de5a165
-// 0.751110
-0x3f4048be
-// 0.180667
-0x3e3900ce
-// 0.369192
-0x3ebd06b9
-// 0.819923
-0x3f51e679
-// 0.735944
-0x3f3c66da
-// 0.319051
-0x3ea35aaa
-// 0.655212
-0x3f27bbfd
-// 0.440519
-0x3ee18bb2
-// 0.766805
-0x3f444d53
-// 0.403441
-0x3ece8fdd
-// 0.430123
-0x3edc3924
-// 0.486477
-0x3ef91386
-// 0.029484
-0x3cf187a3
-// 0.473147
-0x3ef24060
-// 0.259630
-0x3e84ee2b
-// 0.284805
-0x3e91d1f0
-// 0.215958
-0x3e5d241f
-// 0.837940
-0x3f568337
-// 0.738491
-0x3f3d0dbf
-// 0.753874
-0x3f40fde7
-// 0.658960
-0x3f28b193
-// 0.151970
-0x3e1b9dee
-// 0.884717
-0x3f627ccb
-// 0.507018
-0x3f01cbea
-// 0.400314
-0x3eccf5e5
-// 0.140378
-0x3e0fbf38
-// 0.894827
-0x3f651369
-// 0.222035
-0x3e635d03
-// 0.785263
-0x3f490701
-// 0.224410
-0x3e65cbbc
-// 0.070446
-0x3d9045be
-// 0.487618
-0x3ef9a90c
-// 0.342503
-0x3eaf5c8e
-// 0.283632
-0x3e913834
-// 0.025043
-0x3ccd26a7
-// 0.195004
-0x3e47af12
-// 0.681401
-0x3f2e7046
-// 0.558087
-0x3f0edec5
-// 0.252938
-0x3e81810a
-// 0.103641
-0x3dd441c5
-// 0.908662
-0x3f689e1b
-// 0.262928
-0x3e869e81
-// 0.062533
-0x3d80113f
-// 0.784582
-0x3f48da5d
-// 0.022046
-0x3cb49993
-// 0.583039
-0x3f154208
-// 0.313114
-0x3ea0507f
-// 0.547857
-0x3f0c4064
-// 0.420271
-0x3ed72dd1
-// 0.997744
-0x3f7f6c29
-// 0.153162
-0x3e1cd688
-// 0.014904
-0x3c742f77
-// 0.439669
-0x3ee11c45
-// 0.832425
-0x3f5519ce
-// 0.984755
-0x3f7c18ee
-// 0.398351
-0x3ecbf4ae
-// 0.987077
-0x3f7cb117
-// 0.404251
-0x3ecefa09
-// 0.812272
-0x3f4ff10d
-// 0.074369
-0x3d984ed1
-// 0.871528
-0x3f5f1c74
-// 0.473100
-0x3ef23a19
-// 0.881132
-0x3f6191dc
-// 0.321647
-0x3ea4aeda
-// 0.992535
-0x3f7e16c3
-// 0.161669
-0x3e258ca2
-// 0.664613
-0x3f2a241b
-// 0.693092
-0x3f316e7a
-// 0.831473
-0x3f54db64
-// 0.267909
-0x3e892b61
-// 0.935480
-0x3f6f7ba1
-// 0.201694
-0x3e4e88eb
-// 0.628072
-0x3f20c94f
-// 0.382360
-0x3ec3c4b9
-// 0.415474
-0x3ed4b901
-// 0.904829
-0x3f67a2d7
-// 0.431853
-0x3edd1be6
-// 0.200105
-0x3e4ce84b
-// 0.046847
-0x3d3fe29f
-// 0.228519
-0x3e6a00f1
-// 0.982408
-0x3f7b7f14
-// 0.641572
-0x3f243e0f
-// 0.416586
-0x3ed54acb
-// 0.969679
-0x3f783ce8
-// 0.839277
-0x3f56dae1
-// 0.404708
-0x3ecf35df
-// 0.787157
-0x3f49831e
-// 0.886445
-0x3f62ee0f
-// 0.433949
-0x3ede2e91
-// 0.463262
-0x3eed30be
-// 0.798042
-0x3f4c4c73
-// 0.077984
-0x3d9fb5f9
-// 0.345094
-0x3eb0b01f
-// 0.925696
-0x3f6cfa64
-// 0.508294
-0x3f021f90
-// 0.413396
-0x3ed3a8a6
-// 0.672715
-0x3f2c3715
-// 0.454019
-0x3ee87524
-// 0.421510
-0x3ed7d030
-// 0.220195
-0x3e617aeb
-// 0.074278
-0x3d981f41
-// 0.964573
-0x3f76ee3b
-// 0.670754
-0x3f2bb685
-// 0.457737
-0x3eea5c90
-// 0.173324
-0x3e317bd0
-// 0.320032
-0x3ea3db36
-// 0.397170
-0x3ecb59de
-// 0.363844
-0x3eba49ca
-// 0.794615
-0x3f4b6be5
-// 0.575064
-0x3f133768
-// 0.751337
-0x3f405798
-// 0.038639
-0x3d1e438f
-// 0.219047
-0x3e604dc8
-// 0.790219
-0x3f4a4bc3
-// 0.943004
-0x3f7168ad
-// 0.312932
-0x3ea038a1
-// 0.522118
-0x3f05a98e
-// 0.476040
-0x3ef3bb8c
-// 0.064275
-0x3d83a2ce
-// 0.560094
-0x3f0f6257
-// 0.662916
-0x3f29b4d8
-// 0.736641
-0x3f3c9487
-// 0.740485
-0x3f3d9074
-// 0.622311
-0x3f1f4fc3
-// 0.731629
-0x3f3b4c05
-// 0.693148
-0x3f317229
-// 0.859425
-0x3f5c0340
-// 0.254173
-0x3e8222f6
-// 0.036085
-0x3d13cd59
-// 0.892821
-0x3f648fe5
-// 0.624368
-0x3f1fd68d
-// 0.763174
-0x3f435f62
-// 0.370590
-0x3ebdbdfd
-// 0.542559
-0x3f0ae529
-// 0.007371
-0x3bf18a3a
-// 0.298900
-0x3e990961
-// 0.775102
-0x3f466d14
-// 0.151507
-0x3e1b24b4
-// 0.786237
-0x3f4946d1
-// 0.066559
-0x3d885023
-// 0.123054
-0x3dfc03cf
-// 0.266263
-0x3e8853af
-// 0.726467
-0x3f39f9c2
-// 0.499726
-0x3effdc26
-// 0.001708
-0x3adfe201
-// 0.121908
-0x3df9ab0c
-// 0.539152
-0x3f0a05d6
-// 0.462602
-0x3eecda26
-// 0.652728
-0x3f27192d
-// 0.818462
-0x3f5186be
-// 0.560444
-0x3f0f793d
-// 0.653245
-0x3f273b0a
-// 0.472581
-0x3ef1f628
-// 0.299494
-0x3e995741
-// 0.282851
-0x3e90d1de
-// 0.369419
-0x3ebd2475
-// 0.852216
-0x3f5a2acf
-// 0.855135
-0x3f5aea1f
-// 0.098548
-0x3dc9d395
-// 0.059114
-0x3d7221d4
-// 0.051624
-0x3d537342
-// 0.052182
-0x3d55bce1
-// 0.901844
-0x3f66df45
-// 0.749742
-0x3f3fef11
-// 0.749755
-0x3f3fefef
-// 0.047565
-0x3d42d3f3
-// 0.507324
-0x3f01e002
-// 0.468788
-0x3ef00505
-// 0.103480
-0x3dd3ed31
-// 0.586133
-0x3f160cd2
-// 0.708778
-0x3f357281
-// 0.712482
-0x3f36653e
-// 0.324618
-0x3ea6345e
-// 0.719392
-0x3f382a13
-// 0.372203
-0x3ebe9162
-// 0.043868
-0x3d33ae6b
-// 0.243974
-0x3e79d46f
-// 0.507044
-0x3f01cd9e
-// 0.158287
-0x3e2215f4
-// 0.551081
-0x3f0d13a2
-// 0.341111
-0x3eaea629
-// 0.710293
-0x3f35d5bf
-// 0.310328
-0x3e9ee35a
-// 0.070572
-0x3d90880d
-// 0.150270
-0x3e19e081
-// 0.427503
-0x3edae1a7
-// 0.971502
-0x3f78b45e
-// 0.067825
-0x3d8ae7ef
-// 0.333623
-0x3eaad09f
-// 0.743341
-0x3f3e4ba1
-// 0.165863
-0x3e29d7f6
-// 0.720155
-0x3f385c13
-// 0.961736
-0x3f76345c
-// 0.722872
-0x3f390e1e
-// 0.846311
-0x3f58a7da
-// 0.327905
-0x3ea7e31f
-// 0.802213
-0x3f4d5dcf
-// 0.514140
-0x3f039eb5
-// 0.708100
-0x3f35460e
-// 0.270612
-0x3e8a8db7
-// 0.192928
-0x3e458efd
-// 0.269832
-0x3e8a2770
-// 0.945310
-0x3f71ffd5
-// 0.358567
-0x3eb79629
-// 0.601024
-0x3f19dcbc
-// 0.311599
-0x3e9f89f8
-// 0.485261
-0x3ef87411
-// 0.414903
-0x3ed46e25
-// 0.745459
-0x3f3ed660
-// 0.086601
-0x3db15bf9
-// 0.850035
-0x3f599bde
-// 0.660118
-0x3f28fd80
-// 0.936387
-0x3f6fb713
-// 0.540351
-0x3f0a546b
-// 0.298461
-0x3e98cfe6
-// 0.243822
-0x3e79ac78
-// 0.618311
-0x3f1e49a0
-// 0.247598
-0x3e7d8a5f
-// 0.409418
-0x3ed19f4a
-// 0.131899
-0x3e071076
-// 0.811573
-0x3f4fc347
-// 0.929368
-0x3f6deb18
-// 0.987119
-0x3f7cb3db
-// 0.657327
-0x3f284692
-// 0.013467
-0x3c5ca43e
-// 0.832500
-0x3f551ebe
-// 0.110523
-0x3de25a12
-// 0.212457
-0x3e598e39
-// 0.604145
-0x3f1aa947
-// 0.679970
-0x3f2e1287
-// 0.737071
-0x3f3cb0b3
-// 0.859938
-0x3f5c24de
-// 0.637012
-0x3f231334
-// 0.029118
-0x3cee882f
-// 0.792207
-0x3f4ace0d
-// 0.748065
-0x3f3f8133
-// 0.537343
-0x3f098f4a
-// 0.662304
-0x3f298cc2
-// 0.686697
-0x3f2fcb59
-// 0.843304
-0x3f57e2c6
-// 0.677766
-0x3f2d8213
-// 0.146115
-0x3e159f0f
-// 0.299902
-0x3e998cbe
-// 0.529611
-0x3f07948f
-// 0.194917
-0x3e47984b
-// 0.561216
-0x3f0fabd8
-// 0.968458
-0x3f77ece2
-// 0.751161
-0x3f404c18
-// 0.724414
-0x3f397336
-// 0.112034
-0x3de571dc
-// 0.358376
-0x3eb77d04
-// 0.311855
-0x3e9fab81
-// 0.435653
-0x3edf0ddf
-// 0.900795
-0x3f669a86
-// 0.014582
-0x3c6eea63
-// 0.847457
-0x3f58f2ec
-// 0.867696
-0x3f5e2151
-// 0.609471
-0x3f1c0649
-// 0.074398
-0x3d985dc9
-// 0.837597
-0x3f566cc1
-// 0.741859
-0x3f3dea76
-// 0.850902
-0x3f59d4bf
-// 0.382350
-0x3ec3c370
-// 0.305250
-0x3e9c49bc
-// 0.574925
-0x3f132e41
-// 0.489852
-0x3efacdd3
-// 0.818227
-0x3f517757
-// 0.733255
-0x3f3bb692
-// 0.281406
-0x3e901471
-// 0.935674
-0x3f6f885b
-// 0.192991
-0x3e459f82
-// 0.833114
-0x3f5546f1
-// 0.607064
-0x3f1b688e
-// 0.768148
-0x3f44a558
-// 0.618155
-0x3f1e3f6e
-// 0.713559
-0x3f36abce
-// 0.121630
-0x3df91945
-// 0.335520
-0x3eabc94d
-// 0.154385
-0x3e1e170e
-// 0.289522
-0x3e943c2a
-// 0.008808
-0x3c104fe7
-// 0.830658
-0x3f54a5ff
-// 0.105285
-0x3dd79f70
-// 0.893648
-0x3f64c619
-// 0.534589
-0x3f08dad0
-// 0.653597
-0x3f27521b
-// 0.586359
-0x3f161b9b
-// 0.585003
-0x3f15c2c4
-// 0.373334
-0x3ebf25a7
-// 0.226242
-0x3e67abf7
-// 0.968390
-0x3f77e866
-// 0.946751
-0x3f725e41
-// 0.100500
-0x3dcdd312
-// 0.582934
-0x3f153b29
-// 0.917098
-0x3f6ac6e8
-// 0.404031
-0x3ecedd31
-// 0.094429
-0x3dc163c6
-// 0.861371
-0x3f5c82d3
-// 0.588883
-0x3f16c109
-// 0.452212
-0x3ee78859
-// 0.048080
-0x3d44ef16
-// 0.202507
-0x3e4f5deb
-// 0.823686
-0x3f52dd10
-// 0.228348
-0x3e69d40c
-// 0.529227
-0x3f077b6b
-// 0.030834
-0x3cfc96c5
-// 0.903685
-0x3f6757e5
-// 0.491309
-0x3efb8ccd
-// 0.012644
-0x3c4f26c3
-// 0.611108
-0x3f1c7192
-// 0.667538
-0x3f2ae3ca
-// 0.120260
-0x3df64ac1
-// 0.081064
-0x3da604af
-// 0.363174
-0x3eb9f1f4
-// 0.877356
-0x3f609a6a
-// 0.875854
-0x3f6037f8
-// 0.765301
-0x3f43eaca
-// 0.797596
-0x3f4c2f40
-// 0.556078
-0x3f0e5b23
-// 0.390735
-0x3ec80e72
-// 0.807420
-0x3f4eb311
-// 0.690758
-0x3f30d585
-// 0.468446
-0x3eefd836
-// 0.248916
-0x3e7ee3cc
-// 0.809453
-0x3f4f3850
-// 0.280074
-0x3e8f65d1
-// 0.802606
-0x3f4d779c
-// 0.135603
-0x3e0adb73
-// 0.263609
-0x3e86f7bf
-// 0.460962
-0x3eec0332
-// 0.761603
-0x3f42f86b
-// 0.221486
-0x3e62cd4c
-// 0.451995
-0x3ee76bd8
-// 0.049607
-0x3d4b3047
-// 0.206492
-0x3e5372a8
-// 0.838444
-0x3f56a44b
-// 0.524157
-0x3f062f21
-// 0.461081
-0x3eec12dd
-// 0.658145
-0x3f287c2e
-// 0.083306
-0x3daa9c75
-// 0.769376
-0x3f44f5d0
-// 0.552358
-0x3f0d6756
-// 0.966907
-0x3f77873e
-// 0.274641
-0x3e8c9dcb
-// 0.454853
-0x3ee8e287
-// 0.959612
-0x3f75a91b
-// 0.357442
-0x3eb7029b
-// 0.243062
-0x3e78e52e
-// 0.688120
-0x3f3028a8
-// 0.897434
-0x3f65be3a
-// 0.543991
-0x3f0b4307
-// 0.950029
-0x3f73351a
-// 0.212516
-0x3e599dce
-// 0.462300
-0x3eecb2a4
-// 0.730917
-0x3f3b1d61
-// 0.981455
-0x3f7b409d
-// 0.550372
-0x3f0ce52d
-// 0.657378
-0x3f2849ec
-// 0.042314
-0x3d2d5158
-// 0.222929
-0x3e644789
-// 0.392199
-0x3ec8ce4c
-// 0.580112
-0x3f14823a
-// 0.393576
-0x3ec982d5
-// 0.246465
-0x3e7c6168
-// 0.607522
-0x3f1b8691
-// 0.491546
-0x3efbabf5
-// 0.460993
-0x3eec0755
-// 0.091776
-0x3dbbf52c
-// 0.222303
-0x3e63a374
-// 0.918574
-0x3f6b27a8
-// 0.479214
-0x3ef55b7a
-// 0.047108
-0x3d40f4b2
-// 0.754219
-0x3f411478
-// 0.177074
-0x3e3552fa
-// 0.449982
-0x3ee663fd
-// 0.767207
-0x3f4467af
-// 0.570266
-0x3f11fcf7
-// 0.088996
-0x3db64347
-// 0.962927
-0x3f76825e
-// 0.717568
-0x3f37b290
-// 0.971923
-0x3f78cfee
-// 0.509514
-0x3f026f7f
-// 0.795527
-0x3f4ba7af
-// 0.733112
-0x3f3bad42
-// 0.833436
-0x3f555c0b
-// 0.307796
-0x3e9d976b
-// 0.001909
-0x3afa32d2
-// 0.081245
-0x3da663c0
-// 0.712731
-0x3f367584
-// 0.673580
-0x3f2c6fbc
-// 0.660591
-0x3f291c78
-// 0.324574
-0x3ea62e84
-// 0.846660
-0x3f58beba
-// 0.715792
-0x3f373e1d
-// 0.322410
-0x3ea512e3
-// 0.023612
-0x3cc16dba
-// 0.231559
-0x3e6d1def
-// 0.588531
-0x3f16a9f7
-// 0.190728
-0x3e434e1b
-// 0.520163
-0x3f052961
-// 0.240799
-0x3e769424
-// 0.151656
-0x3e1b4b9d
-// 0.140708
-0x3e1015d6
-// 0.867764
-0x3f5e25cd
-// 0.226760
-0x3e6833b0
-// 0.567655
-0x3f1151db
-// 0.569545
-0x3f11cdb8
-// 0.099475
-0x3dcbb96e
-// 0.800702
-0x3f4cfac8
-// 0.968346
-0x3f77e58d
-// 0.359510
-0x3eb811a6
-// 0.324042
-0x3ea5e8d8
-// 0.464513
-0x3eedd4ae
-// 0.707565
-0x3f3522f3
-// 0.464212
-0x3eedad29
-// 0.410660
-0x3ed241fd
-// 0.287738
-0x3e935268
-// 0.958219
-0x3f754ddd
-// 0.039939
-0x3d239778
-// 0.336399
-0x3eac3c72
-// 0.670321
-0x3f2b9a2a
-// 0.031125
-0x3cfefa8e
-// 0.866194
-0x3f5dbee9
-// 0.565522
-0x3f10c609
-// 0.160212
-0x3e240e7f
-// 0.050343
-0x3d4e347e
-// 0.619334
-0x3f1e8ca9
-// 0.199933
-0x3e4cbb58
-// 0.404204
-0x3ecef3dc
-// 0.794105
-0x3f4b4a7e
-// 0.212442
-0x3e598a68
-// 0.744435
-0x3f3e9350
-// 0.317756
-0x3ea2b0f7
-// 0.539192
-0x3f0a0883
-// 0.451056
-0x3ee6f0cc
-// 0.969535
-0x3f783373
-// 0.560068
-0x3f0f6098
-// 0.833573
-0x3f55650f
-// 0.409203
-0x3ed18300
-// 0.054620
-0x3d5fb986
-// 0.167298
-0x3e2b5019
-// 0.465520
-0x3eee58b3
-// 0.945307
-0x3f71ffa2
-// 0.874379
-0x3f5fd751
-// 0.312845
-0x3ea02d3f
-// 0.060341
-0x3d7727e0
-// 0.281225
-0x3e8ffcc6
-// 0.045993
-0x3d3c6332
-// 0.945136
-0x3f71f46d
-// 0.679996
-0x3f2e143c
-// 0.064028
-0x3d8320ef
-// 0.109161
-0x3ddf8ff3
-// 0.784028
-0x3f48b612
-// 0.750824
-0x3f403602
-// 0.533871
-0x3f08abc7
-// 0.703935
-0x3f34351c
-// 0.978877
-0x3f7a97a8
-// 0.758521
-0x3f422e6c
-// 0.265766
-0x3e881275
-// 0.973159
-0x3f7920f2
-// 0.244644
-0x3e7a83ef
-// 0.410196
-0x3ed20528
-// 0.419203
-0x3ed6a1ba
-// 0.013216
-0x3c588989
-// 0.765747
-0x3f4407f9
-// 0.051348
-0x3d52520f
-// 0.576776
-0x3f13a797
-// 0.023018
-0x3cbc911d
-// 0.639778
-0x3f23c877
-// 0.149477
-0x3e19108f
-// 0.437002
-0x3edfbeb2
-// 0.873574
-0x3f5fa28a
-// 0.976532
-0x3f79fdfb
-// 0.144849
-0x3e14535f
-// 0.059253
-0x3d72b35d
-// 0.876583
-0x3f6067c1
-// 0.101728
-0x3dd056a7
-// 0.298106
-0x3e98a14e
-// 0.282247
-0x3e9082ab
-// 0.371400
-0x3ebe282f
-// 0.013209
-0x3c586c16
-// 0.003765
-0x3b76c649
-// 0.254188
-0x3e8224fb
-// 0.932517
-0x3f6eb973
-// 0.061076
-0x3d7a2b55
-// 0.574286
-0x3f13046e
-// 0.388977
-0x3ec727f9
-// 0.602468
-0x3f1a3b58
-// 0.332942
-0x3eaa776e
-// 0.822358
-0x3f528612
-// 0.517525
-0x3f047c80
-// 0.490763
-0x3efb454f
-// 0.382886
-0x3ec4099a
-// 0.737091
-0x3f3cb1f7
-// 0.109072
-0x3ddf60eb
-// 0.459898
-0x3eeb77b2
-// 0.949052
-0x3f72f519
-// 0.460932
-0x3eebff43
-// 0.001890
-0x3af7b1ef
-// 0.019799
-0x3ca231bb
-// 0.455059
-0x3ee8fd7e
-// 0.563284
-0x3f10335f
-// 0.020649
-0x3ca9272c
-// 0.520417
-0x3f053a15
-// 0.916792
-0x3f6ab2e6
-// 0.777566
-0x3f470e95
-// 0.028268
-0x3ce79144
-// 0.114216
-0x3de9ea1b
-// 0.552885
-0x3f0d89e6
-// 0.688520
-0x3f3042e0
-// 0.828567
-0x3f541cf2
-// 0.738520
-0x3f3d0fa8
-// 0.978639
-0x3f7a881a
-// 0.849397
-0x3f597218
-// 0.242207
-0x3e78051e
-// 0.742070
-0x3f3df845
-// 0.071880
-0x3d9335ac
-// 0.421031
-0x3ed79155
-// 0.953530
-0x3f741a89
-// 0.700139
-0x3f333c56
-// 0.487680
-0x3ef9b138
-// 0.918162
-0x3f6b0ca6
-// 0.553385
-0x3f0daaa3
-// 0.398964
-0x3ecc44fa
-// 0.376541
-0x3ec0c9ec
-// 0.159357
-0x3e232e8d
-// 0.979596
-0x3f7ac6cd
-// 0.699345
-0x3f330843
-// 0.410615
-0x3ed23c31
-// 0.032447
-0x3d04e719
-// 0.206508
-0x3e5376c8
-// 0.868299
-0x3f5e48d8
-// 0.876541
-0x3f606503
-// 0.361213
-0x3eb8f0ea
-// 0.535145
-0x3f08ff42
-// 0.025582
-0x3cd190ff
-// 0.036000
-0x3d137513
-// 0.450994
-0x3ee6e8bc
-// 0.914344
-0x3f6a126e
-// 0.260678
-0x3e85779f
-// 0.084285
-0x3dac9d9b
-// 0.097018
-0x3dc6b135
-// 0.469482
-0x3ef05ff7
-// 0.012844
-0x3c527082
-// 0.557491
-0x3f0eb7b8
-// 0.206663
-0x3e539f98
-// 0.785842
-0x3f492cea
-// 0.018970
-0x3c9b67da
-// 0.043429
-0x3d31e295
-// 0.994380
-0x3f7e8fb5
-// 0.640715
-0x3f2405ea
-// 0.104825
-0x3dd6aeb2
-// 0.370279
-0x3ebd9543
-// 0.005174
-0x3ba989e9
-// 0.990977
-0x3f7db0a3
-// 0.512995
-0x3f03539f
-// 0.497878
-0x3efee9d8
-// 0.829521
-0x3f545b7e
-// 0.265546
-0x3e87f5ab
-// 0.892420
-0x3f64759f
-// 0.976804
-0x3f7a0fda
-// 0.711080
-0x3f36095d
-// 0.061605
-0x3d7c55d2
-// 0.714098
-0x3f36cf19
-// 0.089780
-0x3db7ded2
-// 0.170386
-0x3e2e79a1
-// 0.170262
-0x3e2e5940
-// 0.125004
-0x3e000104
-// 0.870289
-0x3f5ecb47
-// 0.678612
-0x3f2db97d
-// 0.545675
-0x3f0bb158
-// 0.602182
-0x3f1a2894
-// 0.740971
-0x3f3db049
-// 0.691956
-0x3f31240f
-// 0.737516
-0x3f3ccde0
-// 0.070514
-0x3d90698e
-// 0.121546
-0x3df8ed26
-// 0.597555
-0x3f18f960
-// 0.412027
-0x3ed2f543
-// 0.173222
-0x3e3160fa
-// 0.628630
-0x3f20ede9
-// 0.743486
-0x3f3e551f
-// 0.004343
-0x3b8e4cf0
-// 0.530475
-0x3f07cd32
-// 0.808904
-0x3f4f1451
-// 0.461299
-0x3eec2f67
-// 0.512276
-0x3f032481
-// 0.642906
-0x3f249577
-// 0.712893
-0x3f368022
-// 0.781470
-0x3f480e66
-// 0.622024
-0x3f1f3cfa
-// 0.425521
-0x3ed9ddd3
-// 0.228511
-0x3e69feb6
-// 0.372234
-0x3ebe9579
-// 0.744227
-0x3f3e85a9
-// 0.350721
-0x3eb391ad
-// 0.069294
-0x3d8de9c7
-// 0.376915
-0x3ec0faf7
-// 0.028746
-0x3ceb7ce8
-// 0.362332
-0x3eb9839c
-// 0.171293
-0x3e2f6750
-// 0.861431
-0x3f5c86ba
-// 0.597916
-0x3f191100
-// 0.944651
-0x3f71d4ab
-// 0.403727
-0x3eceb55a
-// 0.477033
-0x3ef43da5
-// 0.478440
-0x3ef4f60b
-// 0.609680
-0x3f1c13f9
-// 0.333803
-0x3eaae842
-// 0.549287
-0x3f0c9e0d
-// 0.740402
-0x3f3d8afe
-// 0.315011
-0x3ea1492d
-// 0.652090
-0x3f26ef62
-// 0.594496
-0x3f1830dc
-// 0.226105
-0x3e678819
-// 0.179921
-0x3e383d37
-// 0.614565
-0x3f1d5429
-// 0.904889
-0x3f67a6cd
-// 0.920411
-0x3f6ba015
-// 0.513706
-0x3f038245
-// 0.550706
-0x3f0cfb0e
-// 0.781928
-0x3f482c76
-// 0.189078
-0x3e419d95
-// 0.414136
-0x3ed409af
-// 0.306873
-0x3e9d1e80
-// 0.818119
-0x3f517038
-// 0.640838
-0x3f240dfa
-// 0.750668
-0x3f402bc8
-// 0.055763
-0x3d6467c8
-// 0.853096
-0x3f5a647d
-// 0.398069
-0x3ecbcfb9
-// 0.144823
-0x3e144c82
-// 0.538974
-0x3f09fa3b
-// 0.862347
-0x3f5cc2c7
-// 0.144437
-0x3e13e765
-// 0.943994
-0x3f71a991
-// 0.049994
-0x3d4cc63b
-// 0.465676
-0x3eee6d07
-// 0.546065
-0x3f0bcaeb
-// 0.090593
-0x3db988a1
-// 0.994967
-0x3f7eb62d
-// 0.553677
-0x3f0dbdce
-// 0.846228
-0x3f58a269
-// 0.467507
-0x3eef5d04
-// 0.118277
-0x3df23b73
-// 0.808326
-0x3f4eee78
-// 0.276739
-0x3e8db0ad
-// 0.835275
-0x3f55d496
-// 0.592493
-0x3f17ad9a
-// 0.366242
-0x3ebb8416
-// 0.533335
-0x3f08889d
-// 0.702045
-0x3f33b935
-// 0.430945
-0x3edca4d8
-// 0.754761
-0x3f413804
-// 0.912343
-0x3f698f48
-// 0.686227
-0x3f2fac93
-// 0.079510
-0x3da2d623
-// 0.468271
-0x3eefc13b
-// 0.370667
-0x3ebdc808
-// 0.434951
-0x3edeb1f2
-// 0.312184
-0x3e9fd694
-// 0.403150
-0x3ece69b8
-// 0.191075
-0x3e43a90b
-// 0.560975
-0x3f0f9c11
-// 0.629044
-0x3f210907
-// 0.704469
-0x3f345819
-// 0.717022
-0x3f378eb9
-// 0.160490
-0x3e245784
-// 0.968406
-0x3f77e973
-// 0.737986
-0x3f3ceca0
-// 0.735210
-0x3f3c36c1
-// 0.036998
-0x3d178b66
-// 0.342224
-0x3eaf37f7
-// 0.648968
-0x3f2622bd
-// 0.811710
-0x3f4fcc38
-// 0.561839
-0x3f0fd4a9
-// 0.226885
-0x3e6854a3
-// 0.535837
-0x3f092c96
-// 0.232944
-0x3e6e88d0
-// 0.372778
-0x3ebedcd1
-// 0.904340
-0x3f6782d7
-// 0.810758
-0x3f4f8dce
-// 0.572169
-0x3f1279af
-// 0.214849
-0x3e5c014a
-// 0.339723
-0x3eadf02a
-// 0.627295
-0x3f20966f
-// 0.773208
-0x3f45f0f5
-// 0.724379
-0x3f3970e9
-// 0.295247
-0x3e972a96
-// 0.748168
-0x3f3f87f0
-// 0.111922
-0x3de5371a
-// 0.720118
-0x3f3859a6
-// 0.986384
-0x3f7c83a2
-// 0.123094
-0x3dfc1882
-// 0.613937
-0x3f1d2afb
-// 0.114801
-0x3deb1cad
-// 0.349852
-0x3eb31fc8
-// 0.688902
-0x3f305be0
-// 0.568892
-0x3f11a2ed
-// 0.542096
-0x3f0ac6c5
-// 0.183931
-0x3e3c584e
-// 0.155242
-0x3e1ef7d5
-// 0.071078
-0x3d919144
-// 0.653007
-0x3f272b72
-// 0.484110
-0x3ef7dd48
-// 0.853790
-0x3f5a91f7
-// 0.659761
-0x3f28e612
-// 0.299608
-0x3e99662e
-// 0.729967
-0x3f3adf16
-// 0.638566
-0x3f237917
-// 0.437161
-0x3edfd38c
-// 0.828854
-0x3f542fc3
-// 0.341724
-0x3eaef683
-// 0.401626
-0x3ecda1f3
-// 0.800680
-0x3f4cf963
-// 0.152717
-0x3e1c61e1
-// 0.246590
-0x3e7c81fa
-// 0.594778
-0x3f184360
-// 0.433051
-0x3eddb8ce
-// 0.218736
-0x3e5ffc3a
-// 0.743764
-0x3f3e6756
-// 0.309429
-0x3e9e6d8b
-// 0.033553
-0x3d096f09
-// 0.942271
-0x3f7138ad
-// 0.737725
-0x3f3cdb94
-// 0.584562
-0x3f15a5d4
-// 0.958033
-0x3f7541a5
-// 0.820067
-0x3f51eff1
-// 0.010228
-0x3c27935f
-// 0.972255
-0x3f78e5bb
-// 0.249028
-0x3e7f0117
-// 0.631517
-0x3f21ab18
-// 0.196009
-0x3e48b6b1
-// 0.684746
-0x3f2f4b84
-// 0.694473
-0x3f31c8f4
-// 0.516326
-0x3f042df8
-// 0.359358
-0x3eb7fdb7
-// 0.254893
-0x3e828152
-// 0.401182
-0x3ecd67ab
-// 0.707920
-0x3f353a37
-// 0.072599
-0x3d94aeee
-// 0.701523
-0x3f3396fe
-// 0.882038
-0x3f61cd42
-// 0.137972
-0x3e0d4876
-// 0.011917
-0x3c43402d
-// 0.108195
-0x3ddd958b
-// 0.848278
-0x3f5928b7
-// 0.019402
-0x3c9ef07e
-// 0.475540
-0x3ef37a05
-// 0.416607
-0x3ed54d8e
-// 0.627542
-0x3f20a697
-// 0.091923
-0x3dbc424b
-// 0.945842
-0x3f7222b6
-// 0.893886
-0x3f64d5af
-// 0.638227
-0x3f2362de
-// 0.894056
-0x3f64e0d9
-// 0.283908
-0x3e915c5d
-// 0.534836
-0x3f08eb02
-// 0.581308
-0x3f14d0a1
-// 0.529882
-0x3f07a660
-// 0.264968
-0x3e87a9e0
-// 0.441617
-0x3ee21b95
-// 0.885413
-0x3f62aa67
-// 0.250138
-0x3e801213
-// 0.620652
-0x3f1ee30c
-// 0.790209
-0x3f4a4b1f
-// 0.209538
-0x3e569140
-// 0.137044
-0x3e0c555f
-// 0.942529
-0x3f71499d
-// 0.637572
-0x3f2337ea
-// 0.594340
-0x3f1826ac
-// 0.836817
-0x3f5639a1
-// 0.635398
-0x3f22a976
-// 0.182729
-0x3e3b1d68
-// 0.593457
-0x3f17ecca
-// 0.831456
-0x3f54da4b
-// 0.960346
-0x3f75d943
-// 0.478004
-0x3ef4bcf1
-// 0.137735
-0x3e0d0a4d
-// 0.220392
-0x3e61ae7d
-// 0.793635
-0x3f4b2baa
-// 0.789976
-0x3f4a3be5
-// 0.340233
-0x3eae32f7
-// 0.203297
-0x3e502cfa
-// 0.610575
-0x3f1c4e9d
-// 0.937502
-0x3f700026
-// 0.904508
-0x3f678dd2
-// 0.962543
-0x3f76693e
-// 0.693394
-0x3f31824b
-// 0.550041
-0x3f0ccf7b
-// 0.816889
-0x3f511fa5
-// 0.863996
-0x3f5d2ecf
-// 0.644230
-0x3f24ec3a
-// 0.977144
-0x3f7a261a
-// 0.762679
-0x3f433ef2
-// 0.936059
-0x3f6fa193
-// 0.071714
-0x3d92defa
-// 0.215348
-0x3e5c8422
-// 0.807193
-0x3f4ea438
-// 0.241741
-0x3e778add
-// 0.520545
-0x3f05426d
-// 0.073373
-0x3d96447d
-// 0.287446
-0x3e932c25
-// 0.171679
-0x3e2fcc98
-// 0.226198
-0x3e67a085
-// 0.463608
-0x3eed5e09
-// 0.520158
-0x3f05291b
-// 0.105653
-0x3dd86061
-// 0.773247
-0x3f45f37f
-// 0.317491
-0x3ea28e2a
-// 0.234363
-0x3e6ffcd4
-// 0.502477
-0x3f00a259
-// 0.042854
-0x3d2f8802
-// 0.348333
-0x3eb258be
-// 0.159570
-0x3e23666c
-// 0.958953
-0x3f757deb
-// 0.723472
-0x3f39357a
-// 0.341475
-0x3eaed5ca
-// 0.559260
-0x3f0f2bac
-// 0.460492
-0x3eebc5a9
-// 0.763164
-0x3f435eb3
-// 0.712429
-0x3f3661ba
-// 0.318770
-0x3ea335ca
-// 0.937545
-0x3f7002f7
-// 0.156415
-0x3e202b31
-// 0.621966
-0x3f1f392f
-// 0.505305
-0x3f015bb0
-// 0.742566
-0x3f3e18d5
-// 0.597853
-0x3f190cdf
-// 0.544179
-0x3f0b4f4f
-// 0.622992
-0x3f1f7c67
-// 0.571820
-0x3f1262cd
-// 0.468404
-0x3eefd29f
-// 0.961984
-0x3f76449d
-// 0.458436
-0x3eeab818
-// 0.310049
-0x3e9ebec6
-// 0.015842
-0x3c81c7a4
-// 0.924332
-0x3f6ca106
-// 0.658865
-0x3f28ab62
-// 0.889859
-0x3f63cdcc
-// 0.917567
-0x3f6ae5a5
-// 0.618944
-0x3f1e731b
-// 0.221634
-0x3e62f406
-// 0.643558
-0x3f24c030
-// 0.573056
-0x3f12b3cf
-// 0.676665
-0x3f2d39eb
-// 0.056807
-0x3d68adff
-// 0.575831
-0x3f1369b0
-// 0.132811
-0x3e07ff87
-// 0.936287
-0x3f6fb083
-// 0.634804
-0x3f228288
-// 0.593951
-0x3f180d2e
-// 0.119555
-0x3df4d96a
-// 0.338672
-0x3ead666b
-// 0.537012
-0x3f0979a2
-// 0.810459
-0x3f4f7a44
-// 0.758101
-0x3f4212e4
-// 0.531733
-0x3f081fa7
-// 0.938160
-0x3f702b48
-// 0.477404
-0x3ef46e3d
-// 0.445829
-0x3ee443af
-// 0.219106
-0x3e605d53
-// 0.436319
-0x3edf653a
-// 0.697500
-0x3f328f5a
-// 0.557546
-0x3f0ebb58
-// 0.275345
-0x3e8cfa10
-// 0.272876
-0x3e8bb661
-// 0.388169
-0x3ec6be1f
-// 0.211065
-0x3e58217a
-// 0.034930
-0x3d0f130c
-// 0.032574
-0x3d056c0c
-// 0.991205
-0x3f7dbf9f
-// 0.669551
-0x3f2b67ad
-// 0.621811
-0x3f1f2f07
-// 0.290127
-0x3e948b91
-// 0.590285
-0x3f171cf3
-// 0.225070
-0x3e6678cf
-// 0.143952
-0x3e136843
-// 0.047087
-0x3d40de2c
-// 0.086052
-0x3db03bdc
-// 0.623555
-0x3f1fa153
-// 0.876835
-0x3f60783f
-// 0.783756
-0x3f48a43b
-// 0.432016
-0x3edd312d
-// 0.383421
-0x3ec44fc2
-// 0.077875
-0x3d9f7d05
-// 0.937473
-0x3f6ffe3e
-// 0.413102
-0x3ed3821f
-// 0.947980
-0x3f72aed2
-// 0.358759
-0x3eb7af37
-// 0.091618
-0x3dbba20b
-// 0.231734
-0x3e6d4bab
-// 0.819337
-0x3f51c00e
-// 0.239489
-0x3e753cb0
-// 0.221177
-0x3e627c35
-// 0.155935
-0x3e1fad82
-// 0.910205
-0x3f69032e
-// 0.759365
-0x3f4265c3
-// 0.600630
-0x3f19c2e9
-// 0.016361
-0x3c8607ab
-// 0.524559
-0x3f064984
-// 0.187495
-0x3e3ffea1
-// 0.754966
-0x3f41456f
-// 0.403834
-0x3ecec355
-// 0.115293
-0x3dec1eda
-// 0.751304
-0x3f405579
-// 0.848962
-0x3f59558f
-// 0.042756
-0x3d2f2131
-// 0.990514
-0x3f7d9257
-// 0.930867
-0x3f6e4d51
-// 0.948965
-0x3f72ef5c
-// 0.846249
-0x3f58a3c9
-// 0.269209
-0x3e89d5cf
-// 0.865073
-0x3f5d7566
-// 0.717746
-0x3f37be2e
-// 0.376016
-0x3ec0852d
-// 0.857437
-0x3f5b80fc
-// 0.126504
-0x3e018a3c
-// 0.702119
-0x3f33be13
-// 0.786299
-0x3f494ae4
-// 0.460322
-0x3eebaf64
-// 0.555179
-0x3f0e203a
-// 0.420262
-0x3ed72ca1
-// 0.008084
-0x3c047229
-// 0.530854
-0x3f07e614
-// 0.660571
-0x3f291b26
-// 0.813692
-0x3f504e1d
-// 0.064970
-0x3d850ebc
-// 0.837326
-0x3f565afd
-// 0.014844
-0x3c7333d2
-// 0.954040
-0x3f743bf9
-// 0.456991
-0x3ee9fab8
-// 0.313083
-0x3ea04c5f
-// 0.653933
-0x3f276828
-// 0.580168
-0x3f1485e0
-// 0.978273
-0x3f7a7021
-// 0.441839
-0x3ee238af
-// 0.644716
-0x3f250c23
-// 0.897452
-0x3f65bf72
-// 0.746811
-0x3f3f2f04
-// 0.255351
-0x3e82bd5b
-// 0.540527
-0x3f0a5ffd
-// 0.008501
-0x3c0b4821
-// 0.332489
-0x3eaa3bf7
-// 0.073737
-0x3d970381
-// 0.015487
-0x3c7dbf33
-// 0.544874
-0x3f0b7cdd
-// 0.196266
-0x3e48f9dd
-// 0.982182
-0x3f7b7041
-// 0.191911
-0x3e448438
-// 0.119566
-0x3df4df02
-// 0.432908
-0x3edda62c
-// 0.838721
-0x3f56b671
-// 0.747057
-0x3f3f3f20
-// 0.879779
-0x3f61392b
-// 0.408492
-0x3ed125e6
-// 0.475797
-0x3ef39bb6
-// 0.438632
-0x3ee09450
-// 0.066516
-0x3d883982
-// 0.107737
-0x3ddca531
-// 0.944962
-0x3f71e901
-// 0.703024
-0x3f33f967
-// 0.722002
-0x3f38d51b
-// 0.820890
-0x3f5225d4
-// 0.980225
-0x3f7af004
-// 0.938606
-0x3f70487f
-// 0.220904
-0x3e6234c3
-// 0.826393
-0x3f538e78
-// 0.603449
-0x3f1a7ba7
-// 0.147570
-0x3e171caa
-// 0.388205
-0x3ec6c2bf
-// 0.374553
-0x3ebfc55d
-// 0.379859
-0x3ec27cd8
-// 0.462888
-0x3eecff9e
-// 0.427071
-0x3edaa90d
-// 0.524199
-0x3f0631ef
-// 0.989134
-0x3f7d37e8
-// 0.591253
-0x3f175c5f
-// 0.796625
-0x3f4bef9a
-// 0.940123
-0x3f70abec
-// 0.835592
-0x3f55e95d
-// 0.665779
-0x3f2a7083
-// 0.633063
-0x3f221067
-// 0.286590
-0x3e92bbf4
-// 0.662179
-0x3f298498
-// 0.590388
-0x3f1723a8
-// 0.669042
-0x3f2b465b
-// 0.108560
-0x3dde54c7
-// 0.847375
-0x3f58ed98
-// 0.016524
-0x3c875ca1
-// 0.076735
-0x3d9d2764
-// 0.537086
-0x3f097e7e
-// 0.667407
-0x3f2adb36
-// 0.800385
-0x3f4ce608
-// 0.624026
-0x3f1fc024
-// 0.529797
-0x3f07a0cc
-// 0.043922
-0x3d33e76f
-// 0.925237
-0x3f6cdc5a
-// 0.849240
-0x3f5967d1
-// 0.105823
-0x3dd8b9c1
-// 0.400720
-0x3ecd2b27
-// 0.105990
-0x3dd91157
-// 0.866099
-0x3f5db8ab
-// 0.236325
-0x3e71ff2f
-// 0.415885
-0x3ed4eee7
-// 0.193553
-0x3e4632c3
-// 0.957582
-0x3f752420
-// 0.786284
-0x3f4949e7
-// 0.168921
-0x3e2cf988
-// 0.550302
-0x3f0ce091
-// 0.226329
-0x3e67c2ea
-// 0.917434
-0x3f6adcf1
-// 0.046091
-0x3d3cca43
-// 0.165126
-0x3e2916d4
-// 0.203722
-0x3e509c6b
-// 0.471436
-0x3ef16002
-// 0.716818
-0x3f378161
-// 0.574096
-0x3f12f7fb
-// 0.403701
-0x3eceb1db
-// 0.426840
-0x3eda8ab5
-// 0.666111
-0x3f2a8639
-// 0.574910
-0x3f132d53
-// 0.177822
-0x3e3616f8
-// 0.945376
-0x3f720431
-// 0.014143
-0x3c67ba1c
-// 0.764225
-0x3f43a43e
-// 0.048340
-0x3d460080
-// 0.543134
-0x3f0b0acf
-// 0.614598
-0x3f1d5651
-// 0.009383
-0x3c19bcc4
-// 0.249842
-0x3e7fd6a7
-// 0.210286
-0x3e57551d
-// 0.438332
-0x3ee06cff
-// 0.492448
-0x3efc2229
-// 0.120213
-0x3df63228
-// 0.282628
-0x3e90b49d
-// 0.548078
-0x3f0c4ed6
-// 0.639624
-0x3f23be68
-// 0.295991
-0x3e978c12
-// 0.034608
-0x3d0dc10d
-// 0.099990
-0x3dccc7a0
-// 0.402979
-0x3ece5334
-// 0.671885
-0x3f2c00a3
-// 0.691215
-0x3f30f37b
-// 0.870109
-0x3f5ebf7e
-// 0.608990
-0x3f1be6c4
-// 0.997974
-0x3f7f7b31
-// 0.001682
-0x3adc791c
-// 0.733379
-0x3f3bbebf
-// 0.124253
-0x3dfe7871
-// 0.256660
-0x3e8368ef
-// 0.821530
-0x3f524fcc
-// 0.952376
-0x3f73ceeb
-// 0.560460
-0x3f0f7a48
-// 0.141395
-0x3e10c9ec
-// 0.503698
-0x3f00f256
-// 0.349152
-0x3eb2c416
-// 0.399846
-0x3eccb8a3
-// 0.886059
-0x3f62d4c3
-// 0.082157
-0x3da841d8
-// 0.590947
-0x3f17484a
-// 0.556403
-0x3f0e706a
-// 0.214475
-0x3e5b9f6b
-// 0.764076
-0x3f439a80
-// 0.360122
-0x3eb861f6
-// 0.893295
-0x3f64af03
-// 0.246414
-0x3e7c53fc
-// 0.795529
-0x3f4ba7c2
-// 0.317435
-0x3ea286c7
-// 0.516829
-0x3f044ee4
-// 0.887782
-0x3f6345b0
-// 0.267738
-0x3e8914ee
-// 0.611953
-0x3f1ca8fb
-// 0.498761
-0x3eff5d90
-// 0.836145
-0x3f560d9a
-// 0.255305
-0x3e82b761
-// 0.481207
-0x3ef660cf
-// 0.202340
-0x3e4f3233
-// 0.345128
-0x3eb0b48f
-// 0.456022
-0x3ee97bbd
-// 0.670446
-0x3f2ba25e
-// 0.218312
-0x3e5f8d41
-// 0.151222
-0x3e1ada0d
-// 0.711656
-0x3f362f13
-// 0.003257
-0x3b556b81
-// 0.836337
-0x3f561a2b
-// 0.745085
-0x3f3ebde6
-// 0.702641
-0x3f33e04d
-// 0.974531
-0x3f797ae2
-// 0.040892
-0x3d277eb2
-// 0.344697
-0x3eb07c1f
-// 0.122286
-0x3dfa7132
-// 0.904358
-0x3f6783fd
-// 0.417900
-0x3ed5f6fe
-// 0.215637
-0x3e5ccfee
-// 0.801844
-0x3f4d459e
-// 0.229054
-0x3e6a8d26
-// 0.916820
-0x3f6ab4b8
-// 0.918643
-0x3f6b2c2a
-// 0.398848
-0x3ecc35c9
-// 0.186566
-0x3e3f0b15
-// 0.465601
-0x3eee6333
-// 0.667628
-0x3f2ae9a4
-// 0.961616
-0x3f762c7a
-// 0.942697
-0x3f71549b
-// 0.195181
-0x3e47dd86
-// 0.833848
-0x3f55770d
-// 0.441887
-0x3ee23f0d
-// 0.461270
-0x3eec2b8a
-// 0.379490
-0x3ec24c7d
-// 0.383931
-0x3ec492a8
-// 0.847575
-0x3f58faa6
-// 0.643216
-0x3f24a9ca
-// 0.867524
-0x3f5e160d
-// 0.875089
-0x3f6005cf
-// 0.896453
-0x3f657df7
-// 0.809808
-0x3f4f4f93
-// 0.940897
-0x3f70dea6
-// 0.145485
-0x3e14fa20
-// 0.048553
-0x3d46dfc5
-// 0.703791
-0x3f342bad
-// 0.955610
-0x3f74a2dc
-// 0.095575
-0x3dc3bca5
-// 0.551739
-0x3f0d3eca
-// 0.442519
-0x3ee291d6
-// 0.703959
-0x3f3436ad
-// 0.628782
-0x3f20f7d8
-// 0.806647
-0x3f4e8066
-// 0.149450
-0x3e19096c
-// 0.960164
-0x3f75cd4f
-// 0.726402
-0x3f39f583
-// 0.334381
-0x3eab33ef
-// 0.946469
-0x3f724bc5
-// 0.207192
-0x3e542a2e
-// 0.518422
-0x3f04b753
-// 0.494219
-0x3efd0a48
-// 0.064799
-0x3d84b55e
-// 0.692628
-0x3f315019
-// 0.175552
-0x3e33c3d5
-// 0.120069
-0x3df5e689
-// 0.485359
-0x3ef880ea
-// 0.851952
-0x3f5a198f
-// 0.469257
-0x3ef04285
-// 0.655762
-0x3f27e000
-// 0.633629
-0x3f22358a
-// 0.335816
-0x3eabf023
+0x3e698691
+// 0.749764
+0x3f3ff086
+// 0.287141
+0x3e930419
+// 0.641869
+0x3f24518a
+// 0.855918
+0x3f5b1d71
+// 0.767603
+0x3f44819b
+// 0.711016
+0x3f360521
+// 0.914954
+0x3f6a3a6c
+// 0.246798
+0x3e7cb881
+// 0.391835
+0x3ec89e8a
+// 0.108320
+0x3dddd6f6
+// 0.112282
+0x3de5f3de
+// 0.483286
+0x3ef77138
+// 0.473401
+0x3ef261a4
+// 0.178124
+0x3e36660c
+// 0.220709
+0x3e62019e
+// 0.362218
+0x3eb974b4
+// 0.623383
+0x3f1f9601
+// 0.862572
+0x3f5cd18b
+// 0.489170
+0x3efa748d
+// 0.387524
+0x3ec66995
+// 0.422605
+0x3ed85fa1
+// 0.332400
+0x3eaa3051
+// 0.986829
+0x3f7ca0d2
+// 0.052603
+0x3d57765d
+// 0.093023
+0x3dbe82ce
+// 0.515240
+0x3f03e6c4
+// 0.869435
+0x3f5e934b
+// 0.237440
+0x3e732372
+// 0.894473
+0x3f64fc26
+// 0.060682
+0x3d788de9
+// 0.336340
+0x3eac34cd
+// 0.949210
+0x3f72ff68
+// 0.609264
+0x3f1bf8b7
+// 0.745781
+0x3f3eeb79
+// 0.669468
+0x3f2b6241
+// 0.609619
+0x3f1c1000
+// 0.820768
+0x3f521de0
+// 0.225679
+0x3e671865
+// 0.268112
+0x3e8945eb
+// 0.662702
+0x3f29a6de
+// 0.990333
+0x3f7d8670
+// 0.717861
+0x3f37c5c0
+// 0.008572
+0x3c0c7368
+// 0.087235
+0x3db2a82b
+// 0.599820
+0x3f198dd6
+// 0.463913
+0x3eed8607
+// 0.518304
+0x3f04af99
+// 0.360716
+0x3eb8afb9
+// 0.258303
+0x3e844059
+// 0.054182
+0x3d5dedd5
+// 0.408149
+0x3ed0f8e1
+// 0.151959
+0x3e1b9b3d
+// 0.291110
+0x3e950c55
+// 0.540381
+0x3f0a5666
+// 0.038390
+0x3d1d3ed4
+// 0.417226
+0x3ed59e99
+// 0.644098
+0x3f24e39e
+// 0.904445
+0x3f6789b6
+// 0.474328
+0x3ef2db2d
+// 0.446019
+0x3ee45cab
+// 0.213148
+0x3e5a4387
+// 0.573086
+0x3f12b5c3
+// 0.307262
+0x3e9d5169
+// 0.111224
+0x3de3c982
+// 0.243887
+0x3e79bd9c
+// 0.855226
+0x3f5af015
+// 0.103392
+0x3dd3bf58
+// 0.428401
+0x3edb5757
+// 0.443870
+0x3ee342ee
+// 0.237503
+0x3e7333e8
+// 0.697169
+0x3f3279a6
+// 0.388175
+0x3ec6bed6
+// 0.355486
+0x3eb60240
+// 0.967046
+0x3f77904d
+// 0.734691
+0x3f3c14b6
+// 0.249120
+0x3e7f1958
+// 0.860801
+0x3f5c5d70
+// 0.862648
+0x3f5cd685
+// 0.963492
+0x3f76a76e
+// 0.527185
+0x3f06f590
+// 0.687470
+0x3f2ffe11
+// 0.955925
+0x3f74b785
+// 0.148031
+0x3e179590
+// 0.712302
+0x3f365974
+// 0.831234
+0x3f54cbb9
+// 0.951341
+0x3f738b17
+// 0.060017
+0x3d75d42d
+// 0.791779
+0x3f4ab207
+// 0.645783
+0x3f25520c
+// 0.737040
+0x3f3caea2
+// 0.742912
+0x3f3e2f74
+// 0.192456
+0x3e451339
+// 0.132066
+0x3e073c61
+// 0.152671
+0x3e1c55e7
+// 0.418099
+0x3ed6110c
+// 0.176691
+0x3e34ee67
+// 0.162655
+0x3e268f01
+// 0.030278
+0x3cf80898
+// 0.328267
+0x3ea8128f
+// 0.266535
+0x3e887737
+// 0.769835
+0x3f4513e7
+// 0.808539
+0x3f4efc65
+// 0.045574
+0x3d3aac4d
+// 0.429864
+0x3edc1716
+// 0.349355
+0x3eb2dea7
+// 0.959882
+0x3f75bacf
+// 0.904198
+0x3f67798c
+// 0.284785
+0x3e91cf5f
+// 0.750199
+0x3f400d0d
+// 0.481579
+0x3ef69188
+// 0.656624
+0x3f281882
+// 0.340530
+0x3eae59f1
+// 0.760518
+0x3f42b155
+// 0.575341
+0x3f134985
+// 0.257930
+0x3e840f60
+// 0.175007
+0x3e333529
+// 0.666194
+0x3f2a8bab
+// 0.891280
+0x3f642af4
+// 0.678008
+0x3f2d91e9
+// 0.965873
+0x3f774376
+// 0.730397
+0x3f3afb4f
+// 0.786883
+0x3f49712c
+// 0.714782
+0x3f36fbef
+// 0.604056
+0x3f1aa36a
+// 0.027448
+0x3ce0db76
+// 0.697710
+0x3f329d22
+// 0.909474
+0x3f68d348
+// 0.125174
+0x3e002db0
+// 0.022088
+0x3cb4f253
+// 0.556447
+0x3f0e734a
+// 0.968911
+0x3f780a95
+// 0.717291
+0x3f37a066
+// 0.963291
+0x3f769a35
+// 0.081836
+0x3da7996c
+// 0.201461
+0x3e4e4bd2
+// 0.706299
+0x3f34d006
+// 0.879133
+0x3f610ed5
+// 0.632620
+0x3f21f35e
+// 0.293147
+0x3e961762
+// 0.197602
+0x3e4a582f
+// 0.897335
+0x3f65b7bf
+// 0.967420
+0x3f77a8de
+// 0.975382
+0x3f79b2a9
+// 0.587452
+0x3f16633b
+// 0.612981
+0x3f1cec4f
+// 0.835876
+0x3f55fbf6
+// 0.754931
+0x3f414330
+// 0.686545
+0x3f2fc162
+// 0.375864
+0x3ec0714b
+// 0.637509
+0x3f2333cb
+// 0.998851
+0x3f7fb4ae
+// 0.818984
+0x3f51a8ee
+// 0.126442
+0x3e0179f1
+// 0.150174
+0x3e19c73f
+// 0.214677
+0x3e5bd45b
+// 0.652049
+0x3f26ecad
+// 0.614698
+0x3f1d5cdb
+// 0.848286
+0x3f59294a
+// 0.659570
+0x3f28d993
+// 0.787641
+0x3f49a2d5
+// 0.476393
+0x3ef3e9d5
+// 0.238094
+0x3e73cefe
+// 0.572233
+0x3f127dde
+// 0.454888
+0x3ee8e711
+// 0.577090
+0x3f13bc28
+// 0.481473
+0x3ef683a9
+// 0.062969
+0x3d80f5b7
+// 0.618680
+0x3f1e61d4
+// 0.456027
+0x3ee97c51
+// 0.712535
+0x3f3668b8
+// 0.586432
+0x3f16206b
+// 0.408123
+0x3ed0f58d
+// 0.830825
+0x3f54b0fa
+// 0.894472
+0x3f64fc1d
+// 0.205785
+0x3e52b95c
+// 0.776652
+0x3f46d2aa
+// 0.440281
+0x3ee16c89
+// 0.885801
+0x3f62c3d3
+// 0.266881
+0x3e88a491
+// 0.133417
+0x3e089e96
+// 0.870033
+0x3f5eba81
+// 0.852475
+0x3f5a3bcb
+// 0.967438
+0x3f77aa09
+// 0.700322
+0x3f334850
+// 0.466258
+0x3eeeb964
+// 0.535914
+0x3f0931a6
+// 0.147955
+0x3e178193
+// 0.085273
+0x3daea3bc
+// 0.409055
+0x3ed16f99
+// 0.866254
+0x3f5dc2ce
+// 0.745862
+0x3f3ef0d5
+// 0.744968
+0x3f3eb63d
+// 0.254269
+0x3e822f7c
+// 0.492259
+0x3efc0960
+// 0.645834
+0x3f255563
+// 0.907343
+0x3f6847a5
+// 0.446058
+0x3ee461a7
+// 0.656767
+0x3f2821db
+// 0.354532
+0x3eb5852f
+// 0.162912
+0x3e26d279
+// 0.636316
+0x3f22e597
+// 0.374453
+0x3ebfb840
+// 0.543636
+0x3f0b2bb9
+// 0.212023
+0x3e591c82
+// 0.017422
+0x3c8eb95c
+// 0.040684
+0x3d26a3df
+// 0.413895
+0x3ed3ea0a
+// 0.103329
+0x3dd39e35
+// 0.740504
+0x3f3d91ac
+// 0.063462
+0x3d81f828
+// 0.097147
+0x3dc6f538
+// 0.134973
+0x3e0a365e
+// 0.220582
+0x3e61e051
+// 0.845663
+0x3f587d57
+// 0.377738
+0x3ec166e0
+// 0.762882
+0x3f434c34
+// 0.367884
+0x3ebc5b3f
+// 0.717954
+0x3f37cbdd
+// 0.813918
+0x3f505cf1
+// 0.711267
+0x3f361596
+// 0.849020
+0x3f595958
+// 0.675269
+0x3f2cde72
+// 0.810645
+0x3f4f8668
+// 0.391518
+0x3ec87513
+// 0.598795
+0x3f194aa4
+// 0.805983
+0x3f4e54e7
+// 0.167993
+0x3e2c0669
+// 0.042864
+0x3d2f91f3
+// 0.378687
+0x3ec1e339
+// 0.806235
+0x3f4e6565
+// 0.967796
+0x3f77c179
+// 0.044739
+0x3d373fef
+// 0.671730
+0x3f2bf677
+// 0.896272
+0x3f65721b
+// 0.874101
+0x3f5fc51d
+// 0.254055
+0x3e821387
+// 0.458394
+0x3eeab2ac
+// 0.012050
+0x3c456f1a
+// 0.540610
+0x3f0a6573
+// 0.054006
+0x3d5d3588
+// 0.706505
+0x3f34dd8a
+// 0.479722
+0x3ef59e29
+// 0.657618
+0x3f2859ab
+// 0.921489
+0x3f6be6bb
+// 0.667266
+0x3f2ad1ee
+// 0.562099
+0x3f0fe5b2
+// 0.101243
+0x3dcf5885
+// 0.145080
+0x3e148fc6
+// 0.975041
+0x3f799c46
+// 0.547055
+0x3f0c0bcf
+// 0.220302
+0x3e6196e9
+// 0.940170
+0x3f70aef5
+// 0.518246
+0x3f04abbf
+// 0.927652
+0x3f6d7a94
+// 0.108384
+0x3dddf870
+// 0.298715
+0x3e98f123
+// 0.850941
+0x3f59d748
+// 0.866606
+0x3f5dd9eb
+// 0.719707
+0x3f383eb3
+// 0.097196
+0x3dc70e94
+// 0.698903
+0x3f32eb4d
+// 0.793130
+0x3f4b0a97
+// 0.889028
+0x3f639751
+// 0.261732
+0x3e8601bc
+// 0.471160
+0x3ef13be5
+// 0.388563
+0x3ec6f1bd
+// 0.824587
+0x3f531823
+// 0.450993
+0x3ee6e893
+// 0.714546
+0x3f36ec80
+// 0.728651
+0x3f3a88de
+// 0.401724
+0x3ecdaed4
+// 0.979670
+0x3f7acba1
+// 0.463166
+0x3eed2410
+// 0.051567
+0x3d53380c
+// 0.211710
+0x3e58ca9c
+// 0.392493
+0x3ec8f4c8
+// 0.445462
+0x3ee4139f
+// 0.667947
+0x3f2afe95
+// 0.007534
+0x3bf6dc73
+// 0.374327
+0x3ebfa7ca
+// 0.644061
+0x3f24e136
+// 0.607690
+0x3f1b9199
+// 0.142098
+0x3e118211
+// 0.410644
+0x3ed23ff8
+// 0.183958
+0x3e3c5f6f
+// 0.739951
+0x3f3d6d6d
+// 0.949943
+0x3f732f7f
+// 0.636233
+0x3f22e031
+// 0.772869
+0x3f45dabf
+// 0.570990
+0x3f122c61
+// 0.223198
+0x3e648dfe
+// 0.083726
+0x3dab788b
+// 0.945611
+0x3f72138e
+// 0.210980
+0x3e580b26
+// 0.485163
+0x3ef8674b
+// 0.167960
+0x3e2bfda1
+// 0.462902
+0x3eed0172
+// 0.459073
+0x3eeb0b99
+// 0.134399
+0x3e099fc3
+// 0.777868
+0x3f472260
+// 0.638235
+0x3f236363
+// 0.027028
+0x3cdd690a
+// 0.768559
+0x3f44c051
+// 0.936731
+0x3f6fcda0
+// 0.482215
+0x3ef6e4d2
+// 0.833868
+0x3f55785b
+// 0.270726
+0x3e8a9c9b
+// 0.790128
+0x3f4a45d5
+// 0.091621
+0x3dbba409
+// 0.224771
+0x3e662a7d
+// 0.521147
+0x3f0569ec
+// 0.168569
+0x3e2c9d71
+// 0.102978
+0x3dd2e62e
+// 0.567488
+0x3f1146e4
+// 0.633285
+0x3f221ef8
+// 0.496967
+0x3efe7276
+// 0.671034
+0x3f2bc8db
+// 0.141941
+0x3e1158db
+// 0.382639
+0x3ec3e933
+// 0.694064
+0x3f31ae32
+// 0.283286
+0x3e910ae2
+// 0.555667
+0x3f0e4030
+// 0.180917
+0x3e39424e
+// 0.761112
+0x3f42d843
+// 0.742647
+0x3f3e1e1e
+// 0.829121
+0x3f54414b
+// 0.329452
+0x3ea8adff
+// 0.155966
+0x3e1fb596
+// 0.598162
+0x3f192121
+// 0.039838
+0x3d232cda
+// 0.996060
+0x3f7efdcc
+// 0.623951
+0x3f1fbb46
+// 0.429394
+0x3edbd98f
+// 0.029606
+0x3cf28756
+// 0.715957
+0x3f3748f4
+// 0.858988
+0x3f5be69b
+// 0.962442
+0x3f76629c
+// 0.115045
+0x3deb9cdf
+// 0.821302
+0x3f5240d3
+// 0.194955
+0x3e47a265
+// 0.288926
+0x3e93ee1a
+// 0.453129
+0x3ee80096
+// 0.674244
+0x3f2c9b47
+// 0.929029
+0x3f6dd4dd
+// 0.272604
+0x3e8b92bd
+// 0.905093
+0x3f67b425
+// 0.108339
+0x3ddde0fa
+// 0.433276
+0x3eddd65c
+// 0.257935
+0x3e841004
+// 0.689607
+0x3f308a0f
+// 0.776217
+0x3f46b628
+// 0.782659
+0x3f485c56
+// 0.744741
+0x3f3ea75e
+// 0.479145
+0x3ef5527d
+// 0.162377
+0x3e264630
+// 0.321092
+0x3ea4661c
+// 0.326764
+0x3ea74da5
+// 0.583565
+0x3f156483
+// 0.664366
+0x3f2a13dc
+// 0.842223
+0x3f579be8
+// 0.534025
+0x3f08b5e0
+// 0.689323
+0x3f307773
+// 0.991675
+0x3f7dde6d
+// 0.164698
+0x3e28a687
+// 0.459763
+0x3eeb6605
+// 0.041152
+0x3d288f6e
+// 0.808787
+0x3f4f0ca9
+// 0.855003
+0x3f5ae178
+// 0.147840
+0x3e176377
+// 0.948836
+0x3f72e6f1
+// 0.203787
+0x3e50ad9c
+// 0.027786
+0x3ce39f73
+// 0.515176
+0x3f03e290
+// 0.503093
+0x3f00cab0
+// 0.235564
+0x3e7137bd
+// 0.329985
+0x3ea8f3cb
+// 0.180559
+0x3e38e464
+// 0.988253
+0x3f7cfe2b
+// 0.683685
+0x3f2f05f6
+// 0.270577
+0x3e8a890c
+// 0.300566
+0x3e99e3c2
+// 0.819301
+0x3f51bdb0
+// 0.884445
+0x3f626af6
+// 0.636002
+0x3f22d108
+// 0.803323
+0x3f4da695
+// 0.459424
+0x3eeb39a8
+// 0.760703
+0x3f42bd6a
+// 0.468179
+0x3eefb528
+// 0.954252
+0x3f7449dc
+// 0.996008
+0x3f7efa63
+// 0.438305
+0x3ee06985
+// 0.333935
+0x3eaaf97b
+// 0.478193
+0x3ef4d5b9
+// 0.951880
+0x3f73ae68
+// 0.714579
+0x3f36eea5
+// 0.582953
+0x3f153c6c
+// 0.829013
+0x3f543a38
+// 0.142357
+0x3e11c616
+// 0.713639
+0x3f36b10e
+// 0.366276
+0x3ebb888c
+// 0.708953
+0x3f357df4
+// 0.367579
+0x3ebc3360
+// 0.175431
+0x3e33a40f
+// 0.728292
+0x3f3a7150
+// 0.059305
+0x3d72e9a5
+// 0.734278
+0x3f3bf9ab
+// 0.056661
+0x3d68151a
+// 0.839334
+0x3f56de9e
+// 0.907503
+0x3f685222
+// 0.943477
+0x3f7187b3
+// 0.480545
+0x3ef60a06
+// 0.693824
+0x3f319e77
+// 0.961646
+0x3f762e6c
+// 0.107636
+0x3ddc702f
+// 0.552178
+0x3f0d5b8f
+// 0.496020
+0x3efdf659
+// 0.164585
+0x3e2888d8
+// 0.275411
+0x3e8d02b0
+// 0.820502
+0x3f520c6f
+// 0.572686
+0x3f129b86
+// 0.854052
+0x3f5aa323
+// 0.894032
+0x3f64df4e
+// 0.615364
+0x3f1d8885
+// 0.005477
+0x3bb379bc
+// 0.346635
+0x3eb17a29
+// 0.842917
+0x3f57c970
+// 0.975072
+0x3f799e4e
+// 0.536203
+0x3f094496
+// 0.596844
+0x3f18cac5
+// 0.639833
+0x3f23cc12
+// 0.462912
+0x3eed02d3
+// 0.472733
+0x3ef20a0d
+// 0.091918
+0x3dbc3f8d
+// 0.400019
+0x3ecccf47
+// 0.059363
+0x3d7326aa
+// 0.943516
+0x3f718a4a
+// 0.602187
+0x3f1a28e6
+// 0.494725
+0x3efd4c9a
+// 0.874153
+0x3f5fc881
+// 0.185864
+0x3e3e5337
+// 0.294193
+0x3e96a06f
+// 0.640795
+0x3f240b23
+// 0.589667
+0x3f16f465
+// 0.315204
+0x3ea16279
+// 0.716707
+0x3f377a16
+// 0.437253
+0x3edfdfa1
+// 0.723770
+0x3f394900
+// 0.271213
+0x3e8adc74
+// 0.312137
+0x3e9fd06a
+// 0.279987
+0x3e8f5a81
+// 0.555220
+0x3f0e22e2
+// 0.462736
+0x3eecebc6
+// 0.952902
+0x3f73f15d
+// 0.759508
+0x3f426f16
+// 0.116599
+0x3deecb7e
+// 0.656309
+0x3f2803e1
+// 0.165827
+0x3e29ce92
+// 0.751954
+0x3f408012
+// 0.139622
+0x3e0ef909
+// 0.374383
+0x3ebfaf12
+// 0.532927
+0x3f086ded
+// 0.736689
+0x3f3c97a5
+// 0.909813
+0x3f68e97a
+// 0.432321
+0x3edd5929
+// 0.308202
+0x3e9dcca4
+// 0.754075
+0x3f410b14
+// 0.079151
+0x3da219fe
+// 0.278933
+0x3e8ed05e
+// 0.508528
+0x3f022ee6
+// 0.796072
+0x3f4bcb5f
+// 0.908245
+0x3f6882ba
+// 0.050836
+0x3d5038ee
+// 0.490990
+0x3efb6312
+// 0.616733
+0x3f1de237
+// 0.666961
+0x3f2abdef
+// 0.191304
+0x3e43e54f
+// 0.825463
+0x3f535193
+// 0.481825
+0x3ef6b1c1
+// 0.901558
+0x3f66cc80
+// 0.024871
+0x3ccbbd69
+// 0.103088
+0x3dd31f9f
+// 0.634074
+0x3f2252a6
+// 0.798937
+0x3f4c8723
+// 0.095868
+0x3dc45655
+// 0.767129
+0x3f446290
+// 0.304019
+0x3e9ba864
+// 0.674884
+0x3f2cc538
+// 0.432898
+0x3edda4d2
+// 0.279154
+0x3e8eed3b
+// 0.742553
+0x3f3e17f9
+// 0.225111
+0x3e66838b
+// 0.472184
+0x3ef1c22a
+// 0.964907
+0x3f770420
+// 0.561497
+0x3f0fbe4b
+// 0.900540
+0x3f6689c2
+// 0.610626
+0x3f1c5201
+// 0.103148
+0x3dd33f21
+// 0.573996
+0x3f12f16b
+// 0.201544
+0x3e4e6182
+// 0.555211
+0x3f0e224c
+// 0.892440
+0x3f6476f9
+// 0.114974
+0x3deb776e
+// 0.445626
+0x3ee42921
+// 0.342873
+0x3eaf8d08
+// 0.295576
+0x3e9755c7
+// 0.926393
+0x3f6d281a
+// 0.329313
+0x3ea89bc7
+// 0.628781
+0x3f20f7ca
+// 0.097157
+0x3dc6fa0f
+// 0.210939
+0x3e58007e
+// 0.504811
+0x3f013b46
+// 0.533594
+0x3f0899a0
+// 0.156287
+0x3e2009c0
+// 0.477503
+0x3ef47b42
+// 0.995948
+0x3f7ef674
+// 0.119198
+0x3df41e2a
+// 0.742590
+0x3f3e1a5d
+// 0.892470
+0x3f6478eb
+// 0.377589
+0x3ec15354
+// 0.504695
+0x3f0133ae
+// 0.406877
+0x3ed0523e
+// 0.124198
+0x3dfe5ba0
+// 0.978843
+0x3f7a956d
+// 0.287829
+0x3e935e42
+// 0.658282
+0x3f288531
+// 0.384005
+0x3ec49c58
+// 0.152386
+0x3e1c0b2e
+// 0.140113
+0x3e0f79ab
+// 0.756930
+0x3f41c627
+// 0.822702
+0x3f529c94
+// 0.911114
+0x3f693ec0
+// 0.211183
+0x3e58407b
+// 0.957456
+0x3f751bce
+// 0.264593
+0x3e8778b0
+// 0.775765
+0x3f469881
+// 0.884973
+0x3f628d9a
+// 0.192218
+0x3e44d4c5
+// 0.497294
+0x3efe9d4f
+// 0.940341
+0x3f70ba2b
+// 0.463775
+0x3eed73e7
+// 0.284287
+0x3e918e0a
+// 0.028023
+0x3ce58fdb
+// 0.921230
+0x3f6bd5c1
+// 0.839874
+0x3f5701fe
+// 0.587280
+0x3f1657ff
+// 0.506772
+0x3f01bbd6
+// 0.166623
+0x3e2a9f3d
+// 0.962137
+0x3f764ea2
+// 0.768755
+0x3f44cd27
+// 0.630292
+0x3f215ad1
+// 0.588814
+0x3f16bc88
+// 0.324767
+0x3ea647e5
+// 0.224224
+0x3e659b14
+// 0.917902
+0x3f6afba7
+// 0.578127
+0x3f140024
+// 0.380875
+0x3ec30205
+// 0.340731
+0x3eae743e
+// 0.108144
+0x3ddd7a60
+// 0.389377
+0x3ec75c5c
+// 0.026727
+0x3cdaf27c
+// 0.747721
+0x3f3f6a9d
+// 0.181112
+0x3e397583
+// 0.823767
+0x3f52e262
+// 0.320703
+0x3ea43334
+// 0.596830
+0x3f18c9df
+// 0.510831
+0x3f02c5d2
+// 0.482037
+0x3ef6cd88
+// 0.006830
+0x3bdfcd97
+// 0.535142
+0x3f08ff0c
+// 0.634151
+0x3f2257b6
+// 0.181658
+0x3e3a04a0
+// 0.863332
+0x3f5d034d
+// 0.061101
+0x3d7a44b2
+// 0.788738
+0x3f49eac2
+// 0.577245
+0x3f13c64e
+// 0.579766
+0x3f146b83
+// 0.023437
+0x3cbffdeb
+// 0.069172
+0x3d8da9e0
+// 0.888458
+0x3f6371f4
+// 0.806226
+0x3f4e64ce
+// 0.332364
+0x3eaa2b99
+// 0.568727
+0x3f119819
+// 0.597600
+0x3f18fc58
+// 0.398101
+0x3ecbd3d9
+// 0.673388
+0x3f2c632e
+// 0.989412
+0x3f7d4a22
+// 0.095533
+0x3dc3a6da
+// 0.924499
+0x3f6cabf7
+// 0.652820
+0x3f271f38
+// 0.672003
+0x3f2c0867
+// 0.032832
+0x3d067b5c
+// 0.087062
+0x3db24d72
+// 0.225564
+0x3e66fa41
+// 0.952763
+0x3f73e848
+// 0.844683
+0x3f583d28
+// 0.506756
+0x3f01bac7
+// 0.957328
+0x3f75137a
+// 0.858550
+0x3f5bc9e7
+// 0.230272
+0x3e6bcc66
+// 0.696627
+0x3f32562a
+// 0.618255
+0x3f1e45f1
+// 0.821334
+0x3f5242ef
+// 0.695357
+0x3f3202e8
+// 0.468141
+0x3eefb039
+// 0.991276
+0x3f7dc43b
+// 0.719219
+0x3f381eba
+// 0.874543
+0x3f5fe211
+// 0.040938
+0x3d27aeb5
+// 0.648517
+0x3f260532
+// 0.474641
+0x3ef3041d
+// 0.636614
+0x3f22f921
+// 0.614312
+0x3f1d4388
+// 0.511335
+0x3f02e6db
+// 0.740214
+0x3f3d7ead
+// 0.793822
+0x3f4b37ef
+// 0.567090
+0x3f112cc9
+// 0.505589
+0x3f016e4f
+// 0.249654
+0x3e7fa53e
+// 0.477899
+0x3ef4af2e
+// 0.900007
+0x3f6666e0
+// 0.719081
+0x3f3815b2
+// 0.911133
+0x3f693ffd
+// 0.046875
+0x3d3fff89
+// 0.711641
+0x3f362e1e
+// 0.918593
+0x3f6b28eb
+// 0.337914
+0x3ead0318
+// 0.906791
+0x3f682379
+// 0.778779
+0x3f475e14
+// 0.267502
+0x3e88f5fa
+// 0.992576
+0x3f7e1977
+// 0.302786
+0x3e9b06cc
+// 0.638220
+0x3f236264
+// 0.121444
+0x3df8b7ad
+// 0.425308
+0x3ed9c201
+// 0.220132
+0x3e616a2d
+// 0.030611
+0x3cfac497
+// 0.142055
+0x3e1176f2
+// 0.150993
+0x3e1a9e06
+// 0.487363
+0x3ef9879d
+// 0.416374
+0x3ed52f02
+// 0.996678
+0x3f7f2651
+// 0.743265
+0x3f3e469a
+// 0.815886
+0x3f50ddeb
+// 0.208051
+0x3e550b64
+// 0.642623
+0x3f2482f4
+// 0.617734
+0x3f1e23d2
+// 0.788576
+0x3f49e01d
+// 0.121769
+0x3df96248
+// 0.857601
+0x3f5b8bb6
+// 0.460880
+0x3eebf876
+// 0.395455
+0x3eca7912
+// 0.935192
+0x3f6f68c0
+// 0.731427
+0x3f3b3ecc
+// 0.715428
+0x3f372643
+// 0.245586
+0x3e7b7adb
+// 0.217211
+0x3e5e6c78
+// 0.002441
+0x3b1ff7c0
+// 0.307269
+0x3e9d5263
+// 0.427453
+0x3edadb11
+// 0.384469
+0x3ec4d91f
+// 0.752225
+0x3f4091d8
+// 0.367987
+0x3ebc68bc
+// 0.999045
+0x3f7fc16f
+// 0.472516
+0x3ef1eda0
+// 0.728771
+0x3f3a90c2
+// 0.843982
+0x3f580f30
+// 0.035521
+0x3d117dff
+// 0.456217
+0x3ee9953d
+// 0.296926
+0x3e9806b8
+// 0.456461
+0x3ee9b548
+// 0.924338
+0x3f6ca164
+// 0.278786
+0x3e8ebcfb
+// 0.861866
+0x3f5ca346
+// 0.732783
+0x3f3b97b1
+// 0.536258
+0x3f094838
+// 0.856545
+0x3f5b468c
+// 0.116990
+0x3def9894
+// 0.073528
+0x3d9695fd
+// 0.563657
+0x3f104bd6
+// 0.369055
+0x3ebcf4b7
+// 0.902140
+0x3f66f2a7
+// 0.129865
+0x3e04fb5f
+// 0.840925
+0x3f5746e4
+// 0.630214
+0x3f2155bd
+// 0.637908
+0x3f234df3
+// 0.483031
+0x3ef74fd5
+// 0.863116
+0x3f5cf52a
+// 0.117589
+0x3df0d244
+// 0.544921
+0x3f0b7ff6
+// 0.802900
+0x3f4d8ad3
+// 0.259482
+0x3e84daca
+// 0.193540
+0x3e462f63
+// 0.813305
+0x3f5034ba
+// 0.912177
+0x3f698475
+// 0.822538
+0x3f5291d9
+// 0.857367
+0x3f5b7c67
+// 0.966019
+0x3f774d04
+// 0.771527
+0x3f4582cf
+// 0.471581
+0x3ef17311
+// 0.544341
+0x3f0b59ec
+// 0.642400
+0x3f24744d
+// 0.029625
+0x3cf2b12c
+// 0.344802
+0x3eb089e8
+// 0.160529
+0x3e2461d7
+// 0.226788
+0x3e683b2a
+// 0.487340
+0x3ef9849c
+// 0.777039
+0x3f46ec03
+// 0.884166
+0x3f6258b5
+// 0.564594
+0x3f108938
+// 0.565909
+0x3f10df67
+// 0.242798
+0x3e78a010
+// 0.076026
+0x3d9bb3a9
+// 0.307141
+0x3e9d41a5
+// 0.729865
+0x3f3ad868
+// 0.130833
+0x3e05f913
+// 0.426747
+0x3eda7e8f
+// 0.046606
+0x3d3ee5de
+// 0.384770
+0x3ec500a1
+// 0.164001
+0x3e27eff7
+// 0.264558
+0x3e87741a
+// 0.652089
+0x3f26ef51
+// 0.268764
+0x3e899b64
+// 0.179058
+0x3e375b0c
+// 0.639075
+0x3f239a6b
+// 0.908744
+0x3f68a36f
+// 0.671625
+0x3f2befa2
+// 0.057596
+0x3d6be9e7
+// 0.046055
+0x3d3ca496
+// 0.761854
+0x3f4308e5
+// 0.705293
+0x3f348e16
+// 0.543333
+0x3f0b17d7
+// 0.591751
+0x3f177d03
+// 0.225362
+0x3e66c539
+// 0.463346
+0x3eed3ba9
+// 0.223351
+0x3e64b63c
+// 0.886446
+0x3f62ee27
+// 0.440474
+0x3ee185d7
+// 0.191189
+0x3e43c71f
+// 0.296056
+0x3e9794b2
+// 0.751608
+0x3f406961
+// 0.138525
+0x3e0dd970
+// 0.562024
+0x3f0fe0c7
+// 0.910534
+0x3f6918be
+// 0.285701
+0x3e924760
+// 0.114274
+0x3dea0887
+// 0.048516
+0x3d46b8e4
+// 0.104584
+0x3dd63003
+// 0.637060
+0x3f231656
+// 0.337062
+0x3eac9369
+// 0.120660
+0x3df71c8c
+// 0.155845
+0x3e1f95d9
+// 0.835267
+0x3f55d413
+// 0.451808
+0x3ee75358
+// 0.738367
+0x3f3d059f
+// 0.129901
+0x3e0504df
+// 0.523711
+0x3f0611ed
+// 0.632616
+0x3f21f31b
+// 0.600183
+0x3f19a590
+// 0.945399
+0x3f7205aa
+// 0.330175
+0x3ea90cbb
+// 0.282133
+0x3e9073bb
+// 0.759067
+0x3f42523d
+// 0.158752
+0x3e228fca
+// 0.669314
+0x3f2b582e
+// 0.367490
+0x3ebc27ae
+// 0.243125
+0x3e78f5c2
+// 0.199085
+0x3e4bdcfc
+// 0.583389
+0x3f1558fd
+// 0.209709
+0x3e56be05
+// 0.333065
+0x3eaa877b
+// 0.007246
+0x3bed6daf
+// 0.715005
+0x3f370a98
+// 0.749338
+0x3f3fd4a4
+// 0.453719
+0x3ee84dd6
+// 0.469652
+0x3ef07647
+// 0.388082
+0x3ec6b2a1
+// 0.800631
+0x3f4cf62e
+// 0.919843
+0x3f6b7adc
+// 0.383202
+0x3ec4330f
+// 0.635701
+0x3f22bd52
+// 0.613768
+0x3f1d1fe7
+// 0.129721
+0x3e04d594
+// 0.134345
+0x3e0991c5
+// 0.010867
+0x3c320d1f
+// 0.642187
+0x3f24665b
+// 0.826354
+0x3f538bf3
+// 0.884882
+0x3f62879a
+// 0.747094
+0x3f3f418b
+// 0.755370
+0x3f415ff3
+// 0.196020
+0x3e48b982
+// 0.283229
+0x3e910375
+// 0.169216
+0x3e2d46f8
+// 0.303311
+0x3e9b4b91
+// 0.184206
+0x3e3ca07f
+// 0.603886
+0x3f1a9845
+// 0.181016
+0x3e395c2d
+// 0.876052
+0x3f6044f8
+// 0.534055
+0x3f08b7cf
+// 0.018925
+0x3c9b0900
+// 0.392578
+0x3ec9000c
+// 0.244424
+0x3e7a4a48
+// 0.225913
+0x3e6755aa
+// 0.192671
+0x3e454b6f
+// 0.218949
+0x3e603437
+// 0.566805
+0x3f111a23
+// 0.126535
+0x3e01926d
+// 0.633465
+0x3f222ac9
+// 0.311889
+0x3e9faff6
+// 0.499582
+0x3effc92c
+// 0.937215
+0x3f6fed4b
+// 0.371977
+0x3ebe73c9
+// 0.151912
+0x3e1b8ebf
+// 0.782945
+0x3f486f1d
+// 0.424895
+0x3ed98bc6
+// 0.736815
+0x3f3c9fe5
+// 0.993313
+0x3f7e49c6
+// 0.013259
+0x3c593e06
+// 0.932077
+0x3f6e9c9e
+// 0.371637
+0x3ebe4728
+// 0.930772
+0x3f6e4714
+// 0.608928
+0x3f1be2ac
+// 0.340000
+0x3eae147d
+// 0.782050
+0x3f48346b
+// 0.569543
+0x3f11cd8f
+// 0.084432
+0x3dacea73
+// 0.708050
+0x3f3542c7
+// 0.084078
+0x3dac30e6
+// 0.649736
+0x3f26551c
+// 0.217313
+0x3e5e8738
+// 0.736537
+0x3f3c8daf
+// 0.443283
+0x3ee2f5f3
+// 0.877049
+0x3f608645
+// 0.314489
+0x3ea104ab
+// 0.406118
+0x3ecfeeaf
+// 0.052931
+0x3d58cdb2
+// 0.899174
+0x3f66303f
+// 0.307759
+0x3e9d929b
+// 0.195424
+0x3e481d4f
+// 0.843179
+0x3f57da90
+// 0.327774
+0x3ea7d204
+// 0.195136
+0x3e47d1c6
+// 0.817567
+0x3f514c19
+// 0.965668
+0x3f7735fd
+// 0.347549
+0x3eb1f1f0
+// 0.607753
+0x3f1b95ac
+// 0.863253
+0x3f5cfe28
+// 0.109120
+0x3ddf7a8f
+// 0.138892
+0x3e0e39d2
+// 0.672697
+0x3f2c35da
+// 0.470354
+0x3ef0d237
+// 0.929128
+0x3f6ddb5a
+// 0.194414
+0x3e471496
+// 0.889887
+0x3f63cfa6
+// 0.497536
+0x3efebd01
+// 0.005254
+0x3bac2b28
+// 0.662488
+0x3f2998cb
+// 0.840656
+0x3f573538
+// 0.935167
+0x3f6f6720
+// 0.712594
+0x3f366c98
+// 0.111977
+0x3de553fa
+// 0.922903
+0x3f6c435b
+// 0.676589
+0x3f2d34ed
+// 0.703595
+0x3f341ed2
+// 0.565090
+0x3f10a9b6
+// 0.451077
+0x3ee6f382
+// 0.364603
+0x3ebaad4b
+// 0.135036
+0x3e0a46f9
+// 0.681457
+0x3f2e73f0
+// 0.165200
+0x3e292a3d
+// 0.594241
+0x3f182030
+// 0.463747
+0x3eed7045
+// 0.959811
+0x3f75b625
+// 0.201585
+0x3e4e6c52
+// 0.252953
+0x3e818309
+// 0.206133
+0x3e53149e
+// 0.142887
+0x3e1250e7
+// 0.374868
+0x3ebfeeac
+// 0.018994
+0x3c9b9a08
+// 0.222248
+0x3e6394fe
+// 0.069923
+0x3d8f33b3
+// 0.703722
+0x3f342721
+// 0.049359
+0x3d4a2c92
+// 0.930280
+0x3f6e26d0
+// 0.712522
+0x3f3667d6
+// 0.182809
+0x3e3b3257
+// 0.267286
+0x3e88d9ae
+// 0.907014
+0x3f683213
+// 0.861270
+0x3f5c7c33
+// 0.684159
+0x3f2f2505
+// 0.817156
+0x3f513121
+// 0.037816
+0x3d1ae579
+// 0.941880
+0x3f711f0a
+// 0.720066
+0x3f385642
+// 0.058651
+0x3d703c14
+// 0.017050
+0x3c8bad00
+// 0.152513
+0x3e1c2c62
+// 0.637504
+0x3f23337e
+// 0.985150
+0x3f7c32c3
+// 0.127548
+0x3e029be8
+// 0.947433
+0x3f728af6
+// 0.889508
+0x3f63b6d2
+// 0.553239
+0x3f0da110
+// 0.157402
+0x3e212e1c
+// 0.099714
+0x3dcc36b6
+// 0.668089
+0x3f2b07e6
+// 0.669589
+0x3f2b6a30
+// 0.551022
+0x3f0d0fc1
+// 0.980439
+0x3f7afe0f
+// 0.720962
+0x3f3890f4
+// 0.442235
+0x3ee26ca0
+// 0.335549
+0x3eabcd0f
+// 0.738054
+0x3f3cf118
+// 0.504762
+0x3f013811
+// 0.316300
+0x3ea1f205
+// 0.051041
+0x3d511042
+// 0.810274
+0x3f4f6e1e
+// 0.865024
+0x3f5d723c
+// 0.544982
+0x3f0b83f9
+// 0.699065
+0x3f32f5ee
+// 0.879483
+0x3f6125c4
+// 0.213518
+0x3e5aa48e
+// 0.264654
+0x3e8780b3
+// 0.427602
+0x3edaeea3
+// 0.683149
+0x3f2ee2dd
+// 0.749860
+0x3f3ff6d5
+// 0.424768
+0x3ed97b2e
+// 0.231021
+0x3e6c90da
+// 0.914517
+0x3f6a1dd0
+// 0.745699
+0x3f3ee629
+// 0.174038
+0x3e3236ec
+// 0.872969
+0x3f5f7ae9
+// 0.827993
+0x3f53f75c
+// 0.013240
+0x3c58eb2f
+// 0.713897
+0x3f36c1ee
+// 0.018217
+0x3c953b28
+// 0.862698
+0x3f5cd9cd
+// 0.695108
+0x3f31f29d
+// 0.841406
+0x3f57665b
+// 0.508442
+0x3f022941
+// 0.087501
+0x3db333a9
+// 0.378728
+0x3ec1e8a7
+// 0.030925
+0x3cfd5583
+// 0.185179
+0x3e3d9f75
+// 0.755191
+0x3f41542f
+// 0.159523
+0x3e235a08
+// 0.307820
+0x3e9d9a9d
+// 0.066744
+0x3d88b0eb
+// 0.332862
+0x3eaa6ce9
+// 0.737279
+0x3f3cbe52
+// 0.149988
+0x3e199689
+// 0.088915
+0x3db618ef
+// 0.109440
+0x3de02235
+// 0.707838
+0x3f3534dc
+// 0.278617
+0x3e8ea6e2
+// 0.010056
+0x3c24c2ea
+// 0.775659
+0x3f46919e
+// 0.321029
+0x3ea45df6
+// 0.527113
+0x3f06f0e2
+// 0.084797
+0x3dadaa45
+// 0.986852
+0x3f7ca258
+// 0.905214
+0x3f67bc18
+// 0.185194
+0x3e3da39e
+// 0.924451
+0x3f6ca8d6
+// 0.335483
+0x3eabc47d
+// 0.683551
+0x3f2efd3a
+// 0.176060
+0x3e344934
+// 0.324114
+0x3ea5f256
+// 0.821590
+0x3f5253b4
+// 0.318415
+0x3ea3075a
+// 0.143098
+0x3e128844
+// 0.415866
+0x3ed4ec57
+// 0.479578
+0x3ef58b38
+// 0.233286
+0x3e6ee271
+// 0.009148
+0x3c15e312
+// 0.870126
+0x3f5ec093
+// 0.546923
+0x3f0c031d
+// 0.779830
+0x3f47a2f8
+// 0.920584
+0x3f6bab65
+// 0.210432
+0x3e577b86
+// 0.848002
+0x3f5916a5
+// 0.380686
+0x3ec2e937
+// 0.303246
+0x3e9b4313
+// 0.315235
+0x3ea1666f
+// 0.106499
+0x3dda1c4d
+// 0.573751
+0x3f12e15f
+// 0.657783
+0x3f28647e
+// 0.233623
+0x3e6f3abe
+// 0.827135
+0x3f53bf25
+// 0.619812
+0x3f1eac03
+// 0.888950
+0x3f63923f
+// 0.062680
+0x3d805e4f
+// 0.542542
+0x3f0ae402
+// 0.447095
+0x3ee4e9a2
+// 0.641313
+0x3f242d0f
+// 0.474151
+0x3ef2c3ef
+// 0.837467
+0x3f566444
+// 0.626693
+0x3f206ef9
+// 0.467863
+0x3eef8bca
+// 0.944000
+0x3f71a9f9
+// 0.728535
+0x3f3a813f
+// 0.341762
+0x3eaefb66
+// 0.777633
+0x3f4712fa
+// 0.250838
+0x3e806dd4
+// 0.450255
+0x3ee687d0
+// 0.763239
+0x3f4363a3
+// 0.169211
+0x3e2d4595
+// 0.648984
+0x3f2623cd
+// 0.343470
+0x3eafdb4e
+// 0.066975
+0x3d892a69
+// 0.927018
+0x3f6d510f
+// 0.578543
+0x3f141b6a
+// 0.452507
+0x3ee7af07
+// 0.502768
+0x3f00b566
+// 0.000318
+0x39a6be7d
+// 0.513149
+0x3f035dba
+// 0.189002
+0x3e4189c5
+// 0.093558
+0x3dbf9b3e
+// 0.122923
+0x3dfbbed0
+// 0.382983
+0x3ec41667
+// 0.707510
+0x3f351f62
+// 0.275103
+0x3e8cda56
+// 0.477663
+0x3ef49046
+// 0.706751
+0x3f34eda3
+// 0.780210
+0x3f47bbd1
+// 0.535410
+0x3f0910a1
+// 0.252988
+0x3e81879b
+// 0.591116
+0x3f175369
+// 0.434341
+0x3ede61e9
+// 0.861048
+0x3f5c6da9
+// 0.485921
+0x3ef8caa1
+// 0.724698
+0x3f3985ca
+// 0.770068
+0x3f45232a
+// 0.285292
+0x3e9211c2
+// 0.135634
+0x3e0ae38a
+// 0.516035
+0x3f041ade
+// 0.607822
+0x3f1b9a38
+// 0.215739
+0x3e5ceaa2
+// 0.516761
+0x3f044a74
+// 0.172870
+0x3e3104df
+// 0.407066
+0x3ed06aef
+// 0.545975
+0x3f0bc504
+// 0.170719
+0x3e2ed105
+// 0.312119
+0x3e9fce1e
+// 0.116592
+0x3deec7d8
+// 0.870264
+0x3f5ec99b
+// 0.731557
+0x3f3b474a
+// 0.027592
+0x3ce2092c
+// 0.967181
+0x3f77992e
+// 0.620409
+0x3f1ed31a
+// 0.518923
+0x3f04d825
+// 0.811927
+0x3f4fda76
+// 0.291128
+0x3e950ec7
+// 0.576630
+0x3f139e0e
+// 0.722381
+0x3f38edf2
+// 0.710186
+0x3f35cec4
+// 0.803185
+0x3f4d9d83
+// 0.921335
+0x3f6bdc99
+// 0.358425
+0x3eb78380
+// 0.805288
+0x3f4e275f
+// 0.684976
+0x3f2f5a99
+// 0.247536
+0x3e7d7a0f
+// 0.594404
+0x3f182ade
+// 0.791990
+0x3f4abfe0
+// 0.153127
+0x3e1ccd71
+// 0.361448
+0x3eb90fbc
+// 0.151679
+0x3e1b51dc
+// 0.058358
+0x3d6f08ae
+// 0.543447
+0x3f0b1f54
+// 0.211381
+0x3e58742c
+// 0.473937
+0x3ef2a7d5
+// 0.695883
+0x3f322560
+// 0.891287
+0x3f642b64
+// 0.928469
+0x3f6db029
+// 0.916230
+0x3f6a8e09
+// 0.319635
+0x3ea3a72a
+// 0.689938
+0x3f309fcb
+// 0.926841
+0x3f6d4574
+// 0.991186
+0x3f7dbe60
+// 0.650771
+0x3f2698e9
+// 0.978749
+0x3f7a8f51
+// 0.010000
+0x3c23d528
+// 0.089063
+0x3db666d6
+// 0.094029
+0x3dc09209
+// 0.639569
+0x3f23bac4
+// 0.262742
+0x3e86861b
+// 0.562242
+0x3f0fef1f
+// 0.447500
+0x3ee51ebc
+// 0.481075
+0x3ef64f6d
+// 0.760432
+0x3f42abb1
+// 0.437115
+0x3edfcd7e
+// 0.397019
+0x3ecb460c
+// 0.589272
+0x3f16da8b
+// 0.186518
+0x3e3efe8a
+// 0.277864
+0x3e8e4421
+// 0.003105
+0x3b4b7ddf
+// 0.302719
+0x3e9afdfe
+// 0.600269
+0x3f19ab39
+// 0.502514
+0x3f00a4bb
+// 0.770663
+0x3f454a2c
+// 0.885045
+0x3f629248
+// 0.875348
+0x3f6016d4
+// 0.706899
+0x3f34f756
+// 0.574501
+0x3f131277
+// 0.806482
+0x3f4e759b
+// 0.976507
+0x3f79fc5b
+// 0.262022
+0x3e8627c8
+// 0.645645
+0x3f2548fd
+// 0.195860
+0x3e488f9c
+// 0.925535
+0x3f6cefe2
+// 0.716515
+0x3f376d8f
+// 0.017882
+0x3c927e10
+// 0.910868
+0x3f692e9f
+// 0.575051
+0x3f133684
+// 0.068695
+0x3d8cb007
+// 0.422440
+0x3ed84a14
+// 0.718297
+0x3f37e248
+// 0.669112
+0x3f2b4aeb
+// 0.787389
+0x3f49925a
+// 0.003860
+0x3b7cfd3d
+// 0.542926
+0x3f0afd36
+// 0.294065
+0x3e968fad
+// 0.626146
+0x3f204b17
+// 0.094529
+0x3dc1986d
+// 0.493087
+0x3efc75dd
+// 0.933594
+0x3f6f0000
+// 0.941687
+0x3f711263
+// 0.060951
+0x3d79a77b
+// 0.872134
+0x3f5f442f
+// 0.477459
+0x3ef47578
+// 0.146746
+0x3e164484
+// 0.242564
+0x3e786294
+// 0.305726
+0x3e9c882d
+// 0.527044
+0x3f06ec60
+// 0.795415
+0x3f4ba04a
+// 0.881876
+0x3f61c2a7
+// 0.817190
+0x3f513360
+// 0.844227
+0x3f581f49
+// 0.918948
+0x3f6b402d
+// 0.661529
+0x3f2959f0
+// 0.480319
+0x3ef5ec4f
+// 0.554013
+0x3f0dd3cd
+// 0.828877
+0x3f543145
+// 0.363302
+0x3eba02b3
+// 0.078857
+0x3da18006
+// 0.434617
+0x3ede8617
+// 0.484785
+0x3ef835ba
+// 0.172622
+0x3e30c3d2
+// 0.278628
+0x3e8ea85d
+// 0.019975
+0x3ca3a22d
+// 0.350830
+0x3eb39ff0
+// 0.263362
+0x3e86d761
+// 0.278388
+0x3e8e88ed
+// 0.533651
+0x3f089d53
+// 0.189085
+0x3e419f6a
+// 0.443152
+0x3ee2e4da
+// 0.365016
+0x3ebae369
+// 0.988431
+0x3f7d09d3
+// 0.155917
+0x3e1fa8b5
+// 0.478941
+0x3ef537bb
+// 0.137015
+0x3e0c4d99
+// 0.968988
+0x3f780f92
+// 0.725334
+0x3f39af7c
+// 0.916187
+0x3f6a8b3a
+// 0.178252
+0x3e3687ae
+// 0.348505
+0x3eb26f50
+// 0.672897
+0x3f2c42f9
+// 0.041307
+0x3d2931b3
+// 0.071689
+0x3d92d1db
+// 0.402939
+0x3ece4e0c
+// 0.649492
+0x3f264519
+// 0.722051
+0x3f38d84f
+// 0.248807
+0x3e7ec740
+// 0.691080
+0x3f30ea97
+// 0.930226
+0x3f6e2351
+// 0.902110
+0x3f66f0ae
+// 0.234914
+0x3e708d57
+// 0.656917
+0x3f282bb4
+// 0.258374
+0x3e844997
+// 0.528990
+0x3f076be9
+// 0.084377
+0x3daccdf4
+// 0.640401
+0x3f23f157
+// 0.020516
+0x3ca8122c
+// 0.572559
+0x3f129339
+// 0.681235
+0x3f2e6568
+// 0.088610
+0x3db578ff
+// 0.160844
+0x3e24b44b
+// 0.822517
+0x3f52907f
+// 0.749133
+0x3f3fc732
+// 0.283319
+0x3e910f29
+// 0.255011
+0x3e8290c0
+// 0.488549
+0x3efa230e
+// 0.456597
+0x3ee9c717
+// 0.069617
+0x3d8e9387
+// 0.547830
+0x3f0c3e94
+// 0.615478
+0x3f1d9000
+// 0.208671
+0x3e55adc7
+// 0.129970
+0x3e0516ec
+// 0.030005
+0x3cf5cd14
+// 0.761162
+0x3f42db88
+// 0.668790
+0x3f2b35d5
+// 0.182752
+0x3e3b2370
+// 0.462927
+0x3eed04be
+// 0.488904
+0x3efa51a4
+// 0.708734
+0x3f356f92
+// 0.920910
+0x3f6bc0c0
+// 0.448549
+0x3ee5a841
+// 0.554726
+0x3f0e0282
+// 0.208162
+0x3e552865
+// 0.585517
+0x3f15e478
+// 0.861498
+0x3f5c8b24
+// 0.609711
+0x3f1c1603
+// 0.384696
+0x3ec4f6d5
+// 0.136235
+0x3e0b8133
+// 0.400845
+0x3ecd3b87
+// 0.466076
+0x3eeea179
+// 0.077179
+0x3d9e102d
+// 0.212449
+0x3e598c3b
+// 0.720191
+0x3f385e68
+// 0.721690
+0x3f38c0ad
+// 0.859217
+0x3f5bf5a7
+// 0.844062
+0x3f581471
+// 0.883497
+0x3f622cda
+// 0.008243
+0x3c070f01
+// 0.076744
+0x3d9d2bc4
+// 0.749418
+0x3f3fd9e1
+// 0.888105
+0x3f635adb
+// 0.212125
+0x3e59372e
+// 0.671658
+0x3f2bf1c4
+// 0.773023
+0x3f45e4d3
+// 0.239890
+0x3e75a5cf
+// 0.912582
+0x3f699ef9
+// 0.544940
+0x3f0b8135
+// 0.412753
+0x3ed35462
+// 0.822636
+0x3f529848
+// 0.402849
+0x3ece422d
+// 0.256400
+0x3e8346d0
+// 0.015965
+0x3c82c9b3
+// 0.077014
+0x3d9db985
+// 0.536236
+0x3f0946cb
+// 0.512091
+0x3f03186a
+// 0.369512
+0x3ebd30a5
+// 0.990567
+0x3f7d95ca
+// 0.919627
+0x3f6b6cab
+// 0.178579
+0x3e36dd6c
+// 0.993836
+0x3f7e6c0c
+// 0.544349
+0x3f0b5a74
+// 0.612160
+0x3f1cb67e
+// 0.925818
+0x3f6d026f
+// 0.670978
+0x3f2bc531
+// 0.984996
+0x3f7c28ad
+// 0.125372
+0x3e006181
+// 0.861168
+0x3f5c7583
+// 0.435276
+0x3ededc82
+// 0.506106
+0x3f01902b
+// 0.527710
+0x3f071806
+// 0.838136
+0x3f569019
+// 0.565609
+0x3f10cbba
+// 0.757847
+0x3f42023b
+// 0.955141
+0x3f748421
+// 0.741526
+0x3f3dd4a8
+// 0.274091
+0x3e8c55b7
+// 0.610788
+0x3f1c5ca0
+// 0.508215
+0x3f021a5b
+// 0.613049
+0x3f1cf0c1
+// 0.591736
+0x3f177c06
+// 0.403767
+0x3eceba92
+// 0.640456
+0x3f23f4e5
+// 0.678016
+0x3f2d926d
+// 0.025093
+0x3ccd8f49
+// 0.920452
+0x3f6ba2b8
+// 0.066531
+0x3d88412d
+// 0.100743
+0x3dce528b
+// 0.223543
+0x3e64e885
+// 0.083179
+0x3daa5993
+// 0.931059
+0x3f6e59dd
+// 0.542538
+0x3f0ae3bf
+// 0.621989
+0x3f1f3ab4
+// 0.233909
+0x3e6f85f1
+// 0.918295
+0x3f6b155b
+// 0.781744
+0x3f482066
+// 0.232578
+0x3e6e290b
+// 0.973213
+0x3f79247b
+// 0.778201
+0x3f473830
+// 0.868456
+0x3f5e5323
+// 0.785336
+0x3f490bc7
+// 0.347434
+0x3eb1e2eb
+// 0.368359
+0x3ebc9999
+// 0.726563
+0x3f3a0003
+// 0.064422
+0x3d83ef81
+// 0.888319
+0x3f6368e2
+// 0.600472
+0x3f19b884
+// 0.358586
+0x3eb798a0
+// 0.373921
+0x3ebf7297
+// 0.162645
+0x3e268c54
+// 0.561827
+0x3f0fd3e0
+// 0.501892
+0x3f007bf9
+// 0.666614
+0x3f2aa736
+// 0.599397
+0x3f197212
+// 0.377155
+0x3ec11a7c
+// 0.371999
+0x3ebe76a0
+// 0.833281
+0x3f5551ec
+// 0.701654
+0x3f339f9d
+// 0.674343
+0x3f2ca1c6
+// 0.798154
+0x3f4c53d7
+// 0.875780
+0x3f603322
+// 0.791138
+0x3f4a8805
+// 0.395078
+0x3eca47a2
+// 0.659769
+0x3f28e69e
+// 0.799836
+0x3f4cc210
+// 0.382974
+0x3ec4151d
+// 0.493889
+0x3efcdefd
+// 0.051666
+0x3d539fe7
+// 0.620349
+0x3f1ecf2f
+// 0.440450
+0x3ee1829a
+// 0.479404
+0x3ef57480
+// 0.028514
+0x3ce9968c
+// 0.195915
+0x3e489dd6
+// 0.304939
+0x3e9c20ed
+// 0.693760
+0x3f319a40
+// 0.516896
+0x3f045354
+// 0.039332
+0x3d211a51
+// 0.761534
+0x3f42f3e5
+// 0.743937
+0x3f3e72a7
+// 0.982794
+0x3f7b9863
+// 0.833589
+0x3f556618
+// 0.925580
+0x3f6cf2d0
+// 0.826810
+0x3f53a9d6
+// 0.231366
+0x3e6ceb3b
+// 0.132045
+0x3e0736c2
+// 0.835745
+0x3f55f366
+// 0.544060
+0x3f0b4780
+// 0.692979
+0x3f316715
+// 0.292541
+0x3e95c7f1
+// 0.416093
+0x3ed50a1c
+// 0.005523
+0x3bb4f644
+// 0.667184
+0x3f2acc99
+// 0.568121
+0x3f11705c
+// 0.942509
+0x3f714849
+// 0.490622
+0x3efb32df
+// 0.862348
+0x3f5cc2dc
+// 0.899017
+0x3f6625f9
+// 0.942525
+0x3f714951
+// 0.791941
+0x3f4abc9f
+// 0.334669
+0x3eab59bb
+// 0.901088
+0x3f66adb4
+// 0.888300
+0x3f6367a3
+// 0.808745
+0x3f4f09e2
+// 0.444467
+0x3ee3912b
+// 0.688366
+0x3f3038bc
+// 0.853307
+0x3f5a724d
+// 0.137823
+0x3e0d2196
+// 0.563126
+0x3f102901
+// 0.975391
+0x3f79b335
+// 0.475404
+0x3ef36838
+// 0.149755
+0x3e195950
+// 0.987446
+0x3f7cc947
+// 0.559965
+0x3f0f59e2
+// 0.798060
+0x3f4c4da2
+// 0.303998
+0x3e9ba590
+// 0.067283
+0x3d89cb7a
+// 0.691990
+0x3f31263d
+// 0.912512
+0x3f699a63
+// 0.999240
+0x3f7fce2b
+// 0.465331
+0x3eee3fea
+// 0.063346
+0x3d81bb92
+// 0.483928
+0x3ef7c56e
+// 0.022607
+0x3cb93182
+// 0.353338
+0x3eb4e8c8
+// 0.369341
+0x3ebd1a3c
+// 0.960730
+0x3f75f267
+// 0.411088
+0x3ed27a2f
+// 0.729665
+0x3f3acb56
+// 0.980798
+0x3f7b1598
+// 0.396296
+0x3ecae742
+// 0.050334
+0x3d4e2b50
+// 0.838063
+0x3f568b48
+// 0.619888
+0x3f1eb0f4
+// 0.867838
+0x3f5e2a9a
+// 0.014704
+0x3c70e6f9
+// 0.708475
+0x3f355e9e
+// 0.699903
+0x3f332cd5
+// 0.703718
+0x3f3426e3
+// 0.810865
+0x3f4f94d5
+// 0.799343
+0x3f4ca1b6
+// 0.620892
+0x3f1ef2cf
+// 0.796455
+0x3f4be481
+// 0.176123
+0x3e3459a3
+// 0.050431
+0x3d4e9073
+// 0.842357
+0x3f57a4af
+// 0.355939
+0x3eb63dae
+// 0.194733
+0x3e476832
+// 0.690779
+0x3f30d6ea
+// 0.202434
+0x3e4f4ae1
+// 0.569860
+0x3f11e251
+// 0.932456
+0x3f6eb571
+// 0.133616
+0x3e08d2be
+// 0.836898
+0x3f563efb
+// 0.185600
+0x3e3e0dcf
+// 0.718738
+0x3f37ff33
+// 0.178168
+0x3e3671bc
+// 0.236214
+0x3e71e225
+// 0.140204
+0x3e0f91bf
+// 0.033567
+0x3d097d2c
+// 0.759191
+0x3f425a4f
+// 0.883285
+0x3f621ef5
+// 0.493329
+0x3efc9595
+// 0.854566
+0x3f5ac4cf
+// 0.977896
+0x3f7a575d
+// 0.175269
+0x3e3379c5
+// 0.398151
+0x3ecbda74
+// 0.571355
+0x3f12444f
+// 0.212004
+0x3e5917ae
+// 0.336495
+0x3eac4903
+// 0.245319
+0x3e7b34ee
+// 0.114612
+0x3deab9d4
+// 0.204532
+0x3e5170cc
+// 0.580425
+0x3f1496bc
+// 0.562404
+0x3f0ff9af
+// 0.234863
+0x3e70800a
+// 0.178662
+0x3e36f330
+// 0.992527
+0x3f7e163e
+// 0.323098
+0x3ea56d10
+// 0.943178
+0x3f71741c
+// 0.457322
+0x3eea2617
+// 0.622743
+0x3f1f6c17
+// 0.162896
+0x3e26ce2b
+// 0.489265
+0x3efa80f1
+// 0.635501
+0x3f22b02b
+// 0.073076
+0x3d95a919
+// 0.495375
+0x3efda1cb
+// 0.007817
+0x3c0014da
+// 0.392788
+0x3ec91b7f
+// 0.880487
+0x3f616798
+// 0.179201
+0x3e378061
+// 0.291659
+0x3e955445
+// 0.383022
+0x3ec41b86
+// 0.293856
+0x3e967442
+// 0.692171
+0x3f313223
+// 0.004636
+0x3b97ea04
+// 0.674584
+0x3f2cb184
+// 0.896128
+0x3f65689e
+// 0.798392
+0x3f4c636a
+// 0.265409
+0x3e87e3aa
+// 0.670179
+0x3f2b90dd
+// 0.476557
+0x3ef3ff3a
+// 0.354047
+0x3eb5459c
+// 0.614106
+0x3f1d3611
+// 0.267312
+0x3e88dd26
+// 0.589152
+0x3f16d2a7
+// 0.561666
+0x3f0fc958
+// 0.793500
+0x3f4b22cd
+// 0.311233
+0x3e9f59df
+// 0.538370
+0x3f09d2a3
+// 0.630819
+0x3f217d55
+// 0.035654
+0x3d120a11
+// 0.457233
+0x3eea1a6f
+// 0.210975
+0x3e5809e9
+// 0.804953
+0x3f4e115e
+// 0.121037
+0x3df7e225
+// 0.180255
+0x3e3894da
+// 0.081134
+0x3da629a5
+// 0.724015
+0x3f39590c
+// 0.734861
+0x3f3c1fe0
+// 0.435937
+0x3edf3316
+// 0.509068
+0x3f025245
+// 0.420225
+0x3ed727b3
+// 0.751909
+0x3f407d15
+// 0.187304
+0x3e3fccba
+// 0.879586
+0x3f612c94
+// 0.396818
+0x3ecb2bba
+// 0.835821
+0x3f55f863
+// 0.706584
+0x3f34e2ab
+// 0.645786
+0x3f25523f
+// 0.071679
+0x3d92cc8a
+// 0.249008
+0x3e7efc13
+// 0.784612
+0x3f48dc59
+// 0.177090
+0x3e355700
+// 0.686089
+0x3f2fa38d
+// 0.611552
+0x3f1c8eaa
+// 0.983108
+0x3f7bacf1
+// 0.461113
+0x3eec170c
+// 0.660006
+0x3f28f62d
+// 0.620716
+0x3f1ee743
+// 0.741320
+0x3f3dc725
+// 0.226802
+0x3e683edb
+// 0.502698
+0x3f00b0d6
+// 0.614061
+0x3f1d3314
+// 0.131671
+0x3e06d4b9
+// 0.559372
+0x3f0f3306
+// 0.001092
+0x3a8f2d53
+// 0.928367
+0x3f6da975
+// 0.975838
+0x3f79d07f
+// 0.867297
+0x3f5e0735
+// 0.844718
+0x3f583f74
+// 0.781009
+0x3f47f032
+// 0.094459
+0x3dc173d8
+// 0.429244
+0x3edbc5d1
+// 0.648248
+0x3f25f399
+// 0.830619
+0x3f54a37a
+// 0.579626
+0x3f14625c
+// 0.813643
+0x3f504ae3
+// 0.608968
+0x3f1be55b
+// 0.662117
+0x3f29807d
+// 0.832308
+0x3f55122a
+// 0.864825
+0x3f5d652e
+// 0.594276
+0x3f18227c
+// 0.395594
+0x3eca8b51
+// 0.526570
+0x3f06cd47
+// 0.713330
+0x3f369cce
+// 0.088044
+0x3db450a5
+// 0.765281
+0x3f43e97c
+// 0.047316
+0x3d41ce97
+// 0.401083
+0x3ecd5acc
+// 0.164144
+0x3e281542
+// 0.882951
+0x3f62090c
+// 0.964051
+0x3f76cc07
+// 0.985616
+0x3f7c5158
+// 0.513201
+0x3f03611c
+// 0.237242
+0x3e72ef7c
+// 0.005818
+0x3bbea4cb
+// 0.094654
+0x3dc1d9f6
+// 0.509733
+0x3f027de3
+// 0.592865
+0x3f17c601
+// 0.618466
+0x3f1e53cd
+// 0.485614
+0x3ef8a25d
+// 0.636153
+0x3f22daee
+// 0.308993
+0x3e9e3457
+// 0.498317
+0x3eff2366
+// 0.105379
+0x3dd7d108
+// 0.220418
+0x3e61b53d
+// 0.427424
+0x3edad761
+// 0.950291
+0x3f734646
+// 0.449740
+0x3ee64453
+// 0.794251
+0x3f4b540a
+// 0.314597
+0x3ea112ec
+// 0.874031
+0x3f5fc083
+// 0.500194
+0x3f000cb3
+// 0.832304
+0x3f5511d8
+// 0.682602
+0x3f2ebf04
+// 0.656428
+0x3f280baf
+// 0.542813
+0x3f0af5c6
+// 0.064914
+0x3d84f196
+// 0.441311
+0x3ee1f384
+// 0.902604
+0x3f671113
+// 0.038910
+0x3d1f5fa7
+// 0.577801
+0x3f13eacc
+// 0.840858
+0x3f57427c
+// 0.094819
+0x3dc2308d
+// 0.618997
+0x3f1e7692
+// 0.096712
+0x3dc610cc
+// 0.276312
+0x3e8d78d4
+// 0.803452
+0x3f4daf0a
+// 0.371251
+0x3ebe149c
+// 0.174218
+0x3e32664a
+// 0.758514
+0x3f422dfe
+// 0.236660
+0x3e72571c
+// 0.550752
+0x3f0cfe1c
+// 0.709889
+0x3f35bb49
+// 0.933375
+0x3f6ef1b1
+// 0.138193
+0x3e0d8265
+// 0.096285
+0x3dc530f0
+// 0.618595
+0x3f1e5c44
+// 0.555410
+0x3f0e2f58
+// 0.099472
+0x3dcbb7f9
+// 0.517161
+0x3f0464a8
+// 0.403660
+0x3eceac8f
+// 0.342540
+0x3eaf6177
+// 0.139048
+0x3e0e62a5
+// 0.562989
+0x3f10200b
+// 0.238726
+0x3e747499
+// 0.242529
+0x3e78597b
+// 0.687781
+0x3f301270
+// 0.310251
+0x3e9ed940
+// 0.781299
+0x3f480331
+// 0.194966
+0x3e47a50f
+// 0.763768
+0x3f438646
+// 0.706582
+0x3f34e28d
+// 0.499447
+0x3effb77c
+// 0.499886
+0x3efff112
+// 0.778554
+0x3f474f4d
+// 0.310374
+0x3e9ee949
+// 0.424364
+0x3ed9462e
+// 0.870912
+0x3f5ef416
+// 0.124081
+0x3dfe1e11
+// 0.497489
+0x3efeb6ef
+// 0.500772
+0x3f00329a
+// 0.609063
+0x3f1beb90
+// 0.095906
+0x3dc46a99
+// 0.114366
+0x3dea38a7
+// 0.543975
+0x3f0b41ec
+// 0.428762
+0x3edb86a7
+// 0.073667
+0x3d96de81
+// 0.232902
+0x3e6e7dee
+// 0.103242
+0x3dd3708f
+// 0.009623
+0x3c1da7f0
+// 0.522534
+0x3f05c4c3
+// 0.640065
+0x3f23db51
+// 0.623830
+0x3f1fb358
+// 0.486461
+0x3ef91167
+// 0.574451
+0x3f130f33
+// 0.938715
+0x3f704f9d
+// 0.418424
+0x3ed63bae
+// 0.355440
+0x3eb5fc33
+// 0.733091
+0x3f3babd6
+// 0.671924
+0x3f2c033c
+// 0.095132
+0x3dc2d479
+// 0.878296
+0x3f60d7ff
+// 0.039410
+0x3d216bf3
+// 0.445673
+0x3ee42f3f
+// 0.489282
+0x3efa8323
+// 0.310624
+0x3e9f0a11
+// 0.897160
+0x3f65ac42
+// 0.375071
+0x3ec00954
+// 0.101982
+0x3dd0dc03
+// 0.262036
+0x3e862990
+// 0.300371
+0x3e99ca40
+// 0.292177
+0x3e959835
+// 0.190124
+0x3e42afe4
+// 0.416547
+0x3ed545a8
+// 0.680026
+0x3f2e1628
+// 0.074593
+0x3d98c40e
+// 0.008255
+0x3c073e9b
+// 0.135844
+0x3e0b1a9b
+// 0.829389
+0x3f5452d1
+// 0.957775
+0x3f7530b6
+// 0.301948
+0x3e9a98e5
+// 0.380680
+0x3ec2e882
+// 0.907133
+0x3f6839da
+// 0.773412
+0x3f45fe59
+// 0.108535
+0x3dde47d4
+// 0.688846
+0x3f305832
+// 0.802370
+0x3f4d6823
+// 0.034478
+0x3d0d38df
+// 0.312872
+0x3ea030cb
+// 0.386067
+0x3ec5aaa2
+// 0.649419
+0x3f26405a
+// 0.559569
+0x3f0f3fee
+// 0.973998
+0x3f7957f1
+// 0.637025
+0x3f23140a
+// 0.425240
+0x3ed9b919
+// 0.780158
+0x3f47b873
+// 0.789235
+0x3f4a0b52
+// 0.932420
+0x3f6eb30d
+// 0.867835
+0x3f5e2a72
+// 0.880629
+0x3f6170e4
+// 0.851036
+0x3f59dd81
+// 0.829134
+0x3f54421e
+// 0.401420
+0x3ecd86f4
+// 0.895791
+0x3f65528a
+// 0.340645
+0x3eae68f8
+// 0.994570
+0x3f7e9c1f
+// 0.084409
+0x3dacde85
+// 0.470840
+0x3ef11201
+// 0.823924
+0x3f52ecb0
+// 0.999134
+0x3f7fc73c
+// 0.388043
+0x3ec6ad9b
+// 0.859977
+0x3f5c2777
+// 0.760354
+0x3f42a693
+// 0.219180
+0x3e6070d8
+// 0.734500
+0x3f3c0833
+// 0.944740
+0x3f71da78
+// 0.359362
+0x3eb7fe49
+// 0.263627
+0x3e86fa14
+// 0.639795
+0x3f23c99f
+// 0.456056
+0x3ee98035
+// 0.628100
+0x3f20cb2f
+// 0.096101
+0x3dc4d070
+// 0.440180
+0x3ee15f3c
+// 0.530375
+0x3f07c6a4
+// 0.074154
+0x3d97de3f
+// 0.365801
+0x3ebb4a4f
+// 0.719153
+0x3f381a62
+// 0.736953
+0x3f3ca8f5
+// 0.305656
+0x3e9c7ef2
+// 0.367951
+0x3ebc6422
+// 0.167051
+0x3e2b0f5e
+// 0.826312
+0x3f53892c
+// 0.650066
+0x3f266ab4
+// 0.624053
+0x3f1fc1ed
+// 0.096839
+0x3dc653a6
+// 0.583453
+0x3f155d27
+// 0.946073
+0x3f7231dc
+// 0.083349
+0x3daab2cd
+// 0.985412
+0x3f7c43fd
+// 0.883945
+0x3f624a3f
+// 0.370990
+0x3ebdf26e
+// 0.759503
+0x3f426ed0
+// 0.180555
+0x3e38e349
+// 0.378813
+0x3ec1f3d1
+// 0.248414
+0x3e7e6025
+// 0.125039
+0x3e000a4b
+// 0.147479
+0x3e1704d2
+// 0.474277
+0x3ef2d46b
+// 0.615160
+0x3f1d7b1c
+// 0.637571
+0x3f2337d9
+// 0.187812
+0x3e4051eb
+// 0.315140
+0x3ea15a17
+// 0.509183
+0x3f0259cc
+// 0.334894
+0x3eab774b
+// 0.969493
+0x3f7830b8
+// 0.338097
+0x3ead1b05
+// 0.906071
+0x3f67f44c
+// 0.642529
+0x3f247ccc
+// 0.236144
+0x3e71cfd2
+// 0.838268
+0x3f5698be
+// 0.070634
+0x3d90a8a6
+// 0.381533
+0x3ec3585b
+// 0.250238
+0x3e801f33
+// 0.109693
+0x3de0a6ca
+// 0.139763
+0x3e0f1dfb
+// 0.857762
+0x3f5b9650
+// 0.463316
+0x3eed37b9
+// 0.622524
+0x3f1f5dbb
+// 0.596311
+0x3f18a7d5
+// 0.227143
+0x3e68980e
+// 0.908220
+0x3f688122
+// 0.093441
+0x3dbf5e3b
+// 0.198582
+0x3e4b592f
+// 0.301684
+0x3e9a7655
+// 0.522818
+0x3f05d767
+// 0.587960
+0x3f16848e
+// 0.156812
+0x3e209368
+// 0.027561
+0x3ce1c703
+// 0.506541
+0x3f01aca5
+// 0.119059
+0x3df3d54a
+// 0.830599
+0x3f54a222
+// 0.326207
+0x3ea7049b
+// 0.392015
+0x3ec8b62f
+// 0.793518
+0x3f4b2400
+// 0.529333
+0x3f078256
+// 0.950349
+0x3f734a16
+// 0.981255
+0x3f7b338a
+// 0.732221
+0x3f3b72d1
+// 0.048172
+0x3d455031
+// 0.481614
+0x3ef6960f
+// 0.581371
+0x3f14d4b4
+// 0.077660
+0x3d9f0c15
+// 0.818133
+0x3f517127
+// 0.855042
+0x3f5ae40a
+// 0.938293
+0x3f7033f4
+// 0.569171
+0x3f11b533
+// 0.153951
+0x3e1da536
+// 0.897652
+0x3f65cc89
+// 0.716365
+0x3f3763b7
+// 0.796071
+0x3f4bcb47
+// 0.620890
+0x3f1ef2a1
+// 0.862686
+0x3f5cd903
+// 0.551936
+0x3f0d4bb2
+// 0.192873
+0x3e458068
+// 0.277530
+0x3e8e1864
+// 0.701310
+0x3f338916
+// 0.121617
+0x3df91245
+// 0.867144
+0x3f5dfd22
+// 0.363385
+0x3eba0d97
+// 0.058012
+0x3d6d9e36
+// 0.130092
+0x3e0536c8
+// 0.046553
+0x3d3eadf3
+// 0.156507
+0x3e204375
+// 0.228942
+0x3e6a6fb2
+// 0.051555
+0x3d532bd5
+// 0.875752
+0x3f603146
+// 0.899390
+0x3f663e66
+// 0.136256
+0x3e0b86a3
+// 0.313532
+0x3ea0874f
+// 0.863881
+0x3f5d2750
+// 0.148638
+0x3e18348b
+// 0.285173
+0x3e920235
+// 0.832517
+0x3f551fd6
+// 0.865199
+0x3f5d7daa
+// 0.099024
+0x3dcacd2a
+// 0.297072
+0x3e9819dd
+// 0.438686
+0x3ee09b6b
+// 0.815661
+0x3f50cf27
+// 0.607384
+0x3f1b7d82
+// 0.134095
+0x3e095022
+// 0.372467
+0x3ebeb3f9
+// 0.160476
+0x3e2453ea
+// 0.778957
+0x3f4769c1
+// 0.491776
+0x3efbca1e
+// 0.291389
+0x3e9530fa
+// 0.460336
+0x3eebb12a
+// 0.388523
+0x3ec6ec7f
+// 0.897784
+0x3f65d526
+// 0.733013
+0x3f3ba6c0
+// 0.582052
+0x3f150159
+// 0.070230
+0x3d8fd4ab
+// 0.632162
+0x3f21d55b
+// 0.346390
+0x3eb159f7
+// 0.784718
+0x3f48e340
+// 0.594959
+0x3f184f41
+// 0.829133
+0x3f544215
+// 0.387196
+0x3ec63e98
+// 0.058095
+0x3d6df48c
+// 0.590836
+0x3f17410c
+// 0.296869
+0x3e97ff34
+// 0.398892
+0x3ecc3b99
+// 0.818288
+0x3f517b51
+// 0.067748
+0x3d8abf8f
+// 0.908611
+0x3f689abe
+// 0.588572
+0x3f16aca7
+// 0.111930
+0x3de53b9b
+// 0.103999
+0x3dd4fd72
+// 0.862269
+0x3f5cbdad
+// 0.114471
+0x3dea6fb6
+// 0.487169
+0x3ef96e29
+// 0.052575
+0x3d575937
+// 0.357505
+0x3eb70aee
+// 0.772199
+0x3f45aed7
+// 0.580584
+0x3f14a123
+// 0.884457
+0x3f626bc6
+// 0.206666
+0x3e53a03a
+// 0.591907
+0x3f17873a
+// 0.246607
+0x3e7c86a7
+// 0.534590
+0x3f08dae7
+// 0.071352
+0x3d92211c
+// 0.058641
+0x3d703149
+// 0.689842
+0x3f309984
+// 0.721852
+0x3f38cb45
+// 0.743645
+0x3f3e5f7f
+// 0.218919
+0x3e602c67
+// 0.351730
+0x3eb41603
+// 0.048365
+0x3d461a98
+// 0.903201
+0x3f673832
+// 0.136330
+0x3e0b9a20
+// 0.278282
+0x3e8e7afa
+// 0.114595
+0x3deab0a2
+// 0.179896
+0x3e3836aa
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/SupportBarF32/Weights1_f32.txt b/CMSIS/DSP/Testing/Patterns/DSP/SupportBarF32/Weights1_f32.txt
index 7968427..e09085a 100755
--- a/CMSIS/DSP/Testing/Patterns/DSP/SupportBarF32/Weights1_f32.txt
+++ b/CMSIS/DSP/Testing/Patterns/DSP/SupportBarF32/Weights1_f32.txt
@@ -1,136 +1,136 @@
 W
 67
-// 0.491342
-0x3efb9138
-// 0.823062
-0x3f52b434
-// 0.578542
-0x3f141b5b
-// 0.521902
-0x3f059b5e
-// 0.958146
-0x3f754914
-// 0.970615
-0x3f787a37
-// 0.451484
-0x3ee728df
-// 0.039575
-0x3d22194e
-// 0.313175
-0x3ea05875
-// 0.215686
-0x3e5cdcce
-// 0.478727
-0x3ef51bb1
-// 0.205914
-0x3e52db3b
-// 0.272803
-0x3e8bace6
-// 0.405694
-0x3ecfb720
-// 0.780409
-0x3f47c8e1
-// 0.985286
-0x3f7c3bb3
-// 0.780646
-0x3f47d870
-// 0.617180
-0x3f1dff81
-// 0.156617
-0x3e20603e
-// 0.199956
-0x3e4cc133
-// 0.022365
-0x3cb737bc
-// 0.019641
-0x3ca0e595
-// 0.240814
-0x3e7697ed
-// 0.140450
-0x3e0fd225
-// 0.014865
-0x3c738b82
-// 0.998784
-0x3f7fb056
-// 0.171363
-0x3e2f79d7
-// 0.849478
-0x3f59775f
-// 0.969993
-0x3f785179
-// 0.393511
-0x3ec97a56
-// 0.432835
-0x3edd9c8a
-// 0.508018
-0x3f020d76
-// 0.633504
-0x3f222d4e
-// 0.907286
-0x3f6843e9
-// 0.554623
-0x3f0dfbc7
-// 0.671746
-0x3f2bf792
-// 0.478754
-0x3ef51f4e
-// 0.434321
-0x3ede5f43
-// 0.839632
-0x3f56f217
-// 0.117372
-0x3df06097
-// 0.657832
-0x3f2867ad
-// 0.265540
-0x3e87f4e9
-// 0.191978
-0x3e4495e0
-// 0.736567
-0x3f3c8fad
-// 0.270189
-0x3e8a563e
-// 0.733293
-0x3f3bb916
-// 0.738737
-0x3f3d1ddd
-// 0.670469
-0x3f2ba3da
-// 0.167455
-0x3e2b7950
-// 0.175452
-0x3e33a997
-// 0.283223
-0x3e910296
-// 0.999536
-0x3f7fe198
-// 0.520581
-0x3f0544cb
-// 0.542153
-0x3f0aca83
-// 0.897827
-0x3f65d7f8
-// 0.311456
-0x3e9f7738
-// 0.568133
-0x3f117130
-// 0.488024
-0x3ef9de3d
-// 0.329028
-0x3ea87664
-// 0.502541
-0x3f00a68e
-// 0.327879
-0x3ea7dfd1
-// 0.240389
-0x3e7628a7
-// 0.137038
-0x3e0c53a0
-// 0.896514
-0x3f6581f8
-// 0.652357
-0x3f2700d9
-// 0.758985
-0x3f424cdc
-// 0.880721
-0x3f6176f3
+// 0.218237
+0x3e5f7975
+// 0.170299
+0x3e2e62cc
+// 0.035535
+0x3d118d2d
+// 0.913221
+0x3f69c8d9
+// 0.892895
+0x3f6494c7
+// 0.665083
+0x3f2a42db
+// 0.791286
+0x3f4a91c0
+// 0.771666
+0x3f458be5
+// 0.802164
+0x3f4d5aa6
+// 0.928977
+0x3f6dd16b
+// 0.245143
+0x3e7b06d9
+// 0.732243
+0x3f3b7445
+// 0.571570
+0x3f125269
+// 0.937060
+0x3f6fe32b
+// 0.208703
+0x3e55b64b
+// 0.093675
+0x3dbfd8bc
+// 0.862343
+0x3f5cc27d
+// 0.919543
+0x3f6b672d
+// 0.879498
+0x3f6126ce
+// 0.942309
+0x3f713b2d
+// 0.500650
+0x3f002a98
+// 0.475587
+0x3ef3802d
+// 0.722283
+0x3f38e78e
+// 0.254058
+0x3e8213de
+// 0.587992
+0x3f1686a8
+// 0.710380
+0x3f35db7a
+// 0.841112
+0x3f57531a
+// 0.636715
+0x3f22ffc9
+// 0.106048
+0x3dd92f8f
+// 0.903297
+0x3f673e7d
+// 0.467681
+0x3eef73e8
+// 0.126763
+0x3e01ce1e
+// 0.045520
+0x3d3a73ae
+// 0.363598
+0x3eba2982
+// 0.856570
+0x3f5b482e
+// 0.743619
+0x3f3e5dd2
+// 0.499968
+0x3efffbc7
+// 0.395628
+0x3eca8fce
+// 0.139822
+0x3e0f2d5f
+// 0.693008
+0x3f3168f6
+// 0.272577
+0x3e8b8f3f
+// 0.361551
+0x3eb91d2d
+// 0.498977
+0x3eff79f7
+// 0.267063
+0x3e88bc72
+// 0.136488
+0x3e0bc395
+// 0.933510
+0x3f6efa7f
+// 0.822830
+0x3f52a4fa
+// 0.556608
+0x3f0e7ddd
+// 0.226009
+0x3e676ee9
+// 0.635766
+0x3f22c18b
+// 0.530159
+0x3f07b87b
+// 0.244405
+0x3e7a453e
+// 0.046284
+0x3d3d94bf
+// 0.968616
+0x3f77f73f
+// 0.273186
+0x3e8bdf15
+// 0.872278
+0x3f5f4d9d
+// 0.862457
+0x3f5cc9f6
+// 0.698876
+0x3f32e982
+// 0.150284
+0x3e19e3f8
+// 0.141895
+0x3e114cd1
+// 0.586806
+0x3f1638e8
+// 0.958193
+0x3f754c27
+// 0.881317
+0x3f619e05
+// 0.394746
+0x3eca1c20
+// 0.367880
+0x3ebc5abd
+// 0.300443
+0x3e99d3b9
+// 0.348504
+0x3eb26f11
diff --git a/CMSIS/DSP/Testing/Source/Tests/DECIMQ15.cpp b/CMSIS/DSP/Testing/Source/Tests/DECIMQ15.cpp
index 5191125..612eb62 100755
--- a/CMSIS/DSP/Testing/Source/Tests/DECIMQ15.cpp
+++ b/CMSIS/DSP/Testing/Source/Tests/DECIMQ15.cpp
@@ -36,7 +36,6 @@
             this->blocksize = pConfig[2];
             this->refsize = pConfig[3];
 
-
             pConfig += 4;
 
             this->status=arm_fir_decimate_init_q15(&(this->S),
@@ -46,8 +45,6 @@
                state.ptr(),
                this->blocksize);
 
-
-
             ASSERT_TRUE(this->status == ARM_MATH_SUCCESS);
 
             arm_fir_decimate_q15(
diff --git a/CMSIS/DSP/Testing/Source/Tests/InterpolationTestsF32.cpp b/CMSIS/DSP/Testing/Source/Tests/InterpolationTestsF32.cpp
index 92f4912..42a3c8f 100755
--- a/CMSIS/DSP/Testing/Source/Tests/InterpolationTestsF32.cpp
+++ b/CMSIS/DSP/Testing/Source/Tests/InterpolationTestsF32.cpp
@@ -56,6 +56,64 @@
     } 
 
  
+    void InterpolationTestsF32::test_spline_square_f32()
+    {
+       const float32_t *inpX = inputX.ptr();
+       const float32_t *inpY = inputY.ptr();
+       const float32_t *outX = outputX.ptr();
+       float32_t *outp = output.ptr();
+       float32_t *buf = buffer.ptr();       // ((2*4-1)*sizeof(float32_t))
+       float32_t *coef = splineCoefs.ptr(); // ((3*(4-1))*sizeof(float32_t))
+
+       arm_spline_instance_f32 S;
+       arm_spline_init_f32(&S, ARM_SPLINE_PARABOLIC_RUNOUT, inpX, inpY, 4, coef, buf);
+       arm_spline_f32(&S, outX, outp, 20);
+
+       ASSERT_EMPTY_TAIL(buffer);
+       ASSERT_EMPTY_TAIL(splineCoefs);
+       ASSERT_EMPTY_TAIL(output);
+       ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
+    } 
+
+    void InterpolationTestsF32::test_spline_sine_f32()
+    {
+       const float32_t *inpX = inputX.ptr();
+       const float32_t *inpY = inputY.ptr();
+       const float32_t *outX = outputX.ptr();
+       float32_t *outp = output.ptr();
+       float32_t *buf = buffer.ptr(); // ((2*9-1)*sizeof(float32_t))
+       float32_t *coef = splineCoefs.ptr(); // ((3*(9-1))*sizeof(float32_t))
+
+       arm_spline_instance_f32 S;
+       arm_spline_init_f32(&S, ARM_SPLINE_NATURAL, inpX, inpY, 9, coef, buf);
+       arm_spline_f32(&S, outX, outp, 33);
+
+       ASSERT_EMPTY_TAIL(buffer);
+       ASSERT_EMPTY_TAIL(splineCoefs);
+       ASSERT_EMPTY_TAIL(output);
+       ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
+    } 
+
+    void InterpolationTestsF32::test_spline_ramp_f32()
+    {
+       const float32_t *inpX = inputX.ptr();
+       const float32_t *inpY = inputY.ptr();
+       const float32_t *outX = outputX.ptr();
+       float32_t *outp = output.ptr();
+       float32_t *buf = buffer.ptr(); // ((2*3-1)*sizeof(float32_t))
+       float32_t *coef = splineCoefs.ptr(); // ((3*(3-1))*sizeof(float32_t))
+
+       arm_spline_instance_f32 S;
+       arm_spline_init_f32(&S, ARM_SPLINE_PARABOLIC_RUNOUT, inpX, inpY, 3, coef, buf);
+       arm_spline_f32(&S, outX, outp, 30);
+
+       ASSERT_EMPTY_TAIL(buffer);
+       ASSERT_EMPTY_TAIL(splineCoefs);
+       ASSERT_EMPTY_TAIL(output);
+       ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
+    } 
+
+
     void InterpolationTestsF32::setUp(Testing::testID_t id,std::vector<Testing::param_t>& params,Client::PatternMgr *mgr)
     {
       
@@ -94,6 +152,39 @@
           SBI.pData = y.ptr();
          
           break;
+
+          case TEST_SPLINE_SQUARE_F32_3:
+             inputX.reload(InterpolationTestsF32::INPUT_SPLINE_SQU_X_F32_ID,mgr,4);
+             inputY.reload(InterpolationTestsF32::INPUT_SPLINE_SQU_Y_F32_ID,mgr,4);
+             outputX.reload(InterpolationTestsF32::OUTPUT_SPLINE_SQU_X_F32_ID,mgr,20);
+             ref.reload(InterpolationTestsF32::REF_SPLINE_SQU_F32_ID,mgr,20);
+             splineCoefs.create(3*(4-1),InterpolationTestsF32::COEFS_SPLINE_F32_ID,mgr);
+             
+             buffer.create(2*4-1,InterpolationTestsF32::TEMP_SPLINE_F32_ID,mgr);
+             output.create(20,InterpolationTestsF32::OUT_SAMPLES_F32_ID,mgr);
+          break;
+
+          case TEST_SPLINE_SINE_F32_4:
+             inputX.reload(InterpolationTestsF32::INPUT_SPLINE_SIN_X_F32_ID,mgr,9);
+             inputY.reload(InterpolationTestsF32::INPUT_SPLINE_SIN_Y_F32_ID,mgr,9);
+             outputX.reload(InterpolationTestsF32::OUTPUT_SPLINE_SIN_X_F32_ID,mgr,33);
+             ref.reload(InterpolationTestsF32::REF_SPLINE_SIN_F32_ID,mgr,33);
+             splineCoefs.create(3*(9-1),InterpolationTestsF32::COEFS_SPLINE_F32_ID,mgr);
+             
+             buffer.create(2*9-1,InterpolationTestsF32::TEMP_SPLINE_F32_ID,mgr);
+             output.create(33,InterpolationTestsF32::OUT_SAMPLES_F32_ID,mgr);
+          break;
+
+          case TEST_SPLINE_RAMP_F32_5:
+             inputX.reload(InterpolationTestsF32::INPUT_SPLINE_RAM_X_F32_ID,mgr,3);
+             inputY.reload(InterpolationTestsF32::INPUT_SPLINE_RAM_Y_F32_ID,mgr,3);
+             outputX.reload(InterpolationTestsF32::OUTPUT_SPLINE_RAM_X_F32_ID,mgr,30);
+             ref.reload(InterpolationTestsF32::REF_SPLINE_RAM_F32_ID,mgr,30);
+             splineCoefs.create(3*(3-1),InterpolationTestsF32::COEFS_SPLINE_F32_ID,mgr);
+             
+             buffer.create(2*3-1,InterpolationTestsF32::TEMP_SPLINE_F32_ID,mgr);
+             output.create(30,InterpolationTestsF32::OUT_SAMPLES_F32_ID,mgr);
+          break;
        }
       
 
diff --git a/CMSIS/DSP/Testing/Source/Tests/SupportTestsF32.cpp b/CMSIS/DSP/Testing/Source/Tests/SupportTestsF32.cpp
index 7b537b8..838fe9e 100755
--- a/CMSIS/DSP/Testing/Source/Tests/SupportTestsF32.cpp
+++ b/CMSIS/DSP/Testing/Source/Tests/SupportTestsF32.cpp
@@ -12,807 +12,723 @@
 #define ABS_Q7_ERROR ((q7_t)10)
 
 
-    void SupportTestsF32::test_weighted_sum_f32()
-    {
-       const float32_t *inp = input.ptr();
-       const float32_t *coefsp = coefs.ptr();
-       float32_t *refp = ref.ptr();
+void SupportTestsF32::test_weighted_sum_f32()
+{
+ const float32_t *inp = input.ptr();
+ const float32_t *coefsp = coefs.ptr();
+ float32_t *refp = ref.ptr();
 
-       float32_t *outp = output.ptr();
-       
-      
-       *outp=arm_weighted_sum_f32(inp, coefsp,this->nbSamples);
-         
-          
-        ASSERT_REL_ERROR(*outp,refp[this->offset],REL_ERROR);
-        ASSERT_EMPTY_TAIL(output);
-
-    } 
-
-    void SupportTestsF32::test_copy_f32()
-    {
-       const float32_t *inp = input.ptr();
-       float32_t *outp = output.ptr();
-       
-      
-       arm_copy_f32(inp, outp,this->nbSamples);
-         
-          
-       ASSERT_EQ(input,output);
-       ASSERT_EMPTY_TAIL(output);
-
-    } 
-
-    void SupportTestsF32::test_fill_f32()
-    {
-       float32_t *outp = output.ptr();
-       float32_t val = 1.1;
-       int i;
-      
-
-       arm_fill_f32(val, outp,this->nbSamples);
-         
-          
-       for(i=0 ; i < this->nbSamples; i++)
-       {
-          ASSERT_EQ(val,outp[i]);
-       }
-       ASSERT_EMPTY_TAIL(output);
-
-    } 
-
-    void SupportTestsF32::test_float_to_q15()
-    {
-       const float32_t *inp = input.ptr();
-       q15_t *outp = outputQ15.ptr();
-       
-      
-       arm_float_to_q15(inp, outp,this->nbSamples);
-         
-          
-       ASSERT_NEAR_EQ(refQ15,outputQ15,ABS_Q15_ERROR);
-       ASSERT_EMPTY_TAIL(outputQ15);
-
-    } 
-
-    void SupportTestsF32::test_float_to_q31()
-    {
-       const float32_t *inp = input.ptr();
-       q31_t *outp = outputQ31.ptr();
-       
-      
-       arm_float_to_q31(inp, outp,this->nbSamples);
-         
-          
-       ASSERT_NEAR_EQ(refQ31,outputQ31,ABS_Q31_ERROR);
-       ASSERT_EMPTY_TAIL(outputQ31);
-
-    } 
-
-    void SupportTestsF32::test_float_to_q7()
-    {
-       const float32_t *inp = input.ptr();
-       q7_t *outp = outputQ7.ptr();
-       
-      
-       arm_float_to_q7(inp, outp,this->nbSamples);
-         
-          
-       ASSERT_NEAR_EQ(refQ7,outputQ7,ABS_Q7_ERROR);
-       ASSERT_EMPTY_TAIL(outputQ7);
-
-    } 
-
-    void SupportTestsF32::test_bitonic_sort_out_f32()
-    {
-       float32_t *inp = input.ptr();
-       float32_t *outp = output.ptr();
-       arm_sort_instance_f32 S;
-
-       arm_sort_init_f32(&S, ARM_SORT_BITONIC, ARM_SORT_ASCENDING);
-
-       arm_sort_f32(&S,inp,outp,this->nbSamples);
-
-       ASSERT_EMPTY_TAIL(output);
-
-       ASSERT_EQ(output,ref);
-
-    } 
-
-    void SupportTestsF32::test_bitonic_sort_in_f32()
-    {
-       float32_t *inp = input.ptr();
-       arm_sort_instance_f32 S;
-
-       arm_sort_init_f32(&S, ARM_SORT_BITONIC, ARM_SORT_ASCENDING);
-
-       arm_sort_f32(&S,inp,inp,this->nbSamples);
-
-       ASSERT_EMPTY_TAIL(input);
-
-       ASSERT_EQ(input,ref);
-
-    } 
-
-    void SupportTestsF32::test_bitonic_sort_const_f32()
-    {
-       float32_t *inp = input.ptr();
-       float32_t *outp = output.ptr();
-       arm_sort_instance_f32 S;
-
-       arm_sort_init_f32(&S, ARM_SORT_BITONIC, ARM_SORT_ASCENDING);
-
-       arm_sort_f32(&S,inp,outp,this->nbSamples);
-
-       ASSERT_EMPTY_TAIL(output);
-
-       ASSERT_EQ(output,ref);
-
-    } 
-
-    void SupportTestsF32::test_bubble_sort_out_f32()
-    {
-       float32_t *inp = input.ptr();
-       float32_t *outp = output.ptr();
-       arm_sort_instance_f32 S;
-
-       arm_sort_init_f32(&S, ARM_SORT_BUBBLE, ARM_SORT_ASCENDING);
-
-       arm_sort_f32(&S,inp,outp,this->nbSamples);
-
-       ASSERT_EMPTY_TAIL(output);
-
-       ASSERT_EQ(output,ref);
-
-    } 
-
-    void SupportTestsF32::test_bubble_sort_in_f32()
-    {
-       float32_t *inp = input.ptr();
-       arm_sort_instance_f32 S;
-
-       arm_sort_init_f32(&S, ARM_SORT_BUBBLE, ARM_SORT_ASCENDING);
-
-       arm_sort_f32(&S,inp,inp,this->nbSamples);
-
-       ASSERT_EMPTY_TAIL(input);
-
-       ASSERT_EQ(input,ref);
-
-    } 
-
-    void SupportTestsF32::test_bubble_sort_const_f32()
-    {
-       float32_t *inp = input.ptr();
-       float32_t *outp = output.ptr();
-       arm_sort_instance_f32 S;
-
-       arm_sort_init_f32(&S, ARM_SORT_BUBBLE, ARM_SORT_ASCENDING);
-
-       arm_sort_f32(&S,inp,outp,this->nbSamples);
-
-       ASSERT_EMPTY_TAIL(output);
-
-       ASSERT_EQ(output,ref);
-
-    } 
-
-    void SupportTestsF32::test_heap_sort_out_f32()
-    {
-       float32_t *inp = input.ptr();
-       float32_t *outp = output.ptr();
-       arm_sort_instance_f32 S;
-
-       arm_sort_init_f32(&S, ARM_SORT_HEAP, ARM_SORT_ASCENDING);
-
-       arm_sort_f32(&S,inp,outp,this->nbSamples);
-        
-       ASSERT_EMPTY_TAIL(output);
-
-       ASSERT_EQ(output,ref);
-
-    } 
-
-    void SupportTestsF32::test_heap_sort_in_f32()
-    {
-       float32_t *inp = input.ptr();
-       arm_sort_instance_f32 S;
-
-       arm_sort_init_f32(&S, ARM_SORT_HEAP, ARM_SORT_ASCENDING);
-
-       arm_sort_f32(&S,inp,inp,this->nbSamples);
-        
-       ASSERT_EMPTY_TAIL(input);
-
-       ASSERT_EQ(input,ref);
-    } 
-
-    void SupportTestsF32::test_heap_sort_const_f32()
-    {
-       float32_t *inp = input.ptr();
-       float32_t *outp = output.ptr();
-       arm_sort_instance_f32 S;
-
-       arm_sort_init_f32(&S, ARM_SORT_HEAP, ARM_SORT_ASCENDING);
-
-       arm_sort_f32(&S,inp,outp,this->nbSamples);
-        
-       ASSERT_EMPTY_TAIL(output);
-
-       ASSERT_EQ(output,ref);
-
-    } 
-
-    void SupportTestsF32::test_insertion_sort_out_f32()
-    {
-       float32_t *inp = input.ptr();
-       float32_t *outp = output.ptr();
-       arm_sort_instance_f32 S;
-
-       arm_sort_init_f32(&S, ARM_SORT_INSERTION, ARM_SORT_ASCENDING);
-
-       arm_sort_f32(&S,inp,outp,this->nbSamples);
-        
-       ASSERT_EMPTY_TAIL(output);
-
-       ASSERT_EQ(output,ref);
-
-    } 
-
-    void SupportTestsF32::test_insertion_sort_in_f32()
-    {
-       float32_t *inp = input.ptr();
-       arm_sort_instance_f32 S;
-
-       arm_sort_init_f32(&S, ARM_SORT_INSERTION, ARM_SORT_ASCENDING);
-
-       arm_sort_f32(&S,inp,inp,this->nbSamples);
-        
-       ASSERT_EMPTY_TAIL(input);
-
-       ASSERT_EQ(input,ref);
-
-    } 
-
-    void SupportTestsF32::test_insertion_sort_const_f32()
-    {
-       float32_t *inp = input.ptr();
-       float32_t *outp = output.ptr();
-       arm_sort_instance_f32 S;
-
-       arm_sort_init_f32(&S, ARM_SORT_INSERTION, ARM_SORT_ASCENDING);
-
-       arm_sort_f32(&S,inp,outp,this->nbSamples);
-        
-       ASSERT_EMPTY_TAIL(output);
-
-       ASSERT_EQ(output,ref);
-
-    } 
-
-    void SupportTestsF32::test_merge_sort_out_f32()
-    {
-       float32_t *inp = input.ptr();
-       float32_t *outp = output.ptr();
-       float32_t *buf = buffer.ptr();
-       buf = (float32_t *)malloc((this->nbSamples)*sizeof(float32_t) );
-       arm_merge_sort_instance_f32 S;
-
-       arm_merge_sort_init_f32(&S, ARM_SORT_ASCENDING, buf);
-       arm_merge_sort_f32(&S,inp,outp,this->nbSamples);
-        
-       ASSERT_EMPTY_TAIL(output);
-
-       ASSERT_EQ(output,ref);
-
-    } 
-
-    void SupportTestsF32::test_merge_sort_const_f32()
-    {
-       float32_t *inp = input.ptr();
-       float32_t *outp = output.ptr();
-       float32_t *buf = buffer.ptr();
-       buf = (float32_t *)malloc((this->nbSamples)*sizeof(float32_t) );
-       arm_merge_sort_instance_f32 S;
-
-       arm_merge_sort_init_f32(&S, ARM_SORT_ASCENDING, buf);
-       arm_merge_sort_f32(&S,inp,outp,this->nbSamples);
-        
-       ASSERT_EMPTY_TAIL(output);
-
-       ASSERT_EQ(output,ref);
-    } 
-
-    void SupportTestsF32::test_quick_sort_out_f32()
-    {
-       float32_t *inp = input.ptr();
-       float32_t *outp = output.ptr();
-       arm_sort_instance_f32 S;
-
-       arm_sort_init_f32(&S, ARM_SORT_QUICK, ARM_SORT_ASCENDING);
-
-       arm_sort_f32(&S,inp,outp,this->nbSamples);
-        
-       ASSERT_EMPTY_TAIL(output);
-
-       ASSERT_EQ(output,ref);
-
-    } 
-
-    void SupportTestsF32::test_quick_sort_in_f32()
-    {
-       float32_t *inp = input.ptr();
-       arm_sort_instance_f32 S;
-
-       arm_sort_init_f32(&S, ARM_SORT_QUICK, ARM_SORT_ASCENDING);
-
-       arm_sort_f32(&S,inp,inp,this->nbSamples);
-        
-       ASSERT_EMPTY_TAIL(input);
-
-       ASSERT_EQ(input,ref);
-
-    } 
-
-    void SupportTestsF32::test_quick_sort_const_f32()
-    {
-       float32_t *inp = input.ptr();
-       float32_t *outp = output.ptr();
-       arm_sort_instance_f32 S;
-
-       arm_sort_init_f32(&S, ARM_SORT_QUICK, ARM_SORT_ASCENDING);
-
-       arm_sort_f32(&S,inp,outp,this->nbSamples);
-        
-       ASSERT_EMPTY_TAIL(output);
-
-       ASSERT_EQ(output,ref);
-
-    } 
-
-    void SupportTestsF32::test_selection_sort_out_f32()
-    {
-       float32_t *inp = input.ptr();
-       float32_t *outp = output.ptr();
-       arm_sort_instance_f32 S;
-
-       arm_sort_init_f32(&S, ARM_SORT_SELECTION, ARM_SORT_ASCENDING);
-
-       arm_sort_f32(&S,inp,outp,this->nbSamples);
-        
-       ASSERT_EMPTY_TAIL(output);
-
-       ASSERT_EQ(output,ref);
-
-    } 
+ float32_t *outp = output.ptr();
  
-    void SupportTestsF32::test_selection_sort_in_f32()
-    {
-       float32_t *inp = input.ptr();
-       arm_sort_instance_f32 S;
+ 
+ *outp=arm_weighted_sum_f32(inp, coefsp,this->nbSamples);
+ 
+ 
+ ASSERT_REL_ERROR(*outp,refp[this->offset],REL_ERROR);
+ ASSERT_EMPTY_TAIL(output);
 
-       arm_sort_init_f32(&S, ARM_SORT_SELECTION, ARM_SORT_ASCENDING);
+} 
 
-       arm_sort_f32(&S,inp,inp,this->nbSamples);
-        
-       ASSERT_EMPTY_TAIL(input);
+void SupportTestsF32::test_copy_f32()
+{
+ const float32_t *inp = input.ptr();
+ float32_t *outp = output.ptr();
+ 
+ 
+ arm_copy_f32(inp, outp,this->nbSamples);
+ 
+ 
+ ASSERT_EQ(input,output);
+ ASSERT_EMPTY_TAIL(output);
 
-       ASSERT_EQ(input,ref);
+} 
 
-    } 
+void SupportTestsF32::test_fill_f32()
+{
+ float32_t *outp = output.ptr();
+ float32_t val = 1.1;
+ int i;
+ 
 
-    void SupportTestsF32::test_selection_sort_const_f32()
-    {
-       float32_t *inp = input.ptr();
-       float32_t *outp = output.ptr();
-       arm_sort_instance_f32 S;
+ arm_fill_f32(val, outp,this->nbSamples);
+ 
+ 
+ for(i=0 ; i < this->nbSamples; i++)
+ {
+  ASSERT_EQ(val,outp[i]);
+}
+ASSERT_EMPTY_TAIL(output);
 
-       arm_sort_init_f32(&S, ARM_SORT_SELECTION, ARM_SORT_ASCENDING);
+} 
 
-       arm_sort_f32(&S,inp,outp,this->nbSamples);
-        
-       ASSERT_EMPTY_TAIL(output);
+void SupportTestsF32::test_float_to_q15()
+{
+ const float32_t *inp = input.ptr();
+ q15_t *outp = outputQ15.ptr();
+ 
+ 
+ arm_float_to_q15(inp, outp,this->nbSamples);
+ 
+ 
+ ASSERT_NEAR_EQ(refQ15,outputQ15,ABS_Q15_ERROR);
+ ASSERT_EMPTY_TAIL(outputQ15);
 
-       ASSERT_EQ(output,ref);
+} 
 
-    } 
+void SupportTestsF32::test_float_to_q31()
+{
+ const float32_t *inp = input.ptr();
+ q31_t *outp = outputQ31.ptr();
+ 
+ 
+ arm_float_to_q31(inp, outp,this->nbSamples);
+ 
+ 
+ ASSERT_NEAR_EQ(refQ31,outputQ31,ABS_Q31_ERROR);
+ ASSERT_EMPTY_TAIL(outputQ31);
 
-    void SupportTestsF32::test_spline_square_f32()
-    {
-       const float32_t *inpX = inputX.ptr();
-       const float32_t *inpY = inputY.ptr();
-       const float32_t *outX = outputX.ptr();
-       float32_t *outp = output.ptr();
-       float32_t *buf = buffer.ptr();       // ((2*4-1)*sizeof(float32_t))
-       float32_t *coef = splineCoefs.ptr(); // ((3*(4-1))*sizeof(float32_t))
+} 
 
-       arm_spline_instance_f32 S;
-       arm_spline_init_f32(&S, ARM_SPLINE_PARABOLIC_RUNOUT, inpX, inpY, 4, coef, buf);
-       arm_spline_f32(&S, outX, outp, 20);
+void SupportTestsF32::test_float_to_q7()
+{
+ const float32_t *inp = input.ptr();
+ q7_t *outp = outputQ7.ptr();
+ 
+ 
+ arm_float_to_q7(inp, outp,this->nbSamples);
+ 
+ 
+ ASSERT_NEAR_EQ(refQ7,outputQ7,ABS_Q7_ERROR);
+ ASSERT_EMPTY_TAIL(outputQ7);
 
-       ASSERT_EMPTY_TAIL(buffer);
-       ASSERT_EMPTY_TAIL(splineCoefs);
-       ASSERT_EMPTY_TAIL(output);
-       ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
-    } 
+} 
 
-    void SupportTestsF32::test_spline_sine_f32()
-    {
-       const float32_t *inpX = inputX.ptr();
-       const float32_t *inpY = inputY.ptr();
-       const float32_t *outX = outputX.ptr();
-       float32_t *outp = output.ptr();
-       float32_t *buf = buffer.ptr(); // ((2*9-1)*sizeof(float32_t))
-       float32_t *coef = splineCoefs.ptr(); // ((3*(9-1))*sizeof(float32_t))
+void SupportTestsF32::test_bitonic_sort_out_f32()
+{
+ float32_t *inp = input.ptr();
+ float32_t *outp = output.ptr();
+ arm_sort_instance_f32 S;
 
-       arm_spline_instance_f32 S;
-       arm_spline_init_f32(&S, ARM_SPLINE_NATURAL, inpX, inpY, 9, coef, buf);
-       arm_spline_f32(&S, outX, outp, 33);
+ arm_sort_init_f32(&S, ARM_SORT_BITONIC, ARM_SORT_ASCENDING);
 
-       ASSERT_EMPTY_TAIL(buffer);
-       ASSERT_EMPTY_TAIL(splineCoefs);
-       ASSERT_EMPTY_TAIL(output);
-       ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
-    } 
+ arm_sort_f32(&S,inp,outp,this->nbSamples);
 
-    void SupportTestsF32::test_spline_ramp_f32()
-    {
-       const float32_t *inpX = inputX.ptr();
-       const float32_t *inpY = inputY.ptr();
-       const float32_t *outX = outputX.ptr();
-       float32_t *outp = output.ptr();
-       float32_t *buf = buffer.ptr(); // ((2*3-1)*sizeof(float32_t))
-       float32_t *coef = splineCoefs.ptr(); // ((3*(3-1))*sizeof(float32_t))
+ ASSERT_EMPTY_TAIL(output);
 
-       arm_spline_instance_f32 S;
-       arm_spline_init_f32(&S, ARM_SPLINE_PARABOLIC_RUNOUT, inpX, inpY, 3, coef, buf);
-       arm_spline_f32(&S, outX, outp, 30);
+ ASSERT_EQ(output,ref);
 
-       ASSERT_EMPTY_TAIL(buffer);
-       ASSERT_EMPTY_TAIL(splineCoefs);
-       ASSERT_EMPTY_TAIL(output);
-       ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
-    } 
+} 
 
-    void SupportTestsF32::setUp(Testing::testID_t id,std::vector<Testing::param_t>& paramsArgs,Client::PatternMgr *mgr)
-    {
+void SupportTestsF32::test_bitonic_sort_in_f32()
+{
+ float32_t *inp = input.ptr();
+ arm_sort_instance_f32 S;
 
-        (void)paramsArgs;
-        switch(id)
-        {    
-            case TEST_WEIGHTED_SUM_F32_1:
-              this->nbSamples = 3;
-              input.reload(SupportTestsF32::INPUTS_F32_ID,mgr,this->nbSamples);
-              coefs.reload(SupportTestsF32::WEIGHTS_F32_ID,mgr,this->nbSamples);
-              ref.reload(SupportTestsF32::REF_F32_ID,mgr);
+ arm_sort_init_f32(&S, ARM_SORT_BITONIC, ARM_SORT_ASCENDING);
 
-              output.create(1,SupportTestsF32::OUT_F32_ID,mgr);
+ arm_sort_f32(&S,inp,inp,this->nbSamples);
 
-              this->offset=0;
-            break;
+ ASSERT_EMPTY_TAIL(input);
 
-            case TEST_WEIGHTED_SUM_F32_2:
-              this->nbSamples = 8;
-              input.reload(SupportTestsF32::INPUTS_F32_ID,mgr,this->nbSamples);
-              coefs.reload(SupportTestsF32::WEIGHTS_F32_ID,mgr,this->nbSamples);
-              ref.reload(SupportTestsF32::REF_F32_ID,mgr);
+ ASSERT_EQ(input,ref);
 
-              output.create(1,SupportTestsF32::OUT_F32_ID,mgr);
+} 
+
+void SupportTestsF32::test_bitonic_sort_const_f32()
+{
+ float32_t *inp = input.ptr();
+ float32_t *outp = output.ptr();
+ arm_sort_instance_f32 S;
+
+ arm_sort_init_f32(&S, ARM_SORT_BITONIC, ARM_SORT_ASCENDING);
+
+ arm_sort_f32(&S,inp,outp,this->nbSamples);
+
+ ASSERT_EMPTY_TAIL(output);
+
+ ASSERT_EQ(output,ref);
+
+} 
+
+void SupportTestsF32::test_bubble_sort_out_f32()
+{
+ float32_t *inp = input.ptr();
+ float32_t *outp = output.ptr();
+ arm_sort_instance_f32 S;
+
+ arm_sort_init_f32(&S, ARM_SORT_BUBBLE, ARM_SORT_ASCENDING);
+
+ arm_sort_f32(&S,inp,outp,this->nbSamples);
+
+ ASSERT_EMPTY_TAIL(output);
+
+ ASSERT_EQ(output,ref);
+
+} 
+
+void SupportTestsF32::test_bubble_sort_in_f32()
+{
+ float32_t *inp = input.ptr();
+ arm_sort_instance_f32 S;
+
+ arm_sort_init_f32(&S, ARM_SORT_BUBBLE, ARM_SORT_ASCENDING);
+
+ arm_sort_f32(&S,inp,inp,this->nbSamples);
+
+ ASSERT_EMPTY_TAIL(input);
+
+ ASSERT_EQ(input,ref);
+
+} 
+
+void SupportTestsF32::test_bubble_sort_const_f32()
+{
+ float32_t *inp = input.ptr();
+ float32_t *outp = output.ptr();
+ arm_sort_instance_f32 S;
+
+ arm_sort_init_f32(&S, ARM_SORT_BUBBLE, ARM_SORT_ASCENDING);
+
+ arm_sort_f32(&S,inp,outp,this->nbSamples);
+
+ ASSERT_EMPTY_TAIL(output);
+
+ ASSERT_EQ(output,ref);
+
+} 
+
+void SupportTestsF32::test_heap_sort_out_f32()
+{
+ float32_t *inp = input.ptr();
+ float32_t *outp = output.ptr();
+ arm_sort_instance_f32 S;
+
+ arm_sort_init_f32(&S, ARM_SORT_HEAP, ARM_SORT_ASCENDING);
+
+ arm_sort_f32(&S,inp,outp,this->nbSamples);
+ 
+ ASSERT_EMPTY_TAIL(output);
+
+ ASSERT_EQ(output,ref);
+
+} 
+
+void SupportTestsF32::test_heap_sort_in_f32()
+{
+ float32_t *inp = input.ptr();
+ arm_sort_instance_f32 S;
+
+ arm_sort_init_f32(&S, ARM_SORT_HEAP, ARM_SORT_ASCENDING);
+
+ arm_sort_f32(&S,inp,inp,this->nbSamples);
+ 
+ ASSERT_EMPTY_TAIL(input);
+
+ ASSERT_EQ(input,ref);
+} 
+
+void SupportTestsF32::test_heap_sort_const_f32()
+{
+ float32_t *inp = input.ptr();
+ float32_t *outp = output.ptr();
+ arm_sort_instance_f32 S;
+
+ arm_sort_init_f32(&S, ARM_SORT_HEAP, ARM_SORT_ASCENDING);
+
+ arm_sort_f32(&S,inp,outp,this->nbSamples);
+ 
+ ASSERT_EMPTY_TAIL(output);
+
+ ASSERT_EQ(output,ref);
+
+} 
+
+void SupportTestsF32::test_insertion_sort_out_f32()
+{
+ float32_t *inp = input.ptr();
+ float32_t *outp = output.ptr();
+ arm_sort_instance_f32 S;
+
+ arm_sort_init_f32(&S, ARM_SORT_INSERTION, ARM_SORT_ASCENDING);
+
+ arm_sort_f32(&S,inp,outp,this->nbSamples);
+ 
+ ASSERT_EMPTY_TAIL(output);
+
+ ASSERT_EQ(output,ref);
+
+} 
+
+void SupportTestsF32::test_insertion_sort_in_f32()
+{
+ float32_t *inp = input.ptr();
+ arm_sort_instance_f32 S;
+
+ arm_sort_init_f32(&S, ARM_SORT_INSERTION, ARM_SORT_ASCENDING);
+
+ arm_sort_f32(&S,inp,inp,this->nbSamples);
+ 
+ ASSERT_EMPTY_TAIL(input);
+
+ ASSERT_EQ(input,ref);
+
+} 
+
+void SupportTestsF32::test_insertion_sort_const_f32()
+{
+ float32_t *inp = input.ptr();
+ float32_t *outp = output.ptr();
+ arm_sort_instance_f32 S;
+
+ arm_sort_init_f32(&S, ARM_SORT_INSERTION, ARM_SORT_ASCENDING);
+
+ arm_sort_f32(&S,inp,outp,this->nbSamples);
+ 
+ ASSERT_EMPTY_TAIL(output);
+
+ ASSERT_EQ(output,ref);
+
+} 
+
+void SupportTestsF32::test_merge_sort_out_f32()
+{
+ float32_t *inp = input.ptr();
+ float32_t *outp = output.ptr();
+ float32_t *buf = buffer.ptr();
+ buf = (float32_t *)malloc((this->nbSamples)*sizeof(float32_t) );
+ arm_merge_sort_instance_f32 S;
+
+ arm_merge_sort_init_f32(&S, ARM_SORT_ASCENDING, buf);
+ arm_merge_sort_f32(&S,inp,outp,this->nbSamples);
+ 
+ ASSERT_EMPTY_TAIL(output);
+
+ ASSERT_EQ(output,ref);
+
+} 
+
+void SupportTestsF32::test_merge_sort_const_f32()
+{
+ float32_t *inp = input.ptr();
+ float32_t *outp = output.ptr();
+ float32_t *buf = buffer.ptr();
+ buf = (float32_t *)malloc((this->nbSamples)*sizeof(float32_t) );
+ arm_merge_sort_instance_f32 S;
+
+ arm_merge_sort_init_f32(&S, ARM_SORT_ASCENDING, buf);
+ arm_merge_sort_f32(&S,inp,outp,this->nbSamples);
+ 
+ ASSERT_EMPTY_TAIL(output);
+
+ ASSERT_EQ(output,ref);
+} 
+
+void SupportTestsF32::test_quick_sort_out_f32()
+{
+ float32_t *inp = input.ptr();
+ float32_t *outp = output.ptr();
+ arm_sort_instance_f32 S;
+
+ arm_sort_init_f32(&S, ARM_SORT_QUICK, ARM_SORT_ASCENDING);
+
+ arm_sort_f32(&S,inp,outp,this->nbSamples);
+ 
+ ASSERT_EMPTY_TAIL(output);
+
+ ASSERT_EQ(output,ref);
+
+} 
+
+void SupportTestsF32::test_quick_sort_in_f32()
+{
+ float32_t *inp = input.ptr();
+ arm_sort_instance_f32 S;
+
+ arm_sort_init_f32(&S, ARM_SORT_QUICK, ARM_SORT_ASCENDING);
+
+ arm_sort_f32(&S,inp,inp,this->nbSamples);
+ 
+ ASSERT_EMPTY_TAIL(input);
+
+ ASSERT_EQ(input,ref);
+
+} 
+
+void SupportTestsF32::test_quick_sort_const_f32()
+{
+ float32_t *inp = input.ptr();
+ float32_t *outp = output.ptr();
+ arm_sort_instance_f32 S;
+
+ arm_sort_init_f32(&S, ARM_SORT_QUICK, ARM_SORT_ASCENDING);
+
+ arm_sort_f32(&S,inp,outp,this->nbSamples);
+ 
+ ASSERT_EMPTY_TAIL(output);
+
+ ASSERT_EQ(output,ref);
+
+} 
+
+void SupportTestsF32::test_selection_sort_out_f32()
+{
+ float32_t *inp = input.ptr();
+ float32_t *outp = output.ptr();
+ arm_sort_instance_f32 S;
+
+ arm_sort_init_f32(&S, ARM_SORT_SELECTION, ARM_SORT_ASCENDING);
+
+ arm_sort_f32(&S,inp,outp,this->nbSamples);
+ 
+ ASSERT_EMPTY_TAIL(output);
+
+ ASSERT_EQ(output,ref);
+
+} 
+
+void SupportTestsF32::test_selection_sort_in_f32()
+{
+ float32_t *inp = input.ptr();
+ arm_sort_instance_f32 S;
+
+ arm_sort_init_f32(&S, ARM_SORT_SELECTION, ARM_SORT_ASCENDING);
+
+ arm_sort_f32(&S,inp,inp,this->nbSamples);
+ 
+ ASSERT_EMPTY_TAIL(input);
+
+ ASSERT_EQ(input,ref);
+
+} 
+
+void SupportTestsF32::test_selection_sort_const_f32()
+{
+ float32_t *inp = input.ptr();
+ float32_t *outp = output.ptr();
+ arm_sort_instance_f32 S;
+
+ arm_sort_init_f32(&S, ARM_SORT_SELECTION, ARM_SORT_ASCENDING);
+
+ arm_sort_f32(&S,inp,outp,this->nbSamples);
+ 
+ ASSERT_EMPTY_TAIL(output);
+
+ ASSERT_EQ(output,ref);
+
+} 
+
+
+void SupportTestsF32::setUp(Testing::testID_t id,std::vector<Testing::param_t>& paramsArgs,Client::PatternMgr *mgr)
+{
+
+  (void)paramsArgs;
+  switch(id)
+  {    
+    case TEST_WEIGHTED_SUM_F32_1:
+    this->nbSamples = 3;
+    input.reload(SupportTestsF32::INPUTS_F32_ID,mgr,this->nbSamples);
+    coefs.reload(SupportTestsF32::WEIGHTS_F32_ID,mgr,this->nbSamples);
+    ref.reload(SupportTestsF32::REF_F32_ID,mgr);
+
+    output.create(1,SupportTestsF32::OUT_F32_ID,mgr);
+
+    this->offset=0;
+    break;
+
+    case TEST_WEIGHTED_SUM_F32_2:
+    this->nbSamples = 8;
+    input.reload(SupportTestsF32::INPUTS_F32_ID,mgr,this->nbSamples);
+    coefs.reload(SupportTestsF32::WEIGHTS_F32_ID,mgr,this->nbSamples);
+    ref.reload(SupportTestsF32::REF_F32_ID,mgr);
 
-              this->offset=1;
-            break;
+    output.create(1,SupportTestsF32::OUT_F32_ID,mgr);
 
-            case TEST_WEIGHTED_SUM_F32_3:
-              this->nbSamples = 11;
-              input.reload(SupportTestsF32::INPUTS_F32_ID,mgr,this->nbSamples);
-              coefs.reload(SupportTestsF32::WEIGHTS_F32_ID,mgr,this->nbSamples);
-              ref.reload(SupportTestsF32::REF_F32_ID,mgr);
+    this->offset=1;
+    break;
 
-              output.create(1,SupportTestsF32::OUT_F32_ID,mgr);
+    case TEST_WEIGHTED_SUM_F32_3:
+    this->nbSamples = 11;
+    input.reload(SupportTestsF32::INPUTS_F32_ID,mgr,this->nbSamples);
+    coefs.reload(SupportTestsF32::WEIGHTS_F32_ID,mgr,this->nbSamples);
+    ref.reload(SupportTestsF32::REF_F32_ID,mgr);
 
-              this->offset=2;
-            break;
+    output.create(1,SupportTestsF32::OUT_F32_ID,mgr);
 
-            case TEST_COPY_F32_4:
-              this->nbSamples = 3;
-              input.reload(SupportTestsF32::SAMPLES_F32_ID,mgr,this->nbSamples);
+    this->offset=2;
+    break;
 
-              output.create(input.nbSamples(),SupportTestsF32::OUT_F32_ID,mgr);
+    case TEST_COPY_F32_4:
+    this->nbSamples = 3;
+    input.reload(SupportTestsF32::SAMPLES_F32_ID,mgr,this->nbSamples);
 
-            break;
+    output.create(input.nbSamples(),SupportTestsF32::OUT_F32_ID,mgr);
 
-            case TEST_COPY_F32_5:
-              this->nbSamples = 8;
-              input.reload(SupportTestsF32::SAMPLES_F32_ID,mgr,this->nbSamples);
+    break;
 
-              output.create(input.nbSamples(),SupportTestsF32::OUT_F32_ID,mgr);
+    case TEST_COPY_F32_5:
+    this->nbSamples = 8;
+    input.reload(SupportTestsF32::SAMPLES_F32_ID,mgr,this->nbSamples);
 
-            break;
+    output.create(input.nbSamples(),SupportTestsF32::OUT_F32_ID,mgr);
 
-            case TEST_COPY_F32_6:
-              this->nbSamples = 11;
-              input.reload(SupportTestsF32::SAMPLES_F32_ID,mgr,this->nbSamples);
+    break;
 
-              output.create(input.nbSamples(),SupportTestsF32::OUT_F32_ID,mgr);
+    case TEST_COPY_F32_6:
+    this->nbSamples = 11;
+    input.reload(SupportTestsF32::SAMPLES_F32_ID,mgr,this->nbSamples);
 
-            break;
+    output.create(input.nbSamples(),SupportTestsF32::OUT_F32_ID,mgr);
 
-            case TEST_FILL_F32_7:
-              this->nbSamples = 3;
+    break;
 
-              output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);
+    case TEST_FILL_F32_7:
+    this->nbSamples = 3;
 
-            break;
+    output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);
 
-            case TEST_FILL_F32_8:
-              this->nbSamples = 8;
+    break;
 
-              output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);
+    case TEST_FILL_F32_8:
+    this->nbSamples = 8;
 
-            break;
+    output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);
 
-            case TEST_FILL_F32_9:
-              this->nbSamples = 11;
+    break;
 
-              output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);
+    case TEST_FILL_F32_9:
+    this->nbSamples = 11;
 
-            break;
+    output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);
 
-            case TEST_FLOAT_TO_Q15_10:
-              this->nbSamples = 7;
-              input.reload(SupportTestsF32::SAMPLES_F32_ID,mgr,this->nbSamples);
-              refQ15.reload(SupportTestsF32::SAMPLES_Q15_ID,mgr,this->nbSamples);
-              outputQ15.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);
+    break;
 
-            break;
+    case TEST_FLOAT_TO_Q15_10:
+    this->nbSamples = 7;
+    input.reload(SupportTestsF32::SAMPLES_F32_ID,mgr,this->nbSamples);
+    refQ15.reload(SupportTestsF32::SAMPLES_Q15_ID,mgr,this->nbSamples);
+    outputQ15.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);
 
-            case TEST_FLOAT_TO_Q15_11:
-              this->nbSamples = 16;
-              input.reload(SupportTestsF32::SAMPLES_F32_ID,mgr,this->nbSamples);
-              refQ15.reload(SupportTestsF32::SAMPLES_Q15_ID,mgr,this->nbSamples);
-              outputQ15.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);
+    break;
 
-            break;
+    case TEST_FLOAT_TO_Q15_11:
+    this->nbSamples = 16;
+    input.reload(SupportTestsF32::SAMPLES_F32_ID,mgr,this->nbSamples);
+    refQ15.reload(SupportTestsF32::SAMPLES_Q15_ID,mgr,this->nbSamples);
+    outputQ15.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);
 
-            case TEST_FLOAT_TO_Q15_12:
-              this->nbSamples = 17;
-              input.reload(SupportTestsF32::SAMPLES_F32_ID,mgr,this->nbSamples);
-              refQ15.reload(SupportTestsF32::SAMPLES_Q15_ID,mgr,this->nbSamples);
-              outputQ15.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);
+    break;
 
-            break;
+    case TEST_FLOAT_TO_Q15_12:
+    this->nbSamples = 17;
+    input.reload(SupportTestsF32::SAMPLES_F32_ID,mgr,this->nbSamples);
+    refQ15.reload(SupportTestsF32::SAMPLES_Q15_ID,mgr,this->nbSamples);
+    outputQ15.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);
 
-            case TEST_FLOAT_TO_Q31_13:
-              this->nbSamples = 3;
-              input.reload(SupportTestsF32::SAMPLES_F32_ID,mgr,this->nbSamples);
-              refQ31.reload(SupportTestsF32::SAMPLES_Q31_ID,mgr,this->nbSamples);
-              outputQ31.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);
+    break;
 
-            break;
+    case TEST_FLOAT_TO_Q31_13:
+    this->nbSamples = 3;
+    input.reload(SupportTestsF32::SAMPLES_F32_ID,mgr,this->nbSamples);
+    refQ31.reload(SupportTestsF32::SAMPLES_Q31_ID,mgr,this->nbSamples);
+    outputQ31.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);
 
-            case TEST_FLOAT_TO_Q31_14:
-              this->nbSamples = 8;
-              input.reload(SupportTestsF32::SAMPLES_F32_ID,mgr,this->nbSamples);
-              refQ31.reload(SupportTestsF32::SAMPLES_Q31_ID,mgr,this->nbSamples);
-              outputQ31.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);
+    break;
 
-            break;
+    case TEST_FLOAT_TO_Q31_14:
+    this->nbSamples = 8;
+    input.reload(SupportTestsF32::SAMPLES_F32_ID,mgr,this->nbSamples);
+    refQ31.reload(SupportTestsF32::SAMPLES_Q31_ID,mgr,this->nbSamples);
+    outputQ31.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);
 
-            case TEST_FLOAT_TO_Q31_15:
-              this->nbSamples = 11;
-              input.reload(SupportTestsF32::SAMPLES_F32_ID,mgr,this->nbSamples);
-              refQ31.reload(SupportTestsF32::SAMPLES_Q31_ID,mgr,this->nbSamples);
-              outputQ31.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);
+    break;
 
-            break;
+    case TEST_FLOAT_TO_Q31_15:
+    this->nbSamples = 11;
+    input.reload(SupportTestsF32::SAMPLES_F32_ID,mgr,this->nbSamples);
+    refQ31.reload(SupportTestsF32::SAMPLES_Q31_ID,mgr,this->nbSamples);
+    outputQ31.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);
 
-            case TEST_FLOAT_TO_Q7_16:
-              this->nbSamples = 15;
-              input.reload(SupportTestsF32::SAMPLES_F32_ID,mgr,this->nbSamples);
-              refQ7.reload(SupportTestsF32::SAMPLES_Q7_ID,mgr,this->nbSamples);
-              outputQ7.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);
+    break;
 
-            break;
+    case TEST_FLOAT_TO_Q7_16:
+    this->nbSamples = 15;
+    input.reload(SupportTestsF32::SAMPLES_F32_ID,mgr,this->nbSamples);
+    refQ7.reload(SupportTestsF32::SAMPLES_Q7_ID,mgr,this->nbSamples);
+    outputQ7.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);
 
-            case TEST_FLOAT_TO_Q7_17:
-              this->nbSamples = 32;
-              input.reload(SupportTestsF32::SAMPLES_F32_ID,mgr,this->nbSamples);
-              refQ7.reload(SupportTestsF32::SAMPLES_Q7_ID,mgr,this->nbSamples);
-              outputQ7.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);
+    break;
 
-            break;
+    case TEST_FLOAT_TO_Q7_17:
+    this->nbSamples = 32;
+    input.reload(SupportTestsF32::SAMPLES_F32_ID,mgr,this->nbSamples);
+    refQ7.reload(SupportTestsF32::SAMPLES_Q7_ID,mgr,this->nbSamples);
+    outputQ7.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);
 
-            case TEST_FLOAT_TO_Q7_18:
-              this->nbSamples = 33;
-              input.reload(SupportTestsF32::SAMPLES_F32_ID,mgr,this->nbSamples);
-              refQ7.reload(SupportTestsF32::SAMPLES_Q7_ID,mgr,this->nbSamples);
-              outputQ7.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);
+    break;
 
-            break;
+    case TEST_FLOAT_TO_Q7_18:
+    this->nbSamples = 33;
+    input.reload(SupportTestsF32::SAMPLES_F32_ID,mgr,this->nbSamples);
+    refQ7.reload(SupportTestsF32::SAMPLES_Q7_ID,mgr,this->nbSamples);
+    outputQ7.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);
 
-	    case TEST_BITONIC_SORT_OUT_F32_19:
-              this->nbSamples = 16;
-              input.reload(SupportTestsF32::INPUT_BITONIC_SORT_16_F32_ID,mgr,this->nbSamples);
-              ref.reload(SupportTestsF32::REF_BITONIC_SORT_16_F32_ID,mgr);
-              output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);
-	    break;
+    break;
 
-	    case TEST_BITONIC_SORT_OUT_F32_20:
-              this->nbSamples = 32;
-              input.reload(SupportTestsF32::INPUT_BITONIC_SORT_32_F32_ID,mgr,this->nbSamples);
-              ref.reload(SupportTestsF32::REF_BITONIC_SORT_32_F32_ID,mgr);
-              output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr); 
-	    break;
+    case TEST_BITONIC_SORT_OUT_F32_19:
+    this->nbSamples = 16;
+    input.reload(SupportTestsF32::INPUT_BITONIC_SORT_16_F32_ID,mgr,this->nbSamples);
+    ref.reload(SupportTestsF32::REF_BITONIC_SORT_16_F32_ID,mgr);
+    output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);
+    break;
 
-	    case TEST_BITONIC_SORT_IN_F32_21:
-              this->nbSamples = 32;
-              input.reload(SupportTestsF32::INPUT_BITONIC_SORT_32_F32_ID,mgr,this->nbSamples);
-              ref.reload(SupportTestsF32::REF_BITONIC_SORT_32_F32_ID,mgr);
-              output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr); 
-	    break;
+    case TEST_BITONIC_SORT_OUT_F32_20:
+    this->nbSamples = 32;
+    input.reload(SupportTestsF32::INPUT_BITONIC_SORT_32_F32_ID,mgr,this->nbSamples);
+    ref.reload(SupportTestsF32::REF_BITONIC_SORT_32_F32_ID,mgr);
+    output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr); 
+    break;
 
-	    case TEST_BITONIC_SORT_CONST_F32_22:
-              this->nbSamples = 16;
-              input.reload(SupportTestsF32::INPUT_SORT_CONST_F32_ID,mgr,this->nbSamples);
-              ref.reload(SupportTestsF32::REF_SORT_CONST_F32_ID,mgr);
-              output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr); 
-	    break;
+    case TEST_BITONIC_SORT_IN_F32_21:
+    this->nbSamples = 32;
+    input.reload(SupportTestsF32::INPUT_BITONIC_SORT_32_F32_ID,mgr,this->nbSamples);
+    ref.reload(SupportTestsF32::REF_BITONIC_SORT_32_F32_ID,mgr);
+    output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr); 
+    break;
 
-	    case TEST_BUBBLE_SORT_OUT_F32_23:
-              this->nbSamples = 11;
-              input.reload(SupportTestsF32::INPUT_SORT_F32_ID,mgr,this->nbSamples);
-              ref.reload(SupportTestsF32::REF_SORT_F32_ID,mgr);
-              output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);            
-	    break;
+    case TEST_BITONIC_SORT_CONST_F32_22:
+    this->nbSamples = 16;
+    input.reload(SupportTestsF32::INPUT_SORT_CONST_F32_ID,mgr,this->nbSamples);
+    ref.reload(SupportTestsF32::REF_SORT_CONST_F32_ID,mgr);
+    output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr); 
+    break;
 
-	    case TEST_BUBBLE_SORT_IN_F32_24:
-              this->nbSamples = 11;
-              input.reload(SupportTestsF32::INPUT_SORT_F32_ID,mgr,this->nbSamples);
-              ref.reload(SupportTestsF32::REF_SORT_F32_ID,mgr);
-              output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);            
-	    break;
+    case TEST_BUBBLE_SORT_OUT_F32_23:
+    this->nbSamples = 11;
+    input.reload(SupportTestsF32::INPUT_SORT_F32_ID,mgr,this->nbSamples);
+    ref.reload(SupportTestsF32::REF_SORT_F32_ID,mgr);
+    output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);            
+    break;
 
-	    case TEST_BUBBLE_SORT_CONST_F32_25:
-              this->nbSamples = 16;
-              input.reload(SupportTestsF32::INPUT_SORT_CONST_F32_ID,mgr,this->nbSamples);
-              ref.reload(SupportTestsF32::REF_SORT_CONST_F32_ID,mgr);
-              output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr); 
-	    break;
+    case TEST_BUBBLE_SORT_IN_F32_24:
+    this->nbSamples = 11;
+    input.reload(SupportTestsF32::INPUT_SORT_F32_ID,mgr,this->nbSamples);
+    ref.reload(SupportTestsF32::REF_SORT_F32_ID,mgr);
+    output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);            
+    break;
 
-	    case TEST_HEAP_SORT_OUT_F32_26:
-              this->nbSamples = 11;
-              input.reload(SupportTestsF32::INPUT_SORT_F32_ID,mgr,this->nbSamples);
-              ref.reload(SupportTestsF32::REF_SORT_F32_ID,mgr);
-              output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);            
-	    break;
+    case TEST_BUBBLE_SORT_CONST_F32_25:
+    this->nbSamples = 16;
+    input.reload(SupportTestsF32::INPUT_SORT_CONST_F32_ID,mgr,this->nbSamples);
+    ref.reload(SupportTestsF32::REF_SORT_CONST_F32_ID,mgr);
+    output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr); 
+    break;
 
-	    case TEST_HEAP_SORT_IN_F32_27:
-              this->nbSamples = 11;
-              input.reload(SupportTestsF32::INPUT_SORT_F32_ID,mgr,this->nbSamples);
-              ref.reload(SupportTestsF32::REF_SORT_F32_ID,mgr);
-              output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);            
-	    break;
+    case TEST_HEAP_SORT_OUT_F32_26:
+    this->nbSamples = 11;
+    input.reload(SupportTestsF32::INPUT_SORT_F32_ID,mgr,this->nbSamples);
+    ref.reload(SupportTestsF32::REF_SORT_F32_ID,mgr);
+    output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);            
+    break;
 
-	    case TEST_HEAP_SORT_CONST_F32_28:
-              this->nbSamples = 16;
-              input.reload(SupportTestsF32::INPUT_SORT_CONST_F32_ID,mgr,this->nbSamples);
-              ref.reload(SupportTestsF32::REF_SORT_CONST_F32_ID,mgr);
-              output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr); 
-	    break;
+    case TEST_HEAP_SORT_IN_F32_27:
+    this->nbSamples = 11;
+    input.reload(SupportTestsF32::INPUT_SORT_F32_ID,mgr,this->nbSamples);
+    ref.reload(SupportTestsF32::REF_SORT_F32_ID,mgr);
+    output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);            
+    break;
 
-	    case TEST_INSERTION_SORT_OUT_F32_29:
-              this->nbSamples = 11;
-              input.reload(SupportTestsF32::INPUT_SORT_F32_ID,mgr,this->nbSamples);
-              ref.reload(SupportTestsF32::REF_SORT_F32_ID,mgr);
-              output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);            
-	    break;
+    case TEST_HEAP_SORT_CONST_F32_28:
+    this->nbSamples = 16;
+    input.reload(SupportTestsF32::INPUT_SORT_CONST_F32_ID,mgr,this->nbSamples);
+    ref.reload(SupportTestsF32::REF_SORT_CONST_F32_ID,mgr);
+    output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr); 
+    break;
 
-	    case TEST_INSERTION_SORT_IN_F32_30:
-              this->nbSamples = 11;
-              input.reload(SupportTestsF32::INPUT_SORT_F32_ID,mgr,this->nbSamples);
-              ref.reload(SupportTestsF32::REF_SORT_F32_ID,mgr);
-              output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);            
-	    break;
+    case TEST_INSERTION_SORT_OUT_F32_29:
+    this->nbSamples = 11;
+    input.reload(SupportTestsF32::INPUT_SORT_F32_ID,mgr,this->nbSamples);
+    ref.reload(SupportTestsF32::REF_SORT_F32_ID,mgr);
+    output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);            
+    break;
 
-	    case TEST_INSERTION_SORT_CONST_F32_31:
-              this->nbSamples = 16;
-              input.reload(SupportTestsF32::INPUT_SORT_CONST_F32_ID,mgr,this->nbSamples);
-              ref.reload(SupportTestsF32::REF_SORT_CONST_F32_ID,mgr);
-              output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr); 
-	    break;
+    case TEST_INSERTION_SORT_IN_F32_30:
+    this->nbSamples = 11;
+    input.reload(SupportTestsF32::INPUT_SORT_F32_ID,mgr,this->nbSamples);
+    ref.reload(SupportTestsF32::REF_SORT_F32_ID,mgr);
+    output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);            
+    break;
 
-	    case TEST_MERGE_SORT_OUT_F32_32:
-              this->nbSamples = 11;
-              input.reload(SupportTestsF32::INPUT_SORT_F32_ID,mgr,this->nbSamples);
-              ref.reload(SupportTestsF32::REF_SORT_F32_ID,mgr);
-              output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);            
-	    break;
+    case TEST_INSERTION_SORT_CONST_F32_31:
+    this->nbSamples = 16;
+    input.reload(SupportTestsF32::INPUT_SORT_CONST_F32_ID,mgr,this->nbSamples);
+    ref.reload(SupportTestsF32::REF_SORT_CONST_F32_ID,mgr);
+    output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr); 
+    break;
 
-	    case TEST_MERGE_SORT_CONST_F32_33:
-              this->nbSamples = 16;
-              input.reload(SupportTestsF32::INPUT_SORT_CONST_F32_ID,mgr,this->nbSamples);
-              ref.reload(SupportTestsF32::REF_SORT_CONST_F32_ID,mgr);
-              output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr); 
-	    break;
+    case TEST_MERGE_SORT_OUT_F32_32:
+    this->nbSamples = 11;
+    input.reload(SupportTestsF32::INPUT_SORT_F32_ID,mgr,this->nbSamples);
+    ref.reload(SupportTestsF32::REF_SORT_F32_ID,mgr);
+    output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);            
+    break;
 
-	    case TEST_QUICK_SORT_OUT_F32_34:
-              this->nbSamples = 11;
-              input.reload(SupportTestsF32::INPUT_SORT_F32_ID,mgr,this->nbSamples);
-              ref.reload(SupportTestsF32::REF_SORT_F32_ID,mgr);
-              output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);            
-	    break;
+    case TEST_MERGE_SORT_CONST_F32_33:
+    this->nbSamples = 16;
+    input.reload(SupportTestsF32::INPUT_SORT_CONST_F32_ID,mgr,this->nbSamples);
+    ref.reload(SupportTestsF32::REF_SORT_CONST_F32_ID,mgr);
+    output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr); 
+    break;
 
-	    case TEST_QUICK_SORT_IN_F32_35:
-              this->nbSamples = 11;
-              input.reload(SupportTestsF32::INPUT_SORT_F32_ID,mgr,this->nbSamples);
-              ref.reload(SupportTestsF32::REF_SORT_F32_ID,mgr);
-              output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);            
-	    break;
+    case TEST_QUICK_SORT_OUT_F32_34:
+    this->nbSamples = 11;
+    input.reload(SupportTestsF32::INPUT_SORT_F32_ID,mgr,this->nbSamples);
+    ref.reload(SupportTestsF32::REF_SORT_F32_ID,mgr);
+    output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);            
+    break;
 
-	    case TEST_QUICK_SORT_CONST_F32_36:
-              this->nbSamples = 16;
-              input.reload(SupportTestsF32::INPUT_SORT_CONST_F32_ID,mgr,this->nbSamples);
-              ref.reload(SupportTestsF32::REF_SORT_CONST_F32_ID,mgr);
-              output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr); 
-	    break;
+    case TEST_QUICK_SORT_IN_F32_35:
+    this->nbSamples = 11;
+    input.reload(SupportTestsF32::INPUT_SORT_F32_ID,mgr,this->nbSamples);
+    ref.reload(SupportTestsF32::REF_SORT_F32_ID,mgr);
+    output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);            
+    break;
 
-	    case TEST_SELECTION_SORT_OUT_F32_37:
-              this->nbSamples = 11;
-              input.reload(SupportTestsF32::INPUT_SORT_F32_ID,mgr,this->nbSamples);
-              ref.reload(SupportTestsF32::REF_SORT_F32_ID,mgr);
-              output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);            
-	    break;
+    case TEST_QUICK_SORT_CONST_F32_36:
+    this->nbSamples = 16;
+    input.reload(SupportTestsF32::INPUT_SORT_CONST_F32_ID,mgr,this->nbSamples);
+    ref.reload(SupportTestsF32::REF_SORT_CONST_F32_ID,mgr);
+    output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr); 
+    break;
 
-	    case TEST_SELECTION_SORT_IN_F32_38:
-              this->nbSamples = 11;
-              input.reload(SupportTestsF32::INPUT_SORT_F32_ID,mgr,this->nbSamples);
-              ref.reload(SupportTestsF32::REF_SORT_F32_ID,mgr);
-              output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);            
-	    break;
+    case TEST_SELECTION_SORT_OUT_F32_37:
+    this->nbSamples = 11;
+    input.reload(SupportTestsF32::INPUT_SORT_F32_ID,mgr,this->nbSamples);
+    ref.reload(SupportTestsF32::REF_SORT_F32_ID,mgr);
+    output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);            
+    break;
 
-	    case TEST_SELECTION_SORT_CONST_F32_39:
-              this->nbSamples = 16;
-              input.reload(SupportTestsF32::INPUT_SORT_CONST_F32_ID,mgr,this->nbSamples);
-              ref.reload(SupportTestsF32::REF_SORT_CONST_F32_ID,mgr);
-              output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr); 
-	    break;
+    case TEST_SELECTION_SORT_IN_F32_38:
+    this->nbSamples = 11;
+    input.reload(SupportTestsF32::INPUT_SORT_F32_ID,mgr,this->nbSamples);
+    ref.reload(SupportTestsF32::REF_SORT_F32_ID,mgr);
+    output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr);            
+    break;
 
-	    case TEST_SPLINE_SQUARE_F32_40:
-	      inputX.reload(SupportTestsF32::INPUT_SPLINE_SQU_X_F32_ID,mgr,4);
-	      inputY.reload(SupportTestsF32::INPUT_SPLINE_SQU_Y_F32_ID,mgr,4);
-	      outputX.reload(SupportTestsF32::OUTPUT_SPLINE_SQU_X_F32_ID,mgr,20);
-	      ref.reload(SupportTestsF32::REF_SPLINE_SQU_F32_ID,mgr,20);
-          splineCoefs.create(3*(4-1),SupportTestsF32::COEFS_SPLINE_F32_ID,mgr);
-          buffer.create(2*4-1,SupportTestsF32::TEMP_SPLINE_F32_ID,mgr);
-	      output.create(20,SupportTestsF32::OUT_F32_ID,mgr);
-	    break;
+    case TEST_SELECTION_SORT_CONST_F32_39:
+    this->nbSamples = 16;
+    input.reload(SupportTestsF32::INPUT_SORT_CONST_F32_ID,mgr,this->nbSamples);
+    ref.reload(SupportTestsF32::REF_SORT_CONST_F32_ID,mgr);
+    output.create(this->nbSamples,SupportTestsF32::OUT_F32_ID,mgr); 
+    break;
 
-	    case TEST_SPLINE_SINE_F32_41:
-	      inputX.reload(SupportTestsF32::INPUT_SPLINE_SIN_X_F32_ID,mgr,9);
-	      inputY.reload(SupportTestsF32::INPUT_SPLINE_SIN_Y_F32_ID,mgr,9);
-	      outputX.reload(SupportTestsF32::OUTPUT_SPLINE_SIN_X_F32_ID,mgr,33);
-	      ref.reload(SupportTestsF32::REF_SPLINE_SIN_F32_ID,mgr,33);
-          splineCoefs.create(3*(9-1),SupportTestsF32::COEFS_SPLINE_F32_ID,mgr);
-          buffer.create(2*9-1,SupportTestsF32::TEMP_SPLINE_F32_ID,mgr);
-	      output.create(33,SupportTestsF32::OUT_F32_ID,mgr);
-	    break;
 
-	    case TEST_SPLINE_RAMP_F32_42:
-	      inputX.reload(SupportTestsF32::INPUT_SPLINE_RAM_X_F32_ID,mgr,3);
-	      inputY.reload(SupportTestsF32::INPUT_SPLINE_RAM_Y_F32_ID,mgr,3);
-	      outputX.reload(SupportTestsF32::OUTPUT_SPLINE_RAM_X_F32_ID,mgr,30);
-	      ref.reload(SupportTestsF32::REF_SPLINE_RAM_F32_ID,mgr,30);
-          splineCoefs.create(3*(3-1),SupportTestsF32::COEFS_SPLINE_F32_ID,mgr);
-          buffer.create(2*3-1,SupportTestsF32::TEMP_SPLINE_F32_ID,mgr);
-	      output.create(30,SupportTestsF32::OUT_F32_ID,mgr);
-	    break;
 
-        }       
+  }       
 
-    }
+}
 
-    void SupportTestsF32::tearDown(Testing::testID_t id,Client::PatternMgr *mgr)
-    {
-      (void)id;
-       output.dump(mgr);
-    }
+void SupportTestsF32::tearDown(Testing::testID_t id,Client::PatternMgr *mgr)
+{
+  (void)id;
+  output.dump(mgr);
+}
diff --git a/CMSIS/DSP/Testing/Source/Tests/SupportTestsQ15.cpp b/CMSIS/DSP/Testing/Source/Tests/SupportTestsQ15.cpp
index 894ee17..e0eb839 100755
--- a/CMSIS/DSP/Testing/Source/Tests/SupportTestsQ15.cpp
+++ b/CMSIS/DSP/Testing/Source/Tests/SupportTestsQ15.cpp
@@ -97,8 +97,6 @@
 
         result = read_q15x2((q15_t*)testReadQ15);
 
-        printf("%08X\n",result);
-
         ASSERT_TRUE(result == 0x0001FFFE);
 
     }
diff --git a/CMSIS/DSP/Testing/Source/Tests/SupportTestsQ7.cpp b/CMSIS/DSP/Testing/Source/Tests/SupportTestsQ7.cpp
index 5a3adf8..e5acc90 100755
--- a/CMSIS/DSP/Testing/Source/Tests/SupportTestsQ7.cpp
+++ b/CMSIS/DSP/Testing/Source/Tests/SupportTestsQ7.cpp
@@ -99,7 +99,6 @@
         q7_t *p = (q7_t*)testReadQ7;
 
         result = read_q7x4_ia(&p);
-        printf("%08X\n",result);
 
         ASSERT_TRUE(result == 0x01FEFDFC);
         ASSERT_TRUE(p == testReadQ7 + 4);
diff --git a/CMSIS/DSP/Testing/desc.txt b/CMSIS/DSP/Testing/desc.txt
index 076b624..990b520 100644
--- a/CMSIS/DSP/Testing/desc.txt
+++ b/CMSIS/DSP/Testing/desc.txt
@@ -289,33 +289,20 @@
               Pattern INPUT_BITONIC_SORT_16_F32_ID : Input8_f32.txt
               Pattern INPUT_BITONIC_SORT_32_F32_ID : Input9_f32.txt
               Pattern INPUT_SORT_CONST_F32_ID : Input10_f32.txt
-              Pattern INPUT_SPLINE_SQU_X_F32_ID : InputX11_f32.txt
-              Pattern INPUT_SPLINE_SQU_Y_F32_ID : InputY11_f32.txt
-              Pattern OUTPUT_SPLINE_SQU_X_F32_ID : OutputX11_f32.txt
-              Pattern INPUT_SPLINE_SIN_X_F32_ID : InputX12_f32.txt 
-              Pattern INPUT_SPLINE_SIN_Y_F32_ID : InputY12_f32.txt
-              Pattern OUTPUT_SPLINE_SIN_X_F32_ID : OutputX12_f32.txt 
-              Pattern INPUT_SPLINE_RAM_X_F32_ID : InputX13_f32.txt
-              Pattern INPUT_SPLINE_RAM_Y_F32_ID : InputY13_f32.txt
-              Pattern OUTPUT_SPLINE_RAM_X_F32_ID : OutputX13_f32.txt
               Pattern WEIGHTS_F32_ID : Weights6_f32.txt 
               Pattern REF_F32_ID : Ref6_f32.txt
               Pattern REF_SORT_F32_ID : Reference7_f32.txt 
               Pattern REF_BITONIC_SORT_16_F32_ID : Reference8_f32.txt
               Pattern REF_BITONIC_SORT_32_F32_ID : Reference9_f32.txt
               Pattern REF_SORT_CONST_F32_ID : Reference10_f32.txt
-              Pattern REF_SPLINE_SQU_F32_ID : Reference11_f32.txt
-              Pattern REF_SPLINE_SIN_F32_ID : Reference12_f32.txt
-              Pattern REF_SPLINE_RAM_F32_ID : Reference13_f32.txt
+
               Pattern SAMPLES_F32_ID : Samples1_f32.txt 
               Pattern SAMPLES_Q15_ID : Samples3_q15.txt 
               Pattern SAMPLES_Q31_ID : Samples4_q31.txt 
               Pattern SAMPLES_Q7_ID : Samples5_q7.txt 
 
               Output  OUT_F32_ID : Output
-              Output  COEFS_SPLINE_F32_ID : SplineCoefs
-              Output  TEMP_SPLINE_F32_ID : SplineTemp
-
+             
               Functions {
                 test_weighted_sum_f32 nb=3:test_weighted_sum_f32
                 test_weighted_sum_f32 nb=4n:test_weighted_sum_f32
@@ -358,9 +345,7 @@
                 test_selection_sort_f32 nb=11 inplace:test_selection_sort_in_f32
                 test_selection_sort_f32 nb=16 const:test_selection_sort_const_f32
 
-                test_spline_f32 square:test_spline_square_f32
-                test_spline_f32 sin:test_spline_sine_f32
-                test_spline_f32 ramp:test_spline_ramp_f32
+                
               }
 
            }
@@ -504,12 +489,32 @@
               Pattern REF_LINEAR_F32_ID : Reference1_f32.txt
               Pattern REF_BILINEAR_F32_ID : Reference2_f32.txt
 
+              Pattern REF_SPLINE_SQU_F32_ID : Reference3_f32.txt
+              Pattern REF_SPLINE_SIN_F32_ID : Reference4_f32.txt
+              Pattern REF_SPLINE_RAM_F32_ID : Reference5_f32.txt
+
+              Pattern INPUT_SPLINE_SQU_X_F32_ID : InputX3_f32.txt
+              Pattern INPUT_SPLINE_SQU_Y_F32_ID : InputY3_f32.txt
+              Pattern OUTPUT_SPLINE_SQU_X_F32_ID : OutputX3_f32.txt
+              Pattern INPUT_SPLINE_SIN_X_F32_ID : InputX4_f32.txt 
+              Pattern INPUT_SPLINE_SIN_Y_F32_ID : InputY4_f32.txt
+              Pattern OUTPUT_SPLINE_SIN_X_F32_ID : OutputX4_f32.txt 
+              Pattern INPUT_SPLINE_RAM_X_F32_ID : InputX5_f32.txt
+              Pattern INPUT_SPLINE_RAM_Y_F32_ID : InputY5_f32.txt
+              Pattern OUTPUT_SPLINE_RAM_X_F32_ID : OutputX5_f32.txt
+
 
               Output  OUT_SAMPLES_F32_ID : Output
+              Output  COEFS_SPLINE_F32_ID : SplineCoefs
+              Output  TEMP_SPLINE_F32_ID : SplineTemp
 
               Functions {
                 Test arm_linear_interp_f32:test_linear_interp_f32
                 Test arm_bilinear_interp_f32:test_bilinear_interp_f32
+
+                test_spline_f32 square:test_spline_square_f32
+                test_spline_f32 sin:test_spline_sine_f32
+                test_spline_f32 ramp:test_spline_ramp_f32
               }
           }
 
diff --git a/CMSIS/DoxyGen/DSP/dsp.dxy b/CMSIS/DoxyGen/DSP/dsp.dxy
index 0e7adb2..ff105c7 100644
--- a/CMSIS/DoxyGen/DSP/dsp.dxy
+++ b/CMSIS/DoxyGen/DSP/dsp.dxy
@@ -38,7 +38,7 @@
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = "Version 1.8.0"
+PROJECT_NUMBER         = "Version 1.9.0"
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
@@ -1999,7 +1999,7 @@
 # recursively expanded use the := operator instead of the = operator.
 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
 
-PREDEFINED             = __ALIGNED(x)=
+PREDEFINED             = ARM_FLOAT16_SUPPORTED=1 __ALIGNED(x)=
 
 # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
 # tag can be used to specify a list of macro names that should be expanded. The
diff --git a/CMSIS/DoxyGen/DSP/src/history.txt b/CMSIS/DoxyGen/DSP/src/history.txt
index ab5a5eb..f636371 100644
--- a/CMSIS/DoxyGen/DSP/src/history.txt
+++ b/CMSIS/DoxyGen/DSP/src/history.txt
@@ -7,6 +7,24 @@
     <th>Description</th>
   </tr>
   <tr>
+    <td>V1.9.0</td>
+    <td> 
+      Re-organization of arm_math.h
+      Re-organization of interpolation functions:
+      - New Interpolation folder
+
+      New q7 functions:
+      - arm_mat_mult_q7.c
+      - arm_mat_trans_q7.c
+
+      Matrix x vector multiply
+
+      Complex Matrix Transpose
+
+      More support for f16 datatype
+    </td>
+  </tr>
+  <tr>
     <td>V1.8.0</td>
     <td> 
       Helium implementation of lots of functions in the CMSIS-DSP.