CMSIS-DSP: Added arm_correlate_f16
Corrected PythonWrapper issues due to new f16 functions
diff --git a/CMSIS/DSP/Include/dsp/filtering_functions_f16.h b/CMSIS/DSP/Include/dsp/filtering_functions_f16.h
index 9cc10cc..4a99e83 100755
--- a/CMSIS/DSP/Include/dsp/filtering_functions_f16.h
+++ b/CMSIS/DSP/Include/dsp/filtering_functions_f16.h
@@ -199,6 +199,21 @@
   const float16_t * pCoeffs,
         float16_t * pState);
 
+  /**
+   * @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_f16(
+  const float16_t * pSrcA,
+        uint32_t srcALen,
+  const float16_t * pSrcB,
+        uint32_t srcBLen,
+        float16_t * pDst);
+
 #endif /*defined(ARM_FLOAT16_SUPPORTED)*/
 #ifdef   __cplusplus
 }
diff --git a/CMSIS/DSP/PythonWrapper/setup.py b/CMSIS/DSP/PythonWrapper/setup.py
index 242f088..bda98b5 100644
--- a/CMSIS/DSP/PythonWrapper/setup.py
+++ b/CMSIS/DSP/PythonWrapper/setup.py
@@ -30,6 +30,7 @@
 
 filtering = glob.glob(os.path.join(ROOT,"Source","FilteringFunctions","*.c"))
 filtering.remove(os.path.join(ROOT,"Source","FilteringFunctions","FilteringFunctions.c"))
+filtering.remove(os.path.join(ROOT,"Source","FilteringFunctions","FilteringFunctionsF16.c"))
 
 matrix = glob.glob(os.path.join(ROOT,"Source","MatrixFunctions","*.c"))
 matrix.remove(os.path.join(ROOT,"Source","MatrixFunctions","MatrixFunctions.c"))
@@ -39,6 +40,7 @@
 
 complexf = glob.glob(os.path.join(ROOT,"Source","ComplexMathFunctions","*.c"))
 complexf.remove(os.path.join(ROOT,"Source","ComplexMathFunctions","ComplexMathFunctions.c"))
+complexf.remove(os.path.join(ROOT,"Source","ComplexMathFunctions","ComplexMathFunctionsF16.c"))
 
 basic = glob.glob(os.path.join(ROOT,"Source","BasicMathFunctions","*.c"))
 basic.remove(os.path.join(ROOT,"Source","BasicMathFunctions","BasicMathFunctions.c"))
diff --git a/CMSIS/DSP/Source/FilteringFunctions/CMakeLists.txt b/CMSIS/DSP/Source/FilteringFunctions/CMakeLists.txt
index 0f239bc..f18e24b 100644
--- a/CMSIS/DSP/Source/FilteringFunctions/CMakeLists.txt
+++ b/CMSIS/DSP/Source/FilteringFunctions/CMakeLists.txt
@@ -132,6 +132,7 @@
 target_sources(CMSISDSPFiltering PRIVATE arm_biquad_cascade_df2T_init_f16.c)
 target_sources(CMSISDSPFiltering PRIVATE arm_biquad_cascade_stereo_df2T_f16.c)
 target_sources(CMSISDSPFiltering PRIVATE arm_biquad_cascade_stereo_df2T_init_f16.c)
+target_sources(CMSISDSPFiltering PRIVATE arm_correlate_f16.c)
 endif()
 
 ### Includes
diff --git a/CMSIS/DSP/Source/FilteringFunctions/FilteringFunctionsF16.c b/CMSIS/DSP/Source/FilteringFunctions/FilteringFunctionsF16.c
index 514b32b..cef13f9 100755
--- a/CMSIS/DSP/Source/FilteringFunctions/FilteringFunctionsF16.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/FilteringFunctionsF16.c
@@ -32,4 +32,4 @@
 #include "arm_biquad_cascade_df2T_init_f16.c"
 #include "arm_biquad_cascade_stereo_df2T_f16.c"
 #include "arm_biquad_cascade_stereo_df2T_init_f16.c"
-
+#include "arm_correlate_f16.c"
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_f16.c b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_f16.c
index cda045b..ad274f1 100755
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_f16.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_f16.c
@@ -28,6 +28,7 @@
 
 #include "dsp/filtering_functions_f16.h"
 
+#if defined(ARM_FLOAT16_SUPPORTED)
 /**
   @ingroup groupFilters
  */
@@ -485,4 +486,6 @@
 /**
   @} end of BiquadCascadeDF1 group
  */
-#endif /* #if defined(ARM_MATH_MVE_FLOAT16) && !defined(ARM_MATH_AUTOVECTORIZE) */
\ No newline at end of file
+#endif /* #if defined(ARM_MATH_MVE_FLOAT16) && !defined(ARM_MATH_AUTOVECTORIZE) */
+
+#endif /*#if defined(ARM_FLOAT16_SUPPORTED)*/
\ No newline at end of file
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_f16.c b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_f16.c
index 2bf15f3..be829f3 100755
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_f16.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_f16.c
@@ -28,6 +28,7 @@
 
 #include "dsp/filtering_functions_f16.h"
 
+#if defined(ARM_FLOAT16_SUPPORTED)
 /**
   @ingroup groupFilters
  */
@@ -156,3 +157,4 @@
 /**
   @} end of BiquadCascadeDF1 group
  */
+#endif /* #if defined(ARM_FLOAT16_SUPPORTED) */
\ No newline at end of file
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_f16.c b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_f16.c
index 535be23..2f18558 100755
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_f16.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_f16.c
@@ -28,6 +28,7 @@
 
 #include "dsp/filtering_functions_f16.h"
 
+#if defined(ARM_FLOAT16_SUPPORTED)
 /**
   @ingroup groupFilters
 */
@@ -490,3 +491,5 @@
 /**
   @} end of BiquadCascadeDF2T group
  */
+
+#endif /* #if defined(ARM_FLOAT16_SUPPORTED) */
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f16.c b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f16.c
index 2e70325..a60d640 100755
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f16.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f16.c
@@ -28,6 +28,7 @@
 
 #include "dsp/filtering_functions_f16.h"
 
+#if defined(ARM_FLOAT16_SUPPORTED)
 /**
   @ingroup groupFilters
  */
@@ -109,3 +110,5 @@
 /**
   @} end of BiquadCascadeDF2T group
  */
+
+#endif /* #if defined(ARM_FLOAT16_SUPPORTED) */
\ No newline at end of file
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_f16.c b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_f16.c
index 889e154..12afdbb 100755
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_f16.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_f16.c
@@ -28,6 +28,7 @@
 
 #include "dsp/filtering_functions_f16.h"
 
+#if defined(ARM_FLOAT16_SUPPORTED)
 /**
   @ingroup groupFilters
 */
@@ -424,3 +425,5 @@
 /**
   @} end of BiquadCascadeDF2T group
  */
+
+#endif /* #if defined(ARM_FLOAT16_SUPPORTED) */
\ No newline at end of file
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_init_f16.c b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_init_f16.c
index d04d8d0..bccc223 100755
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_init_f16.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_init_f16.c
@@ -28,6 +28,8 @@
 
 #include "dsp/filtering_functions_f16.h"
 
+#if defined(ARM_FLOAT16_SUPPORTED)
+
 /**
   @ingroup groupFilters
  */
@@ -84,3 +86,5 @@
 /**
   @} end of BiquadCascadeDF2T group
  */
