diff --git a/ARM.CMSIS.pdsc b/ARM.CMSIS.pdsc
index 625c0b6..f3c8434 100644
--- a/ARM.CMSIS.pdsc
+++ b/ARM.CMSIS.pdsc
@@ -3251,6 +3251,7 @@
         <file category="source"   name="CMSIS/DSP/Source/InterpolationFunctions/InterpolationFunctionsF16.c"/>
         <file category="source"   name="CMSIS/DSP/Source/StatisticsFunctions/StatisticsFunctionsF16.c"/>
         <file category="source"   name="CMSIS/DSP/Source/SupportFunctions/SupportFunctionsF16.c"/>
+        <file category="source"   name="CMSIS/DSP/Source/FastMathFunctions/FastMathFunctionsF16.c"/>
 
         <!-- Compute Library for Cortex-A -->
         <file category="header"   name="CMSIS/DSP/ComputeLibrary/Include/NEMath.h"        condition="ARMv7-A Device"/>
diff --git a/CMSIS/DSP/Include/arm_common_tables_f16.h b/CMSIS/DSP/Include/arm_common_tables_f16.h
index 6fd824c..f6ef321 100755
--- a/CMSIS/DSP/Include/arm_common_tables_f16.h
+++ b/CMSIS/DSP/Include/arm_common_tables_f16.h
@@ -113,6 +113,14 @@
     
 #endif /* !defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_FFT_ALLOW_TABLES) */
 
+#if !defined(__CC_ARM) && defined(ARM_FLOAT16_SUPPORTED)
+
+#if (defined(ARM_MATH_MVEF) || defined(ARM_MATH_HELIUM)) && !defined(ARM_MATH_AUTOVECTORIZE)
+       extern const float16_t exp_tab_f16[8];
+       extern const float16_t __logf_lut_f16[8];
+#endif /* (defined(ARM_MATH_MVEF) || defined(ARM_MATH_HELIUM)) && !defined(ARM_MATH_AUTOVECTORIZE) */
+#endif 
+       
 
 #ifdef   __cplusplus
 }
diff --git a/CMSIS/DSP/Include/arm_math_types_f16.h b/CMSIS/DSP/Include/arm_math_types_f16.h
index 6916e45..92939b1 100755
--- a/CMSIS/DSP/Include/arm_math_types_f16.h
+++ b/CMSIS/DSP/Include/arm_math_types_f16.h
@@ -140,7 +140,7 @@
 #define F16_ABSMAX   ((float16_t)FLT_MAX)
 #define F16_ABSMIN   ((float16_t)0.0)
 
-
+#define F16INFINITY ((float16_t)0x07c00)
   
 #endif /* ARM_FLOAT16_SUPPORTED*/
 #endif /* !defined( __CC_ARM ) */
diff --git a/CMSIS/DSP/Include/arm_vec_math_f16.h b/CMSIS/DSP/Include/arm_vec_math_f16.h
new file mode 100755
index 0000000..bd292c9
--- /dev/null
+++ b/CMSIS/DSP/Include/arm_vec_math_f16.h
@@ -0,0 +1,232 @@
+/******************************************************************************
+ * @file     arm_vec_math_f16.h
+ * @brief    Public header file for CMSIS DSP Library
+ ******************************************************************************/
+/*
+ * Copyright (c) 2010-2020 Arm Limited or its affiliates. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _ARM_VEC_MATH_H
+#define _ARM_VEC_MATH_H
+
+#include "arm_math_types_f16.h"
+#include "arm_common_tables_f16.h"
+#include "arm_helium_utils.h"
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+#if defined(ARM_FLOAT16_SUPPORTED)
+
+
+#if (defined(ARM_MATH_MVEF) || defined(ARM_MATH_HELIUM)) && !defined(ARM_MATH_AUTOVECTORIZE)
+
+
+static const float16_t __logf_rng_f16=0.693147180f16;
+
+
+/* fast inverse approximation (4x newton) */
+__STATIC_INLINE f16x8_t vrecip_hiprec_f16(
+    f16x8_t x)
+{
+    q15x8_t         m;
+    f16x8_t         b;
+    any16x8_t       xinv;
+    f16x8_t         ax = vabsq(x);
+
+    xinv.f = ax;
+
+    m = 0x03c00 - (xinv.i & 0x07c00);
+    xinv.i = xinv.i + m;
+    xinv.f = 1.41176471f16 - 0.47058824f16 * xinv.f;
+    xinv.i = xinv.i + m;
+
+    b = 2.0f16 - xinv.f * ax;
+    xinv.f = xinv.f * b;
+
+    b = 2.0f16 - xinv.f * ax;
+    xinv.f = xinv.f * b;
+
+    b = 2.0f16 - xinv.f * ax;
+    xinv.f = xinv.f * b;
+
+    b = 2.0f16 - xinv.f * ax;
+    xinv.f = xinv.f * b;
+
+    xinv.f = vdupq_m(xinv.f, F16INFINITY, vcmpeqq(x, 0.0f));
+    /*
+     * restore sign
+     */
+    xinv.f = vnegq_m(xinv.f, xinv.f, vcmpltq(x, 0.0f));
+
+    return xinv.f;
+}
+
+__STATIC_INLINE f16x8_t vdiv_f16(
+    f16x8_t num, f16x8_t den)
+{
+    return vmulq(num, vrecip_hiprec_f16(den));
+}
+
+
+/**
+  @brief         Single-precision taylor dev.
+  @param[in]     x              f16  vector input
+  @param[in]     coeffs         f16  vector coeffs
+  @return        destination    f16  vector
+ */
+
+__STATIC_INLINE float16x8_t vtaylor_polyq_f16(
+        float16x8_t           x,
+        const float16_t * coeffs)
+{
+    float16x8_t         A = vfmasq(vdupq_n_f16(coeffs[4]), x, coeffs[0]);
+    float16x8_t         B = vfmasq(vdupq_n_f16(coeffs[6]), x, coeffs[2]);
+    float16x8_t         C = vfmasq(vdupq_n_f16(coeffs[5]), x, coeffs[1]);
+    float16x8_t         D = vfmasq(vdupq_n_f16(coeffs[7]), x, coeffs[3]);
+    float16x8_t         x2 = vmulq(x, x);
+    float16x8_t         x4 = vmulq(x2, x2);
+    float16x8_t         res = vfmaq(vfmaq_f16(A, B, x2), vfmaq_f16(C, D, x2), x4);
+
+    return res;
+}
+
+__STATIC_INLINE float16x8_t vmant_exp_f16(
+    float16x8_t     x,
+    int16x8_t * e)
+{
+    any16x8_t       r;
+    int16x8_t       n;
+
+    r.f = x;
+    n = r.i >> 10;
+    n = n - 15;
+    r.i = r.i - (n << 10);
+
+    *e = n;
+    return r.f;
+}
+
+
+__STATIC_INLINE float16x8_t vlogq_f16(float16x8_t vecIn)
+{
+    q15x8_t             vecExpUnBiased;
+    float16x8_t         vecTmpFlt0, vecTmpFlt1;
+    float16x8_t         vecAcc0, vecAcc1, vecAcc2, vecAcc3;
+    float16x8_t         vecExpUnBiasedFlt;
+
+    /*
+     * extract exponent
+     */
+    vecTmpFlt1 = vmant_exp_f16(vecIn, &vecExpUnBiased);
+
+    vecTmpFlt0 = vecTmpFlt1 * vecTmpFlt1;
+    /*
+     * a = (__logf_lut_f16[4] * r.f) + (__logf_lut_f16[0]);
+     */
+    vecAcc0 = vdupq_n_f16(__logf_lut_f16[0]);
+    vecAcc0 = vfmaq(vecAcc0, vecTmpFlt1, __logf_lut_f16[4]);
+    /*
+     * b = (__logf_lut_f16[6] * r.f) + (__logf_lut_f16[2]);
+     */
+    vecAcc1 = vdupq_n_f16(__logf_lut_f16[2]);
+    vecAcc1 = vfmaq(vecAcc1, vecTmpFlt1, __logf_lut_f16[6]);
+    /*
+     * c = (__logf_lut_f16[5] * r.f) + (__logf_lut_f16[1]);
+     */
+    vecAcc2 = vdupq_n_f16(__logf_lut_f16[1]);
+    vecAcc2 = vfmaq(vecAcc2, vecTmpFlt1, __logf_lut_f16[5]);
+    /*
+     * d = (__logf_lut_f16[7] * r.f) + (__logf_lut_f16[3]);
+     */
+    vecAcc3 = vdupq_n_f16(__logf_lut_f16[3]);
+    vecAcc3 = vfmaq(vecAcc3, vecTmpFlt1, __logf_lut_f16[7]);
+    /*
+     * a = a + b * xx;
+     */
+    vecAcc0 = vfmaq(vecAcc0, vecAcc1, vecTmpFlt0);
+    /*
+     * c = c + d * xx;
+     */
+    vecAcc2 = vfmaq(vecAcc2, vecAcc3, vecTmpFlt0);
+    /*
+     * xx = xx * xx;
+     */
+    vecTmpFlt0 = vecTmpFlt0 * vecTmpFlt0;
+    vecExpUnBiasedFlt = vcvtq_f16_s16(vecExpUnBiased);
+    /*
+     * r.f = a + c * xx;
+     */
+    vecAcc0 = vfmaq(vecAcc0, vecAcc2, vecTmpFlt0);
+    /*
+     * add exponent
+     * r.f = r.f + ((float32_t) m) * __logf_rng_f16;
+     */
+    vecAcc0 = vfmaq(vecAcc0, vecExpUnBiasedFlt, __logf_rng_f16);
+    // set log0 down to -inf
+    vecAcc0 = vdupq_m(vecAcc0, -F16INFINITY, vcmpeqq(vecIn, 0.0f));
+    return vecAcc0;
+}
+
+__STATIC_INLINE float16x8_t vexpq_f16(
+    float16x8_t x)
+{
+    // Perform range reduction [-log(2),log(2)]
+    int16x8_t       m = vcvtq_s16_f16(vmulq_n_f16(x, 1.4426950408f16));
+    float16x8_t     val = vfmsq_f16(x, vcvtq_f16_s16(m), vdupq_n_f16(0.6931471805f16));
+
+    // Polynomial Approximation
+    float16x8_t         poly = vtaylor_polyq_f16(val, exp_tab_f16);
+
+    // Reconstruct
+    poly = (float16x8_t) (vqaddq_s16((int16x8_t) (poly), vqshlq_n_s16(m, 10)));
+
+    poly = vdupq_m(poly, 0.0f, vcmpltq_n_s16(m, -14));
+    return poly;
+}
+
+__STATIC_INLINE float16x8_t arm_vec_exponent_f16(float16x8_t x, int16_t nb)
+{
+    float16x8_t         r = x;
+    nb--;
+    while (nb > 0) {
+        r = vmulq(r, x);
+        nb--;
+    }
+    return (r);
+}
+
+
+
+#endif /* (defined(ARM_MATH_MVEF) || defined(ARM_MATH_HELIUM)) && !defined(ARM_MATH_AUTOVECTORIZE)*/
+
+
+
+#ifdef   __cplusplus
+}
+#endif
+
+#endif /* ARM FLOAT16 SUPPORTED */
+
+#endif /* _ARM_VEC_MATH_H */
+
+/**
+ *
+ * End of file.
+ */
diff --git a/CMSIS/DSP/Include/dsp/basic_math_functions_f16.h b/CMSIS/DSP/Include/dsp/basic_math_functions_f16.h
index 3227e62..9110998 100755
--- a/CMSIS/DSP/Include/dsp/basic_math_functions_f16.h
+++ b/CMSIS/DSP/Include/dsp/basic_math_functions_f16.h
@@ -36,7 +36,6 @@
 
 #include "dsp/none.h"
 #include "dsp/utils.h"
-#include "dsp/fast_math_functions_f16.h"
 
 
 #if defined(ARM_FLOAT16_SUPPORTED)
diff --git a/CMSIS/DSP/Include/dsp/fast_math_functions_f16.h b/CMSIS/DSP/Include/dsp/fast_math_functions_f16.h
index cafeac0..a081576 100755
--- a/CMSIS/DSP/Include/dsp/fast_math_functions_f16.h
+++ b/CMSIS/DSP/Include/dsp/fast_math_functions_f16.h
@@ -31,6 +31,8 @@
 
 #include "dsp/none.h"
 #include "dsp/utils.h"
+
+/* For sqrt_f32 */
 #include "dsp/fast_math_functions.h"
 
 #ifdef   __cplusplus
@@ -69,6 +71,42 @@
   @} end of SQRT group
  */
   
+/**
+  @brief         Floating-point vector of log values.
+  @param[in]     pSrc       points to the input vector
+  @param[out]    pDst       points to the output vector
+  @param[in]     blockSize  number of samples in each vector
+  @return        none
+ */
+  void arm_vlog_f16(
+  const float16_t * pSrc,
+        float16_t * pDst,
+        uint32_t blockSize);
+
+/**
+  @brief         Floating-point vector of exp values.
+  @param[in]     pSrc       points to the input vector
+  @param[out]    pDst       points to the output vector
+  @param[in]     blockSize  number of samples in each vector
+  @return        none
+ */
+  void arm_vexp_f16(
+  const float16_t * pSrc,
+        float16_t * pDst,
+        uint32_t blockSize);
+
+  /**
+  @brief         Floating-point vector of inverse values.
+  @param[in]     pSrc       points to the input vector
+  @param[out]    pDst       points to the output vector
+  @param[in]     blockSize  number of samples in each vector
+  @return        none
+ */
+  void arm_vinverse_f16(
+  const float16_t * pSrc,
+        float16_t * pDst,
+        uint32_t blockSize);
+
 #endif /*defined(ARM_FLOAT16_SUPPORTED)*/
 #ifdef   __cplusplus
 }
diff --git a/CMSIS/DSP/Include/dsp/statistics_functions_f16.h b/CMSIS/DSP/Include/dsp/statistics_functions_f16.h
index c891e3f..d08e122 100755
--- a/CMSIS/DSP/Include/dsp/statistics_functions_f16.h
+++ b/CMSIS/DSP/Include/dsp/statistics_functions_f16.h
@@ -123,6 +123,65 @@
         float16_t * pResult,
         uint32_t * pIndex);
 
+/**
+ * @brief Entropy
+ *
+ * @param[in]  pSrcA        Array of input values.
+ * @param[in]  blockSize    Number of samples in the input array.
+ * @return     Entropy      -Sum(p ln p)
+ *
+ */
+
+
+float16_t arm_entropy_f16(const float16_t * pSrcA,uint32_t blockSize);
+
+float16_t arm_logsumexp_f16(const float16_t *in, uint32_t blockSize);
+
+/**
+ * @brief Dot product with log arithmetic
+ *
+ * Vectors are containing the log of the samples
+ *
+ * @param[in]       pSrcA points to the first input vector
+ * @param[in]       pSrcB points to the second input vector
+ * @param[in]       blockSize number of samples in each vector
+ * @param[in]       pTmpBuffer temporary buffer of length blockSize
+ * @return The log of the dot product .
+ *
+ */
+
+
+float16_t arm_logsumexp_dot_prod_f16(const float16_t * pSrcA,
+  const float16_t * pSrcB,
+  uint32_t blockSize,
+  float16_t *pTmpBuffer);
+
+/**
+ * @brief Kullback-Leibler
+ *
+ * @param[in]  pSrcA         Pointer to an array of input values for probability distribution A.
+ * @param[in]  pSrcB         Pointer to an array of input values for probability distribution B.
+ * @param[in]  blockSize     Number of samples in the input array.
+ * @return Kullback-Leibler  Divergence D(A || B)
+ *
+ */
+float16_t arm_kullback_leibler_f16(const float16_t * pSrcA
+  ,const float16_t * pSrcB
+  ,uint32_t blockSize);
+
+/**
+    @brief         Maximum value of a floating-point vector.
+    @param[in]     pSrc       points to the input vector
+    @param[in]     blockSize  number of samples in input vector
+    @param[out]    pResult    maximum value returned here
+    @return        none
+   */
+  void arm_max_no_idx_f16(
+      const float16_t *pSrc,
+      uint32_t   blockSize,
+      float16_t *pResult);
+
+
 
 #endif /*defined(ARM_FLOAT16_SUPPORTED)*/
 #ifdef   __cplusplus
