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.