+
+#endif /* #if defined(ARM_FLOAT16_SUPPORTED) */
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_f16.c b/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_f16.c
new file mode 100755
index 0000000..80b4e74
--- /dev/null
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_f16.c
@@ -0,0 +1,1159 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_correlate_f16.c
+ * Description:  Correlation of floating-point sequences
+ *
+ * $Date:        18. March 2020
+ * $Revision:    V1.6.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/filtering_functions_f16.h"
+
+#if defined(ARM_FLOAT16_SUPPORTED)
+/**
+  @ingroup groupFilters
+ */
+
+/**
+  @defgroup Corr Correlation
+
+  Correlation is a mathematical operation that is similar to convolution.
+  As with convolution, correlation uses two signals to produce a third signal.
+  The underlying algorithms in correlation and convolution are identical except that one of the inputs is flipped in convolution.
+  Correlation is commonly used to measure the similarity between two signals.
+  It has applications in pattern recognition, cryptanalysis, and searching.
+  The CMSIS library provides correlation functions for Q7, Q15, Q31 and floating-point data types.
+  Fast versions of the Q15 and Q31 functions are also provided.
+
+  @par           Algorithm
+                   Let <code>a[n]</code> and <code>b[n]</code> be sequences of length <code>srcALen</code> and <code>srcBLen</code> samples respectively.
+                   The convolution of the two signals is denoted by
+  <pre>
+      c[n] = a[n] * b[n]
+  </pre>
+                   In correlation, one of the signals is flipped in time
+  <pre>
+       c[n] = a[n] * b[-n]
+  </pre>
+  @par
+                   and this is mathematically defined as
+                   \image html CorrelateEquation.gif
+  @par
+                   The <code>pSrcA</code> points to the first input vector of length <code>srcALen</code> and <code>pSrcB</code> points to the second input vector of length <code>srcBLen</code>.
+                   The result <code>c[n]</code> is of length <code>2 * max(srcALen, srcBLen) - 1</code> and is defined over the interval <code>n=0, 1, 2, ..., (2 * max(srcALen, srcBLen) - 2)</code>.
+                   The output result is written to <code>pDst</code> and the calling function must allocate <code>2 * max(srcALen, srcBLen) - 1</code> words for the result.
+
+  @note
+                   The <code>pDst</code> should be initialized to all zeros before being used.
+
+  @par           Fixed-Point Behavior
+                   Correlation requires summing up a large number of intermediate products.
+                   As such, the Q7, Q15, and Q31 functions run a risk of overflow and saturation.
+                   Refer to the function specific documentation below for further details of the particular algorithm used.
+
+  @par           Fast Versions
+                   Fast versions are supported for Q31 and Q15.  Cycles for Fast versions are less compared to Q31 and Q15 of correlate and the design requires
+                   the input signals should be scaled down to avoid intermediate overflows.
+
+  @par           Opt Versions
+                   Opt versions are supported for Q15 and Q7.  Design uses internal scratch buffer for getting good optimisation.
+                   These versions are optimised in cycles and consumes more memory (Scratch memory) compared to Q15 and Q7 versions of correlate
+ */
+
+/**
+  @addtogroup Corr
+  @{
+ */
+
+/**
+  @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 location where the output result is written.  Length 2 * max(srcALen, srcBLen) - 1.
+  @return        none
+ */
+
+#if defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE)
+
+#include "arm_helium_utils.h"
+#include "arm_vec_filtering.h"
+
+#define MVE_INTR_CORR_DUAL_DEC_Y_INC_SIZE_F16(acc0, acc1, pX, pY, count)                            \
+{                                                                                                   \
+    float16_t const *pSrcX, *pSrcY;                                                                 \
+    f16x8_t   acc0Vec, acc1Vec, xVec, yVec;                                                       \
+    uint32_t    k;                                                                                  \
+                                                                                                    \
+    acc0Vec = vdupq_n_f16(0.0f);                                                                    \
+    acc1Vec = vdupq_n_f16(0.0f);                                                                    \
+    pSrcX = (float16_t const *) pX;                                                                 \
+    pSrcY = (float16_t const *) pY;                                                                 \
+    k = count >> 3;                                                                                 \
+    while (k > 0U)                                                                                  \
+    {                                                                                               \
+        xVec = vld1q(pSrcX); pSrcX += 8;                                                \
+        yVec = vldrhq_f16(&pSrcY[-1]);                                                              \
+        acc1Vec = vfmaq_f16(acc1Vec, xVec, yVec);                                                   \
+        yVec = vld1q(pSrcY); pSrcY += 8;                                                \
+        acc0Vec = vfmaq_f16(acc0Vec, xVec, yVec);                                                   \
+        /*  Decrement the loop counter   */                                                         \
+        k--;                                                                                        \
+    }                                                                                               \
+    k = count % 0x8U;                                                                               \
+    /* use predication to finalize MAC sum */                                                       \
+    /* acc1 requires 1 additional sample  */                                                        \
+    /* so add 1 to unmask an extra lane  in final MAC computation  */                               \
+    mve_pred16_t p0 = vctp16q(k+1);                                                      \
+    xVec = vld1q(pSrcX); pSrcX += 8;                                                    \
+    yVec = vldrhq_f16(&pSrcY[-1]);                                                                  \
+    acc1Vec = vfmaq_m_f16(acc1Vec, xVec, yVec,p0);                                                  \
+    /* acc0 requires exact number of sample  */                                                     \
+    /* disable extra lanes in final MAC computation  */                                             \
+    p0 = vctp16q(k);                                                                     \
+    yVec = vld1q(pSrcY); pSrcY += 8;                                                    \
+    acc0Vec = vfmaq_m_f16(acc0Vec, xVec, yVec,p0);                                                  \
+                                                                                                    \
+    acc0 = vecAddAcrossF16Mve(acc0Vec);                                                             \
+    acc1 = vecAddAcrossF16Mve(acc1Vec);                                                             \
+}
+
+#define MVE_INTR_CORR_SINGLE_F16(acc, pX, pY, count)                                                \
+{                                                                                                   \
+    float16_t const *pSrcX, *pSrcY;                                                                 \
+    f16x8_t   accVec, xVec, yVec;                                                                 \
+    uint16_t    k;                                                                                  \
+                                                                                                    \
+    accVec = vdupq_n_f16(0.0f);                                                                     \
+    pSrcX = (float16_t const *) pX;                                                                 \
+    pSrcY = (float16_t const *) pY;                                                                 \
+    k = count >> 3;                                                                                 \
+                                                                                                    \
+    while (k > 0U)                                                                                  \
+    {                                                                                               \
+        yVec = vld1q(pSrcY); pSrcY += 8;                                                \
+        xVec = vld1q(pSrcX); pSrcX += 8;                                                \
+        accVec = vfmaq(accVec, xVec, yVec);                                                         \
+        /*  Decrement the loop counter   */                                                         \
+        k--;                                                                                        \
+    }                                                                                               \
+    /* Loop with tail predication expected here  */                                                 \
+    k = count % 0x8U;                                                                               \
+    if (k > 0U)                                                                                     \
+    {                                                                                               \
+        mve_pred16_t p0 = vctp16q(k);                                                    \
+        yVec = vld1q(pSrcY); pSrcY += 8;                                                \
+        xVec = vld1q(pSrcX); pSrcX += 8;                                                \
+        accVec = vfmaq_m(accVec, xVec, yVec, p0);                                                   \
+    }                                                                                               \
+                                                                                                    \
+  acc = vecAddAcrossF16Mve(accVec);                                                                 \
+}
+
+#define MVE_INTR_CORR_QUAD_INC_X_FIXED_SIZE_F16(acc0, acc1, acc2, acc3, pX, pY, count)              \
+{                                                                                                   \
+    float16_t const *pSrcX, *pSrcY;                                                                 \
+    f16x8_t   acc0Vec, acc1Vec, acc2Vec, acc3Vec, xVec, yVec;                                     \
+    uint32_t    k;                                                                                  \
+                                                                                                    \
+    acc0Vec = vdupq_n_f16(0.0f);                                                                    \
+    acc1Vec = vdupq_n_f16(0.0f);                                                                    \
+    acc2Vec = vdupq_n_f16(0.0f);                                                                    \
+    acc3Vec = vdupq_n_f16(0.0f);                                                                    \
+    pSrcX = (float16_t const *) pX;                                                                 \
+    pSrcY = (float16_t const *) pY;                                                                 \
+    k = count >> 3;                                                                                 \
+                                                                                                    \
+    while (k > 0U)                                                                                  \
+    {                                                                                               \
+        yVec = vld1q(pSrcY); pSrcY += 8;                                                \
+        xVec = vldrhq_f16(&pSrcX[1]);                                                               \
+        acc1Vec = vfmaq_f16(acc1Vec, xVec, yVec);                                                   \
+        xVec = vldrhq_f16(&pSrcX[2]);                                                               \
+        acc2Vec = vfmaq_f16(acc2Vec, xVec, yVec);                                                   \
+        xVec = vldrhq_f16(&pSrcX[3]);                                                               \
+        acc3Vec = vfmaq_f16(acc3Vec, xVec, yVec);                                                   \
+        xVec = vld1q(pSrcX); pSrcX += 8;                                                \
+        acc0Vec = vfmaq_f16(acc0Vec, xVec, yVec);                                                   \
+        /*  Decrement the loop counter   */                                                         \
+        k--;                                                                                        \
+    }                                                                                               \
+    /* loop + tail predication expected here  */                                                    \
+    k = count % 0x8U;                                                                               \
+    if (k > 0U)                                                                                     \
+    {                                                                                               \
+        mve_pred16_t p0 = vctp16q(k);                                                    \
+        yVec = vld1q(pSrcY); pSrcY += 8;                                                \
+        xVec = vldrhq_f16(&pSrcX[1]);                                                               \
+        acc1Vec = vfmaq_m_f16(acc1Vec, xVec, yVec, p0);                                             \
+        xVec = vldrhq_f16(&pSrcX[2]);                                                               \
+        acc2Vec = vfmaq_m_f16(acc2Vec, xVec, yVec, p0);                                             \
+        xVec = vldrhq_f16(&pSrcX[3]);                                                               \
+        acc3Vec = vfmaq_m_f16(acc3Vec, xVec, yVec, p0);                                             \
+        xVec = vld1q(pSrcX); pSrcX += 8;                                                \
+        acc0Vec = vfmaq_m_f16(acc0Vec, xVec, yVec, p0);                                             \
+    }                                                                                               \
+                                                                                                    \
+    acc0 = vecAddAcrossF16Mve(acc0Vec);                                                             \
+    acc1 = vecAddAcrossF16Mve(acc1Vec);                                                             \
+    acc2 = vecAddAcrossF16Mve(acc2Vec);                                                             \
+    acc3 = vecAddAcrossF16Mve(acc3Vec);                                                             \
+}
+
+#define MVE_INTR_CORR_DUAL_INC_X_FIXED_SIZE_F16(acc0, acc1, pX, pY, count)                          \
+{                                                                                                   \
+    float16_t const *pSrcX, *pSrcY;                                                                 \
+    f16x8_t   acc0Vec, acc1Vec, xVec, yVec;                                                       \
+    uint32_t    k;                                                                                  \
+                                                                                                    \
+    acc0Vec = vdupq_n_f16(0.0f);                                                                    \
+    acc1Vec = vdupq_n_f16(0.0f);                                                                    \
+    pSrcX = (float16_t const *) pX;                                                                 \
+    pSrcY = (float16_t const *) pY;                                                                 \
+    k = count >> 3;                                                                                 \
+                                                                                                    \
+    while (k > 0U)                                                                                  \
+    {                                                                                               \
+        yVec = vld1q(pSrcY); pSrcY += 8;                                                \
+        xVec = vldrhq_f16(&pSrcX[1]);                                                               \
+        acc1Vec = vfmaq_f16(acc1Vec, xVec, yVec);                                                   \
+        xVec = vld1q(pSrcX); pSrcX += 8;                                                \
+        acc0Vec = vfmaq_f16(acc0Vec, xVec, yVec);                                                   \
+        /*  Decrement the loop counter   */                                                         \
+        k--;                                                                                        \
+    }                                                                                               \
+    /* loop + tail predication expected here  */                                                    \
+    k = count % 0x8U;                                                                               \
+    if (k > 0U)                                                                                     \
+    {                                                                                               \
+        mve_pred16_t p0 = vctp16q(k);                                                    \
+        yVec = vld1q(pSrcY); pSrcY += 8;;                                               \
+        xVec = vldrhq_f16(&pSrcX[1]);                                                               \
+        acc1Vec = vfmaq_m_f16(acc1Vec, xVec, yVec, p0);                                             \
+        xVec = vld1q(pSrcX); pSrcX += 8;                                                \
+        acc0Vec = vfmaq_m_f16(acc0Vec, xVec, yVec, p0);                                             \
+    }                                                                                               \
+                                                                                                    \
+    acc0 = vecAddAcrossF16Mve(acc0Vec);                                                             \
+    acc1 = vecAddAcrossF16Mve(acc1Vec);                                                             \
+}
+
+#define MVE_INTR_CORR_DUAL_INC_X_DEC_SIZE_F16(acc0, acc1, pX, pY, count)                            \
+{                                                                                                   \
+    float16_t const *pSrcX, *pSrcY;                                                                 \
+    f16x8_t   acc0Vec, acc1Vec, xVec, yVec;                                                       \
+    uint32_t    k;                                                                                  \
+                                                                                                    \
+    acc0Vec = vdupq_n_f16(0.0f);                                                                    \
+    acc1Vec = vdupq_n_f16(0.0f);                                                                    \
+    pSrcX = (float16_t const *) pX;                                                                 \
+    pSrcY = (float16_t const *) pY;                                                                 \
+    k = (count-1) >> 3;                                                                             \
+                                                                                                    \
+    while (k > 0U)                                                                                  \
+    {                                                                                               \
+        yVec = vld1q(pSrcY); pSrcY += 8;                                                \
+        xVec = vldrhq_f16(&pSrcX[1]);                                                               \
+        acc1Vec = vfmaq_f16(acc1Vec, xVec, yVec);                                                   \
+        xVec = vld1q(pSrcX); pSrcX += 8;                                                \
+        acc0Vec = vfmaq_f16(acc0Vec, xVec, yVec);                                                   \
+        /*  Decrement the loop counter   */                                                         \
+        k--;                                                                                        \
+    }                                                                                               \
+    /* use predication to finalize MAC sum */                                                       \
+    /* acc1 requires exact number of sample (count-1)  */                                           \
+    /* disable extra lanes in final MAC computation  */                                             \
+    k = (count-1) % 0x8U;                                                                           \
+    mve_pred16_t p0 = vctp16q(k);                                                        \
+    yVec = vld1q(pSrcY); pSrcY += 8;                                                    \
+    xVec = vldrhq_f16(&pSrcX[1]);                                                                   \
+    acc1Vec = vfmaq_m_f16(acc1Vec, xVec, yVec, p0);                                                 \
+    /* acc0 requires 1 additional sample  (count) */                                                \
+    /* so add 1 to unmask an extra lane  in final MAC computation  */                               \
+    p0 = vctp16q(k+1);                                                                   \
+    xVec = vld1q(pSrcX); pSrcX += 8;                                                    \
+    acc0Vec = vfmaq_m_f16(acc0Vec, xVec, yVec, p0);                                                 \
+                                                                                                    \
+    acc0 = vecAddAcrossF16Mve(acc0Vec);                                                             \
+    acc1 = vecAddAcrossF16Mve(acc1Vec);                                                             \
+}
+
+
+
+void arm_correlate_f16(
+  const float16_t * pSrcA,
+        uint32_t srcALen,
+  const float16_t * pSrcB,
+        uint32_t srcBLen,
+        float16_t * pDst)
+{
+    float16_t *pIn1 = (float16_t *)pSrcA;                    /* inputA pointer               */
+    float16_t *pIn2 = (float16_t *)pSrcB + (srcBLen - 1U);   /* inputB pointer               */
+    float16_t *pX;
+    float16_t *pY;
+    float16_t *pA;
+    float16_t *pB;
+    int32_t   i = 0U, j = 0;    /* loop counters */
+    int32_t   inv = 2U;         /* Reverse order flag */
+    uint32_t  tot = 0U;         /* Length */
+    int32_t   block1, block2, block3;
+    int32_t   incr;
+
+    tot = ((srcALen + srcBLen) - 2U);
+    if (srcALen > srcBLen)
+    {
+        /*
+         * Calculating the number of zeros to be padded to the output
+         */
+        j = srcALen - srcBLen;
+        /*
+         * Initialize the pointer after zero padding
+         */
+        pDst += j;
+    }
+    else if (srcALen < srcBLen)
+    {
+        /*
+         * Initialization to inputB pointer
+         */
+        pIn1 = (float16_t *)pSrcB;
+        /*
+         * Initialization to the end of inputA pointer
+         */
+        pIn2 = (float16_t *)pSrcA + (srcALen - 1U);
+        /*
+         * Initialisation of the pointer after zero padding
+         */
+        pDst = pDst + tot;
+        /*
+         * Swapping the lengths
+         */
+
+        j = srcALen;
+        srcALen = srcBLen;
+        srcBLen = j;
+        /*
+         * Setting the reverse flag
+         */
+        inv = -2;
+
+    }
+
+    block1 = srcBLen - 1;
+    block2 = srcALen - srcBLen + 1;
+    block3 = srcBLen - 1;
+
+    pA = pIn1;
+    pB = pIn2;
+    incr = inv / 2;
+
+    for (i = 0U; i <= block1 - 2; i += 2)
+    {
+        uint32_t  count = i + 1;
+        float16_t acc0;
+        float16_t acc1;
+        /*
+         * compute 2 accumulators per loop
+         * size is incrementing for second accumulator
+         * Y pointer is decrementing for second accumulator
+         */
+        pX = pA;
+        pY = pB;
+        MVE_INTR_CORR_DUAL_DEC_Y_INC_SIZE_F16(acc0, acc1, pX, pY, count);
+
+        *pDst = acc0;
+        pDst += incr;
+        *pDst = acc1;
+        pDst += incr;
+        pB -= 2;
+    }
+    for (; i < block1; i++)
+    {
+        uint32_t  count = i + 1;
+        float16_t acc;
+
+        pX = pA;
+        pY = pB;
+        MVE_INTR_CORR_SINGLE_F16(acc, pX, pY, count);
+
+        *pDst = acc;
+        pDst += incr;
+        pB--;
+    }
+
+    for (i = 0U; i <= block2 - 4; i += 4)
+    {
+        float16_t acc0;
+        float16_t acc1;
+        float16_t acc2;
+        float16_t acc3;
+
+        pX = pA;
+        pY = pB;
+        /*
+         * compute 4 accumulators per loop
+         * size is fixed for all accumulators
+         * X pointer is incrementing for successive accumulators
+         */
+        MVE_INTR_CORR_QUAD_INC_X_FIXED_SIZE_F16(acc0, acc1, acc2, acc3, pX, pY, srcBLen);
+
+        *pDst = acc0;
+        pDst += incr;
+        *pDst = acc1;
+        pDst += incr;
+        *pDst = acc2;
+        pDst += incr;
+        *pDst = acc3;
+        pDst += incr;
+        pA += 4;
+    }
+
+    for (; i <= block2 - 2; i += 2)
+    {
+        float16_t acc0;
+        float16_t acc1;
+
+        pX = pA;
+        pY = pB;
+        /*
+         * compute 2 accumulators per loop
+         * size is fixed for all accumulators
+         * X pointer is incrementing for second accumulator
+         */
+        MVE_INTR_CORR_DUAL_INC_X_FIXED_SIZE_F16(acc0, acc1, pX, pY, srcBLen);
+
+        *pDst = acc0;
+        pDst += incr;
+        *pDst = acc1;
+        pDst += incr;
+        pA += 2;
+    }
+
+    if (block2 & 1)
+    {
+        float16_t acc;
+
+        pX = pA;
+        pY = pB;
+        MVE_INTR_CORR_SINGLE_F16(acc, pX, pY, srcBLen);
+
+        *pDst = acc;
+        pDst += incr;
+        pA++;
+    }
+
+    for (i = block3 - 1; i >= 0; i -= 2)
+    {
+
+        uint32_t  count = (i + 1);
+        float16_t acc0;
+        float16_t acc1;
+
+        pX = pA;
+        pY = pB;
+        /*
+         * compute 2 accumulators per loop
+         * size is decrementing for second accumulator
+         * X pointer is incrementing for second accumulator
+         */
+        MVE_INTR_CORR_DUAL_INC_X_DEC_SIZE_F16(acc0, acc1, pX, pY, count);
+
+        *pDst = acc0;
+        pDst += incr;
+        *pDst = acc1;
+        pDst += incr;
+        pA += 2;
+
+    }
+    for (; i >= 0; i--)
+    {
+        uint32_t  count = (i + 1);
+        float16_t acc;
+
+        pX = pA;
+        pY = pB;
+        MVE_INTR_CORR_SINGLE_F16(acc, pX, pY, count);
+
+        *pDst = acc;
+        pDst += incr;
+        pA++;
+    }
+}
+
+#else
+void arm_correlate_f16(
+  const float16_t * pSrcA,
+        uint32_t srcALen,
+  const float16_t * pSrcB,
+        uint32_t srcBLen,
+        float16_t * pDst)
+{
+
+#if defined(ARM_MATH_DSP) && !defined(ARM_MATH_AUTOVECTORIZE)
+  
+  const float16_t *pIn1;                               /* InputA pointer */
+  const float16_t *pIn2;                               /* InputB pointer */
+        float16_t *pOut = pDst;                        /* Output pointer */
+  const float16_t *px;                                 /* Intermediate inputA pointer */
+  const float16_t *py;                                 /* Intermediate inputB pointer */
+  const float16_t *pSrc1;
+        float16_t sum;
+        uint32_t blockSize1, blockSize2, blockSize3;   /* Loop counters */
+        uint32_t j, k, count, blkCnt;                  /* Loop counters */
+        uint32_t outBlockSize;                         /* Loop counter */
+        int32_t inc = 1;                               /* Destination address modifier */
+
+#if defined (ARM_MATH_LOOPUNROLL) 
+    float16_t acc0, acc1, acc2, acc3,c0;                    /* Accumulators */
+    float16_t x0, x1, x2, x3;                        /* temporary variables for holding input and coefficient values */
+#endif
+
+  /* The algorithm implementation is based on the lengths of the inputs. */
+  /* srcB is always made to slide across srcA. */
+  /* So srcBLen is always considered as shorter or equal to srcALen */
+  /* But CORR(x, y) is reverse of CORR(y, x) */
+  /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */
+  /* and the destination pointer modifier, inc is set to -1 */
+  /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */
+  /* But to improve the performance,
+   * we assume zeroes in the output instead of zero padding either of the the inputs*/
+  /* If srcALen > srcBLen,
+   * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */
+  /* If srcALen < srcBLen,
+   * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */
+  if (srcALen >= srcBLen)
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = pSrcA;
+
+    /* Initialization of inputB pointer */
+    pIn2 = pSrcB;
+
+    /* Number of output samples is calculated */
+    outBlockSize = (2U * srcALen) - 1U;
+
+    /* When srcALen > srcBLen, zero padding has to be done to srcB
+     * to make their lengths equal.
+     * Instead, (outBlockSize - (srcALen + srcBLen - 1))
+     * number of output samples are made zero */
+    j = outBlockSize - (srcALen + (srcBLen - 1U));
+
+    /* Updating the pointer position to non zero value */
+    pOut += j;
+  }
+  else
+  {
+    /* Initialization of inputA pointer */
+    pIn1 = pSrcB;
+
+    /* Initialization of inputB pointer */
+    pIn2 = pSrcA;
+
+    /* srcBLen is always considered as shorter or equal to srcALen */
+    j = srcBLen;
+    srcBLen = srcALen;
+    srcALen = j;
+
+    /* CORR(x, y) = Reverse order(CORR(y, x)) */
+    /* Hence set the destination pointer to point to the last output sample */
+    pOut = pDst + ((srcALen + srcBLen) - 2U);
+
+    /* Destination address modifier is set to -1 */
+    inc = -1;
+  }
+
+  /* The function is internally
+   * divided into three stages according to the number of multiplications that has to be
+   * taken place between inputA samples and inputB samples. In the first stage of the
+   * algorithm, the multiplications increase by one for every iteration.
+   * In the second stage of the algorithm, srcBLen number of multiplications are done.
+   * In the third stage of the algorithm, the multiplications decrease by one
+   * for every iteration. */
+
+  /* The algorithm is implemented in three stages.
+     The loop counters of each stage is initiated here. */
+  blockSize1 = srcBLen - 1U;
+  blockSize2 = srcALen - (srcBLen - 1U);
+  blockSize3 = blockSize1;
+
+  /* --------------------------
+   * Initializations of stage1
+   * -------------------------*/
+
+  /* sum = x[0] * y[srcBlen - 1]
+   * sum = x[0] * y[srcBlen-2] + x[1] * y[srcBlen - 1]
+   * ....
+   * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1]
+   */
+
+  /* In this stage the MAC operations are increased by 1 for every iteration.
+     The count variable holds the number of MAC operations performed */
+  count = 1U;
+
+  /* Working pointer of inputA */
+  px = pIn1;
+
+  /* Working pointer of inputB */
+  pSrc1 = pIn2 + (srcBLen - 1U);
+  py = pSrc1;
+
+  /* ------------------------
+   * Stage1 process
+   * ----------------------*/
+
+  /* The first stage starts here */
+  while (blockSize1 > 0U)
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0.0f;
+
+#if defined (ARM_MATH_LOOPUNROLL) 
+
+    /* Loop unrolling: Compute 4 outputs at a time */
+    k = count >> 2U;
+
+
+    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.
+     ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+    while (k > 0U)
+    {
+      /* x[0] * y[srcBLen - 4] */
+      sum += *px++ * *py++;
+
+      /* x[1] * y[srcBLen - 3] */
+      sum += *px++ * *py++;
+
+      /* x[2] * y[srcBLen - 2] */
+      sum += *px++ * *py++;
+
+      /* x[3] * y[srcBLen - 1] */
+      sum += *px++ * *py++;
+
+      /* Decrement loop counter */
+      k--;
+    }
+
+    /* Loop unrolling: Compute remaining outputs */
+    k = count % 0x4U;
+
+#else
+
+    /* Initialize k with number of samples */
+    k = count;
+
+#endif /* #if defined (ARM_MATH_LOOPUNROLL)  */
+
+    while (k > 0U)
+    {
+      /* Perform the multiply-accumulate */
+      /* x[0] * y[srcBLen - 1] */
+      sum += *px++ * *py++;
+
+      /* Decrement loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut = sum;
+    /* Destination pointer is updated according to the address modifier, inc */
+    pOut += inc;
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    py = pSrc1 - count;
+    px = pIn1;
+
+    /* Increment MAC count */
+    count++;
+
+    /* Decrement loop counter */
+    blockSize1--;
+  }
+
+  /* --------------------------
+   * Initializations of stage2
+   * ------------------------*/
+
+  /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1]
+   * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen]   * y[srcBLen-1]
+   * ....
+   * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]
+   */
+
+  /* Working pointer of inputA */
+  px = pIn1;
+
+  /* Working pointer of inputB */
+  py = pIn2;
+
+  /* count is index by which the pointer pIn1 to be incremented */
+  count = 0U;
+
+  /* -------------------
+   * Stage2 process
+   * ------------------*/
+
+  /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed.
+   * So, to loop unroll over blockSize2,
+   * srcBLen should be greater than or equal to 4 */
+  if (srcBLen >= 4U)
+  {
+#if defined (ARM_MATH_LOOPUNROLL) 
+
+    /* Loop unrolling: Compute 4 outputs at a time */
+    blkCnt = blockSize2 >> 2U;
+
+    while (blkCnt > 0U)
+    {
+      /* Set all accumulators to zero */
+      acc0 = 0.0f;
+      acc1 = 0.0f;
+      acc2 = 0.0f;
+      acc3 = 0.0f;
+
+
+      /* read x[0], x[1], x[2] samples */
+      x0 = *px++;
+      x1 = *px++;
+      x2 = *px++;
+
+      /* Apply loop unrolling and compute 4 MACs simultaneously. */
+      k = srcBLen >> 2U;
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      do
+      {
+        /* Read y[0] sample */
+        c0 = *(py++);
+        /* Read x[3] sample */
+        x3 = *(px++);
+
+        /* Perform the multiply-accumulate */
+        /* acc0 +=  x[0] * y[0] */
+        acc0 += x0 * c0;
+        /* acc1 +=  x[1] * y[0] */
+        acc1 += x1 * c0;
+        /* acc2 +=  x[2] * y[0] */
+        acc2 += x2 * c0;
+        /* acc3 +=  x[3] * y[0] */
+        acc3 += x3 * c0;
+
+        /* Read y[1] sample */
+        c0 = *(py++);
+        /* Read x[4] sample */
+        x0 = *(px++);
+
+        /* Perform the multiply-accumulate */
+        /* acc0 +=  x[1] * y[1] */
+        acc0 += x1 * c0;
+        /* acc1 +=  x[2] * y[1] */
+        acc1 += x2 * c0;
+        /* acc2 +=  x[3] * y[1] */
+        acc2 += x3 * c0;
+        /* acc3 +=  x[4] * y[1] */
+        acc3 += x0 * c0;
+
+        /* Read y[2] sample */
+        c0 = *(py++);
+        /* Read x[5] sample */
+        x1 = *(px++);
+
+        /* Perform the multiply-accumulate */
+        /* acc0 +=  x[2] * y[2] */
+        acc0 += x2 * c0;
+        /* acc1 +=  x[3] * y[2] */
+        acc1 += x3 * c0;
+        /* acc2 +=  x[4] * y[2] */
+        acc2 += x0 * c0;
+        /* acc3 +=  x[5] * y[2] */
+        acc3 += x1 * c0;
+
+        /* Read y[3] sample */
+        c0 = *(py++);
+        /* Read x[6] sample */
+        x2 = *(px++);
+
+        /* Perform the multiply-accumulate */
+        /* acc0 +=  x[3] * y[3] */
+        acc0 += x3 * c0;
+        /* acc1 +=  x[4] * y[3] */
+        acc1 += x0 * c0;
+        /* acc2 +=  x[5] * y[3] */
+        acc2 += x1 * c0;
+        /* acc3 +=  x[6] * y[3] */
+        acc3 += x2 * c0;
+
+      } while (--k);
+
+      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.
+       ** No loop unrolling is used. */
+      k = srcBLen % 0x4U;
+
+      while (k > 0U)
+      {
+        /* Read y[4] sample */
+        c0 = *(py++);
+        /* Read x[7] sample */
+        x3 = *(px++);
+
+        /* Perform the multiply-accumulate */
+        /* acc0 +=  x[4] * y[4] */
+        acc0 += x0 * c0;
+        /* acc1 +=  x[5] * y[4] */
+        acc1 += x1 * c0;
+        /* acc2 +=  x[6] * y[4] */
+        acc2 += x2 * c0;
+        /* acc3 +=  x[7] * y[4] */
+        acc3 += x3 * c0;
+
+        /* Reuse the present samples for the next MAC */
+        x0 = x1;
+        x1 = x2;
+        x2 = x3;
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut = acc0;
+      /* Destination pointer is updated according to the address modifier, inc */
+      pOut += inc;
+
+      *pOut = acc1;
+      pOut += inc;
+
+      *pOut = acc2;
+      pOut += inc;
+
+      *pOut = acc3;
+      pOut += inc;
+
+      /* Increment the pointer pIn1 index, count by 4 */
+      count += 4U;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pIn2;
+
+      /* Decrement loop counter */
+      blkCnt--;
+    }
+
+    /* Loop unrolling: Compute remaining outputs */
+    blkCnt = blockSize2 % 0x4U;
+
+#else
+
+    /* Initialize blkCnt with number of samples */
+    blkCnt = blockSize2;
+
+#endif /* #if defined (ARM_MATH_LOOPUNROLL)  */
+
+    while (blkCnt > 0U)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0.0f;
+
+#if defined (ARM_MATH_LOOPUNROLL) 
+
+    /* Loop unrolling: Compute 4 outputs at a time */
+      k = srcBLen >> 2U;
+
+
+      /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.
+       ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+      while (k > 0U)
+      {
+        /* Perform the multiply-accumulate */
+        sum += *px++ * *py++;
+        sum += *px++ * *py++;
+        sum += *px++ * *py++;
+        sum += *px++ * *py++;
+
+        /* Decrement loop counter */
+        k--;
+      }
+      /* If the srcBLen is not a multiple of 4, compute any remaining MACs here.
+       ** No loop unrolling is used. */
+      k = srcBLen % 0x4U;
+#else
+
+      /* Initialize blkCnt with number of samples */
+      k = srcBLen;
+
+#endif /* #if defined (ARM_MATH_LOOPUNROLL) */
+
+      while (k > 0U)
+      {
+        /* Perform the multiply-accumulate */
+        sum += *px++ * *py++;
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut = sum;
+
+      /* Destination pointer is updated according to the address modifier, inc */
+      pOut += inc;
+
+      /* Increment the pointer pIn1 index, count by 1 */
+      count++;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pIn2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+  else
+  {
+    /* If the srcBLen is not a multiple of 4,
+     * the blockSize2 loop cannot be unrolled by 4 */
+    blkCnt = blockSize2;
+
+    while (blkCnt > 0U)
+    {
+      /* Accumulator is made zero for every iteration */
+      sum = 0.0f;
+
+      /* Loop over srcBLen */
+      k = srcBLen;
+
+      while (k > 0U)
+      {
+        /* Perform the multiply-accumulate */
+        sum += *px++ * *py++;
+
+        /* Decrement the loop counter */
+        k--;
+      }
+
+      /* Store the result in the accumulator in the destination buffer. */
+      *pOut = sum;
+      /* Destination pointer is updated according to the address modifier, inc */
+      pOut += inc;
+
+      /* Increment the pointer pIn1 index, count by 1 */
+      count++;
+
+      /* Update the inputA and inputB pointers for next MAC calculation */
+      px = pIn1 + count;
+      py = pIn2;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+    }
+  }
+
+
+  /* --------------------------
+   * Initializations of stage3
+   * -------------------------*/
+
+  /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]
+   * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1]
+   * ....
+   * sum +=  x[srcALen-2] * y[0] + x[srcALen-1] * y[1]
+   * sum +=  x[srcALen-1] * y[0]
+   */
+
+  /* In this stage the MAC operations are decreased by 1 for every iteration.
+     The count variable holds the number of MAC operations performed */
+  count = srcBLen - 1U;
+
+  /* Working pointer of inputA */
+  pSrc1 = pIn1 + (srcALen - (srcBLen - 1U));
+  px = pSrc1;
+
+  /* Working pointer of inputB */
+  py = pIn2;
+
+  /* -------------------
+   * Stage3 process
+   * ------------------*/
+
+  while (blockSize3 > 0U)
+  {
+    /* Accumulator is made zero for every iteration */
+    sum = 0.0f;
+
+#if defined (ARM_MATH_LOOPUNROLL) 
+
+    /* Loop unrolling: Compute 4 outputs at a time */
+    k = count >> 2U;
+
+
+    /* First part of the processing with loop unrolling.  Compute 4 MACs at a time.
+     ** a second loop below computes MACs for the remaining 1 to 3 samples. */
+    while (k > 0U)
+    {
+      /* Perform the multiply-accumulate */
+      /* sum += x[srcALen - srcBLen + 4] * y[3] */
+      sum += *px++ * *py++;
+
+      /* sum += x[srcALen - srcBLen + 3] * y[2] */
+      sum += *px++ * *py++;
+
+      /* sum += x[srcALen - srcBLen + 2] * y[1] */
+      sum += *px++ * *py++;
+
+      /* sum += x[srcALen - srcBLen + 1] * y[0] */
+      sum += *px++ * *py++;
+
+      /* Decrement loop counter */
+      k--;
+    }
+
+    /* Loop unrolling: Compute remaining outputs */
+    k = count % 0x4U;
+
+#else
+
+    /* Initialize blkCnt with number of samples */
+    k = count;
+
+#endif /* #if defined (ARM_MATH_LOOPUNROLL)  */
+
+    while (k > 0U)
+    {
+      /* Perform the multiply-accumulate */
+      sum += *px++ * *py++;
+
+      /* Decrement loop counter */
+      k--;
+    }
+
+    /* Store the result in the accumulator in the destination buffer. */
+    *pOut = sum;
+    /* Destination pointer is updated according to the address modifier, inc */
+    pOut += inc;
+
+    /* Update the inputA and inputB pointers for next MAC calculation */
+    px = ++pSrc1;
+    py = pIn2;
+
+    /* Decrement MAC count */
+    count--;
+
+    /* Decrement the loop counter */
+    blockSize3--;
+  }
+
+#else
+/* alternate version for CM0_FAMILY */
+
+  const float16_t *pIn1 = pSrcA;                       /* inputA pointer */
+  const float16_t *pIn2 = pSrcB + (srcBLen - 1U);      /* inputB pointer */
+        float16_t sum;                                 /* Accumulator */
+        uint32_t i = 0U, j;                            /* Loop counters */
+        uint32_t inv = 0U;                             /* Reverse order flag */
+        uint32_t tot = 0U;                             /* Length */
+
+  /* The algorithm implementation is based on the lengths of the inputs. */
+  /* srcB is always made to slide across srcA. */
+  /* So srcBLen is always considered as shorter or equal to srcALen */
+  /* But CORR(x, y) is reverse of CORR(y, x) */
+  /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */
+  /* and a varaible, inv is set to 1 */
+  /* If lengths are not equal then zero pad has to be done to  make the two
+   * inputs of same length. But to improve the performance, we assume zeroes
+   * in the output instead of zero padding either of the the inputs*/
+  /* If srcALen > srcBLen, (srcALen - srcBLen) zeroes has to included in the
+   * starting of the output buffer */
+  /* If srcALen < srcBLen, (srcALen - srcBLen) zeroes has to included in the
+   * ending of the output buffer */
+  /* Once the zero padding is done the remaining of the output is calcualted
+   * using convolution but with the shorter signal time shifted. */
+
+  /* Calculate the length of the remaining sequence */
+  tot = ((srcALen + srcBLen) - 2U);
+
+  if (srcALen > srcBLen)
+  {
+    /* Calculating the number of zeros to be padded to the output */
+    j = srcALen - srcBLen;
+
+    /* Initialise the pointer after zero padding */
+    pDst += j;
+  }
+
+  else if (srcALen < srcBLen)
+  {
+    /* Initialization to inputB pointer */
+    pIn1 = pSrcB;
+
+    /* Initialization to the end of inputA pointer */
+    pIn2 = pSrcA + (srcALen - 1U);
+
+    /* Initialisation of the pointer after zero padding */
+    pDst = pDst + tot;
+
+    /* Swapping the lengths */
+    j = srcALen;
+    srcALen = srcBLen;
+    srcBLen = j;
+
+    /* Setting the reverse flag */
+    inv = 1;
+
+  }
+
+  /* Loop to calculate convolution for output length number of times */
+  for (i = 0U; i <= tot; i++)
+  {
+    /* Initialize sum with zero to carry out MAC operations */
+    sum = 0.0f;
+
+    /* Loop to perform MAC operations according to convolution equation */
+    for (j = 0U; j <= i; j++)
+    {
+      /* Check the array limitations */
+      if ((((i - j) < srcBLen) && (j < srcALen)))
+      {
+        /* z[i] += x[i-j] * y[j] */
+        sum += pIn1[j] * pIn2[-((int32_t) i - j)];
+      }
+    }
+
+    /* Store the output in the destination buffer */
+    if (inv == 1)
+      *pDst-- = sum;
+    else
+      *pDst++ = sum;
+  }
+
+#endif /* #if !defined(ARM_MATH_CM0_FAMILY) */
+
+}
+#endif /* defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE) */
+
+/**
+  @} end of Corr group
+ */
+
+#endif /* #if defined(ARM_FLOAT16_SUPPORTED) */
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_f16.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_f16.c
index df8dbde..d8713cf 100755
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_f16.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_f16.c
@@ -25,6 +25,7 @@
 
 #include "dsp/filtering_functions_f16.h"
 