diff --git a/CMSIS/DSP/Source/CommonTables/arm_common_tables_f16.c b/CMSIS/DSP/Source/CommonTables/arm_common_tables_f16.c
index 4945f5f..8298c89 100755
--- a/CMSIS/DSP/Source/CommonTables/arm_common_tables_f16.c
+++ b/CMSIS/DSP/Source/CommonTables/arm_common_tables_f16.c
@@ -12550,6 +12550,32 @@
 
 #endif /*!defined(ARM_DSP_CONFIG_TABLES) || defined(ARM_FFT_ALLOW_TABLES)*/
 
+#if (defined(ARM_MATH_MVEF) || defined(ARM_MATH_HELIUM)) && !defined(ARM_MATH_AUTOVECTORIZE)
+const float16_t exp_tab_f16[8] = {
+    (1.f16),
+    (0.0416598916054f16),
+    (0.500000596046f16),
+    (0.00138889f16),
+    (1.00000011921f16),
+    (0.00833693705499f16),
+    (0.166665703058f16),
+    (0.000195780929062f16),
+};
+
+const float16_t __logf_lut_f16[8] = {
+    -2.295614848256274f16,         /*p0*/
+    -2.470711633419806f16,         /*p4*/
+    -5.686926051100417f16,         /*p2*/
+    -0.165253547131978f16,         /*p6*/
+    +5.175912446351073f16,         /*p1*/
+    +0.844006986174912f16,         /*p5*/
+    +4.584458825456749f16,         /*p3*/
+    +0.014127821926000f16          /*p7*/
+};
+
+#endif /* (defined(ARM_MATH_MVEF) || defined(ARM_MATH_HELIUM)) && !defined(ARM_MATH_AUTOVECTORIZE) */
+
+
 #endif /* #if defined(ARM_FLOAT16_SUPPORTED) */
 
 #endif /* Not ARM AC5 */
diff --git a/CMSIS/DSP/Source/FastMathFunctions/CMakeLists.txt b/CMSIS/DSP/Source/FastMathFunctions/CMakeLists.txt
index c784b52..50f8109 100644
--- a/CMSIS/DSP/Source/FastMathFunctions/CMakeLists.txt
+++ b/CMSIS/DSP/Source/FastMathFunctions/CMakeLists.txt
@@ -47,6 +47,12 @@
 target_sources(CMSISDSPFastMath PRIVATE arm_vlog_f32.c)
 target_sources(CMSISDSPFastMath PRIVATE arm_vexp_f32.c)
 
+if ((NOT ARMAC5) AND (NOT DISABLEFLOAT16))
+target_sources(CMSISDSPFastMath PRIVATE arm_vlog_f16.c)
+target_sources(CMSISDSPFastMath PRIVATE arm_vexp_f16.c)
+target_sources(CMSISDSPFastMath PRIVATE arm_vinverse_f16.c)
+endif()
+
 
 ### Includes
 target_include_directories(CMSISDSPFastMath PUBLIC "${DSP}/Include")
diff --git a/CMSIS/DSP/Source/FastMathFunctions/FastMathFunctionsF16.c b/CMSIS/DSP/Source/FastMathFunctions/FastMathFunctionsF16.c
new file mode 100755
index 0000000..a14e899
--- /dev/null
+++ b/CMSIS/DSP/Source/FastMathFunctions/FastMathFunctionsF16.c
@@ -0,0 +1,31 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        FastMathFunctions.c
+ * Description:  Combination of all fast math function source files.
+ *
+ * $Date:        16. March 2020
+ * $Revision:    V1.1.0
+ *
+ * Target Processor: Cortex-M cores
+ * -------------------------------------------------------------------- */
+/*
+ * Copyright (C) 2019-2020 ARM Limited or its affiliates. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "arm_vexp_f16.c"
+#include "arm_vlog_f16.c"
+#include "arm_vinverse_f16.c"
diff --git a/CMSIS/DSP/Source/FastMathFunctions/arm_vexp_f16.c b/CMSIS/DSP/Source/FastMathFunctions/arm_vexp_f16.c
new file mode 100755
index 0000000..abfaf74
--- /dev/null
+++ b/CMSIS/DSP/Source/FastMathFunctions/arm_vexp_f16.c
@@ -0,0 +1,84 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_vlog_f16.c
+ * Description:  Fast vectorized log
+ *
+ * $Date:        15. Octoboer 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/fast_math_functions_f16.h"
+
+#if defined(ARM_FLOAT16_SUPPORTED)
+
+#include "arm_common_tables.h"
+
+#if (defined(ARM_MATH_MVEF) || defined(ARM_MATH_HELIUM) || defined(ARM_MATH_NEON) || defined(ARM_MATH_NEON_EXPERIMENTAL)) && !defined(ARM_MATH_AUTOVECTORIZE)
+#include "arm_vec_math_f16.h"
+#endif
+
+
+void arm_vexp_f16(
+  const float16_t * pSrc,
+        float16_t * pDst,
+        uint32_t blockSize)
+{
+   uint32_t blkCnt; 
+
+#if (defined(ARM_MATH_MVEF) || defined(ARM_MATH_HELIUM)) && !defined(ARM_MATH_AUTOVECTORIZE)
+
+   f16x8_t src;
+   f16x8_t dst;
+
+   blkCnt = blockSize >> 3;
+
+   while (blkCnt > 0U)
+   {
+      src = vld1q(pSrc);
+      dst = vexpq_f16(src);
+      vst1q(pDst, dst);
+
+      pSrc += 8;
+      pDst += 8;
+      /* Decrement loop counter */
+      blkCnt--;
+   }
+
+   blkCnt = blockSize & 7;
+#else
+   blkCnt = blockSize;
+#endif
+
+   while (blkCnt > 0U)
+   {
+      /* C = log(A) */
+  
+      /* Calculate log and store result in destination buffer. */
+      *pDst++ = expf(*pSrc++);
+  
+      /* Decrement loop counter */
+      blkCnt--;
+   }
+}
+
+#endif /* #if defined(ARM_FLOAT16_SUPPORTED) */ 
+
diff --git a/CMSIS/DSP/Source/FastMathFunctions/arm_vinverse_f16.c b/CMSIS/DSP/Source/FastMathFunctions/arm_vinverse_f16.c
new file mode 100755
index 0000000..8eb6488
--- /dev/null
+++ b/CMSIS/DSP/Source/FastMathFunctions/arm_vinverse_f16.c
@@ -0,0 +1,81 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_vinverse_f16.c
+ * Description:  Fast vectorized inverse
+ *
+ * $Date:        15. Octoboer 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/fast_math_functions_f16.h"
+
+#if defined(ARM_FLOAT16_SUPPORTED)
+
+#include "arm_common_tables.h"
+
+#if (defined(ARM_MATH_MVEF) || defined(ARM_MATH_HELIUM) || defined(ARM_MATH_NEON) || defined(ARM_MATH_NEON_EXPERIMENTAL)) && !defined(ARM_MATH_AUTOVECTORIZE)
+#include "arm_vec_math_f16.h"
+#endif
+
+void arm_vinverse_f16(
+  const float16_t * pSrc,
+        float16_t * pDst,
+        uint32_t blockSize)
+{
+   uint32_t blkCnt; 
+
+#if (defined(ARM_MATH_MVEF) || defined(ARM_MATH_HELIUM)) && !defined(ARM_MATH_AUTOVECTORIZE)
+
+   f16x8_t src;
+   f16x8_t dst;
+
+   blkCnt = blockSize >> 3;
+
+   while (blkCnt > 0U)
+   {
+      src = vld1q(pSrc);
+      dst = vrecip_hiprec_f16(src);
+      vst1q(pDst, dst);
+
+      pSrc += 8;
+      pDst += 8;
+      /* Decrement loop counter */
+      blkCnt--;
+   }
+
+   blkCnt = blockSize & 7;
+#else
+   blkCnt = blockSize;
+#endif
+
+   while (blkCnt > 0U)
+   {
+      
+      *pDst++ = 1.0 / *pSrc++;
+  
+      /* Decrement loop counter */
+      blkCnt--;
+   }
+}
+
+#endif /* #if defined(ARM_FLOAT16_SUPPORTED) */ 
+
diff --git a/CMSIS/DSP/Source/FastMathFunctions/arm_vlog_f16.c b/CMSIS/DSP/Source/FastMathFunctions/arm_vlog_f16.c
new file mode 100755
index 0000000..88aa4c1
--- /dev/null
+++ b/CMSIS/DSP/Source/FastMathFunctions/arm_vlog_f16.c
@@ -0,0 +1,83 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_vlog_f16.c
+ * Description:  Fast vectorized log
+ *
+ * $Date:        15. Octoboer 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/fast_math_functions_f16.h"
+
+#if defined(ARM_FLOAT16_SUPPORTED)
+
+#include "arm_common_tables.h"
+
+#if (defined(ARM_MATH_MVEF) || defined(ARM_MATH_HELIUM) || defined(ARM_MATH_NEON) || defined(ARM_MATH_NEON_EXPERIMENTAL)) && !defined(ARM_MATH_AUTOVECTORIZE)
+#include "arm_vec_math_f16.h"
+#endif
+
+void arm_vlog_f16(
+  const float16_t * pSrc,
+        float16_t * pDst,
+        uint32_t blockSize)
+{
+   uint32_t blkCnt; 
+
+#if (defined(ARM_MATH_MVEF) || defined(ARM_MATH_HELIUM)) && !defined(ARM_MATH_AUTOVECTORIZE)
+
+   f16x8_t src;
+   f16x8_t dst;
+
+   blkCnt = blockSize >> 3;
+
+   while (blkCnt > 0U)
+   {
+      src = vld1q(pSrc);
+      dst = vlogq_f16(src);
+      vst1q(pDst, dst);
+
+      pSrc += 8;
+      pDst += 8;
+      /* Decrement loop counter */
+      blkCnt--;
+   }
+
+   blkCnt = blockSize & 7;
+#else
+   blkCnt = blockSize;
+#endif
+
+   while (blkCnt > 0U)
+   {
+      /* C = log(A) */
+  
+      /* Calculate log and store result in destination buffer. */
+      *pDst++ = logf(*pSrc++);
+  
+      /* Decrement loop counter */
+      blkCnt--;
+   }
+}
+
+#endif /* #if defined(ARM_FLOAT16_SUPPORTED) */ 
+
diff --git a/CMSIS/DSP/Source/SVMFunctions/arm_svm_linear_init_f32.c b/CMSIS/DSP/Source/SVMFunctions/arm_svm_linear_init_f32.c
index b0739b1..7617126 100755
--- a/CMSIS/DSP/Source/SVMFunctions/arm_svm_linear_init_f32.c
+++ b/CMSIS/DSP/Source/SVMFunctions/arm_svm_linear_init_f32.c
@@ -33,9 +33,18 @@
  *
  */
 
+/**
+  @ingroup groupSVM
+ */
 
 /**
- * @addtogroup groupSVM
+  @defgroup linearsvm Linear SVM
+
+  Linear SVM classifier
+ */
+
+/**
+ * @addtogroup linearsvm
  * @{
  */
 
@@ -77,5 +86,5 @@
 
 
 /**
- * @} end of groupSVM group
+ * @} end of linearsvm group
  */
diff --git a/CMSIS/DSP/Source/SVMFunctions/arm_svm_linear_predict_f32.c b/CMSIS/DSP/Source/SVMFunctions/arm_svm_linear_predict_f32.c
index 9cba7d1..c45426a 100755
--- a/CMSIS/DSP/Source/SVMFunctions/arm_svm_linear_predict_f32.c
+++ b/CMSIS/DSP/Source/SVMFunctions/arm_svm_linear_predict_f32.c
@@ -30,7 +30,7 @@
 
 
 /**
- * @addtogroup groupSVM
+ * @addtogroup linearsvm
  * @{
  */
 
@@ -449,5 +449,5 @@
 #endif /* defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE) */
 
 /**
- * @} end of groupSVM group
+ * @} end of linearsvm group
  */
diff --git a/CMSIS/DSP/Source/SVMFunctions/arm_svm_polynomial_init_f32.c b/CMSIS/DSP/Source/SVMFunctions/arm_svm_polynomial_init_f32.c
index 45e89ef..5d42770 100755
--- a/CMSIS/DSP/Source/SVMFunctions/arm_svm_polynomial_init_f32.c
+++ b/CMSIS/DSP/Source/SVMFunctions/arm_svm_polynomial_init_f32.c
@@ -28,12 +28,20 @@
 #include <limits.h>
 #include <math.h>
 
-
 /**
- * @addtogroup groupSVM
- * @{
+  @ingroup groupSVM
  */
 
+/**
+  @defgroup polysvm Polynomial SVM
+
+  Polynomial SVM classifier
+ */
+
+/**
+ * @addtogroup polysvm
+ * @{
+ */
 
 
 /**
@@ -83,5 +91,5 @@
 
 
 /**
- * @} end of groupSVM group
+ * @} end of polysvm group
  */
diff --git a/CMSIS/DSP/Source/SVMFunctions/arm_svm_polynomial_predict_f32.c b/CMSIS/DSP/Source/SVMFunctions/arm_svm_polynomial_predict_f32.c
index 4a108ff..5fca1e5 100755
--- a/CMSIS/DSP/Source/SVMFunctions/arm_svm_polynomial_predict_f32.c
+++ b/CMSIS/DSP/Source/SVMFunctions/arm_svm_polynomial_predict_f32.c
@@ -33,7 +33,7 @@
 #endif
 
 /**
- * @addtogroup groupSVM
+ * @addtogroup polysvm
  * @{
  */
 
@@ -484,5 +484,5 @@
 
 
 /**
- * @} end of groupSVM group
+ * @} end of polysvm group
  */
diff --git a/CMSIS/DSP/Source/SVMFunctions/arm_svm_rbf_init_f32.c b/CMSIS/DSP/Source/SVMFunctions/arm_svm_rbf_init_f32.c
index c00f9eb..5e0d371 100755
--- a/CMSIS/DSP/Source/SVMFunctions/arm_svm_rbf_init_f32.c
+++ b/CMSIS/DSP/Source/SVMFunctions/arm_svm_rbf_init_f32.c
@@ -28,9 +28,19 @@
 #include <limits.h>
 #include <math.h>
 
+/**
+  @ingroup groupSVM
+ */
 
 /**
- * @addtogroup groupSVM
+  @defgroup rbfsvm RBF SVM
+
+  RBF SVM classifier
+ */
+
+
+/**
+ * @addtogroup rbfsvm
  * @{
  */
 
@@ -75,5 +85,5 @@
 
 
 /**
- * @} end of groupSVM group
+ * @} end of rbfsvm group
  */
diff --git a/CMSIS/DSP/Source/SVMFunctions/arm_svm_rbf_predict_f32.c b/CMSIS/DSP/Source/SVMFunctions/arm_svm_rbf_predict_f32.c
index 0907dbb..d29a216 100755
--- a/CMSIS/DSP/Source/SVMFunctions/arm_svm_rbf_predict_f32.c
+++ b/CMSIS/DSP/Source/SVMFunctions/arm_svm_rbf_predict_f32.c
@@ -30,7 +30,7 @@
 
 
 /**
- * @addtogroup groupSVM
+ * @addtogroup rbfsvm
  * @{
  */
 
@@ -517,5 +517,5 @@
 #endif /* defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE) */
 
 /**
- * @} end of groupSVM group
+ * @} end of rbfsvm group
  */
diff --git a/CMSIS/DSP/Source/SVMFunctions/arm_svm_sigmoid_init_f32.c b/CMSIS/DSP/Source/SVMFunctions/arm_svm_sigmoid_init_f32.c
index 407b68f..2017289 100755
--- a/CMSIS/DSP/Source/SVMFunctions/arm_svm_sigmoid_init_f32.c
+++ b/CMSIS/DSP/Source/SVMFunctions/arm_svm_sigmoid_init_f32.c
@@ -28,9 +28,18 @@
 #include <limits.h>
 #include <math.h>
 
+/**
+  @ingroup groupSVM
+ */
 
 /**
- * @addtogroup groupSVM
+  @defgroup sigmoidsvm Sigmoid SVM
+
+  Sigmoid SVM classifier
+ */
+
+/**
+ * @addtogroup sigmoidsvm
  * @{
  */
 
@@ -77,5 +86,5 @@
 
 
 /**
- * @} end of groupSVM group
+ * @} end of sigmoidsvm group
  */
diff --git a/CMSIS/DSP/Source/SVMFunctions/arm_svm_sigmoid_predict_f32.c b/CMSIS/DSP/Source/SVMFunctions/arm_svm_sigmoid_predict_f32.c
index f15e236..8397226 100755
--- a/CMSIS/DSP/Source/SVMFunctions/arm_svm_sigmoid_predict_f32.c
+++ b/CMSIS/DSP/Source/SVMFunctions/arm_svm_sigmoid_predict_f32.c
@@ -29,7 +29,7 @@
 #include <math.h>
 
 /**
- * @addtogroup groupSVM
+ * @addtogroup sigmoidsvm
  * @{
  */
 
@@ -481,5 +481,5 @@
 #endif /* defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE) */
 
 /**
- * @} end of groupSVM group
+ * @} end of sigmoidsvm group
  */
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/CMakeLists.txt b/CMSIS/DSP/Source/StatisticsFunctions/CMakeLists.txt
index b4310f3..67833f1 100644
--- a/CMSIS/DSP/Source/StatisticsFunctions/CMakeLists.txt
+++ b/CMSIS/DSP/Source/StatisticsFunctions/CMakeLists.txt
@@ -59,4 +59,9 @@
 target_sources(CMSISDSPStatistics PRIVATE arm_rms_f16.c)
 target_sources(CMSISDSPStatistics PRIVATE arm_std_f16.c)
 target_sources(CMSISDSPStatistics PRIVATE arm_var_f16.c)
+target_sources(CMSISDSPStatistics PRIVATE arm_entropy_f16.c)
+target_sources(CMSISDSPStatistics PRIVATE arm_kullback_leibler_f16.c)
+target_sources(CMSISDSPStatistics PRIVATE arm_logsumexp_dot_prod_f16.c)
+target_sources(CMSISDSPStatistics PRIVATE arm_logsumexp_f16.c)
+target_sources(CMSISDSPStatistics PRIVATE arm_max_no_idx_f16.c)
 endif()
\ No newline at end of file
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/StatisticsFunctionsF16.c b/CMSIS/DSP/Source/StatisticsFunctions/StatisticsFunctionsF16.c
index b542e97..14ceb1d 100755
--- a/CMSIS/DSP/Source/StatisticsFunctions/StatisticsFunctionsF16.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/StatisticsFunctionsF16.c
@@ -33,3 +33,8 @@
 #include "arm_rms_f16.c"
 #include "arm_std_f16.c"
 #include "arm_var_f16.c"
+#include "arm_entropy_f16.c"
+#include "arm_kullback_leibler_f16.c"
+#include "arm_logsumexp_dot_prod_f16.c"
+#include "arm_logsumexp_f16.c"
+#include "arm_max_no_idx_f16.c"
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_entropy_f16.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_entropy_f16.c
new file mode 100755
index 0000000..a350178
--- /dev/null
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_entropy_f16.c
@@ -0,0 +1,138 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_logsumexp_f16.c
+ * Description:  LogSumExp
+ *
+ *
+ * Target Processor: Cortex-M and Cortex-A 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/statistics_functions_f16.h"
+
+#if defined(ARM_FLOAT16_SUPPORTED)
+
+#include <limits.h>
+#include <math.h>
+
+/**
+  @ingroup groupStats
+ */
+
+/**
+  @defgroup Entropy Entropy
+
+  Computes the entropy of a distribution
+
+ */
+
+/**
+ * @addtogroup Entropy
+ * @{
+ */
+
+
+/**
+ * @brief Entropy
+ *
+ * @param[in]  pSrcA        Array of input values.
+ * @param[in]  blockSize    Number of samples in the input array.
+ * @return     Entropy      -Sum(p ln p)
+ *
+ */
+
+#if defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE)
+
+#include "arm_helium_utils.h"
+#include "arm_vec_math_f16.h"
+
+float16_t arm_entropy_f16(const float16_t * pSrcA,uint32_t blockSize)
+{
+    uint32_t        blkCnt;
+    float16_t       accum=0.0f,p;
+
+
+    blkCnt = blockSize;
+
+    f16x8_t         vSum = vdupq_n_f16(0.0f);
+    /* Compute 4 outputs at a time */
+    blkCnt = blockSize >> 3U;
+
+    while (blkCnt > 0U)
+    {
+        f16x8_t         vecIn = vld1q(pSrcA);
+
+        vSum = vaddq_f16(vSum, vmulq(vecIn, vlogq_f16(vecIn)));
+
+        /*
+         * Decrement the blockSize loop counter
+         * Advance vector source and destination pointers
+         */
+        pSrcA += 8;
+        blkCnt --;
+    }
+
+    accum = vecAddAcrossF16Mve(vSum);
+
+    /* Tail */
+    blkCnt = blockSize & 0x7;
+    while(blkCnt > 0)
+    {
+       p = *pSrcA++;
+       accum += p * logf(p);
+       
+       blkCnt--;
+    
+    }
+
+    return (-accum);
+}
+
+#else
+
+float16_t arm_entropy_f16(const float16_t * pSrcA,uint32_t blockSize)
+{
+    const float16_t *pIn;
+    uint32_t blkCnt;
+    float16_t accum, p;
+ 
+    pIn = pSrcA;
+    blkCnt = blockSize;
+
+    accum = 0.0f;
+
+    while(blkCnt > 0)
+    {
+       p = *pIn++;
+       accum += p * logf(p);
+       
+       blkCnt--;
+    
+    }
+
+    return(-accum);
+}
+#endif /* defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE) */
+
+/**
+ * @} end of Entropy group
+ */
+
+#endif /* #if defined(ARM_FLOAT16_SUPPORTED) */ 
+
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_entropy_f32.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_entropy_f32.c
index 60c325d..ede07ec 100755
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_entropy_f32.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_entropy_f32.c
@@ -30,7 +30,7 @@
 
 
 /**
- * @addtogroup groupStats
+ * @addtogroup Entropy
  * @{
  */
 
@@ -168,5 +168,5 @@
 #endif /* defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE) */
 
 /**
- * @} end of groupStats group
+ * @} end of Entropy group
  */
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_entropy_f64.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_entropy_f64.c
index d2a6a49..7a9de50 100755
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_entropy_f64.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_entropy_f64.c
@@ -29,7 +29,7 @@
 #include <math.h>
 
 /**
- * @addtogroup groupStats
+ * @addtogroup Entropy
  * @{
  */
 
@@ -67,5 +67,5 @@
 }
 
 /**
- * @} end of groupStats group
+ * @} end of Entropy group
  */
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_kullback_leibler_f16.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_kullback_leibler_f16.c
new file mode 100755
index 0000000..06f4ba6
--- /dev/null
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_kullback_leibler_f16.c
@@ -0,0 +1,150 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_logsumexp_f16.c
+ * Description:  LogSumExp
+ *
+ *
+ * Target Processor: Cortex-M and Cortex-A 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/statistics_functions_f16.h"
+
+#if defined(ARM_FLOAT16_SUPPORTED)
+
+#include <limits.h>
+#include <math.h>
+
+/**
+  @ingroup groupStats
+ */
+
+/**
+  @defgroup Kullback-Leibler Kullback-Leibler divergence
+
+  Computes the Kullback-Leibler divergence between two distributions
+
+ */
+
+
+/**
+ * @addtogroup Kullback-Leibler
+ * @{
+ */
+
+
+/**
+ * @brief Kullback-Leibler
+ *
+ * Distribution A may contain 0 with Neon version.
+ * Result will be right but some exception flags will be set.
+ *
+ * Distribution B must not contain 0 probability.
+ *
+ * @param[in]  *pSrcA         points to an array of input values for probaility distribution A.
+ * @param[in]  *pSrcB         points to an array of input values for probaility distribution B.
+ * @param[in]  blockSize      number of samples in the input array.
+ * @return Kullback-Leibler divergence D(A || B)
+ *
+ */
+
+#if defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE)
+
+#include "arm_helium_utils.h"
+#include "arm_vec_math_f16.h"
+
+float16_t arm_kullback_leibler_f16(const float16_t * pSrcA,const float16_t * pSrcB,uint32_t blockSize)
+{
+    uint32_t blkCnt;
+    float16_t accum, pA,pB;
+ 
+    
+    blkCnt = blockSize;
+
+    accum = 0.0f;
+
+    f16x8_t         vSum = vdupq_n_f16(0.0f);
+    blkCnt = blockSize >> 3;
+    while(blkCnt > 0)
+    {
+        f16x8_t         vecA = vld1q(pSrcA);
+        f16x8_t         vecB = vld1q(pSrcB);
+        f16x8_t         vRatio;
+
+        vRatio = vdiv_f16(vecB, vecA);
+        vSum = vaddq_f16(vSum, vmulq(vecA, vlogq_f16(vRatio)));
+
+        /*
+         * Decrement the blockSize loop counter
+         * Advance vector source and destination pointers
+         */
+        pSrcA += 8;
+        pSrcB += 8;
+        blkCnt --;
+    }
+
+    accum = vecAddAcrossF16Mve(vSum);
+
+    blkCnt = blockSize & 7;
+    while(blkCnt > 0)
+    {
+       pA = *pSrcA++;
+       pB = *pSrcB++;
+       accum += pA * logf(pB / pA);
+       
+       blkCnt--;
+    
+    }
+
+    return(-accum);
+}
+
+#else
+float16_t arm_kullback_leibler_f16(const float16_t * pSrcA,const float16_t * pSrcB,uint32_t blockSize)
+{
+    const float16_t *pInA, *pInB;
+    uint32_t blkCnt;
+    float16_t accum, pA,pB;
+ 
+    pInA = pSrcA;
+    pInB = pSrcB;
+    blkCnt = blockSize;
+
+    accum = 0.0f;
+
+    while(blkCnt > 0)
+    {
+       pA = *pInA++;
+       pB = *pInB++;
+       accum += pA * logf(pB / pA);
+       
+       blkCnt--;
+    
+    }
+
+    return(-accum);
+}
+#endif /* defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE) */
+
+/**
+ * @} end of Kullback-Leibler group
+ */
+
+#endif /* #if defined(ARM_FLOAT16_SUPPORTED) */ 
+
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_kullback_leibler_f32.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_kullback_leibler_f32.c
index b664757..e7817cb 100755
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_kullback_leibler_f32.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_kullback_leibler_f32.c
@@ -30,7 +30,7 @@
 
 
 /**
- * @addtogroup groupStats
+ * @addtogroup Kullback-Leibler
  * @{
  */
 
@@ -187,5 +187,5 @@
 #endif /* defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE) */
 
 /**
- * @} end of groupStats group
+ * @} end of Kullback-Leibler group
  */
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_kullback_leibler_f64.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_kullback_leibler_f64.c
index ded2c6c..e56dc82 100755
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_kullback_leibler_f64.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_kullback_leibler_f64.c
@@ -29,7 +29,7 @@
 #include <math.h>
 
 /**
- * @addtogroup groupStats
+ * @addtogroup Kullback-Leibler
  * @{
  */
 
@@ -69,5 +69,5 @@
 }
 
 /**
- * @} end of groupStats group
+ * @} end of Kullback-Leibler group
  */
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_logsumexp_dot_prod_f16.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_logsumexp_dot_prod_f16.c
new file mode 100755
index 0000000..b76d17b
--- /dev/null
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_logsumexp_dot_prod_f16.c
@@ -0,0 +1,82 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_logsumexp_f16.c
+ * Description:  LogSumExp
+ *
+ *
+ * Target Processor: Cortex-M and Cortex-A 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/statistics_functions_f16.h"
+
+#if defined(ARM_FLOAT16_SUPPORTED)
+
+#include <limits.h>
+#include <math.h>
+
+/**
+  @ingroup groupStats
+ */
+
+/**
+  @defgroup LogSumExp LogSumExp
+
+  LogSumExp optimizations to compute sum of probabilities with Gaussian distributions
+
+ */
+
+/**
+ * @addtogroup LogSumExp
+ * @{
+ */
+
+
+/**
+ * @brief Dot product with log arithmetic
+ *
+ * Vectors are containing the log of the samples
+ *
+ * @param[in]       *pSrcA points to the first input vector
+ * @param[in]       *pSrcB points to the second input vector
+ * @param[in]       blockSize number of samples in each vector
+ * @param[in]       *pTmpBuffer temporary buffer of length blockSize
+ * @return The log of the dot product.
+ *
+ */
+
+
+float16_t arm_logsumexp_dot_prod_f16(const float16_t * pSrcA,
+  const float16_t * pSrcB,
+  uint32_t blockSize,
+  float16_t *pTmpBuffer)
+{
+    float16_t result;
+    arm_add_f16((float16_t*)pSrcA, (float16_t*)pSrcB, pTmpBuffer, blockSize);
+
+    result = arm_logsumexp_f16(pTmpBuffer, blockSize);
+    return(result);
+}
+
+/**
+ * @} end of LogSumExp group
+ */
+
+#endif /* #if defined(ARM_FLOAT16_SUPPORTED) */ 
+
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_logsumexp_dot_prod_f32.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_logsumexp_dot_prod_f32.c
index 12ff09b..a473ef4 100755
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_logsumexp_dot_prod_f32.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_logsumexp_dot_prod_f32.c
@@ -30,7 +30,7 @@
 
 
 /**
- * @addtogroup groupStats
+ * @addtogroup LogSumExp
  * @{
  */
 
@@ -62,5 +62,5 @@
 }
 
 /**
- * @} end of groupStats group
+ * @} end of LogSumExp group
  */
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_logsumexp_f16.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_logsumexp_f16.c
new file mode 100755
index 0000000..c851bf7
--- /dev/null
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_logsumexp_f16.c
@@ -0,0 +1,170 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_logsumexp_f16.c
+ * Description:  LogSumExp
+ *
+ *
+ * Target Processor: Cortex-M and Cortex-A 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/statistics_functions_f16.h"
+
+#if defined(ARM_FLOAT16_SUPPORTED)
+
+#include <limits.h>
+#include <math.h>
+
+
+/**
+ * @addtogroup LogSumExp
+ * @{
+ */
+
+
+/**
+ * @brief Computation of the LogSumExp
+ *
+ * In probabilistic computations, the dynamic of the probability values can be very
+ * wide because they come from gaussian functions.
+ * To avoid underflow and overflow issues, the values are represented by their log.
+ * In this representation, multiplying the original exp values is easy : their logs are added.
+ * But adding the original exp values is requiring some special handling and it is the
+ * goal of the LogSumExp function.
+ *
+ * If the values are x1...xn, the function is computing:
+ *
+ * ln(exp(x1) + ... + exp(xn)) and the computation is done in such a way that
+ * rounding issues are minimised.
+ *
+ * The max xm of the values is extracted and the function is computing:
+ * xm + ln(exp(x1 - xm) + ... + exp(xn - xm))
+ *
+ * @param[in]  *in         Pointer to an array of input values.
+ * @param[in]  blockSize   Number of samples in the input array.
+ * @return LogSumExp
+ *
+ */
+
+#if defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE)
+
+#include "arm_helium_utils.h"
+#include "arm_vec_math_f16.h"
+
+float16_t arm_logsumexp_f16(const float16_t *in, uint32_t blockSize)
+{
+    float16_t       maxVal;
+    const float16_t *pIn;
+    int32_t         blkCnt;
+    float16_t       accum=0.0f16;
+    float16_t       tmp;
+
+
+    arm_max_no_idx_f16((float16_t *) in, blockSize, &maxVal);
+
+
+    blkCnt = blockSize;
+    pIn = in;
+
+
+    f16x8_t         vSum = vdupq_n_f16(0.0f16);
+    blkCnt = blockSize >> 3;
+    while(blkCnt > 0)
+    {
+        f16x8_t         vecIn = vld1q(pIn);
+        f16x8_t         vecExp;
+
+        vecExp = vexpq_f16(vsubq_n_f16(vecIn, maxVal));
+
+        vSum = vaddq_f16(vSum, vecExp);
+
+        /*
+         * Decrement the blockSize loop counter
+         * Advance vector source and destination pointers
+         */
+        pIn += 8;
+        blkCnt --;
+    }
+
+    /* sum + log */
+    accum = vecAddAcrossF16Mve(vSum);
+
+    blkCnt = blockSize & 0x7;
+    while(blkCnt > 0)
+    {
+       tmp = *pIn++;
+       accum += expf(tmp - maxVal);
+       blkCnt--;
+    
+    }
+
+    accum = maxVal + logf(accum);
+
+    return (accum);
+}
+
+#else
+float16_t arm_logsumexp_f16(const float16_t *in, uint32_t blockSize)
+{
+    float16_t maxVal;
+    float16_t tmp;
+    const float16_t *pIn;
+    uint32_t blkCnt;
+    float16_t accum;
+ 
+    pIn = in;
+    blkCnt = blockSize;
+
+    maxVal = *pIn++;
+    blkCnt--;
+
+    while(blkCnt > 0)
+    {
+       tmp = *pIn++;
+
+       if (tmp > maxVal)
+       {
+          maxVal = tmp;
+       }
+       blkCnt--;
+    
+    }
+
+    blkCnt = blockSize;
+    pIn = in;
+    accum = 0;
+    while(blkCnt > 0)
+    {
+       tmp = *pIn++;
+       accum += expf(tmp - maxVal);
+       blkCnt--;
+    
+    }
+    accum = maxVal + logf(accum);
+
+    return(accum);
+}
+#endif /* defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE) */
+
+/**
+ * @} end of LogSumExp group
+ */
+
+#endif /* #if defined(ARM_FLOAT16_SUPPORTED) */ 
+
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_logsumexp_f32.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_logsumexp_f32.c
index c2e1926..2233e04 100755
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_logsumexp_f32.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_logsumexp_f32.c
@@ -30,7 +30,7 @@
 
 
 /**
- * @addtogroup groupStats
+ * @addtogroup LogSumExp
  * @{
  */
 