+#if defined(ARM_FLOAT16_SUPPORTED)
 /**
   @ingroup groupFilters
  */
@@ -850,3 +851,5 @@
 /**
 * @} end of FIR group
 */
+
+#endif /* #if defined(ARM_FLOAT16_SUPPORTED) */
diff --git a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_f16.c b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_f16.c
index 366710f..4e300d7 100755
--- a/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_f16.c
+++ b/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_f16.c
@@ -25,6 +25,8 @@
 
 #include "dsp/filtering_functions_f16.h"
 
+#if defined(ARM_FLOAT16_SUPPORTED)
+
 /**
   @ingroup groupFilters
  */
@@ -84,3 +86,5 @@
 /**
   @} end of FIR group
  */
+
+#endif /* #if defined(ARM_FLOAT16_SUPPORTED) */
diff --git a/CMSIS/DSP/Testing/CMakeLists.txt b/CMSIS/DSP/Testing/CMakeLists.txt
index 6f6ed4b..e71b52f 100644
--- a/CMSIS/DSP/Testing/CMakeLists.txt
+++ b/CMSIS/DSP/Testing/CMakeLists.txt
@@ -330,6 +330,7 @@
   Source/Tests/ComplexTestsF16.cpp
   Source/Tests/FIRF16.cpp
   Source/Tests/BIQUADF16.cpp
+  Source/Tests/MISCF16.cpp
   Source/Tests/TransformCF16.cpp
   Source/Tests/TransformRF16.cpp
   )
diff --git a/CMSIS/DSP/Testing/Include/Tests/MISCF16.h b/CMSIS/DSP/Testing/Include/Tests/MISCF16.h
new file mode 100755
index 0000000..4567c52
--- /dev/null
+++ b/CMSIS/DSP/Testing/Include/Tests/MISCF16.h
@@ -0,0 +1,26 @@
+#include "Test.h"
+#include "Pattern.h"
+
+#include "dsp/filtering_functions_f16.h"
+
+class MISCF16:public Client::Suite
+    {
+        public:
+            MISCF16(Testing::testID_t id);
+            virtual void setUp(Testing::testID_t,std::vector<Testing::param_t>& paramsArgs,Client::PatternMgr *mgr);
+            virtual void tearDown(Testing::testID_t,Client::PatternMgr *mgr);
+        private:
+            #include "MISCF16_decl.h"
+            
+            Client::Pattern<float16_t> inputA;
+            Client::Pattern<float16_t> inputB;
+
+            Client::LocalPattern<float16_t> output;
+
+            // Reference patterns are not loaded when we are in dump mode
+            Client::RefPattern<float16_t> ref;
+
+            int nba,nbb;
+
+           
+    };
diff --git a/CMSIS/DSP/Testing/PatternGeneration/Convolutions.py b/CMSIS/DSP/Testing/PatternGeneration/Convolutions.py
index 08cc311..04f4a90 100755
--- a/CMSIS/DSP/Testing/PatternGeneration/Convolutions.py
+++ b/CMSIS/DSP/Testing/PatternGeneration/Convolutions.py
@@ -84,6 +84,7 @@
     PARAMDIR = os.path.join("Parameters","DSP","Filtering","MISC","MISC")
     
     configf32=Tools.Config(PATTERNDIR,PARAMDIR,"f32")