@@ -271,5 +271,5 @@
 #endif /* defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE) */
 
 /**
- * @} end of groupStats group
+ * @} end of LogSumExp group
  */
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_max_no_idx_f16.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_max_no_idx_f16.c
new file mode 100755
index 0000000..88a6bee
--- /dev/null
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_max_no_idx_f16.c
@@ -0,0 +1,144 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_max_no_idx_f16.c
+ * Description:  Maximum value of a floating-point vector without returning the index
+ *
+ * $Date:        16. October 2020
+ * $Revision:    V1.6.0
+ *
+ * Target Processor: Cortex-M and Cortex-A 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/statistics_functions_f16.h"
+
+#if defined(ARM_FLOAT16_SUPPORTED)
+
+#if (defined(ARM_MATH_NEON) || defined(ARM_MATH_MVEF)) && !defined(ARM_MATH_AUTOVECTORIZE)
+#include <limits.h>
+#endif
+
+/**
+  @ingroup groupStats
+ */
+
+
+/**
+  @addtogroup Max
+  @{
+ */
+
+/**
+  @brief         Maximum value of a floating-point vector.
+  @param[in]     pSrc       points to the input vector
+  @param[in]     blockSize  number of samples in input vector
+  @param[out]    pResult    maximum value returned here
+  @return        none
+ */
+
+#if defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE)
+
+void arm_max_no_idx_f16(
+    const float16_t *pSrc,
+    uint32_t   blockSize,
+    float16_t *pResult)
+{
+   f16x8_t     vecSrc;
+   f16x8_t     curExtremValVec = vdupq_n_f16(F16_MIN);
+   float16_t   maxValue = F16_MIN;
+   float16_t   newVal;
+   uint32_t    blkCnt;
+
+   /* Loop unrolling: Compute 4 outputs at a time */
+   blkCnt = blockSize >> 3U;
+
+   while (blkCnt > 0U)
+   {
+
+        vecSrc = vldrhq_f16(pSrc);
+        /*
+         * update per-lane max.
+         */
+        curExtremValVec = vmaxnmq(vecSrc, curExtremValVec);
+        /*
+         * Decrement the blockSize loop counter
+         * Advance vector source and destination pointers
+         */
+        pSrc += 8;
+        blkCnt --;
+    }
+    /*
+     * Get max value across the vector
+     */
+    maxValue = vmaxnmvq(maxValue, curExtremValVec);
+
+    blkCnt = blockSize & 7;
+
+    while (blkCnt > 0U)
+    {
+        newVal = *pSrc++;
+
+        /* compare for the maximum value */
+        if (maxValue < newVal)
+        {
+            /* Update the maximum value and it's index */
+            maxValue = newVal;
+        }
+
+        blkCnt --;
+    }
+
+    *pResult = maxValue;
+}
+
+#else
+
+void arm_max_no_idx_f16(
+    const float16_t *pSrc,
+    uint32_t   blockSize,
+    float16_t *pResult)
+{
+   float16_t   maxValue = F16_MIN;
+   float16_t   newVal;
+
+   while (blockSize > 0U)
+   {
+       newVal = *pSrc++;
+   
+       /* compare for the maximum value */
+       if (maxValue < newVal)
+       {
+           /* Update the maximum value and it's index */
+           maxValue = newVal;
+       }
+   
+       blockSize --;
+   }
+    
+   *pResult = maxValue;
+}
+
+#endif /* defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE) */
+
+/**
+  @} end of Max group
+ */
+
+#endif /* #if defined(ARM_FLOAT16_SUPPORTED) */ 
+
diff --git a/CMSIS/DSP/Source/StatisticsFunctions/arm_var_f16.c b/CMSIS/DSP/Source/StatisticsFunctions/arm_var_f16.c
index 727a594..af35628 100755
--- a/CMSIS/DSP/Source/StatisticsFunctions/arm_var_f16.c
+++ b/CMSIS/DSP/Source/StatisticsFunctions/arm_var_f16.c
@@ -74,15 +74,13 @@
     arm_mean_f16(pSrc, blockSize, &fMean);
 
 /* 6.14 bug */
-#if defined(SDCOMP_xxx)
-#if defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6100100)
+#if defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6100100) && (__ARMCC_VERSION < 6150001)
     __asm volatile(
         "   vmov.i32                     %[acc], #0 \n"
         : [acc] "+t"(sumVec)
         : 
         : );
 #endif
-#endif
 
     blkCnt = blockSize;
     do {
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_barycenter_f16.c b/CMSIS/DSP/Source/SupportFunctions/arm_barycenter_f16.c
index 18ae0f4..14bcc86 100755
--- a/CMSIS/DSP/Source/SupportFunctions/arm_barycenter_f16.c
+++ b/CMSIS/DSP/Source/SupportFunctions/arm_barycenter_f16.c
@@ -31,11 +31,21 @@
 #include <limits.h>
 #include <math.h>
 
-
 /**
   @ingroup groupSupport
  */
 
+/**
+  @defgroup barycenter Barycenter
+
+  Barycenter of weighted vectors
+ */
+
+/**
+  @addtogroup barycenter
+  @{
+ */
+
 
 /**
  * @brief Barycenter
@@ -255,7 +265,7 @@
 #endif /* defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE) */
 
 /**
- * @} end of groupSupport group
+ * @} end of barycenter group
  */
 
 #endif /* #if defined(ARM_FLOAT16_SUPPORTED) */ 
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_barycenter_f32.c b/CMSIS/DSP/Source/SupportFunctions/arm_barycenter_f32.c
index e804093..a08fab1 100755
--- a/CMSIS/DSP/Source/SupportFunctions/arm_barycenter_f32.c
+++ b/CMSIS/DSP/Source/SupportFunctions/arm_barycenter_f32.c
@@ -30,7 +30,7 @@
 
 
 /**
-  @ingroup groupSupport
+  @ingroup barycenter
  */
 
 
@@ -408,5 +408,5 @@
 #endif /* defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE) */
 
 /**
- * @} end of groupSupport group
+ * @} end of barycenter group
  */
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_weighted_sum_f16.c b/CMSIS/DSP/Source/SupportFunctions/arm_weighted_sum_f16.c
index 1f3df94..1d2c6ef 100755
--- a/CMSIS/DSP/Source/SupportFunctions/arm_weighted_sum_f16.c
+++ b/CMSIS/DSP/Source/SupportFunctions/arm_weighted_sum_f16.c
@@ -32,9 +32,19 @@
 
 #if defined(ARM_FLOAT16_SUPPORTED)
 
+/**
+  @ingroup groupSupport
+ */
 
 /**
- * @addtogroup groupSupport
+  @defgroup weightedsum Weighted Sum
+
+  Weighted sum of values
+ */
+
+
+/**
+ * @addtogroup weightedsum
  * @{
  */
 
@@ -128,7 +138,7 @@
 #endif /* defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE) */
 
 /**
- * @} end of groupSupport group
+ * @} end of weightedsum group
  */
 
 #endif /* #if defined(ARM_FLOAT16_SUPPORTED) */ 
diff --git a/CMSIS/DSP/Source/SupportFunctions/arm_weighted_sum_f32.c b/CMSIS/DSP/Source/SupportFunctions/arm_weighted_sum_f32.c
index 9bbfe1d..fd8d535 100755
--- a/CMSIS/DSP/Source/SupportFunctions/arm_weighted_sum_f32.c
+++ b/CMSIS/DSP/Source/SupportFunctions/arm_weighted_sum_f32.c
@@ -31,7 +31,7 @@
 #include "dsp/support_functions.h"
 
 /**
- * @addtogroup groupSupport
+ * @addtogroup weightedsum
  * @{
  */
 
@@ -182,5 +182,5 @@
 #endif /* defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE) */
 
 /**
- * @} end of groupSupport group
+ * @} end of weightedsum group
  */
diff --git a/CMSIS/DSP/Testing/CMakeLists.txt b/CMSIS/DSP/Testing/CMakeLists.txt
index ebc02ec..e6f4670 100644
--- a/CMSIS/DSP/Testing/CMakeLists.txt
+++ b/CMSIS/DSP/Testing/CMakeLists.txt
@@ -339,6 +339,7 @@
   Source/Tests/TransformRF16.cpp
   Source/Tests/SupportTestsF16.cpp
   Source/Tests/SupportBarTestsF16.cpp
+  Source/Tests/FastMathF16.cpp
   )
 endif()
 endif() 
diff --git a/CMSIS/DSP/Testing/Include/Tests/FastMathF16.h b/CMSIS/DSP/Testing/Include/Tests/FastMathF16.h
new file mode 100755
index 0000000..d0fcf84
--- /dev/null
+++ b/CMSIS/DSP/Testing/Include/Tests/FastMathF16.h
@@ -0,0 +1,23 @@
+#include "Test.h"
+#include "Pattern.h"
+
+#include "dsp/fast_math_functions_f16.h"
+
+class FastMathF16:public Client::Suite
+    {
+        public:
+            FastMathF16(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 "FastMathF16_decl.h"
+            
+            Client::Pattern<float16_t> input;
+
+            Client::LocalPattern<float16_t> output;
+
+            // Reference patterns are not loaded when we are in dump mode
+            Client::RefPattern<float16_t> ref;
+
+           
+    };
diff --git a/CMSIS/DSP/Testing/PatternGeneration/FastMath.py b/CMSIS/DSP/Testing/PatternGeneration/FastMath.py
index e0b1cb5..6dc9b13 100755
--- a/CMSIS/DSP/Testing/PatternGeneration/FastMath.py
+++ b/CMSIS/DSP/Testing/PatternGeneration/FastMath.py
@@ -28,7 +28,7 @@
     vals[0] = -0.4
     sqrtvals[0] = 0.0
     
-    if format != 0:
+    if format != 0 and format != 16:
         angles=np.concatenate((a1,a2,a1))
         angles = angles / (2*math.pi)
     config.writeInput(1, angles,"Angles")
@@ -43,7 +43,7 @@
     config.writeInput(1, samples,"Samples")
 
 
-def writeTestsF32(config,format):
+def writeTestsFloat(config,format):
     writeTests(config,format)
 
     data1 = np.random.randn(20)
@@ -61,22 +61,30 @@
     v = np.exp(samples)
     config.writeReference(1, v,"Exp")
 
-    # For benchmarks
+    # For benchmarks and other tests
     samples=np.random.randn(NBSAMPLES)
     samples = np.abs(Tools.normalize(samples))
     config.writeInput(1, samples,"Samples")
 
+    v = 1.0 / samples
+    config.writeReference(1, v,"Inverse")
+
+
+
+
     
 def generatePatterns():
     PATTERNDIR = os.path.join("Patterns","DSP","FastMath","FastMath")
     PARAMDIR = os.path.join("Parameters","DSP","FastMath","FastMath")
     
     configf32=Tools.Config(PATTERNDIR,PARAMDIR,"f32")
+    configf16=Tools.Config(PATTERNDIR,PARAMDIR,"f16")
     configq31=Tools.Config(PATTERNDIR,PARAMDIR,"q31")
     configq15=Tools.Config(PATTERNDIR,PARAMDIR,"q15")
     
     
-    writeTestsF32(configf32,0)
+    writeTestsFloat(configf32,0)
+    writeTestsFloat(configf16,16)
     writeTests(configq31,31)
     writeTests(configq15,15)
 
diff --git a/CMSIS/DSP/Testing/PatternGeneration/Stats.py b/CMSIS/DSP/Testing/PatternGeneration/Stats.py
index e0610eb..9ff92ad 100755
--- a/CMSIS/DSP/Testing/PatternGeneration/Stats.py
+++ b/CMSIS/DSP/Testing/PatternGeneration/Stats.py
@@ -116,6 +116,13 @@
     config.writeInputS16(nb, dims,"Dims")
     config.writeReference(nb, outputs,"RefLogSumExpDot")
 
+def writeF16OnlyTests(config,nb):
+    entropyTest(config,nb)
+    logsumexpTest(config,nb+1)
+    klTest(config,nb+2)
+    logSumExpDotTest(config,nb+3)
+    return(nb+4)
+
 def writeF32OnlyTests(config,nb):
     entropyTest(config,nb)
     logsumexpTest(config,nb+1)
@@ -357,6 +364,7 @@
     writeTests(configq7,1,7)
 
     nb=writeTests(configf16,1,16)
+    nb=writeF16OnlyTests(configf16,22)
 
 if __name__ == '__main__':
   generatePatterns()
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/Angles1_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/Angles1_f16.txt
new file mode 100755
index 0000000..23d60b6
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/Angles1_f16.txt
@@ -0,0 +1,48 @@
+H
+23
+// 0.000000
+0x0
+// 0.785398
+0x3a48
+// 1.570796
+0x3e48
+// 2.356194
+0x40b6
+// 3.141593
+0x4248
+// 3.926991
+0x43db
+// 4.712389
+0x44b6
+// 6.283184
+0x4648
+// -0.785398
+0xba48
+// -1.570796
+0xbe48
+// -2.356194
+0xc0b6
+// -3.141593
+0xc248
+// -3.926991
+0xc3db
+// -4.712389
+0xc4b6
+// -6.283186
+0xc648
+// 6.283185
+0x4648
+// 7.068583
+0x4712
+// 7.853982
+0x47db
+// 8.639380
+0x4852
+// 9.424778
+0x48b6
+// 10.210176
+0x491b
+// 10.995574
+0x497f
+// 12.566370
+0x4a48
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/Cos1_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/Cos1_f16.txt
new file mode 100755
index 0000000..1162760
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/Cos1_f16.txt
@@ -0,0 +1,48 @@
+H
+23
+// 1.000000
+0x3c00
+// 0.707107
+0x39a8
+// 0.000000
+0x0
+// -0.707107
+0xb9a8
+// -1.000000
+0xbc00
+// -0.707107
+0xb9a8
+// -0.000000
+0x8000
+// 1.000000
+0x3c00
+// 0.707107
+0x39a8
+// 0.000000
+0x0
+// -0.707107
+0xb9a8
+// -1.000000
+0xbc00
+// -0.707107
+0xb9a8
+// -0.000000
+0x8000
+// 1.000000
+0x3c00
+// 1.000000
+0x3c00
+// 0.707107
+0x39a8
+// 0.000000
+0x0
+// -0.707107
+0xb9a8
+// -1.000000
+0xbc00
+// -0.707107
+0xb9a8
+// -0.000000
+0x8000
+// 1.000000
+0x3c00
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/Exp1_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/Exp1_f16.txt
new file mode 100755
index 0000000..ee6530f
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/Exp1_f16.txt
@@ -0,0 +1,106 @@
+H
+52
+// 1.000000
+0x3c00
+// 2.718282
+0x4170
+// 0.670320
+0x395d
+// 0.681354
+0x3973
+// 0.692569
+0x398a
+// 0.703969
+0x39a2
+// 0.715557
+0x39b9
+// 0.727336
+0x39d2
+// 0.739308
+0x39ea
+// 0.751477
+0x3a03
+// 0.763847
+0x3a1c
+// 0.776420
+0x3a36
+// 0.789201
+0x3a50
+// 0.802191
+0x3a6b
+// 0.815396
+0x3a86
+// 0.828818
+0x3aa1
+// 0.842460
+0x3abd
+// 0.856328
+0x3ada
+// 0.870423
+0x3af7
+// 0.884751
+0x3b14
+// 0.899315
+0x3b32
+// 0.914118
+0x3b50
+// 0.929165
+0x3b6f
+// 0.944459
+0x3b8e
+// 0.960005
+0x3bae
+// 0.975808
+0x3bce
+// 0.991870
+0x3bef
+// 1.008197
+0x3c08
+// 1.024792
+0x3c19
+// 1.041661
+0x3c2b
+// 1.058807
+0x3c3c
+// 1.076236
+0x3c4e
+// 1.093951
+0x3c60
+// 1.111958
+0x3c73
+// 1.130261
+0x3c85
+// 1.148866
+0x3c98
+// 1.167777
+0x3cac
+// 1.186999
+0x3cbf
+// 1.206538
+0x3cd3
+// 1.226398
+0x3ce8
+// 1.246585
+0x3cfd
+// 1.267105
+0x3d12
+// 1.287962
+0x3d27
+// 1.309163
+0x3d3d
+// 1.330712
+0x3d53
+// 1.352616
+0x3d69
+// 1.374881
+0x3d80
+// 1.397513
+0x3d97
+// 1.420516
+0x3daf
+// 1.443899
+0x3dc7
+// 1.467666
+0x3ddf
+// 1.491825
+0x3df8
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/ExpInput1_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/ExpInput1_f16.txt
new file mode 100755
index 0000000..97b0292
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/ExpInput1_f16.txt
@@ -0,0 +1,106 @@
+H
+52
+// 0.000000
+0x0
+// 1.000000
+0x3c00
+// -0.400000
+0xb666
+// -0.383673
+0xb624
+// -0.367347
+0xb5e1
+// -0.351020
+0xb59e
+// -0.334694
+0xb55b
+// -0.318367
+0xb518
+// -0.302041
+0xb4d5
+// -0.285714
+0xb492
+// -0.269388
+0xb44f
+// -0.253061
+0xb40d
+// -0.236735
+0xb393
+// -0.220408
+0xb30e
+// -0.204082
+0xb288
+// -0.187755
+0xb202
+// -0.171429
+0xb17c
+// -0.155102
+0xb0f7
+// -0.138776
+0xb071
+// -0.122449
+0xafd6
+// -0.106122
+0xaecb
+// -0.089796
+0xadbf
+// -0.073469
+0xacb4
+// -0.057143
+0xab50
+// -0.040816
+0xa939
+// -0.024490
+0xa645
+// -0.008163
+0xa02e
+// 0.008163
+0x202e
+// 0.024490
+0x2645
+// 0.040816
+0x2939
+// 0.057143
+0x2b50
+// 0.073469
+0x2cb4
+// 0.089796
+0x2dbf
+// 0.106122
+0x2ecb
+// 0.122449
+0x2fd6
+// 0.138776
+0x3071
+// 0.155102
+0x30f7
+// 0.171429
+0x317c
+// 0.187755
+0x3202
+// 0.204082
+0x3288
+// 0.220408
+0x330e
+// 0.236735
+0x3393
+// 0.253061
+0x340d
+// 0.269388
+0x344f
+// 0.285714
+0x3492
+// 0.302041
+0x34d5
+// 0.318367
+0x3518
+// 0.334694
+0x355b
+// 0.351020
+0x359e
+// 0.367347
+0x35e1
+// 0.383673
+0x3624
+// 0.400000
+0x3666
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/Inverse1_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/Inverse1_f16.txt
new file mode 100755
index 0000000..feaf72c
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/Inverse1_f16.txt
@@ -0,0 +1,514 @@
+H
+256
+// 13.282788
+0x4aa4
+// 74.795943
+0x54ad
+// 4.534229
+0x4489
+// 3.745299
+0x437e
+// 2.439216
+0x40e1
+// 6.181096
+0x462e
+// 4.004707
+0x4401
+// 11.283654
+0x49a4
+// 1.847747
+0x3f64
+// 5.549382
+0x458d
+// 1.536148
+0x3e25
+// 30.005060
+0x4f80
+// 31.475099
+0x4fde
+// 17.543195
+0x4c63
+// 2.419261
+0x40d7
+// 4.349753
+0x445a
+// 4.841152
+0x44d7
+// 8.101053
+0x480d
+// 7.775466
+0x47c7
+// 10.960573
+0x497b
+// 1.935619
+0x3fbe
+// 14.846755
+0x4b6c
+// 2.538388
+0x4114
+// 2.328174
+0x40a8
+// 1.187660
+0x3cc0
+// 9.459035
+0x48bb
+// 6.531679
+0x4688
+// 28.111782
+0x4f07
+// 2.775787
+0x418d
+// 1.610728
+0x3e71
+// 4.295367
+0x444c
+// 8.503271
+0x4840
+// 6.431921
+0x466f
+// 1.644415
+0x3e94
+// 5.022253
+0x4506
+// 46.675156
+0x51d6
+// 7.923678
+0x47ec
+// 1.986785
+0x3ff2
+// 12.264212
+0x4a22
+// 5.127496
+0x4521
+// 3.526537
+0x430e
+// 3.099069
+0x4233
+// 11.281743
+0x49a4
+// 5.690813
+0x45b1
+// 25.784472
+0x4e72
+// 31.172867
+0x4fcb
+// 5.406237
+0x4568
+// 1.003867
+0x3c04
+// 2.474874
+0x40f3
+// 5.259653
+0x4542
+// 6.833799
+0x46d5
+// 2.146320
+0x404b
+// 4.075154
+0x4413
+// 6.755841
+0x46c1
+// 3.298992
+0x4299
+// 3.211582
+0x426c
+// 154.452815
+0x58d4
+// 2.467569
+0x40ef
+// 13.353500
+0x4aad
+// 2.897118
+0x41cb
+// 11.198146
+0x4999
+// 2.095061
+0x4031
+// 5.949994
+0x45f3
+// 502.264324
+0x5fd9
+// 9.785310
+0x48e5
+// 24.679848
+0x4e2c
+// 9.141598
+0x4892
+// 4.842086
+0x44d8
+// 2.305929
+0x409d
+// 2.553810
+0x411c
+// 6.529844
+0x4688
+// 12.616308
+0x4a4f
+// 10.160835
+0x4915
+// 4.741947
+0x44be
+// 3.062033
+0x4220
+// 15.072163
+0x4b89
+// 19.437242
+0x4cdc
+// 304.465872
+0x5cc2
+// 3.697883
+0x4365
+// 1.200278
+0x3ccd
+// 12.039526
+0x4a05
+// 6.285477
+0x4649
+// 41.940922
+0x513e
+// 14.367260
+0x4b2f
+// 2.844286
+0x41b0
+// 2.434156
+0x40de
+// 18.803330
+0x4cb3
+// 3.590405
+0x432e
+// 45.916673
+0x51bd
+// 16.744938
+0x4c30
+// 9.513594
+0x48c2
+// 266.925697
+0x5c2c
+// 141.996772
+0x5870
+// 1.273840
+0x3d18
+// 4.064921
+0x4411
+// 3.059166
+0x421e
+// 3.063974
+0x4221
+// 12.270595
+0x4a23
+// 17.040917
+0x4c43
+// 1.259633
+0x3d0a
+// 2.821234
+0x41a4
+// 6.853772
+0x46db
+// 7.454620
+0x4774
+// 1.609663
+0x3e70
+// 11.592823
+0x49cc
+// 8.194720
+0x4819
+// 2.951149
+0x41e7
+// 2.312031
+0x40a0
+// 9.662832
+0x48d5
+// 1.513853
+0x3e0e
+// 93.930231
+0x55df
+// 91.754898
+0x55bc
+// 2.936342
+0x41df
+// 36.983413
+0x509f
+// 1.683027
+0x3ebb
+// 3.835847
+0x43ac
+// 4.018890
+0x4405
+// 8.686859
+0x4858
+// 3.832640
+0x43aa
+// 5.651256
+0x45a7
+// 167.057056
+0x5938
+// 10.621388
+0x4950
+// 2.039201
+0x4014
+// 3.169404
+0x4257
+// 121.699150
+0x579b
+// 1.962375
+0x3fd9
+// 3.588653
+0x432d
+// 6.551802
+0x468d
+// 2.273146
+0x408c
+// 6.206085
+0x4635
+// 1.260120
+0x3d0a
+// 1.328843
+0x3d51
+// 7.193014
+0x4731
+// 5.073456
+0x4513
+// 4.099381
+0x4419
+// 14.640782
+0x4b52
+// 8.470057
+0x483c
+// 35.841993
+0x507b
+// 25.902541
+0x4e7a
+// 8.278306
+0x4824
+// 6.579874
+0x4694
+// 3.183432
+0x425e
+// 3.157985
+0x4251
+// 30.987647
+0x4fbf
+// 4.960553
+0x44f6
+// 28.319462
+0x4f14
+// 3.360753
+0x42b9
+// 13.357196
+0x4aae
+// 7.617099
+0x479e
+// 12.543129
+0x4a46
+// 3.206430
+0x426a
+// 24.728589
+0x4e2f
+// 2.883364
+0x41c4
+// 4.739018
+0x44bd
+// 11.599710
+0x49cd
+// 9.538527
+0x48c5
+// 16.661500
+0x4c2a
+// 2.736285
+0x4179
+// 6.631133
+0x46a2
+// 11.402722
+0x49b4
+// 1.858302
+0x3f6f
+// 11.107479
+0x498e
+// 2.144436
+0x404a
+// 3.471115
+0x42f1
+// 7.195419
+0x4732
+// 2.250048
+0x4080
+// 5.355021
+0x455b
+// 2.175851
+0x405a
+// 6.975780
+0x46fa
+// 10.830583
+0x496a
+// 4.039975
+0x440a
+// 19.297319
+0x4cd3
+// 14.568924
+0x4b49
+// 1.760573
+0x3f0b
+// 4.344142
+0x4458
+// 1.911989
+0x3fa6
+// 125.811431
+0x57dd
+// 6.147110
+0x4626
+// 3.323063
+0x42a5
+// 141.465322
+0x586c
+// 2.428645
+0x40db
+// 5.057885
+0x450f
+// 17.465511
+0x4c5e
+// 5.487886
+0x457d
+// 3.693320
+0x4363
+// 5.722713
+0x45b9
+// 2.815819
+0x41a2
+// 17.741187
+0x4c6f
+// 156.719386
+0x58e6
+// 9.622230
+0x48d0
+// 3.582729
+0x432a
+// 7.122762
+0x471f
+// 3.801118
+0x439a
+// 21.059681
+0x4d44
+// 7.002552
+0x4701
+// 1.681254
+0x3eba
+// 26.237564
+0x4e8f
+// 2.196333
+0x4065
+// 3.057311
+0x421d
+// 43.974325
+0x517f
+// 4.871455
+0x44df
+// 58.682025
+0x5356
+// 1.935719
+0x3fbe
+// 50.178529
+0x5246
+// 14.081570
+0x4b0a
+// 2.276558
+0x408e
+// 15.295183
+0x4ba6
+// 3.718388
+0x4370
+// 3.839651
+0x43ae
+// 3.527233
+0x430e
+// 2.428714
+0x40dc
+// 11.062054
+0x4988
+// 5.778279
+0x45c7
+// 2.901877
+0x41ce
+// 4.614082
+0x449d
+// 2.846533
+0x41b1
+// 8.471893
+0x483c
+// 5.528337
+0x4587
+// 4.069745
+0x4412
+// 4.311615
+0x4450
+// 2.410911
+0x40d2
+// 4.794024
+0x44cb
+// 1.952501
+0x3fcf
+// 2.350841
+0x40b4
+// 2.240902
+0x407b
+// 5.954644
+0x45f4
+// 6.121318
+0x461f
+// 6.649823
+0x46a6
+// 16.968851
+0x4c3e
+// 1.000000
+0x3c00
+// 5.024657
+0x4506
+// 5.569085
+0x4592
+// 8.212669
+0x481b
+// 2.487941
+0x40fa
+// 1.966557
+0x3fde
+// 3.370575
+0x42be
+// 29.614104
+0x4f67
+// 3.196824
+0x4265
+// 1.470828
+0x3de2
+// 8.924856
+0x4876
+// 3.005112
+0x4203
+// 3.024847
+0x420d
+// 4.340886
+0x4457
+// 1.894158
+0x3f94
+// 3.562064
+0x4320
+// 3.233189
+0x4277
+// 1.628957
+0x3e84
+// 2.791436
+0x4195
+// 8.235823
+0x481e
+// 8.808764
+0x4868
+// 36.005208
+0x5080
+// 12.766707
+0x4a62
+// 5.964918
+0x45f7
+// 1.671910
+0x3eb0
+// 2.699011
+0x4166
+// 16.411460
+0x4c1a
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/Log1_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/Log1_f16.txt
new file mode 100755
index 0000000..d7ded17
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/Log1_f16.txt
@@ -0,0 +1,52 @@
+H
+25
+// -2.302585
+0xc09b
+// -1.203973
+0xbcd1
+// -0.693147
+0xb98c
+// 0.000000
+0x0
+// 0.693147
+0x398c
+// -2.516839
+0xc109
+// 0.000000
+0x0
+// -5.908962
+0xc5e9
+// -1.345933
+0xbd62
+// -0.923815
+0xbb64
+// -4.046497
+0xc40c
+// -2.530234
+0xc10f
+// -0.724334
+0xb9cb
+// -1.436949
+0xbdbf
+// -1.327187
+0xbd4f
+// -1.741553
+0xbef7
+// -0.066722
+0xac45
+// -0.616041
+0xb8ee
+// -0.822195
+0xba94
+// -1.579204
+0xbe51
+// -1.333689
+0xbd56
+// -0.860545
+0xbae2
+// -1.080309
+0xbc52
+// -1.977120
+0xbfe9
+// -1.877663
+0xbf83
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/LogInput1_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/LogInput1_f16.txt
new file mode 100755
index 0000000..3fde3aa
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/LogInput1_f16.txt
@@ -0,0 +1,52 @@
+H
+25
+// 0.100000
+0x2e66
+// 0.300000
+0x34cd
+// 0.500000
+0x3800
+// 1.000000
+0x3c00
+// 2.000000
+0x4000
+// 0.080714
+0x2d2a
+// 1.000000
+0x3c00
+// 0.002715
+0x198f
+// 0.260297
+0x342a
+// 0.397001
+0x365a
+// 0.017484
+0x247a
+// 0.079640
+0x2d19
+// 0.484647
+0x37c1
+// 0.237652
+0x339b
+// 0.265222
+0x343e
+// 0.175248
+0x319c
+// 0.935456
+0x3b7c
+// 0.540078
+0x3852
+// 0.439466
+0x3708
+// 0.206139
+0x3299
+// 0.263503
+0x3437
+// 0.422932
+0x36c4
+// 0.339491
+0x356f
+// 0.138467
+0x306e
+// 0.152947
+0x30e5
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/Samples1_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/Samples1_f16.txt
new file mode 100755
index 0000000..295c0a4
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/Samples1_f16.txt
@@ -0,0 +1,514 @@
+H
+256
+// 0.075285
+0x2cd1
+// 0.013370
+0x22d8
+// 0.220545
+0x330f
+// 0.267001
+0x3446
+// 0.409968
+0x368f
+// 0.161784
+0x312d
+// 0.249706
+0x33fe
+// 0.088624
+0x2dac
+// 0.541200
+0x3854
+// 0.180200
+0x31c4
+// 0.650979
+0x3935
+// 0.033328
+0x2844
+// 0.031771
+0x2811
+// 0.057002
+0x2b4c
+// 0.413349
+0x369d
+// 0.229898
+0x335b
+// 0.206562
+0x329c
+// 0.123441
+0x2fe6
+// 0.128610
+0x301e
+// 0.091236
+0x2dd7
+// 0.516631
+0x3822
+// 0.067355
+0x2c50
+// 0.393951
+0x364e
+// 0.429521
+0x36df
+// 0.841992
+0x3abc
+// 0.105719
+0x2ec4
+// 0.153100
+0x30e6
+// 0.035572
+0x288e
+// 0.360258
+0x35c4
+// 0.620837
+0x38f7
+// 0.232809
+0x3373
+// 0.117602
+0x2f87
+// 0.155475
+0x30fa
+// 0.608119
+0x38dd
+// 0.199114
+0x325f
+// 0.021425
+0x257c
+// 0.126204
+0x300a
+// 0.503326
+0x3807
+// 0.081538
+0x2d38
+// 0.195027
+0x323e
+// 0.283564
+0x3489
+// 0.322678
+0x352a
+// 0.088639
+0x2dac
+// 0.175722
+0x31a0
+// 0.038783
+0x28f7
+// 0.032079
+0x281b
+// 0.184972
+0x31eb
+// 0.996148
+0x3bf8
+// 0.404061
+0x3677
+// 0.190127
+0x3216
+// 0.146331
+0x30af
+// 0.465914
+0x3774
+// 0.245390
+0x33da
+// 0.148020
+0x30bd
+// 0.303123
+0x34da
+// 0.311373
+0x34fb
+// 0.006474
+0x1ea1
+// 0.405257
+0x367c
+// 0.074887
+0x2ccb
+// 0.345171
+0x3586
+// 0.089300
+0x2db7
+// 0.477313
+0x37a3
+// 0.168067
+0x3161
+// 0.001991
+0x1814
+// 0.102194
+0x2e8a
+// 0.040519
+0x2930
+// 0.109390
+0x2f00
+// 0.206523
+0x329c
+// 0.433665
+0x36f0
+// 0.391572
+0x3644
+// 0.153143
+0x30e7
+// 0.079262
+0x2d13
+// 0.098417
+0x2e4c
+// 0.210884
+0x32c0
+// 0.326580
+0x353a
+// 0.066347
+0x2c3f
+// 0.051448
+0x2a96
+// 0.003284
+0x1aba
+// 0.270425
+0x3454
+// 0.833140
+0x3aaa
+// 0.083060
+0x2d51
+// 0.159097
+0x3117
+// 0.023843
+0x261b
+// 0.069603
+0x2c74
+// 0.351582
+0x35a0
+// 0.410820
+0x3693
+// 0.053182
+0x2acf
+// 0.278520
+0x3475
+// 0.021779
+0x2593
+// 0.059720
+0x2ba5
+// 0.105113
+0x2eba
+// 0.003746
+0x1bac
+// 0.007042
+0x1f36
+// 0.785028
+0x3a48
+// 0.246007
+0x33df
+// 0.326886
+0x353b
+// 0.326374
+0x3539
+// 0.081496
+0x2d37
+// 0.058682
+0x2b83
+// 0.793882
+0x3a5a
+// 0.354455
+0x35ac
+// 0.145905
+0x30ab
+// 0.134145
+0x304b
+// 0.621248
+0x38f8
+// 0.086260
+0x2d85
+// 0.122030
+0x2fcf
+// 0.338851
+0x356c
+// 0.432520
+0x36ec
+// 0.103489
+0x2ea0
+// 0.660566
+0x3949
+// 0.010646
+0x2173
+// 0.010899
+0x2195
+// 0.340560
+0x3573
+// 0.027039
+0x26ec
+// 0.594168
+0x38c1
+// 0.260699
+0x342c
+// 0.248825
+0x33f6
+// 0.115116
+0x2f5e
+// 0.260917
+0x342d
+// 0.176952
+0x31aa
+// 0.005986
+0x1e21
+// 0.094150
+0x2e07
+// 0.490388
+0x37d9
+// 0.315517
+0x350c
+// 0.008217
+0x2035
+// 0.509586
+0x3814
+// 0.278656
+0x3475
+// 0.152630
+0x30e2
+// 0.439919
+0x370a
+// 0.161132
+0x3128
+// 0.793575
+0x3a59
+// 0.752534
+0x3a05
+// 0.139024
+0x3073
+// 0.197104
+0x324f
+// 0.243939
+0x33ce
+// 0.068302
+0x2c5f
+// 0.118063
+0x2f8e
+// 0.027900
+0x2724
+// 0.038606
+0x28f1
+// 0.120798
+0x2fbb
+// 0.151979
+0x30dd
+// 0.314126
+0x3507
+// 0.316658
+0x3511
+// 0.032271
+0x2821
+// 0.201590
+0x3273
+// 0.035311
+0x2885
+// 0.297552
+0x34c3
+// 0.074866
+0x2ccb
+// 0.131284
+0x3033
+// 0.079725
+0x2d1a
+// 0.311873
+0x34fd
+// 0.040439
+0x292d
+// 0.346817
+0x358d
+// 0.211014
+0x32c1
+// 0.086209
+0x2d84
+// 0.104838
+0x2eb6
+// 0.060019
+0x2baf
+// 0.365459
+0x35d9
+// 0.150804
+0x30d3
+// 0.087698
+0x2d9d
+// 0.538126
+0x384e
+// 0.090029
+0x2dc3
+// 0.466323
+0x3776
+// 0.288092
+0x349c
+// 0.138977
+0x3073
+// 0.444435
+0x371c
+// 0.186741
+0x31fa
+// 0.459590
+0x375a
+// 0.143353
+0x3096
+// 0.092331
+0x2de9
+// 0.247526
+0x33ec
+// 0.051821
+0x2aa2
+// 0.068639
+0x2c65
+// 0.567997
+0x388b
+// 0.230195
+0x335e
+// 0.523016
+0x382f
+// 0.007948
+0x2012
+// 0.162678
+0x3135
+// 0.300927
+0x34d1
+// 0.007069
+0x1f3d
+// 0.411752
+0x3697
+// 0.197711
+0x3254
+// 0.057256
+0x2b54
+// 0.182220
+0x31d5
+// 0.270759
+0x3455
+// 0.174742
+0x3197
+// 0.355136
+0x35af
+// 0.056366
+0x2b37
+// 0.006381
+0x1e89
+// 0.103926
+0x2ea7
+// 0.279117
+0x3477
+// 0.140395
+0x307e
+// 0.263080
+0x3436
+// 0.047484
+0x2a14
+// 0.142805
+0x3092
+// 0.594794
+0x38c2
+// 0.038113
+0x28e1
+// 0.455304
+0x3749
+// 0.327085
+0x353c
+// 0.022741
+0x25d2
+// 0.205277
+0x3292
+// 0.017041
+0x245d
+// 0.516604
+0x3822
+// 0.019929
+0x251a
+// 0.071015
+0x2c8c
+// 0.439260
+0x3707
+// 0.065380
+0x2c2f
+// 0.268934
+0x344e
+// 0.260440
+0x342b
+// 0.283508
+0x3489
+// 0.411741
+0x3696
+// 0.090399
+0x2dc9
+// 0.173062
+0x318a
+// 0.344605
+0x3584
+// 0.216728
+0x32ef
+// 0.351305
+0x359f
+// 0.118037
+0x2f8e
+// 0.180886
+0x31ca
+// 0.245716
+0x33dd
+// 0.231932
+0x336c
+// 0.414781
+0x36a3
+// 0.208593
+0x32ad
+// 0.512164
+0x3819
+// 0.425380
+0x36ce
+// 0.446249
+0x3724
+// 0.167936
+0x3160
+// 0.163364
+0x313a
+// 0.150380
+0x30d0
+// 0.058932
+0x2b8b
+// 1.000000
+0x3c00
+// 0.199019
+0x325e
+// 0.179563
+0x31bf
+// 0.121763
+0x2fcb
+// 0.401939
+0x366e
+// 0.508503
+0x3811
+// 0.296685
+0x34bf
+// 0.033768
+0x2852
+// 0.312811
+0x3501
+// 0.679889
+0x3970
+// 0.112047
+0x2f2c
+// 0.332766
+0x3553
+// 0.330595
+0x354a
+// 0.230368
+0x335f
+// 0.527939
+0x3839
+// 0.280736
+0x347e
+// 0.309292
+0x34f3
+// 0.613890
+0x38e9
+// 0.358239
+0x35bb
+// 0.121421
+0x2fc5
+// 0.113523
+0x2f44
+// 0.027774
+0x271c
+// 0.078329
+0x2d03
+// 0.167647
+0x315d
+// 0.598118
+0x38c9
+// 0.370506
+0x35ee
+// 0.060933
+0x2bcd
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/Sin1_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/Sin1_f16.txt
new file mode 100755
index 0000000..5cf9624
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/Sin1_f16.txt
@@ -0,0 +1,48 @@
+H
+23
+// 0.000000
+0x0
+// 0.707107
+0x39a8
+// 1.000000
+0x3c00
+// 0.707107
+0x39a8
+// 0.000000
+0x0
+// -0.707107
+0xb9a8
+// -1.000000
+0xbc00
+// -0.000001
+0x8011
+// -0.707107
+0xb9a8
+// -1.000000
+0xbc00
+// -0.707107
+0xb9a8
+// -0.000000
+0x8000
+// 0.707107
+0x39a8
+// 1.000000
+0x3c00
+// -0.000001
+0x8011
+// -0.000000
+0x8000
+// 0.707107
+0x39a8
+// 1.000000
+0x3c00
+// 0.707107
+0x39a8
+// 0.000000
+0x0
+// -0.707107
+0xb9a8
+// -1.000000
+0xbc00
+// -0.000001
+0x8011
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/Sqrt1_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/Sqrt1_f16.txt
new file mode 100755
index 0000000..6e52506
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/Sqrt1_f16.txt
@@ -0,0 +1,18 @@
+H
+8
+// 0.000000
+0x0
+// 0.000000
+0x0
+// 0.316228
+0x350f
+// 1.000000
+0x3c00
+// 1.414214
+0x3da8
+// 1.732051
+0x3eee
+// 1.870829
+0x3f7c
+// 1.897367
+0x3f97
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/SqrtInput1_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/SqrtInput1_f16.txt
new file mode 100755
index 0000000..9226084
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/FastMath/FastMathF16/SqrtInput1_f16.txt
@@ -0,0 +1,18 @@
+H
+8
+// -0.400000
+0xb666
+// 0.000000
+0x0
+// 0.100000
+0x2e66
+// 1.000000
+0x3c00
+// 2.000000
+0x4000
+// 3.000000
+0x4200
+// 3.500000
+0x4300
+// 3.600000
+0x4333
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/Dims22_s16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/Dims22_s16.txt
new file mode 100755
index 0000000..b8c911f
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/Dims22_s16.txt
@@ -0,0 +1,24 @@
+H
+11
+// 10
+0x000A
+// 3
+0x0003
+// 8
+0x0008
+// 9
+0x0009
+// 12
+0x000C
+// 3
+0x0003
+// 8
+0x0008
+// 9
+0x0009
+// 12
+0x000C
+// 3
+0x0003
+// 8
+0x0008
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/Dims23_s16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/Dims23_s16.txt
new file mode 100755
index 0000000..b8c911f
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/Dims23_s16.txt
@@ -0,0 +1,24 @@
+H
+11
+// 10
+0x000A
+// 3
+0x0003
+// 8
+0x0008
+// 9
+0x0009
+// 12
+0x000C
+// 3
+0x0003
+// 8
+0x0008
+// 9
+0x0009
+// 12
+0x000C
+// 3
+0x0003
+// 8
+0x0008
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/Dims24_s16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/Dims24_s16.txt
new file mode 100755
index 0000000..b8c911f
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/Dims24_s16.txt
@@ -0,0 +1,24 @@
+H
+11
+// 10
+0x000A
+// 3
+0x0003
+// 8
+0x0008
+// 9
+0x0009
+// 12
+0x000C
+// 3
+0x0003
+// 8
+0x0008
+// 9
+0x0009
+// 12
+0x000C
+// 3
+0x0003
+// 8
+0x0008
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/Dims25_s16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/Dims25_s16.txt
new file mode 100755
index 0000000..b8c911f
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/Dims25_s16.txt
@@ -0,0 +1,24 @@
+H
+11
+// 10
+0x000A
+// 3
+0x0003
+// 8
+0x0008
+// 9
+0x0009
+// 12
+0x000C
+// 3
+0x0003
+// 8
+0x0008
+// 9
+0x0009
+// 12
+0x000C
+// 3
+0x0003
+// 8
+0x0008
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/Input22_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/Input22_f16.txt
new file mode 100755
index 0000000..7313f06
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/Input22_f16.txt
@@ -0,0 +1,152 @@
+H
+75
+// 0.322836
+0x352a
+// 0.198525
+0x325a
+// 0.478639
+0x37a9
+// 0.026143
+0x26b1
+// 0.098991
+0x2e56
+// 0.143166
+0x3095
+// 0.085541
+0x2d7a
+// 0.068541
+0x2c63
+// 0.211153
+0x32c2
+// 0.181133
+0x31cc
+// 0.185330
+0x31ee
+// 0.089042
+0x2db3
+// 0.147745
+0x30ba
+// 0.095482
+0x2e1c
+// 0.040729
+0x2937
+// 0.148711
+0x30c2
+// 0.132218
+0x303b
+// 0.141558
+0x3088
+// 0.075285
+0x2cd1
+// 0.129230
+0x3023
+// 0.111640
+0x2f25
+// 0.120751
+0x2fba
+// 0.013239
+0x22c7
+// 0.060065
+0x2bb0
+// 0.127400
+0x3014
+// 0.094640
+0x2e0f
+// 0.106302
+0x2ece
+// 0.047992
+0x2a25
+// 0.051468
+0x2a97
+// 0.125120
+0x3001
+// 0.120732
+0x2fba
+// 0.020651
+0x2549
+// 0.144559
+0x30a0
+// 0.511255
+0x3817
+// 0.344187
+0x3582
+// 0.115065
+0x2f5d
+// 0.068302
+0x2c5f
+// 0.205347
+0x3292
+// 0.160452
+0x3122
+// 0.065289
+0x2c2e
+// 0.127455
+0x3014
+// 0.248741
+0x33f6
+// 0.009349
+0x20c9
+// 0.100586
+0x2e70
+// 0.102405
+0x2e8e
+// 0.188184
+0x3206
+// 0.192786
+0x322b
+// 0.160000
+0x311f
+// 0.027773
+0x271c
+// 0.112430
+0x2f32
+// 0.001022
+0x142f
+// 0.114814
+0x2f59
+// 0.056143
+0x2b30
+// 0.122610
+0x2fd9
+// 0.165753
+0x314e
+// 0.135443
+0x3056
+// 0.019103
+0x24e4
+// 0.028083
+0x2730
+// 0.013344
+0x22d5
+// 0.165378
+0x314b
+// 0.075133
+0x2ccf
+// 0.056506
+0x2b3c
+// 0.005057
+0x1d2e
+// 0.157446
+0x310a
+// 0.426391
+0x36d2
+// 0.165223
+0x314a
+// 0.408385
+0x3689
+// 0.017004
+0x245a
+// 0.296335
+0x34be
+// 0.005781
+0x1deb
+// 0.076763
+0x2cea
+// 0.223549
+0x3327
+// 0.055634
+0x2b1f
+// 0.222075
+0x331b
+// 0.102857
+0x2e95
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/Input23_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/Input23_f16.txt
new file mode 100755
index 0000000..4914250
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/Input23_f16.txt
@@ -0,0 +1,152 @@
+H
+75
+// 0.475515
+0x379c
+// 0.270052
+0x3452
+// 0.254433
+0x3412
+// 0.055055
+0x2b0c
+// 0.202411
+0x327a
+// 0.124266
+0x2ff4
+// 0.046322
+0x29ee
+// 0.178920
+0x31ba
+// 0.078939
+0x2d0d
+// 0.111714
+0x2f26
+// 0.202373
+0x327a
+// 0.187127
+0x31fd
+// 0.154401
+0x30f1
+// 0.054258
+0x2af2
+// 0.123123
+0x2fe1
+// 0.099707
+0x2e62
+// 0.011955
+0x221f
+// 0.166787
+0x3156
+// 0.088390
+0x2da8
+// 0.114251
+0x2f50
+// 0.070847
+0x2c89
+// 0.118218
+0x2f91
+// 0.057549
+0x2b5e
+// 0.143263
+0x3096
+// 0.031234
+0x27ff
+// 0.169478
+0x316c
+// 0.045658
+0x29d8
+// 0.170969
+0x3179
+// 0.011664
+0x21f9
+// 0.043150
+0x2986
+// 0.056999
+0x2b4c
+// 0.080973
+0x2d2f
+// 0.301702
+0x34d4
+// 0.375561
+0x3602
+// 0.322737
+0x352a
+// 0.069801
+0x2c78
+// 0.234393
+0x3380
+// 0.188541
+0x3209
+// 0.233770
+0x337b
+// 0.089282
+0x2db7
+// 0.019572
+0x2503
+// 0.075178
+0x2cd0
+// 0.089462
+0x2dba
+// 0.116452
+0x2f74
+// 0.111320
+0x2f20
+// 0.215334
+0x32e4
+// 0.119770
+0x2faa
+// 0.058668
+0x2b82
+// 0.204849
+0x328e
+// 0.009485
+0x20db
+// 0.158639
+0x3114
+// 0.005484
+0x1d9e
+// 0.137894
+0x306a
+// 0.154182
+0x30ef
+// 0.008037
+0x201d
+// 0.040326
+0x2929
+// 0.038281
+0x28e6
+// 0.082787
+0x2d4c
+// 0.046186
+0x29e9
+// 0.118893
+0x2f9c
+// 0.034195
+0x2860
+// 0.090605
+0x2dcc
+// 0.156341
+0x3101
+// 0.092273
+0x2de8
+// 0.578286
+0x38a0
+// 0.049254
+0x2a4e
+// 0.372461
+0x35f6
+// 0.021948
+0x259e
+// 0.059545
+0x2b9f
+// 0.138834
+0x3071
+// 0.220685
+0x3310
+// 0.062460
+0x2bff
+// 0.201480
+0x3273
+// 0.087765
+0x2d9e
+// 0.207282
+0x32a2
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/InputA24_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/InputA24_f16.txt
new file mode 100755
index 0000000..bd93a48
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/InputA24_f16.txt
@@ -0,0 +1,152 @@
+H
+75
+// 0.066000
+0x2c39
+// 0.029316
+0x2781
+// 0.904684
+0x3b3d
+// 0.055167
+0x2b10
+// 0.210490
+0x32bc
+// 0.148163
+0x30be
+// 0.189833
+0x3213
+// 0.038896
+0x28fb
+// 0.138513
+0x306f
+// 0.022802
+0x25d6
+// 0.196137
+0x3247
+// 0.076794
+0x2cea
+// 0.010108
+0x212d
+// 0.220958
+0x3312
+// 0.129726
+0x3027
+// 0.099061
+0x2e57
+// 0.136545
+0x305f
+// 0.232233
+0x336e
+// 0.014392
+0x235e
+// 0.080182
+0x2d22
+// 0.004332
+0x1c70
+// 0.083574
+0x2d59
+// 0.080585
+0x2d28
+// 0.117765
+0x2f89
+// 0.162459
+0x3133
+// 0.019641
+0x2507
+// 0.075399
+0x2cd3
+// 0.144758
+0x30a2
+// 0.064852
+0x2c27
+// 0.130529
+0x302d
+// 0.026411
+0x26c3
+// 0.089694
+0x2dbe
+// 0.345746
+0x3588
+// 0.286879
+0x3497
+// 0.367375
+0x35e1
+// 0.099391
+0x2e5c
+// 0.081898
+0x2d3e
+// 0.075065
+0x2cce
+// 0.179149
+0x31bc
+// 0.135742
+0x3058
+// 0.071606
+0x2c95
+// 0.174743
+0x3197
+// 0.182405
+0x31d6
+// 0.067165
+0x2c4c
+// 0.071465
+0x2c93
+// 0.128327
+0x301b
+// 0.219746
+0x3308
+// 0.104638
+0x2eb2
+// 0.145188
+0x30a5
+// 0.010493
+0x215f
+// 0.166402
+0x3153
+// 0.086577
+0x2d8a
+// 0.134145
+0x304b
+// 0.007296
+0x1f79
+// 0.070782
+0x2c88
+// 0.104541
+0x2eb1
+// 0.119510
+0x2fa6
+// 0.109169
+0x2efd
+// 0.070861
+0x2c89
+// 0.052457
+0x2ab7
+// 0.013363
+0x22d7
+// 0.067024
+0x2c4a
+// 0.142142
+0x308c
+// 0.108710
+0x2ef5
+// 0.182145
+0x31d4
+// 0.359778
+0x35c2
+// 0.458077
+0x3754
+// 0.166456
+0x3154
+// 0.192489
+0x3229
+// 0.161820
+0x312e
+// 0.183137
+0x31dc
+// 0.038873
+0x28fa
+// 0.103665
+0x2ea2
+// 0.103497
+0x2ea0
+// 0.050063
+0x2a68
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/InputA25_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/InputA25_f16.txt
new file mode 100755
index 0000000..e78320d
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/InputA25_f16.txt
@@ -0,0 +1,152 @@
+H
+75
+// -0.959212
+0xbbac
+// -0.670324
+0xb95d
+// -2.232477
+0xc077
+// -1.387737
+0xbd8d
+// -4.329000
+0xc454
+// -1.806354
+0xbf3a
+// -2.749885
+0xc180
+// -1.850150
+0xbf67
+// -1.610971
+0xbe72
+// -3.493034
+0xc2fc
+// -2.050449
+0xc01a
+// -2.407527
+0xc0d1
+// -2.544094
+0xc117
+// -2.448739
+0xc0e6
+// -1.799126
+0xbf32
+// -1.731562
+0xbeed
+// -1.709799
+0xbed7
+// -4.335314
+0xc456
+// -2.254958
+0xc083
+// -2.192057
+0xc062
+// -1.938937
+0xbfc1
+// -2.430444
+0xc0dc
+// -4.417635
+0xc46b
+// -2.415578
+0xc0d5
+// -2.538128
+0xc114
+// -3.305833
+0xc29d
+// -3.357861
+0xc2b7
+// -2.316667
+0xc0a2
+// -2.270840
+0xc08b
+// -2.387285
+0xc0c6
+// -2.154695
+0xc04f
+// -2.140212
+0xc048
+// -1.657703
+0xbea1
+// -0.645126
+0xb929
+// -1.248875
+0xbcff
+// -1.603551
+0xbe6a
+// -2.633577
+0xc144
+// -1.835578
+0xbf58
+// -2.357818
+0xc0b7
+// -3.324743
+0xc2a6
+// -1.648598
+0xbe98
+// -2.037842
+0xc013
+// -2.109987
+0xc038
+// -1.195792
+0xbcc8
+// -2.659356
+0xc152
+// -1.980175
+0xbfec
+// -2.161604
+0xc053
+// -1.794321
+0xbf2d
+// -2.246154
+0xc07e
+// -2.408418
+0xc0d1
+// -3.953591
+0xc3e8
+// -6.752190
+0xc6c1
+// -2.878867
+0xc1c2
+// -2.157113
+0xc050
+// -2.660457
+0xc152
+// -2.162948
+0xc053
+// -3.034069
+0xc211
+// -2.095012
+0xc031
+// -4.019581
+0xc405
+// -1.844349
+0xbf61
+// -2.773310
+0xc18c
+// -2.257637
+0xc084
+// -4.031211
+0xc408
+// -2.102431
+0xc034
+// -1.073346
+0xbc4b
+// -0.878225
+0xbb07
+// -1.408060
+0xbda2
+// -2.406489
+0xc0d0
+// -1.872983
+0xbf7e
+// -2.021809
+0xc00b
+// -1.781448
+0xbf20
+// -1.769868
+0xbf14
+// -1.823862
+0xbf4c
+// -2.119634
+0xc03d
+// -4.550491
+0xc48d
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/InputB24_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/InputB24_f16.txt
new file mode 100755
index 0000000..2eb02f8
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/InputB24_f16.txt
@@ -0,0 +1,152 @@
+H
+75
+// 0.320653
+0x3521
+// 0.199694
+0x3264
+// 0.479652
+0x37ad
+// 0.102236
+0x2e8b
+// 0.105106
+0x2eba
+// 0.201341
+0x3271
+// 0.132813
+0x3040
+// 0.088571
+0x2dab
+// 0.058607
+0x2b80
+// 0.249883
+0x33ff
+// 0.061443
+0x2bdd
+// 0.071180
+0x2c8e
+// 0.107576
+0x2ee3
+// 0.057274
+0x2b55
+// 0.105606
+0x2ec2
+// 0.152027
+0x30dd
+// 0.103325
+0x2e9d
+// 0.049270
+0x2a4e
+// 0.220453
+0x330e
+// 0.133290
+0x3044
+// 0.105547
+0x2ec1
+// 0.084060
+0x2d61
+// 0.137416
+0x3066
+// 0.030274
+0x27c0
+// 0.048675
+0x2a3b
+// 0.127130
+0x3011
+// 0.046091
+0x29e6
+// 0.066165
+0x2c3c
+// 0.067586
+0x2c53
+// 0.097630
+0x2e40
+// 0.072033
+0x2c9c
+// 0.117393
+0x2f83
+// 0.453053
+0x3740
+// 0.081985
+0x2d3f
+// 0.464962
+0x3770
+// 0.052770
+0x2ac1
+// 0.131843
+0x3038
+// 0.057721
+0x2b63
+// 0.152657
+0x30e3
+// 0.210732
+0x32be
+// 0.038870
+0x28fa
+// 0.265057
+0x343e
+// 0.090349
+0x2dc8
+// 0.153684
+0x30eb
+// 0.057884
+0x2b69
+// 0.057020
+0x2b4c
+// 0.071140
+0x2c8e
+// 0.261764
+0x3430
+// 0.015038
+0x23b3
+// 0.081591
+0x2d39
+// 0.262766
+0x3434
+// 0.039113
+0x2902
+// 0.156950
+0x3106
+// 0.095202
+0x2e18
+// 0.025249
+0x2677
+// 0.037328
+0x28c7
+// 0.083821
+0x2d5d
+// 0.104429
+0x2eaf
+// 0.087592
+0x2d9b
+// 0.114188
+0x2f4f
+// 0.056203
+0x2b32
+// 0.004401
+0x1c82
+// 0.095480
+0x2e1c
+// 0.139157
+0x3074
+// 0.294734
+0x34b7
+// 0.268507
+0x344c
+// 0.436759
+0x36fd
+// 0.009448
+0x20d6
+// 0.081745
+0x2d3b
+// 0.168340
+0x3163
+// 0.148550
+0x30c1
+// 0.136539
+0x305f
+// 0.036541
+0x28ad
+// 0.253112
+0x340d
+// 0.165724
+0x314e
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/InputB25_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/InputB25_f16.txt
new file mode 100755
index 0000000..2ff588a
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/InputB25_f16.txt
@@ -0,0 +1,152 @@
+H
+75
+// -0.550708
+0xb868
+// -1.086194
+0xbc58
+// -2.430874
+0xc0dd
+// -2.189178
+0xc061
+// -1.915799
+0xbfaa
+// -1.850925
+0xbf67
+// -1.791474
+0xbf2a
+// -1.795864
+0xbf2f
+// -1.805296
+0xbf39
+// -3.914507
+0xc3d4
+// -2.609097
+0xc138
+// -2.791088
+0xc195
+// -1.657411
+0xbea1
+// -3.818442
+0xc3a3
+// -2.085128
+0xc02c
+// -1.898179
+0xbf98
+// -5.553102
+0xc58e
+// -1.827261
+0xbf4f
+// -2.342852
+0xc0b0
+// -1.613762
+0xbe74
+// -2.609171
+0xc138
+// -1.941609
+0xbfc4
+// -3.429489
+0xc2dc
+// -3.528022
+0xc30e
+// -2.070397
+0xc024
+// -1.926029
+0xbfb4
+// -3.317714
+0xc2a3
+// -2.238273
+0xc07a
+// -1.737780
+0xbef3
+// -3.121640
+0xc23e
+// -4.527533
+0xc487
+// -2.446193
+0xc0e4
+// -2.637576
+0xc146
+// -1.176571
+0xbcb5
+// -0.474604
+0xb798
+// -3.033151
+0xc211
+// -1.835852
+0xbf58
+// -1.691092
+0xbec4
+// -1.805705
+0xbf39
+// -2.648123
+0xc14c
+// -2.160886
+0xc052
+// -2.461351
+0xc0ec
+// -1.718385
+0xbee0
+// -3.930567
+0xc3dc
+// -2.625716
+0xc140
+// -1.569582
+0xbe47
+// -1.492665
+0xbdf8
+// -2.078453
+0xc028
+// -2.391468
+0xc0c8
+// -3.195368
+0xc264
+// -2.475005
+0xc0f3
+// -1.956577
+0xbfd4
+// -2.960791
+0xc1ec
+// -2.717495
+0xc16f
+// -2.590550
+0xc12e
+// -2.850811
+0xc1b4
+// -2.901796
+0xc1ce
+// -2.290420
+0xc095
+// -2.218488
+0xc070
+// -2.282453
+0xc091
+// -2.319957
+0xc0a4
+// -2.432125
+0xc0dd
+// -2.239578
+0xc07b
+// -2.294428
+0xc097
+// -0.590827
+0xb8ba
+// -1.218422
+0xbce0
+// -1.881018
+0xbf86
+// -1.877314
+0xbf82
+// -2.526120
+0xc10d
+// -1.792010
+0xbf2b
+// -1.845023
+0xbf61
+// -1.752139
+0xbf02
+// -2.295159
+0xc097
+// -3.509155
+0xc305
+// -1.928857
+0xbfb7
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/RefEntropy22_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/RefEntropy22_f16.txt
new file mode 100755
index 0000000..c6fbbd8
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/RefEntropy22_f16.txt
@@ -0,0 +1,22 @@
+H
+10
+// 1.038650
+0x3c28
+// 1.946771
+0x3fc9
+// 2.139348
+0x4047
+// 2.343983
+0x40b0
+// 0.989680
+0x3beb
+// 1.881268
+0x3f86
+// 1.990067
+0x3ff6
+// 2.193480
+0x4063
+// 1.026660
+0x3c1b
+// 1.720281
+0x3ee2
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/RefKL24_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/RefKL24_f16.txt
new file mode 100755
index 0000000..7d2c584
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/RefKL24_f16.txt
@@ -0,0 +1,22 @@
+H
+10
+// 0.413470
+0x369e
+// 0.394708
+0x3651
+// 0.582607
+0x38a9
+// 0.396809
+0x3659
+// 0.179323
+0x31bd
+// 0.111712
+0x2f26
+// 0.515907
+0x3821
+// 0.325282
+0x3534
+// 0.039444
+0x290c
+// 0.581119
+0x38a6
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/RefLogSumExp23_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/RefLogSumExp23_f16.txt
new file mode 100755
index 0000000..bcc850d
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/RefLogSumExp23_f16.txt
@@ -0,0 +1,22 @@
+H
+10
+// 1.437131
+0x3dc0
+// 2.206211
+0x406a
+// 2.309694
+0x409f
+// 2.569599
+0x4124
+// 1.432431
+0x3dbb
+// 2.207405
+0x406a
+// 2.310898
+0x409f
+// 2.569412
+0x4124
+// 1.455066
+0x3dd2
+// 2.207080
+0x406a
diff --git a/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/RefLogSumExpDot25_f16.txt b/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/RefLogSumExpDot25_f16.txt
new file mode 100755
index 0000000..79a361e
--- /dev/null
+++ b/CMSIS/DSP/Testing/Patterns/DSP/Stats/StatsF16/RefLogSumExpDot25_f16.txt
@@ -0,0 +1,22 @@
+H
+10
+// -0.908800
+0xbb45
+// -1.999736
+0xc000
+// -2.257576
+0xc084
+// -2.442263
+0xc0e2
+// -1.038944
+0xbc28
+// -2.090152
+0xc02e
+// -2.287087
+0xc093
+// -2.463247
+0xc0ed
+// -1.051243
+0xbc34
+// -2.074013
+0xc026
diff --git a/CMSIS/DSP/Testing/Source/Tests/FastMathF16.cpp b/CMSIS/DSP/Testing/Source/Tests/FastMathF16.cpp
new file mode 100755
index 0000000..ba91fc0
--- /dev/null
+++ b/CMSIS/DSP/Testing/Source/Tests/FastMathF16.cpp
@@ -0,0 +1,243 @@
+#include "FastMathF16.h"
+#include <stdio.h>
+#include "Error.h"
+#include "arm_vec_math_f16.h"
+#include "Test.h"
+
+
+#define SNR_THRESHOLD 60
+#define SNR_LOG_THRESHOLD 40
+
+/* 
+
+Reference patterns are generated with
+a double precision computation.
+
+*/
+#define REL_ERROR (1.0e-3)
+#define ABS_ERROR (1.0e-3)
+
+#define REL_LOG_ERROR (3.0e-2)
+#define ABS_LOG_ERROR (3.0e-2)
+
+#if 0
+    void FastMathF16::test_cos_f16()
+    {
+        const float16_t *inp  = input.ptr();
+        float16_t *outp  = output.ptr();
+        unsigned long i;
+
+        for(i=0; i < ref.nbSamples(); i++)
+        {
+          outp[i]=arm_cos_f16(inp[i]);
+        }
+
+        ASSERT_SNR(ref,output,(float16_t)SNR_THRESHOLD);
+        ASSERT_CLOSE_ERROR(ref,output,ABS_ERROR,REL_ERROR);
+
+    }
+
+    void FastMathF16::test_sin_f16()
+    {
+        const float16_t *inp  = input.ptr();
+        float16_t *outp  = output.ptr();
+        unsigned long i;
+
+        for(i=0; i < ref.nbSamples(); i++)
+        {
+          outp[i]=arm_sin_f16(inp[i]);
+        }
+
+        ASSERT_SNR(ref,output,(float16_t)SNR_THRESHOLD);
+        ASSERT_CLOSE_ERROR(ref,output,ABS_ERROR,REL_ERROR);
+
+    }
+
+#endif 
+
+    void FastMathF16::test_sqrt_f16()
+    {
+        const float16_t *inp  = input.ptr();
+        float16_t *outp  = output.ptr();
+        arm_status status;
+        unsigned long i;
+
+        for(i=0; i < ref.nbSamples(); i++)
+        {
+           status=arm_sqrt_f16(inp[i],&outp[i]);
+           ASSERT_TRUE((status == ARM_MATH_SUCCESS) || ((inp[i] < 0.0f) && (status == ARM_MATH_ARGUMENT_ERROR)));
+        }
+
+
+        ASSERT_SNR(ref,output,(float16_t)SNR_THRESHOLD);
+        ASSERT_CLOSE_ERROR(ref,output,ABS_ERROR,REL_ERROR);
+
+
+    }
+
+    void FastMathF16::test_vlog_f16()
+    {
+        const float16_t *inp  = input.ptr();
+        float16_t *outp  = output.ptr();
+
+        arm_vlog_f16(inp,outp,ref.nbSamples());
+    
+        ASSERT_SNR(ref,output,(float16_t)SNR_LOG_THRESHOLD);
+        ASSERT_CLOSE_ERROR(ref,output,ABS_LOG_ERROR,REL_LOG_ERROR);
+        ASSERT_EMPTY_TAIL(output);
+
+    }
+
+    void FastMathF16::test_vexp_f16()
+    {
+        const float16_t *inp  = input.ptr();
+        float16_t *outp  = output.ptr();
+
+        arm_vexp_f16(inp,outp,ref.nbSamples());
+    
+        ASSERT_CLOSE_ERROR(ref,output,ABS_ERROR,REL_ERROR);
+        ASSERT_SNR(ref,output,(float16_t)SNR_THRESHOLD);
+        ASSERT_EMPTY_TAIL(output);
+
+    }
+
+    void FastMathF16::test_inverse_f16()
+    {
+        const float16_t *inp  = input.ptr();
+
+        float16_t *outp  = output.ptr();
+
+        arm_vinverse_f16(inp,outp,ref.nbSamples());
+
+        ASSERT_CLOSE_ERROR(ref,output,ABS_ERROR,REL_ERROR);
+        ASSERT_SNR(ref,output,(float16_t)SNR_THRESHOLD);
+        ASSERT_EMPTY_TAIL(output);
+
+    }
+
+  
+    void FastMathF16::setUp(Testing::testID_t id,std::vector<Testing::param_t>& paramsArgs,Client::PatternMgr *mgr)
+    {
+        (void)paramsArgs;
+        switch(id)
+        {
+#if 0
+            case FastMathF16::TEST_COS_F16_1:
+            {
+               input.reload(FastMathF16::ANGLES1_F16_ID,mgr);
+               ref.reload(FastMathF16::COS1_F16_ID,mgr);
+               output.create(ref.nbSamples(),FastMathF16::OUT_F16_ID,mgr);
+
+            }
+            break;
+
+            case FastMathF16::TEST_SIN_F16_2:
+            {
+               input.reload(FastMathF16::ANGLES1_F16_ID,mgr);
+               ref.reload(FastMathF16::SIN1_F16_ID,mgr);
+               output.create(ref.nbSamples(),FastMathF16::OUT_F16_ID,mgr);
+
+            }
+            break;
+#endif 
+          
+            case FastMathF16::TEST_SQRT_F16_3:
+            {
+               input.reload(FastMathF16::SQRTINPUT1_F16_ID,mgr);
+               ref.reload(FastMathF16::SQRT1_F16_ID,mgr);
+               output.create(ref.nbSamples(),FastMathF16::OUT_F16_ID,mgr);
+
+            }
+            break;
+
+            case FastMathF16::TEST_VLOG_F16_4:
+            {
+               input.reload(FastMathF16::LOGINPUT1_F16_ID,mgr);
+               ref.reload(FastMathF16::LOG1_F16_ID,mgr);
+               output.create(ref.nbSamples(),FastMathF16::OUT_F16_ID,mgr);
+
+            }
+            break;
+
+            case FastMathF16::TEST_VLOG_F16_5:
+            {
+               input.reload(FastMathF16::LOGINPUT1_F16_ID,mgr,7);
+               ref.reload(FastMathF16::LOG1_F16_ID,mgr,7);
+               output.create(ref.nbSamples(),FastMathF16::OUT_F16_ID,mgr);
+
+            }
+            break;
+
+            case FastMathF16::TEST_VLOG_F16_6:
+            {
+               input.reload(FastMathF16::LOGINPUT1_F16_ID,mgr,16);
+               ref.reload(FastMathF16::LOG1_F16_ID,mgr,16);
+               output.create(ref.nbSamples(),FastMathF16::OUT_F16_ID,mgr);
+
+            }
+            break;
+
+            case FastMathF16::TEST_VLOG_F16_7:
+            {
+               input.reload(FastMathF16::LOGINPUT1_F16_ID,mgr,23);
+               ref.reload(FastMathF16::LOG1_F16_ID,mgr,23);
+               output.create(ref.nbSamples(),FastMathF16::OUT_F16_ID,mgr);
+
+            }
+            break;
+
+            case FastMathF16::TEST_VEXP_F16_8:
+            {
+              
+              input.reload(FastMathF16::EXPINPUT1_F16_ID,mgr);
+              ref.reload(FastMathF16::EXP1_F16_ID,mgr);
+              output.create(ref.nbSamples(),FastMathF16::OUT_F16_ID,mgr);
+
+            }
+            break;
+
+            case FastMathF16::TEST_VEXP_F16_9:
+            {
+               input.reload(FastMathF16::EXPINPUT1_F16_ID,mgr,7);
+               ref.reload(FastMathF16::EXP1_F16_ID,mgr,7);
+               output.create(ref.nbSamples(),FastMathF16::OUT_F16_ID,mgr);
+
+            }
+            break;
+
+            case FastMathF16::TEST_VEXP_F16_10:
+            {
+               input.reload(FastMathF16::EXPINPUT1_F16_ID,mgr,16);
+               ref.reload(FastMathF16::EXP1_F16_ID,mgr,16);
+               output.create(ref.nbSamples(),FastMathF16::OUT_F16_ID,mgr);
+
+            }
+            break;
+
+            case FastMathF16::TEST_VEXP_F16_11:
+            {
+               input.reload(FastMathF16::EXPINPUT1_F16_ID,mgr,23);
+               ref.reload(FastMathF16::EXP1_F16_ID,mgr,23);
+               output.create(ref.nbSamples(),FastMathF16::OUT_F16_ID,mgr);
+
+            }
+            break;
+
+            case FastMathF16::TEST_INVERSE_F16_12:
+            {
+               input.reload(FastMathF16::INPUT1_F16_ID,mgr);
+               ref.reload(FastMathF16::INVERSE1_F16_ID,mgr);
+               output.create(ref.nbSamples(),FastMathF16::OUT_F16_ID,mgr);
+
+            }
+            break;
+        }
+        
+    }
+
+    void FastMathF16::tearDown(Testing::testID_t id,Client::PatternMgr *mgr)
+    {
+      (void)id;
+      output.dump(mgr);
+      
+    }
diff --git a/CMSIS/DSP/Testing/Source/Tests/StatsTestsF16.cpp b/CMSIS/DSP/Testing/Source/Tests/StatsTestsF16.cpp
index 909651d..1887a86 100755
--- a/CMSIS/DSP/Testing/Source/Tests/StatsTestsF16.cpp
+++ b/CMSIS/DSP/Testing/Source/Tests/StatsTestsF16.cpp
@@ -4,14 +4,18 @@
 #include "Test.h"
 
 
-#define SNR_THRESHOLD 50
+#define SNR_THRESHOLD 48
+#define SNR_KULLBACK_THRESHOLD 40
 /* 
 
 Reference patterns are generated with
 a double precision computation.
 
 */
-#define REL_ERROR (3.0e-3)
+#define REL_ERROR (6.0e-3)
+
+#define REL_KULLBACK_ERROR (5.0e-3)
+#define ABS_KULLBACK_ERROR (5.0e-3)
 
     void StatsTestsF16::test_max_f16()
     {
@@ -39,7 +43,7 @@
 
     }
 
-#if 0
+
     void StatsTestsF16::test_max_no_idx_f16()
     {
         const float16_t *inp  = inputA.ptr();
@@ -59,7 +63,7 @@
         ASSERT_EQ(result,refp[this->refOffset]);
 
     }
-#endif 
+
 
     void StatsTestsF16::test_min_f16()
     {
@@ -241,7 +245,7 @@
 
     }
 
-#if 0
+
     void StatsTestsF16::test_entropy_f16()
     {
       const float16_t *inp  = inputA.ptr();
@@ -298,9 +302,9 @@
          inpB += dimsp[i+1];
       }
 
-      ASSERT_SNR(ref,output,(float16_t)SNR_THRESHOLD);
+      ASSERT_SNR(ref,output,(float16_t)SNR_KULLBACK_THRESHOLD);
 
-      ASSERT_REL_ERROR(ref,output,REL_ERROR);
+      ASSERT_CLOSE_ERROR(ref,output,ABS_KULLBACK_ERROR,REL_KULLBACK_ERROR);
     } 
 
     void StatsTestsF16::test_logsumexp_dot_prod_f16()