+    configf16=Tools.Config(PATTERNDIR,PARAMDIR,"f16")
     configq31=Tools.Config(PATTERNDIR,PARAMDIR,"q31")
     configq15=Tools.Config(PATTERNDIR,PARAMDIR,"q15")
     configq7=Tools.Config(PATTERNDIR,PARAMDIR,"q7")
@@ -91,6 +92,7 @@
     
     
     writeTests(configf32,0)
+    writeTests(configf16,16)
     writeTests(configq31,31)
     writeTests(configq15,15)
     writeTests(configq7,7)
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/InputsA1_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/InputsA1_f16.txt
new file mode 100755
index 0000000..dc3dea8
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/InputsA1_f16.txt
@@ -0,0 +1,258 @@
+H
+128
+// 0.340622
+0x3573
+// -0.227407
+0xb347
+// -0.515464
+0xb820
+// 0.892655
+0x3b24
+// -0.189715
+0xb212
+// 0.940616
+0x3b86
+// 0.672306
+0x3961
+// -0.448410
+0xb72d
+// -0.295140
+0xb4b9
+// -0.129777
+0xb027
+// 0.660682
+0x3949
+// -0.008834
+0xa086
+// -0.007387
+0x9f90
+// 0.286796
+0x3497
+// -0.372377
+0xb5f5
+// 0.621302
+0x38f8
+// -0.115995
+0xaf6c
+// 0.273750
+0x3461
+// 0.423841
+0x36c8
+// 0.601498
+0x38d0
+// -0.059867
+0xabaa
+// -0.414254
+0xb6a1
+// 0.241672
+0x33bc
+// -0.712147
+0xb9b2
+// 0.019938
+0x251b
+// -0.165622
+0xb14d
+// -0.118033
+0xaf8e
+// -0.320881
+0xb522
+// -0.115285
+0xaf61
+// -0.435167
+0xb6f6
+// -0.182534
+0xb1d7
+// -0.132633
+0xb03f
+// -0.190217
+0xb216
+// -0.007244
+0x9f6b
+// -0.039341
+0xa909
+// 0.029661
+0x2798
+// 0.033063
+0x283b
+// 0.067484
+0x2c52
+// -0.160952
+0xb127
+// 0.010318
+0x2148
+// -0.524174
+0xb832
+// 0.724197
+0x39cb
+// 0.059337
+0x2b98
+// 0.772674
+0x3a2e
+// 0.044204
+0x29a8
+// -0.263569
+0xb438
+// -0.160553
+0xb123
+// -0.050946
+0xaa85
+// 0.209983
+0x32b8
+// -0.078044
+0xacff
+// 0.602130
+0x38d1
+// 0.020729
+0x254e
+// -0.222715
+0xb320
+// -0.013897
+0xa31d
+// 0.325168
+0x3534
+// -0.253618
+0xb40f
+// -0.581592
+0xb8a7
+// -0.284873
+0xb48f
+// -0.118716
+0xaf99
+// 0.674454
+0x3965
+// 0.391677
+0x3644
+// 0.016408
+0x2433
+// 0.662811
+0x394d
+// -0.125955
+0xb008
+// 0.401873
+0x366e
+// -0.353277
+0xb5a7
+// 0.669982
+0x395c
+// -0.163018
+0xb137
+// -0.513958
+0xb81d
+// -0.068937
+0xac69
+// 0.604989
+0x38d7
+// 0.043179
+0x2987
+// -1.000000
+0xbc00
+// 0.354507
+0x35ac
+// 0.706231
+0x39a6
+// -0.216590
+0xb2ee
+// 0.135466
+0x3056
+// -0.587217
+0xb8b3
+// 0.213353
+0x32d4
+// -0.076433
+0xace4
+// -0.325923
+0xb537
+// -0.695890
+0xb991
+// -0.011890
+0xa216
+// -0.578996
+0xb8a2
+// -0.453816
+0xb743
+// -0.785133
+0xba48
+// 0.222415
+0x331e
+// 0.515223
+0x381f
+// -0.223109
+0xb324
+// 0.377762
+0x360b
+// 0.140552
+0x307f
+// -0.380609
+0xb617
+// -0.247305
+0xb3ea
+// -0.344871
+0xb585
+// 0.239562
+0x33aa
+// 0.332539
+0x3552
+// -0.298581
+0xb4c7
+// -0.297075
+0xb4c1
+// 0.308658
+0x34f0
+// -0.039180
+0xa904
+// -0.113483
+0xaf43
+// -0.803992
+0xba6f
+// -0.209725
+0xb2b6
+// -0.271465
+0xb458
+// 0.366596
+0x35de
+// -0.576058
+0xb89c
+// 0.142895
+0x3093
+// 0.552480
+0x386b
+// -0.213924
+0xb2d8
+// 0.306342
+0x34e7
+// 0.173666
+0x318f
+// -0.404682
+0xb67a
+// 0.033927
+0x2858
+// 0.183183
+0x31dd
+// -0.188659
+0xb209
+// 0.072121
+0x2c9e
+// 0.297977
+0x34c5
+// 0.295418
+0x34ba
+// -0.374343
+0xb5fd
+// 0.000437
+0xf2a
+// -0.270254
+0xb453
+// 0.396598
+0x3658
+// -0.088016
+0xada2
+// -0.210870
+0xb2bf
+// -0.152312
+0xb0e0
+// -0.156813
+0xb105
+// -0.263861
+0xb439
+// 0.405236
+0x367c
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/InputsB1_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/InputsB1_f16.txt
new file mode 100755
index 0000000..3ae67e8
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/InputsB1_f16.txt
@@ -0,0 +1,258 @@
+H
+128
+// -0.030993
+0xa7ef
+// -0.022748
+0xa5d3
+// -0.407469
+0xb685
+// -0.158555
+0xb113
+// 0.179325
+0x31bd
+// 0.000288
+0xcb6
+// -0.038564
+0xa8f0
+// 0.368489
+0x35e5
+// 0.188580
+0x3209
+// 0.425507
+0x36cf
+// 0.324898
+0x3533
+// -0.215978
+0xb2e9
+// 0.598857
+0x38ca
+// -0.182158
+0xb1d4
+// 0.563770
+0x3883
+// 0.175778
+0x31a0
+// 0.267701
+0x3449
+// 0.011384
+0x21d4
+// 0.184171
+0x31e5
+// 0.229899
+0x335b
+// -0.284547
+0xb48e
+// -0.103260
+0xae9c
+// -0.481268
+0xb7b3
+// -0.359327
+0xb5c0
+// -0.389570
+0xb63c
+// 0.450676
+0x3736
+// 0.438589
+0x3704
+// -0.247025
+0xb3e8
+// 0.001367
+0x159a
+// -0.123955
+0xafef
+// 0.171363
+0x317c
+// 0.018035
+0x249e
+// -0.111140
+0xaf1d
+// 0.596386
+0x38c5
+// -0.240819
+0xb3b5
+// 0.262110
+0x3432
+// -0.040359
+0xa92a
+// 0.118253
+0x2f91
+// 0.478952
+0x37aa
+// 0.292341
+0x34ad
+// -0.090998
+0xadd3
+// 1.000000
+0x3c00
+// 0.439994
+0x370a
+// 0.127792
+0x3017
+// 0.256514
+0x341b
+// -0.411546
+0xb696
+// -0.270579
+0xb454
+// -0.094844
+0xae12
+// -0.277385
+0xb470
+// 0.085816
+0x2d7e
+// -0.620058
+0xb8f6
+// 0.328524
+0x3542
+// 0.973036
+0x3bc9
+// -0.091538
+0xaddc
+// -0.077481
+0xacf5
+// -0.431215
+0xb6e6
+// 0.080087
+0x2d20
+// -0.249511
+0xb3fc
+// 0.092997
+0x2df4
+// -0.447848
+0xb72a
+// 0.074393
+0x2cc3
+// -0.318269
+0xb518
+// 0.284077
+0x348c
+// -0.214545
+0xb2de
+// -0.363599
+0xb5d1
+// 0.023178
+0x25ef
+// 0.223073
+0x3323
+// 0.001624
+0x16a7
+// -0.927924
+0xbb6c
+// -0.394556
+0xb650
+// 0.255266
+0x3416
+// 0.725100
+0x39cd
+// 0.030921
+0x27ea
+// -0.226455
+0xb33f
+// -0.672542
+0xb961
+// -0.039536
+0xa910
+// 0.037230
+0x28c4
+// -0.027362
+0xa701
+// 0.098771
+0x2e52
+// 0.334802
+0x355b
+// -0.120869
+0xafbc
+// -0.191666
+0xb222
+// -0.126414
+0xb00c
+// 0.144723
+0x30a2
+// -0.482907
+0xb7ba
+// -0.044891
+0xa9bf
+// -0.095741
+0xae21
+// -0.093989
+0xae04
+// -0.062294
+0xabf9
+// -0.419416
+0xb6b6
+// 0.278193
+0x3473
+// 0.170130
+0x3172
+// 0.267851
+0x3449
+// -0.018898
+0xa4d7
+// 0.647042
+0x392d
+// 0.140092
+0x307c
+// -0.188002
+0xb204
+// 0.162484
+0x3133
+// 0.005918
+0x1e0f
+// 0.218990
+0x3302
+// 0.092384
+0x2dea
+// 0.034310
+0x2864
+// 0.104541
+0x2eb1
+// -0.282541
+0xb485
+// -0.429526
+0xb6df
+// -0.337030
+0xb564
+// -0.217148
+0xb2f3
+// -0.746303
+0xb9f8
+// -0.068858
+0xac68
+// -0.182200
+0xb1d5
+// 0.061501
+0x2bdf
+// -0.060396
+0xabbb
+// 0.317688
+0x3515
+// 0.022026
+0x25a3
+// -0.043125
+0xa985
+// -0.274423
+0xb464
+// 0.630400
+0x390b
+// 0.170721
+0x3177
+// 0.256519
+0x341b
+// 0.297494
+0x34c3
+// -0.216101
+0xb2ea
+// -0.531103
+0xb840
+// 0.271934
+0x345a
+// 0.366601
+0x35de
+// -0.390298
+0xb63f
+// -0.068130
+0xac5c
+// 0.022945
+0x25e0
+// 0.199254
+0x3260
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference10_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference10_f16.txt
new file mode 100755
index 0000000..2771674
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference10_f16.txt
@@ -0,0 +1,44 @@
+H
+21
+// 0.110667
+0x2f15
+// 0.071053
+0x2c8c
+// -0.200002
+0xb266
+// 0.153319
+0x30e8
+// 0.124053
+0x2ff0
+// -0.093463
+0xadfb
+// 0.374052
+0x35fc
+// -0.199268
+0xb260
+// -0.187599
+0xb201
+// 0.326663
+0x353a
+// 0.029097
+0x2773
+// -0.314875
+0xb50a
+// 0.072973
+0x2cac
+// -0.023351
+0xa5fa
+// 0.005880
+0x1e05
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference11_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference11_f16.txt
new file mode 100755
index 0000000..39573f4
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference11_f16.txt
@@ -0,0 +1,24 @@
+H
+11
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// -0.010557
+0xa168
+// 0.007048
+0x1f38
+// 0.015976
+0x2417
+// -0.027666
+0xa715
+// 0.005880
+0x1e05
+// -0.029153
+0xa777
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference12_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference12_f16.txt
new file mode 100755
index 0000000..0e5a54c
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference12_f16.txt
@@ -0,0 +1,24 @@
+H
+11
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// -0.007748
+0x9fef
+// -0.005384
+0x9d83
+// 0.018774
+0x24ce
+// -0.004330
+0x9c6f
+// -0.023351
+0xa5fa
+// -0.015517
+0xa3f2
+// -0.029153
+0xa777
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference13_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference13_f16.txt
new file mode 100755
index 0000000..00d7aa9
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference13_f16.txt
@@ -0,0 +1,24 @@
+H
+11
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// -0.138793
+0xb071
+// 0.084913
+0x2d6f
+// 0.204652
+0x328d
+// -0.344956
+0xb585
+// 0.072973
+0x2cac
+// -0.406623
+0xb682
+// -0.015517
+0xa3f2
+// -0.029153
+0xa777
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference14_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference14_f16.txt
new file mode 100755
index 0000000..37882d8
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference14_f16.txt
@@ -0,0 +1,32 @@
+H
+15
+// 0.125515
+0x3004
+// -0.096933
+0xae34
+// -0.181075
+0xb1cb
+// 0.409829
+0x368f
+// -0.199268
+0xb260
+// 0.159007
+0x3117
+// 0.290389
+0x34a5
+// 0.029367
+0x2785
+// -0.146199
+0xb0ae
+// -0.076166
+0xace0
+// -0.406623
+0xb682
+// -0.015517
+0xa3f2
+// -0.029153
+0xa777
+// 0.000000
+0x0
+// 0.000000
+0x0
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference15_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference15_f16.txt
new file mode 100755
index 0000000..b43e653
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference15_f16.txt
@@ -0,0 +1,44 @@
+H
+21
+// 0.110667
+0x2f15
+// 0.071053
+0x2c8c
+// -0.200002
+0xb266
+// 0.153319
+0x30e8
+// 0.124053
+0x2ff0
+// 0.212141
+0x32ca
+// 0.774291
+0x3a32
+// -0.021886
+0xa59a
+// 0.159007
+0x3117
+// 0.290389
+0x34a5
+// 0.029367
+0x2785
+// -0.146199
+0xb0ae
+// -0.076166
+0xace0
+// -0.406623
+0xb682
+// -0.015517
+0xa3f2
+// -0.029153
+0xa777
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference16_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference16_f16.txt
new file mode 100755
index 0000000..c17bc8a
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference16_f16.txt
@@ -0,0 +1,36 @@
+H
+17
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// -0.010557
+0xa168
+// 0.007048
+0x1f38
+// 0.015976
+0x2417
+// -0.027666
+0xa715
+// 0.005880
+0x1e05
+// -0.029153
+0xa777
+// -0.020837
+0xa556
+// 0.013898
+0x231e
+// 0.009147
+0x20af
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference17_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference17_f16.txt
new file mode 100755
index 0000000..699415e
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference17_f16.txt
@@ -0,0 +1,36 @@
+H
+17
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// -0.007748
+0x9fef
+// -0.005384
+0x9d83
+// 0.018774
+0x24ce
+// -0.004330
+0x9c6f
+// -0.023351
+0xa5fa
+// -0.015517
+0xa3f2
+// -0.044446
+0xa9b0
+// -0.010637
+0xa172
+// 0.020612
+0x2547
+// 0.009147
+0x20af
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference18_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference18_f16.txt
new file mode 100755
index 0000000..607628f
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference18_f16.txt
@@ -0,0 +1,36 @@
+H
+17
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// -0.138793
+0xb071
+// 0.084913
+0x2d6f
+// 0.204652
+0x328d
+// -0.344956
+0xb585
+// 0.072973
+0x2cac
+// -0.406623
+0xb682
+// -0.289462
+0xb4a2
+// 0.138267
+0x306d
+// 0.109624
+0x2f04
+// 0.020612
+0x2547
+// 0.009147
+0x20af
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference19_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference19_f16.txt
new file mode 100755
index 0000000..5f57685
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference19_f16.txt
@@ -0,0 +1,36 @@
+H
+17
+// 0.000000
+0x0
+// 0.125515
+0x3004
+// -0.096933
+0xae34
+// -0.181075
+0xb1cb
+// 0.409829
+0x368f
+// -0.199268
+0xb260
+// 0.159007
+0x3117
+// 0.538126
+0x384e
+// -0.161794
+0xb12d
+// -0.237469
+0xb399
+// 0.055648
+0x2b1f
+// -0.593716
+0xb8c0
+// -0.271290
+0xb457
+// 0.185063
+0x31ec
+// 0.109624
+0x2f04
+// 0.020612
+0x2547
+// 0.009147
+0x20af
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference1_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference1_f16.txt
new file mode 100755
index 0000000..7044c19
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference1_f16.txt
@@ -0,0 +1,16 @@
+H
+7
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// -0.010557
+0xa168
+// 0.007048
+0x1f38
+// 0.015976
+0x2417
+// -0.027666
+0xa715
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference20_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference20_f16.txt
new file mode 100755
index 0000000..a947e4d
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference20_f16.txt
@@ -0,0 +1,44 @@
+H
+21
+// 0.110667
+0x2f15
+// 0.071053
+0x2c8c
+// -0.200002
+0xb266
+// 0.153319
+0x30e8
+// 0.124053
+0x2ff0
+// 0.212141
+0x32ca
+// 0.992722
+0x3bf1
+// 0.118497
+0x2f95
+// -0.000901
+0x9362
+// 0.327981
+0x353f
+// -0.217451
+0xb2f5
+// -0.237469
+0xb399
+// 0.055648
+0x2b1f
+// -0.593716
+0xb8c0
+// -0.271290
+0xb457
+// 0.185063
+0x31ec
+// 0.109624
+0x2f04
+// 0.020612
+0x2547
+// 0.009147
+0x20af
+// 0.000000
+0x0
+// 0.000000
+0x0
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference21_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference21_f16.txt
new file mode 100755
index 0000000..c25a320
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference21_f16.txt
@@ -0,0 +1,40 @@
+H
+19
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// -0.010557
+0xa168
+// 0.007048
+0x1f38
+// 0.015976
+0x2417
+// -0.027666
+0xa715
+// 0.005880
+0x1e05
+// -0.029153
+0xa777
+// -0.020837
+0xa556
+// 0.013898
+0x231e
+// 0.009147
+0x20af
+// 0.004022
+0x1c1e
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference22_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference22_f16.txt
new file mode 100755
index 0000000..0da653c
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference22_f16.txt
@@ -0,0 +1,40 @@
+H
+19
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// -0.007748
+0x9fef
+// -0.005384
+0x9d83
+// 0.018774
+0x24ce
+// -0.004330
+0x9c6f
+// -0.023351
+0xa5fa
+// -0.015517
+0xa3f2
+// -0.044446
+0xa9b0
+// -0.010637
+0xa172
+// 0.020612
+0x2547
+// 0.012100
+0x2232
+// 0.004022
+0x1c1e
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference23_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference23_f16.txt
new file mode 100755
index 0000000..b81519a
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference23_f16.txt
@@ -0,0 +1,40 @@
+H
+19
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// -0.138793
+0xb071
+// 0.084913
+0x2d6f
+// 0.204652
+0x328d
+// -0.344956
+0xb585
+// 0.072973
+0x2cac
+// -0.406623
+0xb682
+// -0.289462
+0xb4a2
+// 0.138267
+0x306d
+// 0.109624
+0x2f04
+// 0.073492
+0x2cb4
+// 0.012100
+0x2232
+// 0.004022
+0x1c1e
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference24_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference24_f16.txt
new file mode 100755
index 0000000..36f6f69
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference24_f16.txt
@@ -0,0 +1,40 @@
+H
+19
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.125515
+0x3004
+// -0.096933
+0xae34
+// -0.181075
+0xb1cb
+// 0.409829
+0x368f
+// -0.199268
+0xb260
+// 0.159007
+0x3117
+// 0.538126
+0x384e
+// -0.161794
+0xb12d
+// -0.237469
+0xb399
+// 0.007827
+0x2002
+// -0.588712
+0xb8b6
+// -0.271327
+0xb457
+// 0.161790
+0x312d
+// 0.130201
+0x302b
+// 0.073492
+0x2cb4
+// 0.012100
+0x2232
+// 0.004022
+0x1c1e
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference25_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference25_f16.txt
new file mode 100755
index 0000000..60a1655
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference25_f16.txt
@@ -0,0 +1,44 @@
+H
+21
+// 0.110667
+0x2f15
+// 0.071053
+0x2c8c
+// -0.200002
+0xb266
+// 0.153319
+0x30e8
+// 0.124053
+0x2ff0
+// 0.212141
+0x32ca
+// 0.992722
+0x3bf1
+// 0.118497
+0x2f95
+// -0.000901
+0x9362
+// 0.285817
+0x3493
+// -0.272672
+0xb45d
+// -0.261942
+0xb431
+// 0.007827
+0x2002
+// -0.588712
+0xb8b6
+// -0.271327
+0xb457
+// 0.161790
+0x312d
+// 0.130201
+0x302b
+// 0.073492
+0x2cb4
+// 0.012100
+0x2232
+// 0.004022
+0x1c1e
+// 0.000000
+0x0
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference26_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference26_f16.txt
new file mode 100755
index 0000000..ef68432
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference26_f16.txt
@@ -0,0 +1,44 @@
+H
+21
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// -0.010557
+0xa168
+// 0.007048
+0x1f38
+// 0.015976
+0x2417
+// -0.027666
+0xa715
+// 0.005880
+0x1e05
+// -0.029153
+0xa777
+// -0.020837
+0xa556
+// 0.013898
+0x231e
+// 0.009147
+0x20af
+// 0.004022
+0x1c1e
+// -0.020477
+0xa53e
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference27_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference27_f16.txt
new file mode 100755
index 0000000..bf85b58
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference27_f16.txt
@@ -0,0 +1,44 @@
+H
+21
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// -0.007748
+0x9fef
+// -0.005384
+0x9d83
+// 0.018774
+0x24ce
+// -0.004330
+0x9c6f
+// -0.023351
+0xa5fa
+// -0.015517
+0xa3f2
+// -0.044446
+0xa9b0
+// -0.010637
+0xa172
+// 0.020612
+0x2547
+// 0.012100
+0x2232
+// -0.011007
+0xa1a3
+// -0.020477
+0xa53e
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference28_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference28_f16.txt
new file mode 100755
index 0000000..f359e09
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference28_f16.txt
@@ -0,0 +1,44 @@
+H
+21
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// -0.138793
+0xb071
+// 0.084913
+0x2d6f
+// 0.204652
+0x328d
+// -0.344956
+0xb585
+// 0.072973
+0x2cac
+// -0.406623
+0xb682
+// -0.289462
+0xb4a2
+// 0.138267
+0x306d
+// 0.109624
+0x2f04
+// 0.073492
+0x2cb4
+// -0.257108
+0xb41d
+// -0.011007
+0xa1a3
+// -0.020477
+0xa53e
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference29_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference29_f16.txt
new file mode 100755
index 0000000..6a61939
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference29_f16.txt
@@ -0,0 +1,44 @@
+H
+21
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.125515
+0x3004
+// -0.096933
+0xae34
+// -0.181075
+0xb1cb
+// 0.409829
+0x368f
+// -0.199268
+0xb260
+// 0.159007
+0x3117
+// 0.538126
+0x384e
+// -0.161794
+0xb12d
+// -0.237469
+0xb399
+// 0.007827
+0x2002
+// -0.345258
+0xb586
+// -0.296806
+0xb4c0
+// 0.161980
+0x312f
+// 0.248678
+0x33f5
+// -0.031263
+0xa800
+// -0.257108
+0xb41d
+// -0.011007
+0xa1a3
+// -0.020477
+0xa53e
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference2_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference2_f16.txt
new file mode 100755
index 0000000..69edb17
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference2_f16.txt
@@ -0,0 +1,16 @@
+H
+7
+// 0.000000
+0x0
+// 0.000000
+0x0
+// -0.007748
+0x9fef
+// -0.005384
+0x9d83
+// 0.018774
+0x24ce
+// -0.004330
+0x9c6f
+// -0.027666
+0xa715
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference30_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference30_f16.txt
new file mode 100755
index 0000000..110d6db
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference30_f16.txt
@@ -0,0 +1,44 @@
+H
+21
+// 0.110667
+0x2f15
+// 0.071053
+0x2c8c
+// -0.200002
+0xb266
+// 0.153319
+0x30e8
+// 0.124053
+0x2ff0
+// 0.212141
+0x32ca
+// 0.992722
+0x3bf1
+// 0.118497
+0x2f95
+// -0.000901
+0x9362
+// 0.285817
+0x3493
+// -0.058018
+0xab6d
+// 0.019182
+0x24e9
+// 0.132418
+0x303d
+// -0.345258
+0xb586
+// -0.296806
+0xb4c0
+// 0.161980
+0x312f
+// 0.248678
+0x33f5
+// -0.031263
+0xa800
+// -0.257108
+0xb41d
+// -0.011007
+0xa1a3
+// -0.020477
+0xa53e
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference31_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference31_f16.txt
new file mode 100755
index 0000000..1c11496
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference31_f16.txt
@@ -0,0 +1,48 @@
+H
+23
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// -0.010557
+0xa168
+// 0.007048
+0x1f38
+// 0.015976
+0x2417
+// -0.027666
+0xa715
+// 0.005880
+0x1e05
+// -0.029153
+0xa777
+// -0.020837
+0xa556
+// 0.013898
+0x231e
+// 0.009147
+0x20af
+// 0.004022
+0x1c1e
+// -0.020477
+0xa53e
+// 0.000274
+0xc7c
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference32_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference32_f16.txt
new file mode 100755
index 0000000..688b545
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference32_f16.txt
@@ -0,0 +1,48 @@
+H
+23
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// -0.007748
+0x9fef
+// -0.005384
+0x9d83
+// 0.018774
+0x24ce
+// -0.004330
+0x9c6f
+// -0.023351
+0xa5fa
+// -0.015517
+0xa3f2
+// -0.044446
+0xa9b0
+// -0.010637
+0xa172
+// 0.020612
+0x2547
+// 0.012100
+0x2232
+// -0.011007
+0xa1a3
+// -0.020276
+0xa531
+// 0.000274
+0xc7c
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference33_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference33_f16.txt
new file mode 100755
index 0000000..5cc112d
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference33_f16.txt
@@ -0,0 +1,48 @@
+H
+23
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// -0.138793
+0xb071
+// 0.084913
+0x2d6f
+// 0.204652
+0x328d
+// -0.344956
+0xb585
+// 0.072973
+0x2cac
+// -0.406623
+0xb682
+// -0.289462
+0xb4a2
+// 0.138267
+0x306d
+// 0.109624
+0x2f04
+// 0.073492
+0x2cb4
+// -0.257108
+0xb41d
+// -0.007408
+0x9f96
+// -0.020276
+0xa531
+// 0.000274
+0xc7c
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference34_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference34_f16.txt
new file mode 100755
index 0000000..f9956f5
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference34_f16.txt
@@ -0,0 +1,48 @@
+H
+23
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.125515
+0x3004
+// -0.096933
+0xae34
+// -0.181075
+0xb1cb
+// 0.409829
+0x368f
+// -0.199268
+0xb260
+// 0.159007
+0x3117
+// 0.538126
+0x384e
+// -0.161794
+0xb12d
+// -0.237469
+0xb399
+// 0.007827
+0x2002
+// -0.345258
+0xb586
+// -0.300061
+0xb4cd
+// 0.162321
+0x3132
+// 0.248675
+0x33f5
+// -0.032847
+0xa834
+// -0.255707
+0xb417
+// -0.007408
+0x9f96
+// -0.020276
+0xa531
+// 0.000274
+0xc7c
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference35_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference35_f16.txt
new file mode 100755
index 0000000..fae8c95
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference35_f16.txt
@@ -0,0 +1,48 @@
+H
+23
+// 0.000000
+0x0
+// 0.110667
+0x2f15
+// 0.071053
+0x2c8c
+// -0.200002
+0xb266
+// 0.153319
+0x30e8
+// 0.124053
+0x2ff0
+// 0.212141
+0x32ca
+// 0.992722
+0x3bf1
+// 0.118497
+0x2f95
+// -0.000901
+0x9362
+// 0.285817
+0x3493
+// -0.058018
+0xab6d
+// 0.016312
+0x242d
+// 0.128660
+0x301e
+// -0.346924
+0xb58d
+// -0.300061
+0xb4cd
+// 0.162321
+0x3132
+// 0.248675
+0x33f5
+// -0.032847
+0xa834
+// -0.255707
+0xb417
+// -0.007408
+0x9f96
+// -0.020276
+0xa531
+// 0.000274
+0xc7c
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference36_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference36_f16.txt
new file mode 100755
index 0000000..ef3b969
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference36_f16.txt
@@ -0,0 +1,52 @@
+H
+25
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// -0.010557
+0xa168
+// 0.007048
+0x1f38
+// 0.015976
+0x2417
+// -0.027666
+0xa715
+// 0.005880
+0x1e05
+// -0.029153
+0xa777
+// -0.020837
+0xa556
+// 0.013898
+0x231e
+// 0.009147
+0x20af
+// 0.004022
+0x1c1e
+// -0.020477
+0xa53e
+// 0.000274
+0xc7c
+// 0.000229
+0xb80
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference37_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference37_f16.txt
new file mode 100755
index 0000000..ae08510
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference37_f16.txt
@@ -0,0 +1,52 @@
+H
+25
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// -0.007748
+0x9fef
+// -0.005384
+0x9d83
+// 0.018774
+0x24ce
+// -0.004330
+0x9c6f
+// -0.023351
+0xa5fa
+// -0.015517
+0xa3f2
+// -0.044446
+0xa9b0
+// -0.010637
+0xa172
+// 0.020612
+0x2547
+// 0.012100
+0x2232
+// -0.011007
+0xa1a3
+// -0.020276
+0xa531
+// 0.000442
+0xf3d
+// 0.000229
+0xb80
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference38_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference38_f16.txt
new file mode 100755
index 0000000..e592ff5
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference38_f16.txt
@@ -0,0 +1,52 @@
+H
+25
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// -0.138793
+0xb071
+// 0.084913
+0x2d6f
+// 0.204652
+0x328d
+// -0.344956
+0xb585
+// 0.072973
+0x2cac
+// -0.406623
+0xb682
+// -0.289462
+0xb4a2
+// 0.138267
+0x306d
+// 0.109624
+0x2f04
+// 0.073492
+0x2cb4
+// -0.257108
+0xb41d
+// -0.007408
+0x9f96
+// -0.017266
+0xa46c
+// 0.000442
+0xf3d
+// 0.000229
+0xb80
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference39_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference39_f16.txt
new file mode 100755
index 0000000..17deb99
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference39_f16.txt
@@ -0,0 +1,52 @@
+H
+25
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.125515
+0x3004
+// -0.096933
+0xae34
+// -0.181075
+0xb1cb
+// 0.409829
+0x368f
+// -0.199268
+0xb260
+// 0.159007
+0x3117
+// 0.538126
+0x384e
+// -0.161794
+0xb12d
+// -0.237469
+0xb399
+// 0.007827
+0x2002
+// -0.345258
+0xb586
+// -0.300061
+0xb4cd
+// 0.159599
+0x311b
+// 0.248960
+0x33f7
+// -0.032849
+0xa834
+// -0.257032
+0xb41d
+// -0.006236
+0x9e63
+// -0.017266
+0xa46c
+// 0.000442
+0xf3d
+// 0.000229
+0xb80
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference3_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference3_f16.txt
new file mode 100755
index 0000000..eb19fdf
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference3_f16.txt
@@ -0,0 +1,16 @@
+H
+7
+// 0.000000
+0x0
+// -0.138793
+0xb071
+// 0.084913
+0x2d6f
+// 0.204652
+0x328d
+// -0.344956
+0xb585
+// -0.004330
+0x9c6f
+// -0.027666
+0xa715
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference40_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference40_f16.txt
new file mode 100755
index 0000000..d97cf1a
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference40_f16.txt
@@ -0,0 +1,52 @@
+H
+25
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.110667
+0x2f15
+// 0.071053
+0x2c8c
+// -0.200002
+0xb266
+// 0.153319
+0x30e8
+// 0.124053
+0x2ff0
+// 0.212141
+0x32ca
+// 0.992722
+0x3bf1
+// 0.118497
+0x2f95
+// -0.000901
+0x9362
+// 0.285817
+0x3493
+// -0.058018
+0xab6d
+// 0.016312
+0x242d
+// 0.126260
+0x300a
+// -0.350067
+0xb59a
+// -0.301454
+0xb4d3
+// 0.159599
+0x311b
+// 0.248960
+0x33f7
+// -0.032849
+0xa834
+// -0.257032
+0xb41d
+// -0.006236
+0x9e63
+// -0.017266
+0xa46c
+// 0.000442
+0xf3d
+// 0.000229
+0xb80
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference41_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference41_f16.txt
new file mode 100755
index 0000000..d63879a
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference41_f16.txt
@@ -0,0 +1,10 @@
+H
+4
+// -0.010557
+0xa168
+// 0.007048
+0x1f38
+// 0.015976
+0x2417
+// -0.027666
+0xa715
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference42_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference42_f16.txt
new file mode 100755
index 0000000..8d2f99d
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference42_f16.txt
@@ -0,0 +1,12 @@
+H
+5
+// -0.010557
+0xa168
+// -0.000700
+0x91bd
+// 0.021149
+0x256a
+// -0.015940
+0xa415
+// -0.020306
+0xa533
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference43_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference43_f16.txt
new file mode 100755
index 0000000..d9cd39f
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference43_f16.txt
@@ -0,0 +1,14 @@
+H
+6
+// -0.010557
+0xa168
+// -0.000700
+0x91bd
+// -0.117644
+0xaf87
+// 0.076721
+0x2ce9
+// 0.189730
+0x3212
+// -0.363730
+0xb5d2
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference44_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference44_f16.txt
new file mode 100755
index 0000000..f50ed0c
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference44_f16.txt
@@ -0,0 +1,24 @@
+H
+11
+// -0.010557
+0xa168
+// -0.000700
+0x91bd
+// -0.117644
+0xaf87
+// 0.022714
+0x25d1
+// 0.286868
+0x3497
+// -0.322682
+0xb52a
+// -0.247172
+0xb3e9
+// 0.294212
+0x34b5
+// -0.063662
+0xac13
+// -0.224368
+0xb32e
+// 0.328933
+0x3543
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference45_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference45_f16.txt
new file mode 100755
index 0000000..b027f23
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference45_f16.txt
@@ -0,0 +1,30 @@
+H
+14
+// -0.010557
+0xa168
+// -0.000700
+0x91bd
+// -0.117644
+0xaf87
+// 0.022714
+0x25d1
+// 0.286868
+0x3497
+// -0.322682
+0xb52a
+// -0.247172
+0xb3e9
+// 0.294212
+0x34b5
+// 0.000573
+0x10b1
+// -0.122315
+0xafd4
+// 0.245631
+0x33dc
+// -0.124881
+0xaffe
+// 0.212357
+0x32cc
+// 0.290022
+0x34a4
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference46_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference46_f16.txt
new file mode 100755
index 0000000..d304172
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference46_f16.txt
@@ -0,0 +1,12 @@
+H
+5
+// -0.010557
+0xa168
+// 0.007048
+0x1f38
+// 0.015976
+0x2417
+// -0.027666
+0xa715
+// 0.005880
+0x1e05
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference47_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference47_f16.txt
new file mode 100755
index 0000000..69447b6
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference47_f16.txt
@@ -0,0 +1,14 @@
+H
+6
+// -0.010557
+0xa168
+// -0.000700
+0x91bd
+// 0.021149
+0x256a
+// -0.015940
+0xa415
+// -0.014426
+0xa363
+// 0.004316
+0x1c6b
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference48_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference48_f16.txt
new file mode 100755
index 0000000..50cad89
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference48_f16.txt
@@ -0,0 +1,16 @@
+H
+7
+// -0.010557
+0xa168
+// -0.000700
+0x91bd
+// -0.117644
+0xaf87
+// 0.076721
+0x2ce9
+// 0.195610
+0x3242
+// -0.359414
+0xb5c0
+// 0.077303
+0x2cf3
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference49_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference49_f16.txt
new file mode 100755
index 0000000..c88db77
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference49_f16.txt
@@ -0,0 +1,26 @@
+H
+12
+// -0.010557
+0xa168
+// -0.000700
+0x91bd
+// -0.117644
+0xaf87
+// 0.022714
+0x25d1
+// 0.292748
+0x34af
+// -0.318366
+0xb518
+// -0.169869
+0xb170
+// 0.324293
+0x3530
+// -0.097682
+0xae40
+// -0.224422
+0xb32e
+// 0.336250
+0x3561
+// -0.069908
+0xac79
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference4_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference4_f16.txt
new file mode 100755
index 0000000..f073c28
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference4_f16.txt
@@ -0,0 +1,32 @@
+H
+15
+// 0.125515
+0x3004
+// -0.096933
+0xae34
+// -0.181075
+0xb1cb
+// 0.409829
+0x368f
+// -0.129360
+0xb024
+// -0.194916
+0xb23d
+// 0.326718
+0x353a
+// 0.063118
+0x2c0a
+// -0.344956
+0xb585
+// -0.004330
+0x9c6f
+// -0.027666
+0xa715
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference50_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference50_f16.txt
new file mode 100755
index 0000000..bd7e26f
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference50_f16.txt
@@ -0,0 +1,32 @@
+H
+15
+// -0.010557
+0xa168
+// -0.000700
+0x91bd
+// -0.117644
+0xaf87
+// 0.022714
+0x25d1
+// 0.292748
+0x34af
+// -0.318366
+0xb518
+// -0.169869
+0xb170
+// 0.324293
+0x3530
+// -0.033448
+0xa848
+// -0.122370
+0xafd5
+// 0.252947
+0x340c
+// -0.194789
+0xb23c
+// 0.176581
+0x31a7
+// 0.209297
+0x32b3
+// -0.061638
+0xabe4
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference51_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference51_f16.txt
new file mode 100755
index 0000000..c15babc
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference51_f16.txt
@@ -0,0 +1,14 @@
+H
+6
+// -0.010557
+0xa168
+// 0.007048
+0x1f38
+// 0.015976
+0x2417
+// -0.027666
+0xa715
+// 0.005880
+0x1e05
+// -0.029153
+0xa777
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference52_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference52_f16.txt
new file mode 100755
index 0000000..7e811d0
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference52_f16.txt
@@ -0,0 +1,16 @@
+H
+7
+// -0.010557
+0xa168
+// -0.000700
+0x91bd
+// 0.021149
+0x256a
+// -0.015940
+0xa415
+// -0.014426
+0xa363
+// -0.024837
+0xa65c
+// -0.021397
+0xa57a
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference53_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference53_f16.txt
new file mode 100755
index 0000000..a77464c
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference53_f16.txt
@@ -0,0 +1,18 @@
+H
+8
+// -0.010557
+0xa168
+// -0.000700
+0x91bd
+// -0.117644
+0xaf87
+// 0.076721
+0x2ce9
+// 0.195610
+0x3242
+// -0.388567
+0xb638
+// 0.055906
+0x2b28
+// -0.383272
+0xb622
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference54_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference54_f16.txt
new file mode 100755
index 0000000..93193ae
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference54_f16.txt
@@ -0,0 +1,28 @@
+H
+13
+// -0.010557
+0xa168
+// -0.000700
+0x91bd
+// -0.117644
+0xaf87
+// 0.022714
+0x25d1
+// 0.292748
+0x34af
+// -0.347519
+0xb58f
+// -0.191266
+0xb21f
+// -0.058980
+0xab8d
+// -0.246822
+0xb3e6
+// -0.055746
+0xab23
+// 0.336520
+0x3562
+// -0.106182
+0xaecc
+// 0.346607
+0x358c
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference55_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference55_f16.txt
new file mode 100755
index 0000000..0d300ff
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference55_f16.txt
@@ -0,0 +1,34 @@
+H
+16
+// -0.010557
+0xa168
+// -0.000700
+0x91bd
+// -0.117644
+0xaf87
+// 0.022714
+0x25d1
+// 0.292748
+0x34af
+// -0.347519
+0xb58f
+// -0.191266
+0xb21f
+// -0.058980
+0xab8d
+// -0.182587
+0xb1d8
+// 0.046307
+0x29ed
+// 0.253218
+0x340d
+// -0.231063
+0xb365
+// 0.523187
+0x382f
+// 0.386679
+0x3630
+// 0.338601
+0x356b
+// 0.305605
+0x34e4
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference56_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference56_f16.txt
new file mode 100755
index 0000000..d1bbb35
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference56_f16.txt
@@ -0,0 +1,20 @@
+H
+9
+// -0.010557
+0xa168
+// 0.007048
+0x1f38
+// 0.015976
+0x2417
+// -0.027666
+0xa715
+// 0.005880
+0x1e05
+// -0.029153
+0xa777
+// -0.020837
+0xa556
+// 0.013898
+0x231e
+// 0.009147
+0x20af
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference57_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference57_f16.txt
new file mode 100755
index 0000000..2be0c1d
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference57_f16.txt
@@ -0,0 +1,22 @@
+H
+10
+// -0.010557
+0xa168
+// -0.000700
+0x91bd
+// 0.021149
+0x256a
+// -0.015940
+0xa415
+// -0.014426
+0xa363
+// -0.024837
+0xa65c
+// -0.042234
+0xa968
+// -0.001396
+0x95b8
+// 0.019348
+0x24f4
+// 0.006714
+0x1ee0
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference58_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference58_f16.txt
new file mode 100755
index 0000000..5557e90
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference58_f16.txt
@@ -0,0 +1,24 @@
+H
+11
+// -0.010557
+0xa168
+// -0.000700
+0x91bd
+// -0.117644
+0xaf87
+// 0.076721
+0x2ce9
+// 0.195610
+0x3242
+// -0.388567
+0xb638
+// 0.035069
+0x287d
+// -0.384668
+0xb628
+// -0.254596
+0xb413
+// 0.189427
+0x3210
+// 0.120261
+0x2fb2
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference59_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference59_f16.txt
new file mode 100755
index 0000000..daff1e6
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference59_f16.txt
@@ -0,0 +1,34 @@
+H
+16
+// -0.010557
+0xa168
+// -0.000700
+0x91bd
+// -0.117644
+0xaf87
+// 0.022714
+0x25d1
+// 0.292748
+0x34af
+// -0.347519
+0xb58f
+// -0.212103
+0xb2ca
+// -0.060376
+0xabba
+// -0.501418
+0xb803
+// 0.027084
+0x26ef
+// 0.648440
+0x3930
+// -0.139604
+0xb078
+// 0.267624
+0x3448
+// 0.264945
+0x343d
+// -0.153852
+0xb0ec
+// -0.108756
+0xaef6
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference5_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference5_f16.txt
new file mode 100755
index 0000000..bebb243
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference5_f16.txt
@@ -0,0 +1,44 @@
+H
+21
+// 0.110667
+0x2f15
+// 0.071053
+0x2c8c
+// -0.200002
+0xb266
+// 0.153319
+0x30e8
+// 0.185692
+0x31f1
+// -0.012738
+0xa286
+// 0.409829
+0x368f
+// -0.129360
+0xb024
+// -0.194916
+0xb23d
+// 0.326718
+0x353a
+// 0.063118
+0x2c0a
+// -0.344956
+0xb585
+// -0.004330
+0x9c6f
+// -0.027666
+0xa715
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference60_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference60_f16.txt
new file mode 100755
index 0000000..b973271
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference60_f16.txt
@@ -0,0 +1,40 @@
+H
+19
+// -0.010557
+0xa168
+// -0.000700
+0x91bd
+// -0.117644
+0xaf87
+// 0.022714
+0x25d1
+// 0.292748
+0x34af
+// -0.347519
+0xb58f
+// -0.212103
+0xb2ca
+// -0.060376
+0xabba
+// -0.437183
+0xb6ff
+// 0.129137
+0x3022
+// 0.565137
+0x3885
+// -0.264485
+0xb43b
+// 0.444205
+0x371b
+// 0.651624
+0x3937
+// 0.311532
+0x34fc
+// 0.398359
+0x3660
+// -0.028028
+0xa72d
+// -0.271272
+0xb457
+// -0.095891
+0xae23
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference61_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference61_f16.txt
new file mode 100755
index 0000000..a3f1026
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference61_f16.txt
@@ -0,0 +1,22 @@
+H
+10
+// -0.010557
+0xa168
+// 0.007048
+0x1f38
+// 0.015976
+0x2417
+// -0.027666
+0xa715
+// 0.005880
+0x1e05
+// -0.029153
+0xa777
+// -0.020837
+0xa556
+// 0.013898
+0x231e
+// 0.009147
+0x20af
+// 0.004022
+0x1c1e
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference62_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference62_f16.txt
new file mode 100755
index 0000000..71e69bb
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference62_f16.txt
@@ -0,0 +1,24 @@
+H
+11
+// -0.010557
+0xa168
+// -0.000700
+0x91bd
+// 0.021149
+0x256a
+// -0.015940
+0xa415
+// -0.014426
+0xa363
+// -0.024837
+0xa65c
+// -0.042234
+0xa968
+// -0.001396
+0x95b8
+// 0.019348
+0x24f4
+// 0.010736
+0x217f
+// 0.002952
+0x1a0c
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference63_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference63_f16.txt
new file mode 100755
index 0000000..3e7da78
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference63_f16.txt
@@ -0,0 +1,26 @@
+H
+12
+// -0.010557
+0xa168
+// -0.000700
+0x91bd
+// -0.117644
+0xaf87
+// 0.076721
+0x2ce9
+// 0.195610
+0x3242
+// -0.388567
+0xb638
+// 0.035069
+0x287d
+// -0.384668
+0xb628
+// -0.254596
+0xb413
+// 0.193449
+0x3231
+// 0.123213
+0x2fe3
+// 0.052880
+0x2ac5
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference64_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference64_f16.txt
new file mode 100755
index 0000000..e662745
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference64_f16.txt
@@ -0,0 +1,36 @@
+H
+17
+// -0.010557
+0xa168
+// -0.000700
+0x91bd
+// -0.117644
+0xaf87
+// 0.022714
+0x25d1
+// 0.292748
+0x34af
+// -0.347519
+0xb58f
+// -0.212103
+0xb2ca
+// -0.060376
+0xabba
+// -0.501418
+0xb803
+// 0.031106
+0x27f7
+// 0.651392
+0x3936
+// -0.086724
+0xad8d
+// 0.288201
+0x349c
+// 0.241673
+0x33bc
+// -0.153889
+0xb0ed
+// -0.103751
+0xaea4
+// -0.047821
+0xaa1f
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference65_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference65_f16.txt
new file mode 100755
index 0000000..77b49c3
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference65_f16.txt
@@ -0,0 +1,42 @@
+H
+20
+// -0.010557
+0xa168
+// -0.000700
+0x91bd
+// -0.117644
+0xaf87
+// 0.022714
+0x25d1
+// 0.292748
+0x34af
+// -0.347519
+0xb58f
+// -0.212103
+0xb2ca
+// -0.060376
+0xabba
+// -0.437183
+0xb6ff
+// 0.133159
+0x3043
+// 0.568089
+0x388b
+// -0.211605
+0xb2c5
+// 0.464782
+0x3770
+// 0.628351
+0x3907
+// 0.311495
+0x34fc
+// 0.403363
+0x3674
+// -0.075849
+0xacdb
+// -0.295745
+0xb4bb
+// -0.151111
+0xb0d6
+// -0.042164
+0xa966
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference66_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference66_f16.txt
new file mode 100755
index 0000000..37c7cf9
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference66_f16.txt
@@ -0,0 +1,24 @@
+H
+11
+// -0.010557
+0xa168
+// 0.007048
+0x1f38
+// 0.015976
+0x2417
+// -0.027666
+0xa715
+// 0.005880
+0x1e05
+// -0.029153
+0xa777
+// -0.020837
+0xa556
+// 0.013898
+0x231e
+// 0.009147
+0x20af
+// 0.004022
+0x1c1e
+// -0.020477
+0xa53e
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference67_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference67_f16.txt
new file mode 100755
index 0000000..d3bdcd4
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference67_f16.txt
@@ -0,0 +1,26 @@
+H
+12
+// -0.010557
+0xa168
+// -0.000700
+0x91bd
+// 0.021149
+0x256a
+// -0.015940
+0xa415
+// -0.014426
+0xa363
+// -0.024837
+0xa65c
+// -0.042234
+0xa968
+// -0.001396
+0x95b8
+// 0.019348
+0x24f4
+// 0.010736
+0x217f
+// -0.017525
+0xa47c
+// -0.015029
+0xa3b2
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference68_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference68_f16.txt
new file mode 100755
index 0000000..082e274
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference68_f16.txt
@@ -0,0 +1,28 @@
+H
+13
+// -0.010557
+0xa168
+// -0.000700
+0x91bd
+// -0.117644
+0xaf87
+// 0.076721
+0x2ce9
+// 0.195610
+0x3242
+// -0.388567
+0xb638
+// 0.035069
+0x287d
+// -0.384668
+0xb628
+// -0.254596
+0xb413
+// 0.193449
+0x3231
+// 0.102736
+0x2e93
+// 0.037851
+0x28d8
+// -0.269208
+0xb44f
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference69_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference69_f16.txt
new file mode 100755
index 0000000..9e523f4
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference69_f16.txt
@@ -0,0 +1,38 @@
+H
+18
+// -0.010557
+0xa168
+// -0.000700
+0x91bd
+// -0.117644
+0xaf87
+// 0.022714
+0x25d1
+// 0.292748
+0x34af
+// -0.347519
+0xb58f
+// -0.212103
+0xb2ca
+// -0.060376
+0xabba
+// -0.501418
+0xb803
+// 0.031106
+0x27f7
+// 0.630915
+0x390c
+// -0.101754
+0xae83
+// 0.018994
+0x24dd
+// 0.136919
+0x3062
+// -0.035413
+0xa888
+// -0.103561
+0xaea1
+// -0.073300
+0xacb1
+// 0.243454
+0x33ca
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference6_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference6_f16.txt
new file mode 100755
index 0000000..31655e0
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference6_f16.txt
@@ -0,0 +1,20 @@
+H
+9
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// -0.010557
+0xa168
+// 0.007048
+0x1f38
+// 0.015976
+0x2417
+// -0.027666
+0xa715
+// 0.005880
+0x1e05
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference70_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference70_f16.txt
new file mode 100755
index 0000000..d1f1f29
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference70_f16.txt
@@ -0,0 +1,44 @@
+H
+21
+// -0.010557
+0xa168
+// -0.000700
+0x91bd
+// -0.117644
+0xaf87
+// 0.022714
+0x25d1
+// 0.292748
+0x34af
+// -0.347519
+0xb58f
+// -0.212103
+0xb2ca
+// -0.060376
+0xabba
+// -0.437183
+0xb6ff
+// 0.133159
+0x3043
+// 0.547613
+0x3862
+// -0.226634
+0xb341
+// 0.195574
+0x3242
+// 0.523597
+0x3830
+// 0.429972
+0x36e1
+// 0.403553
+0x3675
+// -0.101328
+0xae7c
+// -0.052291
+0xaab1
+// -0.026520
+0xa6ca
+// 0.238960
+0x33a6
+// 0.214654
+0x32de
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference71_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference71_f16.txt
new file mode 100755
index 0000000..2a238b5
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference71_f16.txt
@@ -0,0 +1,26 @@
+H
+12
+// -0.010557
+0xa168
+// 0.007048
+0x1f38
+// 0.015976
+0x2417
+// -0.027666
+0xa715
+// 0.005880
+0x1e05
+// -0.029153
+0xa777
+// -0.020837
+0xa556
+// 0.013898
+0x231e
+// 0.009147
+0x20af
+// 0.004022
+0x1c1e
+// -0.020477
+0xa53e
+// 0.000274
+0xc7c
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference72_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference72_f16.txt
new file mode 100755
index 0000000..0a4733b
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference72_f16.txt
@@ -0,0 +1,28 @@
+H
+13
+// -0.010557
+0xa168
+// -0.000700
+0x91bd
+// 0.021149
+0x256a
+// -0.015940
+0xa415
+// -0.014426
+0xa363
+// -0.024837
+0xa65c
+// -0.042234
+0xa968
+// -0.001396
+0x95b8
+// 0.019348
+0x24f4
+// 0.010736
+0x217f
+// -0.017525
+0xa47c
+// -0.014755
+0xa38e
+// 0.000201
+0xa96
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference73_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference73_f16.txt
new file mode 100755
index 0000000..09f93d5
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference73_f16.txt
@@ -0,0 +1,30 @@
+H
+14
+// -0.010557
+0xa168
+// -0.000700
+0x91bd
+// -0.117644
+0xaf87
+// 0.076721
+0x2ce9
+// 0.195610
+0x3242
+// -0.388567
+0xb638
+// 0.035069
+0x287d
+// -0.384668
+0xb628
+// -0.254596
+0xb413
+// 0.193449
+0x3231
+// 0.102736
+0x2e93
+// 0.038125
+0x28e1
+// -0.269007
+0xb44e
+// 0.003599
+0x1b5f
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference74_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference74_f16.txt
new file mode 100755
index 0000000..f532749
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference74_f16.txt
@@ -0,0 +1,40 @@
+H
+19
+// -0.010557
+0xa168
+// -0.000700
+0x91bd
+// -0.117644
+0xaf87
+// 0.022714
+0x25d1
+// 0.292748
+0x34af
+// -0.347519
+0xb58f
+// -0.212103
+0xb2ca
+// -0.060376
+0xabba
+// -0.501418
+0xb803
+// 0.031106
+0x27f7
+// 0.630915
+0x390c
+// -0.101480
+0xae7f
+// 0.019195
+0x24ea
+// 0.140518
+0x307f
+// -0.034012
+0xa85b
+// -0.105145
+0xaebb
+// -0.073303
+0xacb1
+// 0.243794
+0x33cd
+// -0.003255
+0x9aab
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference75_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference75_f16.txt
new file mode 100755
index 0000000..796040a
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference75_f16.txt
@@ -0,0 +1,46 @@
+H
+22
+// -0.010557
+0xa168
+// -0.000700
+0x91bd
+// -0.117644
+0xaf87
+// 0.022714
+0x25d1
+// 0.292748
+0x34af
+// -0.347519
+0xb58f
+// -0.212103
+0xb2ca
+// -0.060376
+0xabba
+// -0.437183
+0xb6ff
+// 0.133159
+0x3043
+// 0.547613
+0x3862
+// -0.226361
+0xb33e
+// 0.195775
+0x3244
+// 0.527197
+0x3838
+// 0.431373
+0x36e7
+// 0.401969
+0x366e
+// -0.101331
+0xae7c
+// -0.051951
+0xaaa6
+// -0.029775
+0xa79f
+// 0.237295
+0x3398
+// 0.210896
+0x32c0
+// -0.002870
+0x99e1
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference76_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference76_f16.txt
new file mode 100755
index 0000000..18aa9b2
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference76_f16.txt
@@ -0,0 +1,28 @@
+H
+13
+// -0.010557
+0xa168
+// 0.007048
+0x1f38
+// 0.015976
+0x2417
+// -0.027666
+0xa715
+// 0.005880
+0x1e05
+// -0.029153
+0xa777
+// -0.020837
+0xa556
+// 0.013898
+0x231e
+// 0.009147
+0x20af
+// 0.004022
+0x1c1e
+// -0.020477
+0xa53e
+// 0.000274
+0xc7c
+// 0.000229
+0xb80
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference77_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference77_f16.txt
new file mode 100755
index 0000000..6b8c47e
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference77_f16.txt
@@ -0,0 +1,30 @@
+H
+14
+// -0.010557
+0xa168
+// -0.000700
+0x91bd
+// 0.021149
+0x256a
+// -0.015940
+0xa415
+// -0.014426
+0xa363
+// -0.024837
+0xa65c
+// -0.042234
+0xa968
+// -0.001396
+0x95b8
+// 0.019348
+0x24f4
+// 0.010736
+0x217f
+// -0.017525
+0xa47c
+// -0.014755
+0xa38e
+// 0.000430
+0xf0b
+// 0.000168
+0x982
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference78_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference78_f16.txt
new file mode 100755
index 0000000..eab02ae
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference78_f16.txt
@@ -0,0 +1,32 @@
+H
+15
+// -0.010557
+0xa168
+// -0.000700
+0x91bd
+// -0.117644
+0xaf87
+// 0.076721
+0x2ce9
+// 0.195610
+0x3242
+// -0.388567
+0xb638
+// 0.035069
+0x287d
+// -0.384668
+0xb628
+// -0.254596
+0xb413
+// 0.193449
+0x3231
+// 0.102736
+0x2e93
+// 0.038125
+0x28e1
+// -0.268778
+0xb44d
+// 0.003767
+0x1bb7
+// 0.003010
+0x1a2a
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference79_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference79_f16.txt
new file mode 100755
index 0000000..554eb81
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference79_f16.txt
@@ -0,0 +1,42 @@
+H
+20
+// -0.010557
+0xa168
+// -0.000700
+0x91bd
+// -0.117644
+0xaf87
+// 0.022714
+0x25d1
+// 0.292748
+0x34af
+// -0.347519
+0xb58f
+// -0.212103
+0xb2ca
+// -0.060376
+0xabba
+// -0.501418
+0xb803
+// 0.031106
+0x27f7
+// 0.630915
+0x390c
+// -0.101480
+0xae7f
+// 0.019423
+0x24f9
+// 0.140686
+0x3081
+// -0.031002
+0xa7f0
+// -0.103974
+0xaea8
+// -0.074627
+0xacc7
+// 0.243792
+0x33cd
+// -0.002970
+0x9a15
+// -0.002722
+0x9993
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference7_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference7_f16.txt
new file mode 100755
index 0000000..ba37aaa
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference7_f16.txt
@@ -0,0 +1,20 @@
+H
+9
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
+// -0.007748
+0x9fef
+// -0.005384
+0x9d83
+// 0.018774
+0x24ce
+// -0.004330
+0x9c6f
+// -0.023351
+0xa5fa
+// 0.005880
+0x1e05
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference80_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference80_f16.txt
new file mode 100755
index 0000000..6f75d04
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference80_f16.txt
@@ -0,0 +1,48 @@
+H
+23
+// -0.010557
+0xa168
+// -0.000700
+0x91bd
+// -0.117644
+0xaf87
+// 0.022714
+0x25d1
+// 0.292748
+0x34af
+// -0.347519
+0xb58f
+// -0.212103
+0xb2ca
+// -0.060376
+0xabba
+// -0.437183
+0xb6ff
+// 0.133159
+0x3043
+// 0.547613
+0x3862
+// -0.226361
+0xb33e
+// 0.196004
+0x3246
+// 0.527365
+0x3838
+// 0.434382
+0x36f3
+// 0.403140
+0x3673
+// -0.102655
+0xae92
+// -0.051953
+0xaaa6
+// -0.029490
+0xa78d
+// 0.234573
+0x3382
+// 0.209503
+0x32b4
+// -0.006013
+0x9e28
+// -0.002400
+0x98ea
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference8_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference8_f16.txt
new file mode 100755
index 0000000..f4de977
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference8_f16.txt
@@ -0,0 +1,20 @@
+H
+9
+// 0.000000
+0x0
+// 0.000000
+0x0
+// -0.138793
+0xb071
+// 0.084913
+0x2d6f
+// 0.204652
+0x328d
+// -0.344956
+0xb585
+// 0.072973
+0x2cac
+// -0.023351
+0xa5fa
+// 0.005880
+0x1e05
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference9_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference9_f16.txt
new file mode 100755
index 0000000..1c643a0
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Filtering/MISC/MISCF16/Reference9_f16.txt
@@ -0,0 +1,32 @@
+H
+15
+// 0.125515
+0x3004
+// -0.096933
+0xae34
+// -0.181075
+0xb1cb
+// 0.409829
+0x368f
+// -0.199268
+0xb260
+// -0.187599
+0xb201
+// 0.326663
+0x353a
+// 0.029097
+0x2773
+// -0.314875
+0xb50a
+// 0.072973
+0x2cac
+// -0.023351
+0xa5fa
+// 0.005880
+0x1e05
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.000000
+0x0
diff --git a/CMSIS/DSP/Testing/Source/Tests/BIQUADF16.cpp b/CMSIS/DSP/Testing/Source/Tests/BIQUADF16.cpp
index 63ac9c6..b8bd496 100755
--- a/CMSIS/DSP/Testing/Source/Tests/BIQUADF16.cpp
+++ b/CMSIS/DSP/Testing/Source/Tests/BIQUADF16.cpp
@@ -2,7 +2,7 @@
 #include <stdio.h>
 #include "Error.h"
 