@@ -325,7 +329,7 @@
       ASSERT_REL_ERROR(ref,output,REL_ERROR);
     } 
 
-  #endif
+
   
     void StatsTestsF16::setUp(Testing::testID_t id,std::vector<Testing::param_t>& paramsArgs,Client::PatternMgr *mgr)
     {
@@ -595,7 +599,7 @@
                refOffset = 2;
             }
             break;
-#if 0
+
             case StatsTestsF16::TEST_ENTROPY_F16_22:
             {
                inputA.reload(StatsTestsF16::INPUT22_F16_ID,mgr);
@@ -651,7 +655,7 @@
 
             case StatsTestsF16::TEST_MAX_NO_IDX_F16_26:
             {
-               inputA.reload(StatsTestsF16::INPUT1_F16_ID,mgr,3);
+               inputA.reload(StatsTestsF16::INPUT1_F16_ID,mgr,7);
               
                ref.reload(StatsTestsF16::MAXVALS_F16_ID,mgr);
                
@@ -684,7 +688,7 @@
                refOffset = 2;
             }
             break;
-#endif
+
             case TEST_MEAN_F16_29:
                inputA.reload(StatsTestsF16::INPUT2_F16_ID,mgr,100);
               
diff --git a/CMSIS/DSP/Testing/desc_f16.txt b/CMSIS/DSP/Testing/desc_f16.txt
index b5f2750..21635bf 100755
--- a/CMSIS/DSP/Testing/desc_f16.txt
+++ b/CMSIS/DSP/Testing/desc_f16.txt
@@ -25,23 +25,23 @@
               Pattern STDVALS_F16_ID : StdVals6_f16.txt
               Pattern VARVALS_F16_ID : VarVals7_f16.txt
 
-              //Pattern INPUT22_F16_ID : Input22_f16.txt 
-              //Pattern DIM22_S16_ID : Dims22_s16.txt 
-              //Pattern REF22_ENTROPY_F16_ID : RefEntropy22_f16.txt
-              //
-              //Pattern INPUT23_F16_ID : Input23_f16.txt 
-              //Pattern DIM23_S16_ID : Dims23_s16.txt 
-              //Pattern REF23_LOGSUMEXP_F16_ID : RefLogSumExp23_f16.txt
-              //
-              //Pattern INPUTA24_F16_ID : InputA24_f16.txt 
-              //Pattern INPUTB24_F16_ID : InputB24_f16.txt
-              //Pattern DIM24_S16_ID : Dims24_s16.txt 
-              //Pattern REF24_KL_F16_ID : RefKL24_f16.txt
-              //
-              //Pattern INPUTA25_F16_ID : InputA25_f16.txt 
-              //Pattern INPUTB25_F16_ID : InputB25_f16.txt
-              //Pattern DIM25_S16_ID : Dims25_s16.txt 
-              //Pattern REF25_LOGSUMEXP_DOT_F16_ID : RefLogSumExpDot25_f16.txt
+              Pattern INPUT22_F16_ID : Input22_f16.txt 
+              Pattern DIM22_S16_ID : Dims22_s16.txt 
+              Pattern REF22_ENTROPY_F16_ID : RefEntropy22_f16.txt
+              
+              Pattern INPUT23_F16_ID : Input23_f16.txt 
+              Pattern DIM23_S16_ID : Dims23_s16.txt 
+              Pattern REF23_LOGSUMEXP_F16_ID : RefLogSumExp23_f16.txt
+              
+              Pattern INPUTA24_F16_ID : InputA24_f16.txt 
+              Pattern INPUTB24_F16_ID : InputB24_f16.txt
+              Pattern DIM24_S16_ID : Dims24_s16.txt 
+              Pattern REF24_KL_F16_ID : RefKL24_f16.txt
+              
+              Pattern INPUTA25_F16_ID : InputA25_f16.txt 
+              Pattern INPUTB25_F16_ID : InputB25_f16.txt
+              Pattern DIM25_S16_ID : Dims25_s16.txt 
+              Pattern REF25_LOGSUMEXP_DOT_F16_ID : RefLogSumExpDot25_f16.txt
 
               Output  OUT_F16_ID : Output
               Output  OUT_S16_ID : Index
@@ -76,14 +76,14 @@
                 Test nb=8n   arm_var_f16:test_var_f16
                 Test nb=8n+1 arm_var_f16:test_var_f16
 
-                disabled{arm_entropy_f16:test_entropy_f16}
-                disabled{arm_logsumexp_f16:test_logsumexp_f16}
-                disabled{arm_kullback_leibler_f16:test_kullback_leibler_f16}
-                disabled{arm_logsumexp_dot_prod_f16:test_logsumexp_dot_prod_f16}
+                arm_entropy_f16:test_entropy_f16
+                arm_logsumexp_f16:test_logsumexp_f16
+                arm_kullback_leibler_f16:test_kullback_leibler_f16
+                arm_logsumexp_dot_prod_f16:test_logsumexp_dot_prod_f16
 
-                disabled{Test nb=7    arm_max_no_idx_f16:test_max_no_idx_f16}
-                disabled{Test nb=8n   arm_max_no_idx_f16:test_max_no_idx_f16}
-                disabled{Test nb=8n+1 arm_max_no_idx_f16:test_max_no_idx_f16}
+                Test nb=7    arm_max_no_idx_f16:test_max_no_idx_f16
+                Test nb=8n   arm_max_no_idx_f16:test_max_no_idx_f16
+                Test nb=8n+1 arm_max_no_idx_f16:test_max_no_idx_f16
 
                 Test long  arm_mean_f16:test_mean_f16
                 Test long  arm_rms_f16:test_rms_f16
@@ -342,6 +342,46 @@
 
         }
 
+        group Fast Maths Tests {
+          class = FastMath
+          folder = FastMath 
+
+          suite Fast Maths F16 {
+              class = FastMathF16
+              folder = FastMathF16
+
+              Pattern ANGLES1_F16_ID : Angles1_f16.txt
+              Pattern SQRTINPUT1_F16_ID : SqrtInput1_f16.txt
+              Pattern LOGINPUT1_F16_ID : LogInput1_f16.txt
+              Pattern EXPINPUT1_F16_ID : ExpInput1_f16.txt
+              Pattern INPUT1_F16_ID : Samples1_f16.txt
+
+              Pattern COS1_F16_ID : Cos1_f16.txt 
+              Pattern SIN1_F16_ID : Sin1_f16.txt 
+              Pattern SQRT1_F16_ID : Sqrt1_f16.txt 
+              Pattern LOG1_F16_ID : Log1_f16.txt 
+              Pattern EXP1_F16_ID : Exp1_f16.txt 
+              Pattern INVERSE1_F16_ID : Inverse1_f16.txt
+
+              Output  OUT_F16_ID : Output
+
+              Functions {
+                disabled{test_cos_f16:test_cos_f16}
+                disabled{test_sin_f16:test_sin_f16}
+                test_sqrt_f16:test_sqrt_f16
+                test_vlog_f16:test_vlog_f16
+                test_vlog_f16 nb=3:test_vlog_f16
+                test_vlog_f16 nb=4n:test_vlog_f16
+                test_vlog_f16 nb=4n+1:test_vlog_f16
+                test_vexp_f16:test_vexp_f16
+                test_vexp_f16 nb=3:test_vexp_f16
+                test_vexp_f16 nb=4n:test_vexp_f16
+                test_vexp_f16 nb=4n+1:test_vexp_f16
+                test_inverse_f16:test_inverse_f16
+              }
+          }
+        }
+
         group Filtering Tests {
            class = FilteringTests
            folder = Filtering