-#define SNR_THRESHOLD 32
+#define SNR_THRESHOLD 30
 
 /* 
 
diff --git a/CMSIS/DSP/Testing/Source/Tests/MISCF16.cpp b/CMSIS/DSP/Testing/Source/Tests/MISCF16.cpp
new file mode 100755
index 0000000..1c0773c
--- /dev/null
+++ b/CMSIS/DSP/Testing/Source/Tests/MISCF16.cpp
@@ -0,0 +1,712 @@
+#include "MISCF16.h"
+#include <stdio.h>
+#include "Error.h"
+#include "arm_vec_math.h"
+#include "Test.h"
+
+#define SNR_THRESHOLD 60
+/* 
+
+Reference patterns are generated with
+a double precision computation.
+
+*/
+#define REL_ERROR (1.0e-4)
+#define ABS_ERROR (1.0e-3)
+
+    void MISCF16::test_correlate_f16()
+    {
+        const float16_t *inpA=inputA.ptr(); 
+        const float16_t *inpB=inputB.ptr(); 
+        float16_t *outp=output.ptr();
+
+        arm_correlate_f16(inpA, inputA.nbSamples(),
+          inpB, inputB.nbSamples(),
+          outp);
+
+        ASSERT_SNR(ref,output,(float16_t)SNR_THRESHOLD);
+        ASSERT_CLOSE_ERROR(ref,output,ABS_ERROR,REL_ERROR);
+
+    }
+
+/*
+    void MISCF16::test_conv_f16()
+    {
+        const float16_t *inpA=inputA.ptr(); 
+        const float16_t *inpB=inputB.ptr(); 
+        float16_t *outp=output.ptr();
+
+        arm_conv_f16(inpA, inputA.nbSamples(),
+          inpB, inputB.nbSamples(),
+          outp);
+
+        ASSERT_SNR(ref,output,(float16_t)SNR_THRESHOLD);
+        ASSERT_CLOSE_ERROR(ref,output,ABS_ERROR,REL_ERROR);
+
+    }
+*/
+
+  
+    void MISCF16::setUp(Testing::testID_t id,std::vector<Testing::param_t>& paramsArgs,Client::PatternMgr *mgr)
+    {
+        (void)paramsArgs;
+        switch(id)
+        {
+
+            case MISCF16::TEST_CORRELATE_F16_1:
+            {
+                       this->nba = 4;
+                       this->nbb = 1;
+                       ref.reload(MISCF16::REF1_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_2:
+            {
+                       this->nba = 4;
+                       this->nbb = 2;
+                       ref.reload(MISCF16::REF2_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_3:
+            {
+                       this->nba = 4;
+                       this->nbb = 3;
+                       ref.reload(MISCF16::REF3_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_4:
+            {
+                       this->nba = 4;
+                       this->nbb = 8;
+                       ref.reload(MISCF16::REF4_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_5:
+            {
+                       this->nba = 4;
+                       this->nbb = 11;
+                       ref.reload(MISCF16::REF5_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_6:
+            {
+                       this->nba = 5;
+                       this->nbb = 1;
+                       ref.reload(MISCF16::REF6_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_7:
+            {
+                       this->nba = 5;
+                       this->nbb = 2;
+                       ref.reload(MISCF16::REF7_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_8:
+            {
+                       this->nba = 5;
+                       this->nbb = 3;
+                       ref.reload(MISCF16::REF8_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_9:
+            {
+                       this->nba = 5;
+                       this->nbb = 8;
+                       ref.reload(MISCF16::REF9_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_10:
+            {
+                       this->nba = 5;
+                       this->nbb = 11;
+                       ref.reload(MISCF16::REF10_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_11:
+            {
+                       this->nba = 6;
+                       this->nbb = 1;
+                       ref.reload(MISCF16::REF11_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_12:
+            {
+                       this->nba = 6;
+                       this->nbb = 2;
+                       ref.reload(MISCF16::REF12_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_13:
+            {
+                       this->nba = 6;
+                       this->nbb = 3;
+                       ref.reload(MISCF16::REF13_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_14:
+            {
+                       this->nba = 6;
+                       this->nbb = 8;
+                       ref.reload(MISCF16::REF14_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_15:
+            {
+                       this->nba = 6;
+                       this->nbb = 11;
+                       ref.reload(MISCF16::REF15_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_16:
+            {
+                       this->nba = 9;
+                       this->nbb = 1;
+                       ref.reload(MISCF16::REF16_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_17:
+            {
+                       this->nba = 9;
+                       this->nbb = 2;
+                       ref.reload(MISCF16::REF17_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_18:
+            {
+                       this->nba = 9;
+                       this->nbb = 3;
+                       ref.reload(MISCF16::REF18_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_19:
+            {
+                       this->nba = 9;
+                       this->nbb = 8;
+                       ref.reload(MISCF16::REF19_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_20:
+            {
+                       this->nba = 9;
+                       this->nbb = 11;
+                       ref.reload(MISCF16::REF20_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_21:
+            {
+                       this->nba = 10;
+                       this->nbb = 1;
+                       ref.reload(MISCF16::REF21_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_22:
+            {
+                       this->nba = 10;
+                       this->nbb = 2;
+                       ref.reload(MISCF16::REF22_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_23:
+            {
+                       this->nba = 10;
+                       this->nbb = 3;
+                       ref.reload(MISCF16::REF23_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_24:
+            {
+                       this->nba = 10;
+                       this->nbb = 8;
+                       ref.reload(MISCF16::REF24_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_25:
+            {
+                       this->nba = 10;
+                       this->nbb = 11;
+                       ref.reload(MISCF16::REF25_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_26:
+            {
+                       this->nba = 11;
+                       this->nbb = 1;
+                       ref.reload(MISCF16::REF26_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_27:
+            {
+                       this->nba = 11;
+                       this->nbb = 2;
+                       ref.reload(MISCF16::REF27_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_28:
+            {
+                       this->nba = 11;
+                       this->nbb = 3;
+                       ref.reload(MISCF16::REF28_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_29:
+            {
+                       this->nba = 11;
+                       this->nbb = 8;
+                       ref.reload(MISCF16::REF29_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_30:
+            {
+                       this->nba = 11;
+                       this->nbb = 11;
+                       ref.reload(MISCF16::REF30_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_31:
+            {
+                       this->nba = 12;
+                       this->nbb = 1;
+                       ref.reload(MISCF16::REF31_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_32:
+            {
+                       this->nba = 12;
+                       this->nbb = 2;
+                       ref.reload(MISCF16::REF32_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_33:
+            {
+                       this->nba = 12;
+                       this->nbb = 3;
+                       ref.reload(MISCF16::REF33_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_34:
+            {
+                       this->nba = 12;
+                       this->nbb = 8;
+                       ref.reload(MISCF16::REF34_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_35:
+            {
+                       this->nba = 12;
+                       this->nbb = 11;
+                       ref.reload(MISCF16::REF35_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_36:
+            {
+                       this->nba = 13;
+                       this->nbb = 1;
+                       ref.reload(MISCF16::REF36_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_37:
+            {
+                       this->nba = 13;
+                       this->nbb = 2;
+                       ref.reload(MISCF16::REF37_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_38:
+            {
+                       this->nba = 13;
+                       this->nbb = 3;
+                       ref.reload(MISCF16::REF38_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_39:
+            {
+                       this->nba = 13;
+                       this->nbb = 8;
+                       ref.reload(MISCF16::REF39_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CORRELATE_F16_40:
+            {
+                       this->nba = 13;
+                       this->nbb = 11;
+                       ref.reload(MISCF16::REF40_F16_ID,mgr);
+            }
+            break;
+
+#if 0
+            case MISCF16::TEST_CONV_F16_41:
+            {
+                       this->nba = 4;
+                       this->nbb = 1;
+                       ref.reload(MISCF16::REF41_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_42:
+            {
+                       this->nba = 4;
+                       this->nbb = 2;
+                       ref.reload(MISCF16::REF42_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_43:
+            {
+                       this->nba = 4;
+                       this->nbb = 3;
+                       ref.reload(MISCF16::REF43_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_44:
+            {
+                       this->nba = 4;
+                       this->nbb = 8;
+                       ref.reload(MISCF16::REF44_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_45:
+            {
+                       this->nba = 4;
+                       this->nbb = 11;
+                       ref.reload(MISCF16::REF45_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_46:
+            {
+                       this->nba = 5;
+                       this->nbb = 1;
+                       ref.reload(MISCF16::REF46_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_47:
+            {
+                       this->nba = 5;
+                       this->nbb = 2;
+                       ref.reload(MISCF16::REF47_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_48:
+            {
+                       this->nba = 5;
+                       this->nbb = 3;
+                       ref.reload(MISCF16::REF48_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_49:
+            {
+                       this->nba = 5;
+                       this->nbb = 8;
+                       ref.reload(MISCF16::REF49_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_50:
+            {
+                       this->nba = 5;
+                       this->nbb = 11;
+                       ref.reload(MISCF16::REF50_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_51:
+            {
+                       this->nba = 6;
+                       this->nbb = 1;
+                       ref.reload(MISCF16::REF51_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_52:
+            {
+                       this->nba = 6;
+                       this->nbb = 2;
+                       ref.reload(MISCF16::REF52_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_53:
+            {
+                       this->nba = 6;
+                       this->nbb = 3;
+                       ref.reload(MISCF16::REF53_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_54:
+            {
+                       this->nba = 6;
+                       this->nbb = 8;
+                       ref.reload(MISCF16::REF54_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_55:
+            {
+                       this->nba = 6;
+                       this->nbb = 11;
+                       ref.reload(MISCF16::REF55_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_56:
+            {
+                       this->nba = 9;
+                       this->nbb = 1;
+                       ref.reload(MISCF16::REF56_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_57:
+            {
+                       this->nba = 9;
+                       this->nbb = 2;
+                       ref.reload(MISCF16::REF57_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_58:
+            {
+                       this->nba = 9;
+                       this->nbb = 3;
+                       ref.reload(MISCF16::REF58_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_59:
+            {
+                       this->nba = 9;
+                       this->nbb = 8;
+                       ref.reload(MISCF16::REF59_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_60:
+            {
+                       this->nba = 9;
+                       this->nbb = 11;
+                       ref.reload(MISCF16::REF60_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_61:
+            {
+                       this->nba = 10;
+                       this->nbb = 1;
+                       ref.reload(MISCF16::REF61_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_62:
+            {
+                       this->nba = 10;
+                       this->nbb = 2;
+                       ref.reload(MISCF16::REF62_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_63:
+            {
+                       this->nba = 10;
+                       this->nbb = 3;
+                       ref.reload(MISCF16::REF63_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_64:
+            {
+                       this->nba = 10;
+                       this->nbb = 8;
+                       ref.reload(MISCF16::REF64_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_65:
+            {
+                       this->nba = 10;
+                       this->nbb = 11;
+                       ref.reload(MISCF16::REF65_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_66:
+            {
+                       this->nba = 11;
+                       this->nbb = 1;
+                       ref.reload(MISCF16::REF66_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_67:
+            {
+                       this->nba = 11;
+                       this->nbb = 2;
+                       ref.reload(MISCF16::REF67_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_68:
+            {
+                       this->nba = 11;
+                       this->nbb = 3;
+                       ref.reload(MISCF16::REF68_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_69:
+            {
+                       this->nba = 11;
+                       this->nbb = 8;
+                       ref.reload(MISCF16::REF69_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_70:
+            {
+                       this->nba = 11;
+                       this->nbb = 11;
+                       ref.reload(MISCF16::REF70_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_71:
+            {
+                       this->nba = 12;
+                       this->nbb = 1;
+                       ref.reload(MISCF16::REF71_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_72:
+            {
+                       this->nba = 12;
+                       this->nbb = 2;
+                       ref.reload(MISCF16::REF72_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_73:
+            {
+                       this->nba = 12;
+                       this->nbb = 3;
+                       ref.reload(MISCF16::REF73_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_74:
+            {
+                       this->nba = 12;
+                       this->nbb = 8;
+                       ref.reload(MISCF16::REF74_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_75:
+            {
+                       this->nba = 12;
+                       this->nbb = 11;
+                       ref.reload(MISCF16::REF75_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_76:
+            {
+                       this->nba = 13;
+                       this->nbb = 1;
+                       ref.reload(MISCF16::REF76_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_77:
+            {
+                       this->nba = 13;
+                       this->nbb = 2;
+                       ref.reload(MISCF16::REF77_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_78:
+            {
+                       this->nba = 13;
+                       this->nbb = 3;
+                       ref.reload(MISCF16::REF78_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_79:
+            {
+                       this->nba = 13;
+                       this->nbb = 8;
+                       ref.reload(MISCF16::REF79_F16_ID,mgr);
+            }
+            break;
+
+            case MISCF16::TEST_CONV_F16_80:
+            {
+                       this->nba = 13;
+                       this->nbb = 11;
+                       ref.reload(MISCF16::REF80_F16_ID,mgr);
+            }
+            break;
+#endif
+
+        }
+
+       inputA.reload(MISCF16::INPUTA_F16_ID,mgr,nba);
+       inputB.reload(MISCF16::INPUTB_F16_ID,mgr,nbb);
+
+       output.create(ref.nbSamples(),MISCF16::OUT_F16_ID,mgr);
+        
+    }
+
+    void MISCF16::tearDown(Testing::testID_t id,Client::PatternMgr *mgr)
+    {
+      (void)id;
+      output.dump(mgr);
+      
+    }
diff --git a/CMSIS/DSP/Testing/desc_f16.txt b/CMSIS/DSP/Testing/desc_f16.txt
index d82e2a1..3e61429 100755
--- a/CMSIS/DSP/Testing/desc_f16.txt
+++ b/CMSIS/DSP/Testing/desc_f16.txt
@@ -144,6 +144,147 @@
            class = FilteringTests
            folder = Filtering
 
+           group MISC {
+             class = MISC 
+             folder = MISC
+
+             suite MISC F16 {
+                class = MISCF16 
+                folder = MISCF16
+
+                Pattern INPUTA_F16_ID : InputsA1_f16.txt
+                Pattern INPUTB_F16_ID : InputsB1_f16.txt
+
+                Pattern REF1_F16_ID : Reference1_f16.txt
+                Pattern REF2_F16_ID : Reference2_f16.txt
+                Pattern REF3_F16_ID : Reference3_f16.txt
+                Pattern REF4_F16_ID : Reference4_f16.txt
+                Pattern REF5_F16_ID : Reference5_f16.txt
+                Pattern REF6_F16_ID : Reference6_f16.txt
+                Pattern REF7_F16_ID : Reference7_f16.txt
+                Pattern REF8_F16_ID : Reference8_f16.txt
+                Pattern REF9_F16_ID : Reference9_f16.txt
+                Pattern REF10_F16_ID : Reference10_f16.txt
+                Pattern REF11_F16_ID : Reference11_f16.txt
+                Pattern REF12_F16_ID : Reference12_f16.txt
+                Pattern REF13_F16_ID : Reference13_f16.txt
+                Pattern REF14_F16_ID : Reference14_f16.txt
+                Pattern REF15_F16_ID : Reference15_f16.txt
+                Pattern REF16_F16_ID : Reference16_f16.txt
+                Pattern REF17_F16_ID : Reference17_f16.txt
+                Pattern REF18_F16_ID : Reference18_f16.txt
+                Pattern REF19_F16_ID : Reference19_f16.txt
+                Pattern REF20_F16_ID : Reference20_f16.txt
+                Pattern REF21_F16_ID : Reference21_f16.txt
+                Pattern REF22_F16_ID : Reference22_f16.txt
+                Pattern REF23_F16_ID : Reference23_f16.txt
+                Pattern REF24_F16_ID : Reference24_f16.txt
+                Pattern REF25_F16_ID : Reference25_f16.txt
+                Pattern REF26_F16_ID : Reference26_f16.txt
+                Pattern REF27_F16_ID : Reference27_f16.txt
+                Pattern REF28_F16_ID : Reference28_f16.txt
+                Pattern REF29_F16_ID : Reference29_f16.txt
+                Pattern REF30_F16_ID : Reference30_f16.txt
+                Pattern REF31_F16_ID : Reference31_f16.txt
+                Pattern REF32_F16_ID : Reference32_f16.txt
+                Pattern REF33_F16_ID : Reference33_f16.txt
+                Pattern REF34_F16_ID : Reference34_f16.txt
+                Pattern REF35_F16_ID : Reference35_f16.txt
+                Pattern REF36_F16_ID : Reference36_f16.txt
+                Pattern REF37_F16_ID : Reference37_f16.txt
+                Pattern REF38_F16_ID : Reference38_f16.txt
+                Pattern REF39_F16_ID : Reference39_f16.txt
+                Pattern REF40_F16_ID : Reference40_f16.txt
+                Pattern REF41_F16_ID : Reference41_f16.txt
+                Pattern REF42_F16_ID : Reference42_f16.txt
+                Pattern REF43_F16_ID : Reference43_f16.txt
+                Pattern REF44_F16_ID : Reference44_f16.txt
+                Pattern REF45_F16_ID : Reference45_f16.txt
+                Pattern REF46_F16_ID : Reference46_f16.txt
+                Pattern REF47_F16_ID : Reference47_f16.txt
+                Pattern REF48_F16_ID : Reference48_f16.txt
+                Pattern REF49_F16_ID : Reference49_f16.txt
+                Pattern REF50_F16_ID : Reference50_f16.txt
+                Pattern REF51_F16_ID : Reference51_f16.txt
+                Pattern REF52_F16_ID : Reference52_f16.txt
+                Pattern REF53_F16_ID : Reference53_f16.txt
+                Pattern REF54_F16_ID : Reference54_f16.txt
+                Pattern REF55_F16_ID : Reference55_f16.txt
+                Pattern REF56_F16_ID : Reference56_f16.txt
+                Pattern REF57_F16_ID : Reference57_f16.txt
+                Pattern REF58_F16_ID : Reference58_f16.txt
+                Pattern REF59_F16_ID : Reference59_f16.txt
+                Pattern REF60_F16_ID : Reference60_f16.txt
+                Pattern REF61_F16_ID : Reference61_f16.txt
+                Pattern REF62_F16_ID : Reference62_f16.txt
+                Pattern REF63_F16_ID : Reference63_f16.txt
+                Pattern REF64_F16_ID : Reference64_f16.txt
+                Pattern REF65_F16_ID : Reference65_f16.txt
+                Pattern REF66_F16_ID : Reference66_f16.txt
+                Pattern REF67_F16_ID : Reference67_f16.txt
+                Pattern REF68_F16_ID : Reference68_f16.txt
+                Pattern REF69_F16_ID : Reference69_f16.txt
+                Pattern REF70_F16_ID : Reference70_f16.txt
+                Pattern REF71_F16_ID : Reference71_f16.txt
+                Pattern REF72_F16_ID : Reference72_f16.txt
+                Pattern REF73_F16_ID : Reference73_f16.txt
+                Pattern REF74_F16_ID : Reference74_f16.txt
+                Pattern REF75_F16_ID : Reference75_f16.txt
+                Pattern REF76_F16_ID : Reference76_f16.txt
+                Pattern REF77_F16_ID : Reference77_f16.txt
+                Pattern REF78_F16_ID : Reference78_f16.txt
+                Pattern REF79_F16_ID : Reference79_f16.txt
+                Pattern REF80_F16_ID : Reference80_f16.txt
+
+
+                Output  OUT_F16_ID : Output
+
+                Functions {
+                  arm_correlate_f16 nba=4 nbb=1:test_correlate_f16
+                  arm_correlate_f16 nba=4 nbb=2:test_correlate_f16
+                  arm_correlate_f16 nba=4 nbb=3:test_correlate_f16
+                  arm_correlate_f16 nba=4 nbb=8:test_correlate_f16
+                  arm_correlate_f16 nba=4 nbb=11:test_correlate_f16
+                  arm_correlate_f16 nba=5 nbb=1:test_correlate_f16
+                  arm_correlate_f16 nba=5 nbb=2:test_correlate_f16
+                  arm_correlate_f16 nba=5 nbb=3:test_correlate_f16
+                  arm_correlate_f16 nba=5 nbb=8:test_correlate_f16
+                  arm_correlate_f16 nba=5 nbb=11:test_correlate_f16
+                  arm_correlate_f16 nba=6 nbb=1:test_correlate_f16
+                  arm_correlate_f16 nba=6 nbb=2:test_correlate_f16
+                  arm_correlate_f16 nba=6 nbb=3:test_correlate_f16
+                  arm_correlate_f16 nba=6 nbb=8:test_correlate_f16
+                  arm_correlate_f16 nba=6 nbb=11:test_correlate_f16
+                  arm_correlate_f16 nba=9 nbb=1:test_correlate_f16
+                  arm_correlate_f16 nba=9 nbb=2:test_correlate_f16
+                  arm_correlate_f16 nba=9 nbb=3:test_correlate_f16
+                  arm_correlate_f16 nba=9 nbb=8:test_correlate_f16
+                  arm_correlate_f16 nba=9 nbb=11:test_correlate_f16
+                  arm_correlate_f16 nba=10 nbb=1:test_correlate_f16
+                  arm_correlate_f16 nba=10 nbb=2:test_correlate_f16
+                  arm_correlate_f16 nba=10 nbb=3:test_correlate_f16
+                  arm_correlate_f16 nba=10 nbb=8:test_correlate_f16
+                  arm_correlate_f16 nba=10 nbb=11:test_correlate_f16
+                  arm_correlate_f16 nba=11 nbb=1:test_correlate_f16
+                  arm_correlate_f16 nba=11 nbb=2:test_correlate_f16
+                  arm_correlate_f16 nba=11 nbb=3:test_correlate_f16
+                  arm_correlate_f16 nba=11 nbb=8:test_correlate_f16
+                  arm_correlate_f16 nba=11 nbb=11:test_correlate_f16
+                  arm_correlate_f16 nba=12 nbb=1:test_correlate_f16
+                  arm_correlate_f16 nba=12 nbb=2:test_correlate_f16
+                  arm_correlate_f16 nba=12 nbb=3:test_correlate_f16
+                  arm_correlate_f16 nba=12 nbb=8:test_correlate_f16
+                  arm_correlate_f16 nba=12 nbb=11:test_correlate_f16
+                  arm_correlate_f16 nba=13 nbb=1:test_correlate_f16
+                  arm_correlate_f16 nba=13 nbb=2:test_correlate_f16
+                  arm_correlate_f16 nba=13 nbb=3:test_correlate_f16
+                  arm_correlate_f16 nba=13 nbb=8:test_correlate_f16
+                  arm_correlate_f16 nba=13 nbb=11:test_correlate_f16
+                }
+
+             }
+           }
+
            group FIR {
              class = FIR 
              folder = FIR
@@ -199,6 +340,8 @@
 
              }
            }
+
+
         }
 
         group Transform Tests {