Răsfoiți Sursa

CMSIS-DSP: MFCC F32

MFCC F32 implementation
MFCC F32 tests
MFCC F32 in Python wrapper
Python wrapper structure updated to support submodule like
cmsisdsp.mfcc and cmsisdsp.fixedpoint
PythonWrapper tests updated to use the new fixedpoint
cmsisdsp.mfcc is used to generate the mel filter, dct and window coefficients.
Christophe Favergeon 4 ani în urmă
părinte
comite
3d264cfabb
36 a modificat fișierele cu 5725 adăugiri și 8 ștergeri
  1. 2 0
      .gitignore
  2. 51 0
      Include/dsp/transform_functions.h
  3. 11 0
      PythonWrapper/README.md
  4. 2 0
      PythonWrapper/cmsisdsp/__init__.py
  5. 0 0
      PythonWrapper/cmsisdsp/fixedpoint.py
  6. 65 0
      PythonWrapper/cmsisdsp/mfcc.py
  7. 2 2
      PythonWrapper/cmsisdsp_pkg/src/cmsismodule.c
  8. 211 1
      PythonWrapper/cmsisdsp_pkg/src/cmsismodule.h
  9. 1 1
      PythonWrapper/config.py
  10. 1 0
      PythonWrapper/setup.py
  11. 1 1
      PythonWrapper/testdsp2.py
  12. 1 1
      PythonWrapper/testdsp3.py
  13. 91 0
      PythonWrapper/testmfcc.py
  14. 67 0
      Scripts/GenMFCCDataForCPP.py
  15. 46 0
      Scripts/mfccconfig.yaml
  16. 231 0
      Scripts/mfccdata.py
  17. 23 0
      Scripts/mfcctemplates/mfccdata.c
  18. 62 0
      Scripts/mfcctemplates/mfccdata.h
  19. 1 1
      Source/FastMathFunctions/arm_vlog_q15.c
  20. 4 0
      Source/TransformFunctions/CMakeLists.txt
  21. 4 0
      Source/TransformFunctions/TransformFunctions.c
  22. 159 0
      Source/TransformFunctions/arm_mfcc_f32.c
  23. 107 0
      Source/TransformFunctions/arm_mfcc_init_f32.c
  24. 4 1
      Testing/CMakeLists.txt
  25. 28 0
      Testing/Include/Tests/MFCCF32.h
  26. 74 0
      Testing/Include/Tests/mfccdata.h
  27. 244 0
      Testing/PatternGeneration/MFCC.py
  28. 2050 0
      Testing/Patterns/DSP/Transform/MFCCF32/MFCCInput_1024_1_f32.txt
  29. 514 0
      Testing/Patterns/DSP/Transform/MFCCF32/MFCCInput_256_1_f32.txt
  30. 1026 0
      Testing/Patterns/DSP/Transform/MFCCF32/MFCCInput_512_1_f32.txt
  31. 28 0
      Testing/Patterns/DSP/Transform/MFCCF32/MFCCRef_1024_1_f32.txt
  32. 28 0
      Testing/Patterns/DSP/Transform/MFCCF32/MFCCRef_256_1_f32.txt
  33. 28 0
      Testing/Patterns/DSP/Transform/MFCCF32/MFCCRef_512_1_f32.txt
  34. 109 0
      Testing/Source/Tests/MFCCF32.cpp
  35. 423 0
      Testing/Source/Tests/mfccdata.c
  36. 26 0
      Testing/desc.txt

+ 2 - 0
.gitignore

@@ -1,6 +1,7 @@
 DSP_Lib_TestSuite/build/
 PythonWrapper/build/
 PythonWrapper/cmsisdsp.cp36-win_amd64.pyd
+PythonWrapper/internal.cp36-win_amd64.pyd
 PythonWrapper/*.so
 PythonWrapper/rec_2.dat
 *.pickle
@@ -15,3 +16,4 @@ Projects/ARM/IntermediateFiles/
 .ipynb_checkpoints
 Examples/ARM/*/RTE/
 Examples/ARM/*/MTICoverageOut.cov
+CMSISDSP.egg-info/

+ 51 - 0
Include/dsp/transform_functions.h

@@ -584,6 +584,57 @@ arm_status arm_rfft_fast_init_f32 (
         q15_t * pInlineBuffer);
 
 
+  /**
+   * @brief Instance structure for the Floating-point MFCC function.
+   */
+typedef struct
+  {
+     const float32_t *dctCoefs; /**< Internal DCT coefficients */
+     const float32_t *filterCoefs; /**< Internal Mel filter coefficients */ 
+     const float32_t *windowCoefs; /**< Windowing coefficients */ 
+     const uint32_t *filterPos; /**< Internal Mel filter positions in spectrum */ 
+     const uint32_t *filterLengths; /**< Internal Mel filter  lengths */ 
+     uint32_t fftLen; /**< FFT length */
+     uint32_t nbMelFilters; /**< Number of Mel filters */
+     uint32_t nbDctOutputs; /**< Number of DCT outputs */
+#if defined(ARM_MFCC_CFFT_BASED)
+     /* Implementation of the MFCC is using a CFFT */
+     arm_cfft_instance_f32 cfft; /**< Internal CFFT instance */
+#else
+     /* Implementation of the MFCC is using a RFFT (default) */
+     arm_rfft_fast_instance_f32 rfft;
+#endif
+  } arm_mfcc_instance_f32 ;
+
+arm_status arm_mfcc_init_f32(
+  arm_mfcc_instance_f32 * S,
+  uint32_t fftLen,
+  uint32_t nbMelFilters,
+  uint32_t nbDctOutputs,
+  const float32_t *dctCoefs,
+  const uint32_t *filterPos,
+  const uint32_t *filterLengths,
+  const float32_t *filterCoefs,
+  const float32_t *windowCoefs
+  );
+
+
+/**
+  @brief         MFCC F32
+  @param[in]    S       points to the mfcc instance structure
+  @param[in]     pSrc points to the input samples
+  @param[out]     pDst  points to the output MFCC values
+  @param[inout]     pTmp  points to a temporary buffer of complex
+  @return        none
+ */
+  void arm_mfcc_f32(
+  arm_mfcc_instance_f32 * S,
+  float32_t *pSrc,
+  float32_t *pDst,
+  float32_t *pTmp
+  );
+
+
 
 #ifdef   __cplusplus
 }

+ 11 - 0
PythonWrapper/README.md

@@ -219,6 +219,17 @@ Goldberger AL, Amaral LAN, Glass L, Hausdorff JM, Ivanov PCh, Mark RG, Mietus JE
 
 Note that the example file
 
+## Submodules
+
+The Python wrapper is containing two submodules : fixedpoint and mfcc
+
+fixedpoint is proving some tools to help generating the fixedpoint values expected
+by CMSIS-DSP.
+
+mfcc is generating some tools to generate the MEL filters, DCT and window coefficients
+expected by the CMSIS-DSP MFCC implemetation.
+
+MEL filters are represented as 3 arrays to encode a sparse array.
 
 # LIMITATIONS
 

+ 2 - 0
PythonWrapper/cmsisdsp/__init__.py

@@ -0,0 +1,2 @@
+from internal import *
+

+ 0 - 0
PythonWrapper/fixedpoint.py → PythonWrapper/cmsisdsp/fixedpoint.py


+ 65 - 0
PythonWrapper/cmsisdsp/mfcc.py

@@ -0,0 +1,65 @@
+import numpy as np
+
+def frequencyToMelSpace(freq):
+    return 1127.0 * np.log(1.0 + freq / 700.0)
+
+def melSpaceToFrequency(mels):
+    return 700.0 * (np.exp(mels / 1127.0) - 1.0)
+
+def melFilterMatrix(fmin, fmax, numOfMelFilters,fs,FFTSize):
+
+    filters = np.zeros((numOfMelFilters,int(FFTSize/2+1)))
+    zeros = np.zeros(int(FFTSize // 2 ))
+
+
+    fmin_mel = frequencyToMelSpace(fmin)
+    fmax_mel = frequencyToMelSpace(fmax)
+    mels = np.linspace(fmin_mel, fmax_mel, num=numOfMelFilters+2)
+
+
+    linearfreqs = np.linspace( 0, fs/2.0, int(FFTSize // 2 + 1) )
+    spectrogrammels = frequencyToMelSpace(linearfreqs)[1:]
+
+
+    filtPos=[]
+    filtLen=[]
+    totalLen = 0
+    packedFilters = []
+    for n in range(numOfMelFilters):
+
+      
+      upper = (spectrogrammels - mels[n])/(mels[n+1]-mels[n]) 
+      lower = (mels[n+2] - spectrogrammels)/(mels[n+2]-mels[n+1])
+
+
+      filters[n, :] = np.hstack([0,np.maximum(zeros,np.minimum(upper,lower))])
+      nb = 0 
+      startFound = False
+      for sample in filters[n, :]:
+        if not startFound and sample != 0.0:
+            startFound = True 
+            startPos = nb
+
+        if startFound and sample == 0.0:
+           endPos = nb - 1 
+           break
+        nb = nb + 1 
+      filtLen.append(endPos - startPos+1)
+      totalLen += endPos - startPos + 1
+      filtPos.append(startPos)
+      packedFilters += list(filters[n, startPos:endPos+1])
+
+    return filtLen,filtPos,totalLen,packedFilters,filters
+
+
+def dctMatrix(numOfDctOutputs, numOfMelFilters):
+   
+    result = np.zeros((numOfDctOutputs,numOfMelFilters))
+    s=(np.linspace(1,numOfMelFilters,numOfMelFilters) - 0.5)/numOfMelFilters
+
+    for i in range(0, numOfDctOutputs):
+        result[i,:]=np.cos(i * np.pi*s) * np.sqrt(2.0/numOfMelFilters)
+        
+    return result.reshape(numOfDctOutputs*numOfMelFilters)
+
+

+ 2 - 2
PythonWrapper/cmsisdsp_pkg/src/cmsismodule.c

@@ -41,8 +41,8 @@
 
 #ifdef CMSISDSP
 #include "arm_math.h"
-#define MODNAME "cmsisdsp"
-#define MODINITNAME cmsisdsp
+#define MODNAME "internal"
+#define MODINITNAME internal
 #endif 
 
 #include <numpy/arrayobject.h>

+ 211 - 1
PythonWrapper/cmsisdsp_pkg/src/cmsismodule.h

@@ -5676,6 +5676,90 @@ static PyMethodDef arm_fir_sparse_instance_q7_methods[] = {
 
 MLTYPE(arm_fir_sparse_instance_q7,arm_fir_sparse_instance_q7_new,arm_fir_sparse_instance_q7_dealloc,arm_fir_sparse_instance_q7_init,arm_fir_sparse_instance_q7_methods);
 
+typedef struct {
+    PyObject_HEAD
+    arm_mfcc_instance_f32 *instance;
+} ml_arm_mfcc_instance_f32Object;
+
+
+static void
+arm_mfcc_instance_f32_dealloc(ml_arm_mfcc_instance_f32Object* self)
+{
+    //printf("Dealloc called\n");
+    if (self->instance)
+    {
+
+
+       PyMem_Free(self->instance);
+    }
+
+    Py_TYPE(self)->tp_free((PyObject*)self);
+}
+
+
+static PyObject *
+arm_mfcc_instance_f32_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
+{
+    ml_arm_mfcc_instance_f32Object *self;
+    //printf("New called\n");
+
+    self = (ml_arm_mfcc_instance_f32Object *)type->tp_alloc(type, 0);
+    //printf("alloc called\n");
+
+    if (self != NULL) {
+
+        self->instance = PyMem_Malloc(sizeof(arm_mfcc_instance_f32));
+
+        self->instance->dctCoefs = NULL;
+        self->instance->filterCoefs = NULL;
+        self->instance->windowCoefs = NULL;
+        self->instance->filterPos = NULL;
+        self->instance->filterLengths = NULL;
+
+    }
+
+
+    return (PyObject *)self;
+}
+
+static int
+arm_mfcc_instance_f32_init(ml_arm_mfcc_instance_f32Object *self, PyObject *args, PyObject *kwds)
+{
+
+    PyObject *pTwiddle=NULL;
+    PyObject *pBitRevTable=NULL;
+char *kwlist[] = {
+"fftLen","nbMelFilters","nbDctOutputs",NULL
+};
+
+if (PyArg_ParseTupleAndKeywords(args, kwds, "|iii", kwlist,&self->instance->fftLen
+,&self->instance->nbMelFilters,&self->instance->nbDctOutputs
+))
+    {
+
+
+    }
+    return 0;
+}
+
+GETFIELD(arm_mfcc_instance_f32,fftLen,"i");
+GETFIELD(arm_mfcc_instance_f32,nbMelFilters,"i");
+GETFIELD(arm_mfcc_instance_f32,nbDctOutputs,"i");
+
+
+static PyMethodDef arm_mfcc_instance_f32_methods[] = {
+
+    {"fftLen", (PyCFunction) Method_arm_mfcc_instance_f32_fftLen,METH_NOARGS,"fftLen"},
+    {"nbMelFilters", (PyCFunction) Method_arm_mfcc_instance_f32_nbMelFilters,METH_NOARGS,"nbMelFilters"},
+    {"nbDctOutputs", (PyCFunction) Method_arm_mfcc_instance_f32_nbDctOutputs,METH_NOARGS,"nbDctOutputs"},
+
+    {NULL}  /* Sentinel */
+};
+
+
+MLTYPE(arm_mfcc_instance_f32,arm_mfcc_instance_f32_new,arm_mfcc_instance_f32_dealloc,arm_mfcc_instance_f32_init,arm_mfcc_instance_f32_methods);
+
+
 
 void typeRegistration(PyObject *module) {
 
@@ -5740,7 +5824,7 @@ void typeRegistration(PyObject *module) {
   ADDTYPE(arm_fir_sparse_instance_q31);
   ADDTYPE(arm_fir_sparse_instance_q15);
   ADDTYPE(arm_fir_sparse_instance_q7);
-
+  ADDTYPE(arm_mfcc_instance_f32);
 }
 
 
@@ -14803,6 +14887,33 @@ cmsis_arm_sqrt_q31(PyObject *obj, PyObject *args)
   return(NULL);
 }
 
+static PyObject *
+cmsis_arm_divide_q15(PyObject *obj, PyObject *args)
+{
+
+  q15_t num,den; // input
+  q15_t pOut,shift; // output
+
+  if (PyArg_ParseTuple(args,"hh",&num,&den))
+  {
+
+
+
+    arm_status returnValue = arm_divide_q15(num,den,&pOut,&shift);
+    PyObject* theReturnOBJ=Py_BuildValue("i",returnValue);
+    PyObject* pOutOBJ=Py_BuildValue("h",pOut);
+    PyObject* pShiftOBJ=Py_BuildValue("i",shift);
+
+    PyObject *pythonResult = Py_BuildValue("OOO",theReturnOBJ,pOutOBJ,pShiftOBJ);
+
+    Py_DECREF(theReturnOBJ);
+    Py_DECREF(pOutOBJ);
+    Py_DECREF(pShiftOBJ);
+    return(pythonResult);
+
+  }
+  return(NULL);
+}
 
 static PyObject *
 cmsis_arm_sqrt_q15(PyObject *obj, PyObject *args)
@@ -16884,6 +16995,102 @@ cmsis_arm_bilinear_interp_q7(PyObject *obj, PyObject *args)
   return(NULL);
 }
 
+/*
+
+MFCC
+
+*/
+
+static PyObject *
+cmsis_arm_mfcc_init_f32(PyObject *obj, PyObject *args)
+{
+
+  PyObject *S=NULL; // input
+  uint32_t fftLen,nbMelFilters,nbDctOutputs; // input
+
+  PyObject *pdctCoefs=NULL; // input
+  float32_t *pdctCoefs_converted=NULL; // input
+
+  PyObject *pfilterCoefs=NULL; // input
+  float32_t *pfilterCoefs_converted=NULL; // input
+
+  PyObject *pwindowCoefs=NULL; // input
+  float32_t *pwindowCoefs_converted=NULL; // input
+
+  PyObject *pfilterPos=NULL; // input
+  uint32_t *pfilterPos_converted=NULL; // input
+
+  PyObject *pfilterLengths=NULL; // input
+  uint32_t *pfilterLengths_converted=NULL; // input
+
+  if (PyArg_ParseTuple(args,"OiiiOOOOO",&S,&fftLen,&nbMelFilters,&nbDctOutputs,
+    &pdctCoefs,&pfilterPos,&pfilterLengths,&pfilterCoefs,&pwindowCoefs))
+  {
+
+    ml_arm_mfcc_instance_f32Object *selfS = (ml_arm_mfcc_instance_f32Object *)S;
+
+    GETARGUMENT(pdctCoefs,NPY_DOUBLE,double,float32_t);
+    GETARGUMENT(pfilterPos,NPY_UINT32,uint32_t,uint32_t);
+    GETARGUMENT(pfilterLengths,NPY_UINT32,uint32_t,uint32_t);
+    GETARGUMENT(pfilterCoefs,NPY_DOUBLE,double,float32_t);
+    GETARGUMENT(pwindowCoefs,NPY_DOUBLE,double,float32_t);
+
+
+    arm_status returnValue = arm_mfcc_init_f32(selfS->instance,
+        fftLen,nbMelFilters,nbDctOutputs,
+        pdctCoefs_converted,
+        pfilterPos_converted,pfilterLengths_converted,pfilterCoefs_converted,
+        pwindowCoefs_converted);
+    PyObject* theReturnOBJ=Py_BuildValue("i",returnValue);
+
+    PyObject *pythonResult = Py_BuildValue("O",theReturnOBJ);
+
+    Py_DECREF(theReturnOBJ);
+    return(pythonResult);
+
+  }
+  return(NULL);
+}
+
+static PyObject *
+cmsis_arm_mfcc_f32(PyObject *obj, PyObject *args)
+{
+
+  PyObject *S=NULL; // input
+  PyObject *p1=NULL; // input
+  float32_t *p1_converted=NULL; // input
+
+  PyObject *tmp=NULL; // input
+  float32_t *tmp_converted=NULL; // input
+
+  float32_t *pDst;
+  if (PyArg_ParseTuple(args,"OOO",&S,&p1,&tmp))
+  {
+
+    ml_arm_mfcc_instance_f32Object *selfS = (ml_arm_mfcc_instance_f32Object *)S;
+    GETARGUMENT(p1,NPY_DOUBLE,double,float32_t);
+    GETARGUMENT(tmp,NPY_DOUBLE,double,float32_t);
+
+    pDst=PyMem_Malloc(sizeof(float32_t)*selfS->instance->nbDctOutputs);
+
+    arm_mfcc_f32(selfS->instance,p1_converted,pDst,tmp_converted);
+
+    FLOATARRAY1(pDstOBJ,selfS->instance->nbDctOutputs,pDst);
+
+    PyObject *pythonResult = Py_BuildValue("O",pDstOBJ);
+    Py_DECREF(pDstOBJ);
+
+    FREEARGUMENT(p1_converted);
+    FREEARGUMENT(tmp_converted);
+
+    
+
+
+    return(pythonResult);
+
+  }
+  return(NULL);
+}
 
 static PyMethodDef CMSISMLMethods[] = {
 
@@ -17139,6 +17346,7 @@ static PyMethodDef CMSISMLMethods[] = {
 {"arm_sqrt_f32",  cmsis_arm_sqrt_f32, METH_VARARGS,""},
 {"arm_sqrt_q31",  cmsis_arm_sqrt_q31, METH_VARARGS,""},
 {"arm_sqrt_q15",  cmsis_arm_sqrt_q15, METH_VARARGS,""},
+{"arm_divide_q15",  cmsis_arm_divide_q15, METH_VARARGS,""},
 {"arm_circularWrite_f32",  cmsis_arm_circularWrite_f32, METH_VARARGS,""},
 {"arm_circularWrite_q15",  cmsis_arm_circularWrite_q15, METH_VARARGS,""},
 {"arm_circularWrite_q7",  cmsis_arm_circularWrite_q7, METH_VARARGS,""},
@@ -17247,6 +17455,8 @@ static PyMethodDef CMSISMLMethods[] = {
 {"arm_jensenshannon_distance_f32",cmsis_arm_jensenshannon_distance_f32, METH_VARARGS,""},
 {"arm_minkowski_distance_f32",cmsis_arm_minkowski_distance_f32, METH_VARARGS,""},
 #endif
+    {"arm_mfcc_init_f32",  cmsis_arm_mfcc_init_f32, METH_VARARGS,""},
+    {"arm_mfcc_f32",  cmsis_arm_mfcc_f32, METH_VARARGS,""},
 
     {"error_out", (PyCFunction)error_out, METH_NOARGS, NULL},
     {NULL, NULL, 0, NULL}        /* Sentinel */

+ 1 - 1
PythonWrapper/config.py

@@ -5,7 +5,7 @@ ROOT=".."
 config = CMSISDSP
 
 if config == CMSISDSP:
-    extensionName = 'cmsisdsp' 
+    extensionName = 'internal' 
     setupName = 'CMSISDSP'
     setupDescription = 'CMSIS-DSP Python API'
     cflags="-DCMSISDSP"

+ 1 - 0
PythonWrapper/setup.py

@@ -97,6 +97,7 @@ module1 = Extension(config.extensionName,
 
 setup (name = config.setupName,
        version = '1.0.0',
+       packages=['cmsisdsp'],
        description = config.setupDescription,
        ext_modules = [module1],
        author = 'Copyright (C) 2010-2021 ARM Limited or its affiliates. All rights reserved.',

+ 1 - 1
PythonWrapper/testdsp2.py

@@ -2,7 +2,7 @@ import cmsisdsp as dsp
 import numpy as np
 from scipy import signal
 from scipy.fftpack import dct 
-import fixedpoint as f
+import cmsisdsp.fixedpoint as f
 from pyquaternion import Quaternion
 
 import colorama

+ 1 - 1
PythonWrapper/testdsp3.py

@@ -1,6 +1,6 @@
 import cmsisdsp as dsp
 import numpy as np
-import fixedpoint as f
+import cmsisdsp.fixedpoint as f
 
 # Test vlog q31 and q15
 x = np.array([0.9,0.5,2**-16])

+ 91 - 0
PythonWrapper/testmfcc.py

@@ -0,0 +1,91 @@
+import cmsisdsp as dsp
+import numpy as np
+import cmsisdsp.fixedpoint as f
+import cmsisdsp.mfcc as mfcc
+import scipy.signal as sig
+
+debug=np.array([ 0.65507051 ,-0.94647589 ,0.00627239 ,0.14151286 ,-0.10863318 ,-0.36370327
+ ,0.05777126 ,-0.11915792 ,0.50183546 ,-0.31461335 ,0.66440771 ,0.05389963
+ ,0.39690544 ,0.25424852 ,-0.17045277 ,0.09649268 ,0.87357385 ,-0.44666372
+ ,-0.02637822 ,-0.10055151 ,-0.14610252 ,-0.05981251 ,-0.02999124 ,0.60923213
+ ,0.10530095 ,0.35684248 ,0.21845946 ,0.47845017 ,-0.60206979 ,0.25186908
+ ,-0.27410056 ,-0.07080467 ,-0.05109539 ,-0.2666572 ,0.25483105 ,-0.86459185
+ ,0.07733397 ,-0.58535444 ,0.06230904 ,-0.04161475 ,-0.17467296 ,0.77721125
+ ,-0.01728161 ,-0.32141218 ,0.36674466 ,-0.17932843 ,0.78486115 ,0.12469579
+ ,-0.94796877 ,0.05536031 ,0.32627676 ,0.46628512 ,-0.02585836 ,-0.51439834
+ ,0.21387904 ,0.16319442 ,-0.01020818 ,-0.77161183 ,0.07754634 ,-0.24970455
+ ,0.2368003 ,0.35167963 ,0.14620137 ,-0.02415204 ,0.91086167 ,-0.02434647
+ ,-0.3968239 ,-0.04703925 ,-0.43905103 ,-0.34834965 ,0.33728158 ,0.15138992
+ ,-0.43218885 ,0.26619718 ,0.07177906 ,0.33393581 ,-0.50306915 ,-0.63101084
+ ,-0.08128395 ,-0.06569788 ,0.84232797 ,-0.32436751 ,0.02528537 ,-0.3498329
+ ,0.41859931 ,0.07794887 ,0.4571989 ,0.24290963 ,0.08437417 ,-0.01371585
+ ,-0.00103008 ,0.83978697 ,-0.29001237 ,0.14438743 ,0.11943318 ,-0.25576402
+ ,0.25151083 ,0.07886626 ,0.11565781 ,-0.01582203 ,0.1310246 ,-0.5553611
+ ,-0.37950665 ,0.44179691 ,0.08460877 ,0.30646419 ,0.48927934 ,-0.21240309
+ ,0.36844264 ,0.49686615 ,-0.81617664 ,0.52221472 ,-0.05188992 ,-0.03929655
+ ,-0.47674501 ,-0.54506781 ,0.30711148 ,0.10049337 ,-0.47549213 ,0.59106713
+ ,-0.62276051 ,-0.35182917 ,0.14612027 ,0.56142168 ,-0.01053732 ,0.35782179
+ ,-0.27220781 ,-0.03672346 ,-0.11282222 ,0.3364912 ,-0.22352515 ,-0.04245287
+ ,0.56968605 ,-0.14023724 ,-0.82982905 ,0.00860008 ,0.37920345 ,-0.53749318
+ ,-0.12761215 ,0.08567603 ,0.47020765 ,-0.28794812 ,-0.33888971 ,0.01850441
+ ,0.66848233 ,-0.26532759 ,-0.20777571 ,-0.68342729 ,-0.41498696 ,0.00593224
+ ,0.02229368 ,0.75596329 ,0.29447568 ,-0.1106449 ,0.24181939 ,0.05807497
+ ,-0.14343857 ,0.304988 ,0.00689148 ,-0.06264758 ,0.25864714 ,-0.22252155
+ ,0.28621689 ,0.17031599 ,-0.34694027 ,-0.01625718 ,0.39834181 ,0.01259659
+ ,-0.28022716 ,-0.02506168 ,-0.10276881 ,0.31733924 ,0.02787068 ,-0.09824124
+ ,0.45147797 ,0.14451518 ,0.17996395 ,-0.70594978 ,-0.92943177 ,0.13649282
+ ,-0.5938426 ,0.50289928 ,0.19635269 ,0.16811504 ,0.05803999 ,0.0037204
+ ,0.13847419 ,0.30568038 ,0.3700732 ,0.21257548 ,-0.31151753 ,-0.28836886
+ ,0.68743932 ,-0.11084429 ,-0.4673766 ,0.16637754 ,-0.38992572 ,0.16505578
+ ,-0.07499844 ,0.04226538 ,-0.11042177 ,0.0704542 ,-0.632819 ,-0.54898472
+ ,0.26498649 ,-0.59380386 ,0.93387213 ,0.06526726 ,-0.23223558 ,0.07941394
+ ,0.14325166 ,0.26914661 ,0.00925575 ,-0.34282161 ,-0.51418231 ,-0.12011075
+ ,-0.26676314 ,-0.09999028 ,0.03027513 ,0.22846503 ,-0.08930338 ,-0.1867156
+ ,0.66297846 ,0.32220769 ,-0.06015469 ,0.04034043 ,0.09595597 ,-1.
+ ,-0.42933352 ,0.25069376 ,-0.26030918 ,-0.28511861 ,-0.19931228 ,0.24408572
+ ,-0.3231952 ,0.45688981 ,-0.07354078 ,0.25669449 ,-0.44202722 ,0.11928406
+ ,-0.32826109 ,0.52660984 ,0.03067858 ,0.11095242 ,0.19933679 ,0.03042371
+ ,-0.34768682 ,0.09108447 ,0.61234556 ,0.1854931 ,0.19680502 ,0.27617564
+ ,0.33381827 ,-0.47358967 ,0.28714328 ,-0.27495982])
+
+ref = [ 1.6844872e+01, -3.8865981e+00, -3.4971607e-01, -4.1598725e-01,
+ -1.9625235e-01, -1.5887988e-01, -7.7221274e-02,  2.0610046e-01,
+  1.3069814e-01,  1.1363924e-02,  4.9844027e-02, -5.6932509e-02,
+ -1.6958869e-01]
+
+
+mfccf32=dsp.arm_mfcc_instance_f32()
+
+sample_rate = 16000
+FFTSize = 256
+numOfDctOutputs = 13
+    
+freq_min = 64
+freq_high = sample_rate / 2
+numOfMelFilters = 20
+
+window = sig.hamming(FFTSize, sym=False)
+      
+filtLen,filtPos,totalLen,packedFilters,_ = mfcc.melFilterMatrix(freq_min, freq_high, numOfMelFilters,sample_rate,FFTSize)
+
+       
+dctMatrixFilters = mfcc.dctMatrix(numOfDctOutputs, numOfMelFilters)
+
+
+
+
+status=dsp.arm_mfcc_init_f32(mfccf32,256,20,13,dctMatrixFilters,
+    filtPos,filtLen,packedFilters,window)
+print(status)
+
+tmp=np.zeros(FFTSize + 2)
+
+res=dsp.arm_mfcc_f32(mfccf32,debug,tmp)
+
+print(res)
+
+print(ref)
+
+print(mfccf32.fftLen())
+print(mfccf32.nbMelFilters())
+print(mfccf32.nbDctOutputs())

+ 67 - 0
Scripts/GenMFCCDataForCPP.py

@@ -0,0 +1,67 @@
+###########################################
+# Project:      CMSIS DSP Library
+# Title:        GenMFCCDataForCPP.py
+# Description:  Generation of MFCC arrays for the MFCC function
+# 
+# $Date:        07 September 2021
+# $Revision:    V1.10.0
+# 
+# Target Processor: Cortex-M and Cortex-A cores
+# -------------------------------------------------------------------- */
+# 
+# Copyright (C) 2010-2021 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.
+############################################
+
+#########################
+#
+# This script is generating arrays required by the MFCC implementation:
+# DCT coefficients and Mel filters
+# Those arrays must be used with the arm_mfcc_init functions
+# The configuration is done through a yaml file describing the values for the
+# MFCC and the type
+#
+import argparse
+import yaml
+import mfccdata 
+import os.path
+
+parser = argparse.ArgumentParser(description='Generate MFCC Data for CPP')
+
+
+parser.add_argument('-n', nargs='?',type = str, default="mfccdata", help="mfcc file name")
+parser.add_argument('-d', nargs='?',type = str, default="Testing/Source/Tests", help="mfcc c file directory")
+parser.add_argument('-i', nargs='?',type = str, default="Testing/Include/Tests", help="mfcc h file directory")
+parser.add_argument('others', nargs=argparse.REMAINDER)
+
+args = parser.parse_args()
+
+
+
+if args.n and args.d and args.others:
+   cpath=os.path.join(args.d,args.n + ".c")
+   hpath=os.path.join(args.i,args.n + ".h")
+
+   with open(args.others[0],"r") as f:
+     configs=yaml.safe_load(f) 
+     mfccdata.prepareDctconfig(configs["dct"])
+     mfccdata.prepareMelconfig(configs["melfilter"])
+     mfccdata.prepareWindowConfig(configs["window"])
+     with open(hpath,"w") as h:
+        mfccdata.genMfccHeader(h,configs,args.n)
+     with open(cpath,"w") as c:
+        mfccdata.genMfccInit(c,configs,args.n)
+           

+ 46 - 0
Scripts/mfccconfig.yaml

@@ -0,0 +1,46 @@
+dct:
+  config1: 
+    melFilters: 20 
+    dctOutputs: 13
+    type: "f32"
+  
+melfilter:
+  config1: 
+    fftlength: 1024 
+    fmin: 64 
+    fmax: 8000 
+    samplingRate : 16000 
+    melFilters: 20 
+    type: "f32"
+  
+  config2: 
+    fftlength: 512 
+    fmin: 64 
+    fmax: 8000 
+    samplingRate : 16000 
+    melFilters: 20 
+    type: "f32"
+  
+  config3 : 
+    fftlength: 256 
+    fmin: 64 
+    fmax: 8000 
+    samplingRate : 16000 
+    melFilters: 20 
+    type: "f32"  
+
+window:
+  config1:
+    fftlength: 1024 
+    type: "f32"  
+    win: "hamming"
+
+  config2:
+    fftlength: 512 
+    type: "f32"  
+    win: "hamming"
+
+  config3:
+    fftlength: 256 
+    type: "f32"  
+    win: "hamming"

+ 231 - 0
Scripts/mfccdata.py

@@ -0,0 +1,231 @@
+###########################################
+# Project:      CMSIS DSP Library
+# Title:        mfccdata.py
+# Description:  Generation of MFCC arays for the MFCC C init function
+# 
+# $Date:        07 September 2021
+# $Revision:    V1.10.0
+# 
+# Target Processor: Cortex-M and Cortex-A cores
+# -------------------------------------------------------------------- */
+# 
+# Copyright (C) 2010-2021 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.
+############################################
+import numpy as np
+from jinja2 import Environment, PackageLoader, select_autoescape,FileSystemLoader
+import os.path
+import struct
+import scipy.signal as sig
+
+def to_q31(v):
+    r = int(round(v * 2**31))
+    if (r > 0x07FFFFFFF):
+      r = 0x07FFFFFFF
+    if (r < -0x080000000):
+      r = -0x080000000
+    return ("0x%s" % format(struct.unpack('<I', struct.pack('<i', r))[0],'08X'))
+
+def to_q15(v):
+    r = int(round(v * 2**15))
+    if (r > 0x07FFF):
+      r = 0x07FFF
+    if (r < -0x08000):
+      r = -0x08000
+    return ("0x%s" % format(struct.unpack('<H', struct.pack('<h', r))[0],'04X'))
+
+def to_f16(v):
+     return("(float16_t)%f" % struct.unpack('<e',struct.pack('<e',v)))
+
+def to_f32(v):
+     return("%ff" % struct.unpack('<f',struct.pack('<f',v)))
+
+class ConvertArray:
+    def __init__(self,theType):
+        self._cvt = lambda x : x
+        if theType=="f32":
+            self._cvt = to_f32
+        if theType=="f16":
+            self._cvt = to_f16 
+        if theType=="q31":
+            self._cvt = to_q31
+        if theType=="q15":
+            self._cvt = to_q15
+
+    def getArrayContent(self,samples):
+        nb = 0
+        res=""
+        res += "{\n"
+        for sample in samples:
+            res += str(self._cvt(sample))
+            res += ","
+            nb = nb + 1 
+            if nb == 10:
+                res += "\n"
+                nb = 0 
+        res += "}"
+        return(res)
+
+
+
+def frequencyToMelSpace(freq):
+    return 1127.0 * np.log(1.0 + freq / 700.0)
+
+def melSpaceToFrequency(mels):
+    return 700.0 * (np.exp(mels / 1127.0) - 1.0)
+
+def melFilterMatrix(fmin, fmax, numOfMelFilters,fs,FFTSize):
+
+    filters = np.zeros((numOfMelFilters,int(FFTSize/2+1)))
+    zeros = np.zeros(int(FFTSize // 2 ))
+
+
+    fmin_mel = frequencyToMelSpace(fmin)
+    fmax_mel = frequencyToMelSpace(fmax)
+    mels = np.linspace(fmin_mel, fmax_mel, num=numOfMelFilters+2)
+
+
+    linearfreqs = np.linspace( 0, fs/2.0, int(FFTSize // 2 + 1) )
+    spectrogrammels = frequencyToMelSpace(linearfreqs)[1:]
+
+
+    filtPos=[]
+    filtLen=[]
+    totalLen = 0
+    packedFilters = []
+    for n in range(numOfMelFilters):
+
+      
+      upper = (spectrogrammels - mels[n])/(mels[n+1]-mels[n]) 
+      lower = (mels[n+2] - spectrogrammels)/(mels[n+2]-mels[n+1])
+
+
+      filters[n, :] = np.hstack([0,np.maximum(zeros,np.minimum(upper,lower))])
+      nb = 0 
+      startFound = False
+      for sample in filters[n, :]:
+        if not startFound and sample != 0.0:
+            startFound = True 
+            startPos = nb
+
+        if startFound and sample == 0.0:
+           endPos = nb - 1 
+           break
+        nb = nb + 1 
+      filtLen.append(endPos - startPos+1)
+      totalLen += endPos - startPos + 1
+      filtPos.append(startPos)
+      packedFilters += list(filters[n, startPos:endPos+1])
+
+    return filtLen,filtPos,totalLen,packedFilters,filters
+
+
+def dctMatrix(numOfDctOutputs, numOfMelFilters):
+   
+    result = np.zeros((numOfDctOutputs,numOfMelFilters))
+    s=(np.linspace(1,numOfMelFilters,numOfMelFilters) - 0.5)/numOfMelFilters
+
+    for i in range(0, numOfDctOutputs):
+        result[i,:]=np.cos(i * np.pi*s) * np.sqrt(2.0/numOfMelFilters)
+        
+    return result
+
+
+def ctype(s):
+    if s == "f64":
+        return("float64_t")
+    if s == "f32":
+        return("float32_t")
+    if s == "f16":
+        return("float16_t")
+    if s == "q31":
+        return("q31_t")
+    if s == "q15":
+        return("q15_t")
+
+def typeext(s):
+    if s == "f64":
+        return("_f64")
+    if s == "f32":
+        return("_f32")
+    if s == "f16":
+        return("_f16")
+    if s == "q31":
+        return("_q31") 
+    if s == "q15":
+        return("_q15")
+
+def prepareWindowConfig(configs):
+    # sig.hamming(FFTSize, sym=False) 
+    for config in configs:
+        c=configs[config] 
+        if c["win"] == "hamming":
+           win = sig.hamming(c["fftlength"], sym=False) 
+        if c["win"] == "hanning":
+           win = sig.hann(c["fftlength"], sym=False) 
+
+        cvt=ConvertArray(c["type"])
+        c["ctype"]=ctype(c["type"])
+        c["ext"]=typeext(c["type"])
+
+        c["winSamples"] = cvt.getArrayContent(win)
+
+def prepareMelconfig(configs):
+    for config in configs:
+        c=configs[config]
+
+        cvt=ConvertArray(c["type"])
+        cvtInt=ConvertArray(None)
+        c["ctype"]=ctype(c["type"])
+        c["ext"]=typeext(c["type"])
+
+        filtLen,filtPos,totalLen,packedFilters,filters = melFilterMatrix(c["fmin"], c["fmax"], c["melFilters"],c["samplingRate"],c["fftlength"])
+    
+        c["filtLenArray"]=cvtInt.getArrayContent(filtLen)
+        c["filtPosArray"]=cvtInt.getArrayContent(filtPos)
+        c["totalLen"]=totalLen
+        c["filters"]=cvt.getArrayContent(packedFilters)
+
+def prepareDctconfig(configs):
+    for config in configs:
+        c=configs[config]
+
+        cvt=ConvertArray(c["type"])
+        c["ctype"]=ctype(c["type"])
+        c["ext"]=typeext(c["type"])
+        c["dctMatrixLength"]=c["dctOutputs"] * c["melFilters"]
+
+        dctMat = dctMatrix(c["dctOutputs"],c["melFilters"])
+        dctMat=dctMat.reshape(c["dctMatrixLength"])
+        c["dctMatrix"]=cvt.getArrayContent(dctMat)
+
+    #print(configs)
+
+env = Environment(
+       loader=PackageLoader("mfccdata","mfcctemplates"),
+       autoescape=select_autoescape(),
+       trim_blocks=True
+    )
+    
+ctemplate = env.get_template("mfccdata.c")
+htemplate = env.get_template("mfccdata.h")  
+
+
+def genMfccHeader(f,configs,filename):
+    print(htemplate.render(configs=configs,filename=filename),file=f)
+
+def genMfccInit(f,configs,filename):
+    print(ctemplate.render(configs=configs,filename=filename),file=f)

+ 23 - 0
Scripts/mfcctemplates/mfccdata.c

@@ -0,0 +1,23 @@
+#include "{{filename}}.h"
+
+{% for config in configs["dct"] %}
+const {{configs["dct"][config]["ctype"]}} mfcc_dct_coefs_{{config}}[NB_MFCC_DCT_COEFS_{{config.upper()}}]={{configs["dct"][config]["dctMatrix"]}};
+
+{% endfor %}
+
+{% for config in configs["window"] %}
+const {{configs["window"][config]["ctype"]}} mfcc_window_coefs_{{config}}[NB_MFCC_WIN_COEFS_{{config.upper()}}]={{configs["window"][config]["winSamples"]}};
+
+{% endfor %}
+
+{% for config in configs["melfilter"] %}
+const uint32_t mfcc_filter_pos_{{config}}[NB_MFCC_NB_FILTER_{{config.upper()}}]={{configs["melfilter"][config]["filtPosArray"]}};
+const uint32_t mfcc_filter_len_{{config}}[NB_MFCC_NB_FILTER_{{config.upper()}}]={{configs["melfilter"][config]["filtLenArray"]}};
+
+{% endfor %}
+
+
+{% for config in configs["melfilter"] %}
+const {{configs["melfilter"][config]["ctype"]}} mfcc_filter_coefs_{{config}}[NB_MFCC_FILTER_COEFS_{{config.upper()}}]={{configs["melfilter"][config]["filters"]}};
+
+{% endfor %}

+ 62 - 0
Scripts/mfcctemplates/mfccdata.h

@@ -0,0 +1,62 @@
+#ifndef _MFCC_DATA_H_
+#define _MFCC_DATA_H_ 
+
+#include "arm_math_types.h"
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+
+/*****
+
+ DCT COEFFICIENTS FOR THE MFCC
+
+*****/
+
+{% for config in configs["dct"] %}
+#define NB_MFCC_DCT_COEFS_{{config.upper()}} {{configs["dct"][config]['dctMatrixLength']}}
+extern const {{configs["dct"][config]["ctype"]}} mfcc_dct_coefs_{{config}}[NB_MFCC_DCT_COEFS_{{config.upper()}}];
+
+{% endfor %}
+
+/*****
+
+ WINDOW COEFFICIENTS
+
+*****/
+
+{% for config in configs["window"] %}
+#define NB_MFCC_WIN_COEFS_{{config.upper()}} {{configs["window"][config]['fftlength']}}
+extern const {{configs["window"][config]["ctype"]}} mfcc_window_coefs_{{config}}[NB_MFCC_WIN_COEFS_{{config.upper()}}];
+
+{% endfor %}
+
+/*****
+
+ MEL FILTER COEFFICIENTS FOR THE MFCC
+
+*****/
+
+{% for config in configs["melfilter"] %}
+#define NB_MFCC_NB_FILTER_{{config.upper()}} {{configs["melfilter"][config]['melFilters']}}
+extern const uint32_t mfcc_filter_pos_{{config}}[NB_MFCC_NB_FILTER_{{config.upper()}}];
+extern const uint32_t mfcc_filter_len_{{config}}[NB_MFCC_NB_FILTER_{{config.upper()}}];
+
+{% endfor %}
+
+
+
+{% for config in configs["melfilter"] %}
+#define NB_MFCC_FILTER_COEFS_{{config.upper()}} {{configs["melfilter"][config]['totalLen']}}
+extern const {{configs["melfilter"][config]["ctype"]}} mfcc_filter_coefs_{{config}}[NB_MFCC_FILTER_COEFS_{{config.upper()}}];
+
+{% endfor %}
+
+#ifdef   __cplusplus
+}
+#endif
+
+#endif
+

+ 1 - 1
Source/FastMathFunctions/arm_vlog_q15.c

@@ -82,7 +82,7 @@ static uint16_t arm_scalar_log_q15(uint16_t src)
    int32_t tmp;
 
 
-   /* Normalize and convert to q314 format */
+   /* Normalize and convert to q14 format */
    x = src;
    if ((c-1) < 0)
    {

+ 4 - 0
Source/TransformFunctions/CMakeLists.txt

@@ -192,6 +192,10 @@ if ((NOT ARMAC5) AND (NOT DISABLEFLOAT16))
 endif()
 endif()
 
+target_sources(CMSISDSPTransform PRIVATE arm_mfcc_init_f32.c)
+target_sources(CMSISDSPTransform PRIVATE arm_mfcc_f32.c)
+
+
 ### Includes
 target_include_directories(CMSISDSPTransform PUBLIC "${DSP}/Include")
 

+ 4 - 0
Source/TransformFunctions/TransformFunctions.c

@@ -48,6 +48,10 @@
 #include "arm_rfft_fast_init_f32.c"
 #include "arm_rfft_fast_init_f64.c"
 
+#include "arm_mfcc_init_f32.c"
+#include "arm_mfcc_f32.c"
+
+
 /* Deprecated */
 
 #include "arm_dct4_f32.c"

+ 159 - 0
Source/TransformFunctions/arm_mfcc_f32.c

@@ -0,0 +1,159 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_mfcc_f32.c
+ * Description:  MFCC function for the f32 version
+ *
+ * $Date:        07 September 2021
+ * $Revision:    V1.10.0
+ *
+ * Target Processor: Cortex-M and Cortex-A cores
+ * -------------------------------------------------------------------- */
+/*
+ * Copyright (C) 2010-2021 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/transform_functions.h"
+#include "dsp/statistics_functions.h"
+#include "dsp/basic_math_functions.h"
+#include "dsp/complex_math_functions.h"
+#include "dsp/fast_math_functions.h"
+#include "dsp/matrix_functions.h"
+
+/**
+  @ingroup groupTransforms
+ */
+
+
+/**
+  @defgroup MFCC MFCC
+
+  MFCC Transform
+
+  There are separate functions for floating-point, Q15, and Q31 data types.
+ */
+
+
+
+/**
+  @addtogroup MFCC
+  @{
+ */
+
+/**
+  @brief         MFCC F32
+  @param[in]    S       points to the mfcc instance structure
+  @param[in]     pSrc points to the input samples
+  @param[out]     pDst  points to the output MFCC values
+  @param[inout]     pTmp  points to a temporary buffer of complex
+
+  @return        none
+
+  @par           Description
+                   The number of input samples if the FFT length used
+                   when initializing the instance data structure.
+
+                   The temporary buffer has a 2*fft length size when MFCC
+                   is implemented with CFFT.
+                   It has length FFT Length + 2 when implemented with RFFT
+                   (default implementation).
+
+                   The source buffer is modified by this function.
+
+ */
+void arm_mfcc_f32(
+  arm_mfcc_instance_f32 * S,
+  float32_t *pSrc,
+  float32_t *pDst,
+  float32_t *pTmp
+  )
+{
+  float32_t maxValue;
+  uint32_t  index; 
+  uint32_t i;
+  float32_t result;
+  const float32_t *coefs=S->filterCoefs;
+  arm_matrix_instance_f32 pDctMat;
+
+  /* Normalize */
+  arm_absmax_f32(pSrc,S->fftLen,&maxValue,&index);
+
+  arm_scale_f32(pSrc,1.0f/maxValue,pSrc,S->fftLen);
+
+  /* Multiply by window */
+  arm_mult_f32(pSrc,S->windowCoefs,pSrc,S->fftLen);
+
+  /* Compute spectrum magnitude 
+  */
+#if defined(ARM_MFCC_CFFT_BASED)
+  /* some HW accelerator for CMSIS-DSP used in some boards
+     are only providing acceleration for CFFT.
+     With ARM_MFCC_CFFT_BASED enabled, CFFT is used and the MFCC
+     will be accelerated on those boards.
+ 
+     The default is to use RFFT
+  */
+  /* Convert from real to complex */
+  for(i=0; i < S->fftLen ; i++)
+  {
+    pTmp[2*i] = pSrc[i];
+    pTmp[2*i+1] = 0.0f;
+  }
+  arm_cfft_f32(&(S->cfft),pTmp,0,1);
+#else
+  /* Default RFFT based implementation */
+  arm_rfft_fast_f32(&(S->rfft),pSrc,pTmp,0);
+  /* Unpack real values */
+  pTmp[S->fftLen]=pTmp[1];
+  pTmp[S->fftLen+1]=0.0f;
+  pTmp[1]=0.0f;
+#endif
+  arm_cmplx_mag_f32(pTmp,pSrc,S->fftLen);
+
+  /* Apply MEL filters */
+  for(i=0; i<S->nbMelFilters; i++)
+  {
+      arm_dot_prod_f32(pSrc+S->filterPos[i],
+        coefs,
+        S->filterLengths[i],
+        &result);
+
+      coefs += S->filterLengths[i];
+
+      pTmp[i] = result;
+
+  }
+
+  /* Compute the log */
+  arm_offset_f32(pTmp,1.0e-6f,pTmp,S->nbMelFilters);
+  arm_vlog_f32(pTmp,pTmp,S->nbMelFilters);
+
+  /* Multiply with the DCT matrix */
+
+  pDctMat.numRows=S->nbDctOutputs;
+  pDctMat.numCols=S->nbMelFilters;
+  pDctMat.pData=(float32_t*)S->dctCoefs;
+
+  arm_mat_vec_mult_f32(&pDctMat, pTmp, pDst);
+      
+
+}
+
+/**
+  @} end of MFCC group
+ */

+ 107 - 0
Source/TransformFunctions/arm_mfcc_init_f32.c

@@ -0,0 +1,107 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_mfcc_init_f32.c
+ * Description:  MFCC initialization function for the f32 version
+ *
+ * $Date:        07 September 2021
+ * $Revision:    V1.10.0
+ *
+ * Target Processor: Cortex-M and Cortex-A cores
+ * -------------------------------------------------------------------- */
+/*
+ * Copyright (C) 2010-2021 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.
+ */
+
+/**
+  @ingroup groupTransforms
+ */
+
+
+/**
+  @addtogroup MFCC
+  @{
+ */
+
+
+#include "dsp/transform_functions.h"
+
+
+
+/**
+  @brief         Initialization of the MFCC F32 instance structure
+  @param[out]    S       points to the mfcc instance structure
+  @param[in]     fftLen  fft length
+  @param[in]     nbMelFilters  number of Mel filters
+  @param[in]     nbDctOutputs  number of Dct outputs
+  @param[in]     dctCoefs  points to an array of DCT coefficients
+  @param[in]     filterPos  points of the array of filter positions
+  @param[in]     filterLengths  points to the array of filter lengths
+  @param[in]     filterCoefs  points to the array of filter coefficients
+  @param[in]     windowCoefs  points to the array of window coefficients
+
+  @return        error status
+
+  @par           Description
+                   The matrix of Mel filter coefficients is sparse.
+                   Most of the coefficients are zero.
+                   To avoid multiplying the spectrogram by those zeros, the
+                   filter is applied only to a given position in the spectrogram
+                   and on a given number of FFT bins (the filter length).
+                   It is the reason for the arrays filterPos and filterLengths.
+
+                   window coefficients can describe (for instance) a Hamming window.
+                   The array has the same size as the FFT length.
+
+                   The folder Scripts is containing a Python script which can be used
+                   to generate the filter, dct and window arrays.
+ */
+
+arm_status arm_mfcc_init_f32(
+  arm_mfcc_instance_f32 * S,
+  uint32_t fftLen,
+  uint32_t nbMelFilters,
+  uint32_t nbDctOutputs,
+  const float32_t *dctCoefs,
+  const uint32_t *filterPos,
+  const uint32_t *filterLengths,
+  const float32_t *filterCoefs,
+  const float32_t *windowCoefs
+  )
+{
+ arm_status status;
+
+ S->fftLen=fftLen;
+ S->nbMelFilters=nbMelFilters;
+ S->nbDctOutputs=nbDctOutputs;
+ S->dctCoefs=dctCoefs;
+ S->filterPos=filterPos;
+ S->filterLengths=filterLengths;
+ S->filterCoefs=filterCoefs;
+ S->windowCoefs=windowCoefs;
+
+ #if defined(ARM_MFCC_CFFT_BASED)
+ status=arm_cfft_init_f32(&(S->cfft),fftLen);
+ #else
+ status=arm_rfft_fast_init_f32(&(S->rfft),fftLen);
+ #endif
+ 
+ return(status);
+}
+
+/**
+  @} end of MFCC group
+ */

+ 4 - 1
Testing/CMakeLists.txt

@@ -333,7 +333,10 @@ if (TRANSFORM)
   Source/Tests/TransformCQ31.cpp
   Source/Tests/TransformRQ31.cpp
   Source/Tests/TransformCQ15.cpp
-  Source/Tests/TransformRQ15.cpp)
+  Source/Tests/TransformRQ15.cpp
+  Source/Tests/MFCCF32.cpp
+  Source/Tests/mfccdata.c
+  )
 endif()
 
 if (SVM)

+ 28 - 0
Testing/Include/Tests/MFCCF32.h

@@ -0,0 +1,28 @@
+#include "Test.h"
+#include "Pattern.h"
+
+#include "dsp/transform_functions.h"
+
+class MFCCF32:public Client::Suite
+    {
+        public:
+            MFCCF32(Testing::testID_t id);
+            virtual void setUp(Testing::testID_t,std::vector<Testing::param_t>& params,Client::PatternMgr *mgr);
+            virtual void tearDown(Testing::testID_t,Client::PatternMgr *mgr);
+        private:
+            #include "MFCCF32_decl.h"
+            
+            Client::Pattern<float32_t> input1;
+            Client::Pattern<float32_t> input2;
+            Client::LocalPattern<float32_t> output;
+            Client::LocalPattern<float32_t> tmp;
+            Client::LocalPattern<float32_t> tmpin;
+
+            // Reference patterns are not loaded when we are in dump mode
+            Client::RefPattern<float32_t> ref;
+
+            arm_mfcc_instance_f32 mfcc;
+
+            uint32_t fftLen;
+
+    };

+ 74 - 0
Testing/Include/Tests/mfccdata.h

@@ -0,0 +1,74 @@
+#ifndef _MFCC_DATA_H_
+#define _MFCC_DATA_H_ 
+
+#include "arm_math_types.h"
+
+#ifdef   __cplusplus
+extern "C"
+{
+#endif
+
+
+/*****
+
+ DCT COEFFICIENTS FOR THE MFCC
+
+*****/
+
+#define NB_MFCC_DCT_COEFS_CONFIG1 260
+extern const float32_t mfcc_dct_coefs_config1[NB_MFCC_DCT_COEFS_CONFIG1];
+
+
+/*****
+
+ WINDOW COEFFICIENTS
+
+*****/
+
+#define NB_MFCC_WIN_COEFS_CONFIG1 1024
+extern const float32_t mfcc_window_coefs_config1[NB_MFCC_WIN_COEFS_CONFIG1];
+
+#define NB_MFCC_WIN_COEFS_CONFIG2 512
+extern const float32_t mfcc_window_coefs_config2[NB_MFCC_WIN_COEFS_CONFIG2];
+
+#define NB_MFCC_WIN_COEFS_CONFIG3 256
+extern const float32_t mfcc_window_coefs_config3[NB_MFCC_WIN_COEFS_CONFIG3];
+
+
+/*****
+
+ MEL FILTER COEFFICIENTS FOR THE MFCC
+
+*****/
+
+#define NB_MFCC_NB_FILTER_CONFIG1 20
+extern const uint32_t mfcc_filter_pos_config1[NB_MFCC_NB_FILTER_CONFIG1];
+extern const uint32_t mfcc_filter_len_config1[NB_MFCC_NB_FILTER_CONFIG1];
+
+#define NB_MFCC_NB_FILTER_CONFIG2 20
+extern const uint32_t mfcc_filter_pos_config2[NB_MFCC_NB_FILTER_CONFIG2];
+extern const uint32_t mfcc_filter_len_config2[NB_MFCC_NB_FILTER_CONFIG2];
+
+#define NB_MFCC_NB_FILTER_CONFIG3 20
+extern const uint32_t mfcc_filter_pos_config3[NB_MFCC_NB_FILTER_CONFIG3];
+extern const uint32_t mfcc_filter_len_config3[NB_MFCC_NB_FILTER_CONFIG3];
+
+
+
+
+#define NB_MFCC_FILTER_COEFS_CONFIG1 948
+extern const float32_t mfcc_filter_coefs_config1[NB_MFCC_FILTER_COEFS_CONFIG1];
+
+#define NB_MFCC_FILTER_COEFS_CONFIG2 473
+extern const float32_t mfcc_filter_coefs_config2[NB_MFCC_FILTER_COEFS_CONFIG2];
+
+#define NB_MFCC_FILTER_COEFS_CONFIG3 236
+extern const float32_t mfcc_filter_coefs_config3[NB_MFCC_FILTER_COEFS_CONFIG3];
+
+
+#ifdef   __cplusplus
+}
+#endif
+
+#endif
+

+ 244 - 0
Testing/PatternGeneration/MFCC.py

@@ -0,0 +1,244 @@
+###########################################
+# Project:      CMSIS DSP Library
+# Title:        MFCC.py
+# Description:  Test pattern generation for MFCC
+# 
+# $Date:        02 September 2021
+# $Revision:    V1.10.0
+# 
+# Target Processor: Cortex-M and Cortex-A cores
+# -------------------------------------------------------------------- */
+# 
+# Copyright (C) 2010-2021 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.
+############################################
+import os.path
+import numpy as np
+import itertools
+import Tools
+import scipy
+import scipy.signal as sig
+import scipy.fftpack
+
+
+################################
+#
+# Gives the same results as the tensorflow lite
+# MFCC if hamming window is used
+# (TF stft) is using hanning by default
+#
+
+DEBUG = False
+
+def frequencyToMelSpace(freq):
+    return 1127.0 * np.log(1.0 + freq / 700.0)
+
+def melSpaceToFrequency(mels):
+    return 700.0 * (np.exp(mels / 1127.0) - 1.0)
+
+def melFilterMatrix(fmin, fmax, numOfMelFilters,fs,FFTSize):
+
+    filters = np.zeros((numOfMelFilters,int(FFTSize/2+1)))
+    zeros = np.zeros(int(FFTSize // 2 ))
+
+
+    fmin_mel = frequencyToMelSpace(fmin)
+    fmax_mel = frequencyToMelSpace(fmax)
+    mels = np.linspace(fmin_mel, fmax_mel, num=numOfMelFilters+2)
+
+
+    linearfreqs = np.linspace( 0, fs/2.0, int(FFTSize // 2 + 1) )
+    spectrogrammels = frequencyToMelSpace(linearfreqs)[1:]
+
+
+    for n in range(numOfMelFilters):
+
+      
+      upper = (spectrogrammels - mels[n])/(mels[n+1]-mels[n]) 
+      lower = (mels[n+2] - spectrogrammels)/(mels[n+2]-mels[n+1])
+
+
+      filters[n, :] = np.hstack([0,np.maximum(zeros,np.minimum(upper,lower))])
+
+    return filters
+
+
+def dctMatrix(numOfDctOutputs, numOfMelFilters):
+   
+    result = np.zeros((numOfDctOutputs,numOfMelFilters))
+    s=(np.linspace(1,numOfMelFilters,numOfMelFilters) - 0.5)/numOfMelFilters
+
+    for i in range(0, numOfDctOutputs):
+        result[i,:]=np.cos(i * np.pi*s) * np.sqrt(2.0/numOfMelFilters)
+        
+    return result
+
+
+
+class MFCCConfig:
+   def __init__(self,freq_min,freq_high,numOfMelFilters,numOfDctOutputs,FFTSize,sample_rate):
+      self._freq_min=freq_min
+      self._freq_high=freq_high 
+      self._numOfMelFilters = numOfMelFilters
+      self._FFTSize=FFTSize 
+      self._sample_rate=sample_rate
+      #self._window = sig.hann(FFTSize, sym=True)
+      self._window = sig.hamming(FFTSize, sym=False)
+      #print(self._window)
+      self._numOfDctOutputs=numOfDctOutputs
+
+      self._filters = melFilterMatrix(freq_min, freq_high, numOfMelFilters,sample_rate,FFTSize)
+
+       
+      self._dctMatrixFilters = dctMatrix(numOfDctOutputs, numOfMelFilters)
+
+   def mfcc(self,audio):
+       m = np.amax(np.abs(audio))
+       if m != 0:
+          s = 1.0 / m
+       else:
+          s = 1.0
+       audio = audio * s
+
+       audioWin = audio * self._window
+
+       if DEBUG:
+         print(audioWin)
+
+       audioFFT = scipy.fftpack.fft(audioWin)
+       if DEBUG:
+         print(audioFFT)
+
+       audioPower = np.abs(audioFFT)
+       if DEBUG:
+         print(audioPower)
+
+       filterLimit = int(1 + self._FFTSize // 2)
+       audioPower=audioPower[:filterLimit]
+      
+       audioFiltered = np.dot(self._filters,audioPower)
+       if DEBUG:
+         print(audioFiltered)
+
+       audioLog = np.log(audioFiltered + 1e-6)
+
+       cepstral_coefficents = np.dot(self._dctMatrixFilters, audioLog)
+   
+       return(cepstral_coefficents)
+
+
+debug=np.array([ 0.65507051 ,-0.94647589 ,0.00627239 ,0.14151286 ,-0.10863318 ,-0.36370327
+ ,0.05777126 ,-0.11915792 ,0.50183546 ,-0.31461335 ,0.66440771 ,0.05389963
+ ,0.39690544 ,0.25424852 ,-0.17045277 ,0.09649268 ,0.87357385 ,-0.44666372
+ ,-0.02637822 ,-0.10055151 ,-0.14610252 ,-0.05981251 ,-0.02999124 ,0.60923213
+ ,0.10530095 ,0.35684248 ,0.21845946 ,0.47845017 ,-0.60206979 ,0.25186908
+ ,-0.27410056 ,-0.07080467 ,-0.05109539 ,-0.2666572 ,0.25483105 ,-0.86459185
+ ,0.07733397 ,-0.58535444 ,0.06230904 ,-0.04161475 ,-0.17467296 ,0.77721125
+ ,-0.01728161 ,-0.32141218 ,0.36674466 ,-0.17932843 ,0.78486115 ,0.12469579
+ ,-0.94796877 ,0.05536031 ,0.32627676 ,0.46628512 ,-0.02585836 ,-0.51439834
+ ,0.21387904 ,0.16319442 ,-0.01020818 ,-0.77161183 ,0.07754634 ,-0.24970455
+ ,0.2368003 ,0.35167963 ,0.14620137 ,-0.02415204 ,0.91086167 ,-0.02434647
+ ,-0.3968239 ,-0.04703925 ,-0.43905103 ,-0.34834965 ,0.33728158 ,0.15138992
+ ,-0.43218885 ,0.26619718 ,0.07177906 ,0.33393581 ,-0.50306915 ,-0.63101084
+ ,-0.08128395 ,-0.06569788 ,0.84232797 ,-0.32436751 ,0.02528537 ,-0.3498329
+ ,0.41859931 ,0.07794887 ,0.4571989 ,0.24290963 ,0.08437417 ,-0.01371585
+ ,-0.00103008 ,0.83978697 ,-0.29001237 ,0.14438743 ,0.11943318 ,-0.25576402
+ ,0.25151083 ,0.07886626 ,0.11565781 ,-0.01582203 ,0.1310246 ,-0.5553611
+ ,-0.37950665 ,0.44179691 ,0.08460877 ,0.30646419 ,0.48927934 ,-0.21240309
+ ,0.36844264 ,0.49686615 ,-0.81617664 ,0.52221472 ,-0.05188992 ,-0.03929655
+ ,-0.47674501 ,-0.54506781 ,0.30711148 ,0.10049337 ,-0.47549213 ,0.59106713
+ ,-0.62276051 ,-0.35182917 ,0.14612027 ,0.56142168 ,-0.01053732 ,0.35782179
+ ,-0.27220781 ,-0.03672346 ,-0.11282222 ,0.3364912 ,-0.22352515 ,-0.04245287
+ ,0.56968605 ,-0.14023724 ,-0.82982905 ,0.00860008 ,0.37920345 ,-0.53749318
+ ,-0.12761215 ,0.08567603 ,0.47020765 ,-0.28794812 ,-0.33888971 ,0.01850441
+ ,0.66848233 ,-0.26532759 ,-0.20777571 ,-0.68342729 ,-0.41498696 ,0.00593224
+ ,0.02229368 ,0.75596329 ,0.29447568 ,-0.1106449 ,0.24181939 ,0.05807497
+ ,-0.14343857 ,0.304988 ,0.00689148 ,-0.06264758 ,0.25864714 ,-0.22252155
+ ,0.28621689 ,0.17031599 ,-0.34694027 ,-0.01625718 ,0.39834181 ,0.01259659
+ ,-0.28022716 ,-0.02506168 ,-0.10276881 ,0.31733924 ,0.02787068 ,-0.09824124
+ ,0.45147797 ,0.14451518 ,0.17996395 ,-0.70594978 ,-0.92943177 ,0.13649282
+ ,-0.5938426 ,0.50289928 ,0.19635269 ,0.16811504 ,0.05803999 ,0.0037204
+ ,0.13847419 ,0.30568038 ,0.3700732 ,0.21257548 ,-0.31151753 ,-0.28836886
+ ,0.68743932 ,-0.11084429 ,-0.4673766 ,0.16637754 ,-0.38992572 ,0.16505578
+ ,-0.07499844 ,0.04226538 ,-0.11042177 ,0.0704542 ,-0.632819 ,-0.54898472
+ ,0.26498649 ,-0.59380386 ,0.93387213 ,0.06526726 ,-0.23223558 ,0.07941394
+ ,0.14325166 ,0.26914661 ,0.00925575 ,-0.34282161 ,-0.51418231 ,-0.12011075
+ ,-0.26676314 ,-0.09999028 ,0.03027513 ,0.22846503 ,-0.08930338 ,-0.1867156
+ ,0.66297846 ,0.32220769 ,-0.06015469 ,0.04034043 ,0.09595597 ,-1.
+ ,-0.42933352 ,0.25069376 ,-0.26030918 ,-0.28511861 ,-0.19931228 ,0.24408572
+ ,-0.3231952 ,0.45688981 ,-0.07354078 ,0.25669449 ,-0.44202722 ,0.11928406
+ ,-0.32826109 ,0.52660984 ,0.03067858 ,0.11095242 ,0.19933679 ,0.03042371
+ ,-0.34768682 ,0.09108447 ,0.61234556 ,0.1854931 ,0.19680502 ,0.27617564
+ ,0.33381827 ,-0.47358967 ,0.28714328 ,-0.27495982])
+
+def writeTests(config,format):
+    NBSAMPLES=[256,512,1024]
+    if DEBUG:
+       NBSAMPLES=[256]
+    
+
+    sample_rate = 16000
+    FFTSize = 256
+    numOfDctOutputs = 13
+    
+    freq_min = 64
+    freq_high = sample_rate / 2
+    numOfMelFilters = 20
+
+    for nb in NBSAMPLES:
+        inputs=[] 
+        outputs=[] 
+        inlengths=[]
+        outlengths=[]
+
+        audio=np.random.randn(nb)
+        audio = Tools.normalize(audio)
+        if DEBUG:
+           audio=debug
+        inputs += list(audio)
+        FFTSize=nb
+        mfccConfig=MFCCConfig(freq_min,freq_high,numOfMelFilters,numOfDctOutputs,FFTSize,sample_rate)
+        ref=mfccConfig.mfcc(audio)
+        #print(audio)
+        if DEBUG:
+           print(ref)
+        outputs+=list(ref)
+        inlengths+=[nb]
+        outlengths+=[numOfDctOutputs]
+        
+        config.writeInput(1, inputs,"MFCCInput_%d_" % nb)
+        config.writeReference(1, outputs,"MFCCRef_%d_" % nb)
+    
+   
+
+def generatePatterns():
+    PATTERNDIR = os.path.join("Patterns","DSP","Transform","MFCC")
+    PARAMDIR = os.path.join("Parameters","DSP","Transform","MFCC")
+    
+    configf32=Tools.Config(PATTERNDIR,PARAMDIR,"f32")
+    #configf16=Tools.Config(PATTERNDIR,PARAMDIR,"f16")
+    #configq31=Tools.Config(PATTERNDIR,PARAMDIR,"q31")
+    #configq15=Tools.Config(PATTERNDIR,PARAMDIR,"q15")
+    #configq7=Tools.Config(PATTERNDIR,PARAMDIR,"q7")
+
+    configf32.setOverwrite(False)
+
+
+   
+    writeTests(configf32,0)
+   
+if __name__ == '__main__':
+  generatePatterns()

+ 2050 - 0
Testing/Patterns/DSP/Transform/MFCCF32/MFCCInput_1024_1_f32.txt

@@ -0,0 +1,2050 @@
+W
+1024
+// 0.083274
+0x3daa8b9f
+// -0.246762
+0xbe7caf45
+// -0.037960
+0xbd1b7be4
+// 0.389758
+0x3ec78e57
+// 0.117606
+0x3df0db5b
+// 0.030969
+0x3cfdb1aa
+// -0.599450
+0xbf197593
+// -0.139526
+0xbe0edfd0
+// -0.099772
+0xbdcc555b
+// 0.269192
+0x3e89d382
+// 0.114547
+0x3dea97cb
+// -0.335116
+0xbeab944c
+// -0.418672
+0xbed65c32
+// 0.090418
+0x3db92d02
+// -0.467678
+0xbeef737e
+// 0.276846
+0x3e8dbebf
+// -0.001696
+0xbade52a3
+// -0.745306
+0xbf3ecc60
+// 0.212133
+0x3e593979
+// -0.204204
+0xbe511adf
+// -0.168509
+0xbe2c8d94
+// 0.366381
+0x3ebb964b
+// -0.071920
+0xbd934a98
+// 0.046223
+0x3d3d5485
+// 0.148863
+0x3e186fa4
+// -0.209831
+0xbe56ddec
+// -0.009329
+0xbc18d9c0
+// 0.169150
+0x3e2d35b8
+// -0.027940
+0xbce4e287
+// -0.053413
+0xbd5ac817
+// 0.270610
+0x3e8a8d70
+// -0.036922
+0xbd173b52
+// -0.125780
+0xbe00cc70
+// 0.056314
+0x3d66a949
+// 0.047632
+0x3d431a32
+// 0.390005
+0x3ec7aec6
+// -0.405622
+0xbecfada4
+// 0.155179
+0x3e1ee747
+// 0.299824
+0x3e998289
+// 0.116120
+0x3dedd02e
+// 0.154282
+0x3e1dfc15
+// 0.339098
+0x3ead9e51
+// 0.040488
+0x3d25d65f
+// -0.184227
+0xbe3ca60e
+// -0.113841
+0xbde9253b
+// -0.062334
+0xbd7f522f
+// 0.404141
+0x3eceeb98
+// -0.175774
+0xbe33fe21
+// -0.351967
+0xbeb43512
+// 0.250902
+0x3e80762a
+// -0.178283
+0xbe368fee
+// 0.057305
+0x3d6ab8cf
+// -0.003404
+0xbb5f1d01
+// -0.526002
+0xbf06a80d
+// 0.164180
+0x3e281ee0
+// -0.392335
+0xbec8e022
+// 0.206332
+0x3e5348c9
+// -0.440789
+0xbee1af0d
+// -0.381568
+0xbec35ceb
+// 0.537820
+0x3f09ae9a
+// -0.251414
+0xbe80b948
+// 0.152776
+0x3e1c715f
+// -0.369653
+0xbebd432b
+// -0.159073
+0xbe22e41f
+// 0.312969
+0x3ea03d79
+// -0.196897
+0xbe499f3e
+// 0.110233
+0x3de1c1d8
+// -0.482532
+0xbef70e61
+// -0.358307
+0xbeb77402
+// 0.016822
+0x3c89cdc9
+// 0.199651
+0x3e4c7143
+// 0.236559
+0x3e723c8b
+// 0.136545
+0x3e0bd281
+// -0.190804
+0xbe436206
+// 0.101340
+0x3dcf8b90
+// 0.438988
+0x3ee0c30c
+// -0.191545
+0xbe442460
+// 0.046813
+0x3d3fbe9a
+// 0.036336
+0x3d14d50c
+// 0.665946
+0x3f2a7b74
+// 0.399497
+0x3ecc8adb
+// 0.071860
+0x3d932b56
+// -0.162589
+0xbe267dd0
+// 0.507727
+0x3f01fa60
+// 0.121251
+0x3df85243
+// 0.449135
+0x3ee5f4f8
+// -0.290038
+0xbe947fce
+// 0.146660
+0x3e162def
+// -0.355175
+0xbeb5d974
+// -0.096516
+0xbdc5aa04
+// 0.197274
+0x3e4a0246
+// 0.244545
+0x3e7a6a0e
+// 0.242740
+0x3e7890bc
+// 0.303353
+0x3e9b511c
+// 0.154436
+0x3e1e2468
+// -0.037100
+0xbd17f685
+// 0.443055
+0x3ee2d81a
+// 0.294542
+0x3e96ce40
+// -0.087627
+0xbdb375fd
+// 0.188476
+0x3e40ffe2
+// 0.469159
+0x3ef0359b
+// 0.115316
+0x3dec2a98
+// 0.032042
+0x3d033ebd
+// -0.441039
+0xbee1cfee
+// -0.452115
+0xbee77b90
+// 0.002506
+0x3b243b0c
+// 0.432470
+0x3edd6ca6
+// -0.382642
+0xbec3e9b0
+// 0.121286
+0x3df864dc
+// -0.048865
+0xbd48266b
+// -0.191818
+0xbe446c02
+// 0.017050
+0x3c8bad6d
+// -0.487898
+0xbef9cdca
+// -0.063319
+0xbd81ad92
+// -0.126706
+0xbe01bf37
+// 0.200052
+0x3e4cda4e
+// -0.247250
+0xbe7d2f26
+// -0.348352
+0xbeb25b40
+// -0.494994
+0xbefd6fd5
+// -0.288375
+0xbe93a5e4
+// -0.406008
+0xbecfe052
+// 0.225187
+0x3e669781
+// -0.043501
+0xbd322de0
+// 0.103834
+0x3dd4a6e1
+// -0.133561
+0xbe08c427
+// -0.143875
+0xbe135406
+// 0.087989
+0x3db43396
+// -0.235579
+0xbe713b80
+// 0.286588
+0x3e92bbab
+// 0.180744
+0x3e391505
+// 0.110320
+0x3de1ef49
+// 0.091134
+0x3dbaa46a
+// -0.658171
+0xbf287de8
+// 0.140155
+0x3e0f84b8
+// -0.383634
+0xbec46bb9
+// -0.383373
+0xbec4497f
+// -0.179154
+0xbe377441
+// -0.369952
+0xbebd6a5b
+// -0.722185
+0xbf38e11c
+// 0.095197
+0x3dc2f666
+// -0.035481
+0xbd11549e
+// 0.317876
+0x3ea2c097
+// 0.109361
+0x3ddff88d
+// 0.460147
+0x3eeb9873
+// -0.070178
+0xbd8fb9ba
+// 0.168739
+0x3e2cc9fc
+// -0.421934
+0xbed807ac
+// 0.043136
+0x3d30af42
+// 0.133089
+0x3e08488c
+// -0.670100
+0xbf2b8bb3
+// 0.353758
+0x3eb51fca
+// -0.308092
+0xbe9dbe3c
+// 0.455202
+0x3ee91048
+// -0.050450
+0xbd4ea468
+// 0.112857
+0x3de721ba
+// 0.347245
+0x3eb1ca27
+// 0.071128
+0x3d91ab72
+// 0.100854
+0x3dce8cb3
+// -0.022522
+0xbcb88065
+// -0.424163
+0xbed92be8
+// 0.401664
+0x3ecda6de
+// 0.118090
+0x3df1d912
+// 0.007209
+0x3bec37da
+// 0.197828
+0x3e4a9361
+// -0.477735
+0xbef499b6
+// 0.555476
+0x3f0e33a5
+// 0.196975
+0x3e49b3e1
+// -0.553457
+0xbf0daf5e
+// 0.100147
+0x3dcd19e1
+// -0.175743
+0xbe33f5e6
+// 0.112135
+0x3de5a746
+// -0.062650
+0xbd804ede
+// 0.070620
+0x3d90a12d
+// 0.371614
+0x3ebe4441
+// -0.016058
+0xbc838c79
+// 0.330255
+0x3ea91736
+// -0.330126
+0xbea9064a
+// -0.686564
+0xbf2fc2a2
+// 0.215222
+0x3e5c6308
+// 0.642658
+0x3f24853e
+// -0.122342
+0xbdfa8e98
+// 0.153706
+0x3e1d653b
+// 0.274851
+0x3e8cb949
+// -0.126431
+0xbe017728
+// 0.344734
+0x3eb08105
+// -0.016883
+0xbc8a4e7c
+// 0.061540
+0x3d7c1182
+// -0.081127
+0xbda6260f
+// 0.336623
+0x3eac59d7
+// -0.037472
+0xbd197bc1
+// 0.279169
+0x3e8eef3c
+// 0.160354
+0x3e2433e1
+// 0.210481
+0x3e578839
+// -0.505605
+0xbf016f52
+// -0.038293
+0xbd1cd8da
+// 0.093067
+0x3dbe99b8
+// 0.215405
+0x3e5c9336
+// -0.080705
+0xbda54873
+// 0.008853
+0x3c110d7c
+// 0.246187
+0x3e7c186f
+// -0.084174
+0xbdac6332
+// 0.023096
+0x3cbd32f9
+// 0.039098
+0x3d202511
+// -0.393318
+0xbec96107
+// 0.033669
+0x3d09e87e
+// -0.071001
+0xbd9168c9
+// -0.382203
+0xbec3b00d
+// -0.146864
+0xbe1663a6
+// 0.201462
+0x3e4e4c28
+// -0.073140
+0xbd95ca61
+// -0.112866
+0xbde7261f
+// 0.213174
+0x3e5a4a47
+// -0.211004
+0xbe58115a
+// 0.286852
+0x3e92de3f
+// -0.259824
+0xbe8507b6
+// 0.273457
+0x3e8c0286
+// -0.137391
+0xbe0cb037
+// 0.738736
+0x3f3d1dcf
+// 0.016603
+0x3c88020c
+// -0.451902
+0xbee75fa3
+// -0.268858
+0xbe89a7bc
+// 0.072470
+0x3d946b2d
+// 0.555513
+0x3f0e3612
+// 0.334829
+0x3eab6ea6
+// 0.040606
+0x3d2652a7
+// 0.359553
+0x3eb81761
+// -0.181249
+0xbe399951
+// 0.500160
+0x3f000a78
+// -0.308761
+0xbe9e15fb
+// -0.037733
+0xbd1a8da2
+// 0.546983
+0x3f0c070d
+// -0.147263
+0xbe16cc0f
+// -0.146868
+0xbe166481
+// 0.163648
+0x3e279338
+// 0.126252
+0x3e014828
+// 0.374575
+0x3ebfc855
+// -0.318730
+0xbea33093
+// -0.101990
+0xbdd0dff9
+// 0.073589
+0x3d96b592
+// 0.383902
+0x3ec48ed6
+// 0.618832
+0x3f1e6bca
+// -0.613113
+0xbf1cf4f8
+// 0.292762
+0x3e95e4e8
+// -0.044104
+0xbd34a5e5
+// 0.059384
+0x3d733cf5
+// 0.052906
+0x3d58b42c
+// 0.426854
+0x3eda8ca4
+// 0.020793
+0x3caa569b
+// 0.023030
+0x3cbca8b1
+// -0.160449
+0xbe244ca9
+// 0.552693
+0x3f0d7d48
+// 0.026344
+0x3cd7ce96
+// 0.293726
+0x3e96634c
+// 0.391356
+0x3ec85fdb
+// 0.019901
+0x3ca30822
+// 0.001983
+0x3b01ed94
+// -0.223823
+0xbe6531c7
+// -0.080734
+0xbda557fd
+// 0.394543
+0x3eca017b
+// 0.149861
+0x3e19753c
+// 0.147145
+0x3e16ad15
+// 0.332099
+0x3eaa08d2
+// 0.010183
+0x3c26d637
+// 0.094627
+0x3dc1cbf8
+// 0.154427
+0x3e1e2225
+// 0.310468
+0x3e9ef5aa
+// 0.163454
+0x3e27607c
+// 0.243759
+0x3e799c07
+// -0.001571
+0xbacdf4b1
+// 0.112749
+0x3de6e930
+// 0.198192
+0x3e4af2d4
+// 0.156968
+0x3e20bc3e
+// 0.302629
+0x3e9af23e
+// 0.576393
+0x3f138e84
+// 0.639690
+0x3f23c2b7
+// -0.218519
+0xbe5fc358
+// -0.273551
+0xbe8c0ed8
+// -0.006531
+0xbbd60147
+// -0.125150
+0xbe002747
+// -0.403949
+0xbeced257
+// 0.110422
+0x3de224f3
+// 0.375068
+0x3ec008f9
+// -0.367025
+0xbebbeab0
+// 0.113827
+0x3de91e0f
+// 0.022176
+0x3cb5ab50
+// 0.108894
+0x3ddf03ab
+// -0.285235
+0xbe920a48
+// 0.209625
+0x3e56a7f3
+// -0.155410
+0xbe1f23eb
+// -0.005706
+0xbbbafae3
+// -0.422616
+0xbed8612e
+// 0.158892
+0x3e22b4a3
+// -0.344045
+0xbeb0269b
+// 0.056728
+0x3d685b4e
+// 0.065458
+0x3d860ec5
+// -0.003520
+0xbb66aa98
+// 0.129157
+0x3e0441d7
+// -0.111894
+0xbde52885
+// 0.027129
+0x3cde3d05
+// 0.071966
+0x3d9362c3
+// 0.439103
+0x3ee0d223
+// -0.394633
+0xbeca0d66
+// 0.120837
+0x3df779a6
+// 0.121701
+0x3df93e4a
+// 0.082909
+0x3da9cc4c
+// 0.406728
+0x3ed03eaf
+// 0.037476
+0x3d197ff2
+// 0.180018
+0x3e385693
+// 0.103923
+0x3dd4d5b7
+// 0.007066
+0x3be78a5b
+// -0.236795
+0xbe727a6d
+// -0.492770
+0xbefc4c4c
+// 0.106475
+0x3dda0f7e
+// -0.234014
+0xbe6fa176
+// 0.055955
+0x3d6530bb
+// 0.208212
+0x3e553594
+// 0.196859
+0x3e49955f
+// 0.098376
+0x3dc97989
+// 0.417108
+0x3ed58f32
+// 0.319437
+0x3ea38d35
+// 0.486099
+0x3ef8e1ee
+// 0.018942
+0x3c9b2ce9
+// -0.040589
+0xbd264106
+// 0.290586
+0x3e94c7c0
+// 0.347868
+0x3eb21bb9
+// 0.953943
+0x3f743598
+// -0.239955
+0xbe75b6b6
+// -0.467858
+0xbeef8b21
+// -0.019220
+0xbc9d7382
+// 0.177508
+0x3e35c487
+// -0.191096
+0xbe43aeb5
+// -0.005549
+0xbbb5d4b4
+// -0.267741
+0xbe89154a
+// 0.013365
+0x3c5af6cb
+// -0.191460
+0xbe440e32
+// 0.066264
+0x3d87b55f
+// 0.445763
+0x3ee43b04
+// -0.085852
+0xbdafd32c
+// 0.190343
+0x3e42e938
+// -0.248384
+0xbe7e5869
+// -0.301815
+0xbe9a877c
+// 0.258122
+0x3e84289f
+// 0.407957
+0x3ed0dfbf
+// -0.344435
+0xbeb059b9
+// -0.114633
+0xbdeac49c
+// -0.360426
+0xbeb889bf
+// -0.461977
+0xbeec884f
+// -0.035791
+0xbd1299fa
+// 0.523004
+0x3f05e39e
+// -0.081942
+0xbda7d0fe
+// -0.149319
+0xbe18e709
+// -0.468040
+0xbeefa2fa
+// 0.190351
+0x3e42eb68
+// 0.243456
+0x3e794c68
+// 0.314841
+0x3ea132dc
+// 0.115325
+0x3dec2f5e
+// 0.325725
+0x3ea6c566
+// 0.204860
+0x3e51c6d7
+// -0.132637
+0xbe07d21a
+// 0.048733
+0x3d479bf7
+// 0.350004
+0x3eb333c3
+// 0.466647
+0x3eeeec5a
+// -0.683775
+0xbf2f0be6
+// 0.084768
+0x3dad9ab6
+// 0.248317
+0x3e7e46b0
+// 0.296056
+0x3e9794a3
+// 0.471254
+0x3ef14842
+// 0.383006
+0x3ec4194c
+// 0.054729
+0x3d602b76
+// -0.000563
+0xba13b38f
+// -0.123966
+0xbdfde20b
+// 0.448270
+0x3ee583ae
+// -0.522794
+0xbf05d5cf
+// 0.505624
+0x3f017097
+// 0.195137
+0x3e47d219
+// -0.241679
+0xbe777a93
+// -0.042026
+0xbd2c23ca
+// 0.181904
+0x3e3a44f9
+// -0.042613
+0xbd2e8b56
+// -0.149477
+0xbe19107b
+// 0.191679
+0x3e44476a
+// -0.240936
+0xbe76b7d2
+// 0.079341
+0x3da27d81
+// -0.276177
+0xbe8d671d
+// -0.030531
+0xbcfa1ce6
+// -0.064377
+0xbd83d7e9
+// 0.464227
+0x3eedaf33
+// 0.008804
+0x3c10405a
+// 0.018442
+0x3c971483
+// 0.505337
+0x3f015dc9
+// -0.005479
+0xbbb38aac
+// -0.272921
+0xbe8bbc41
+// -0.473362
+0xbef25c82
+// 0.210414
+0x3e5776a7
+// 0.064973
+0x3d85108b
+// -0.090866
+0xbdba17cc
+// 0.193020
+0x3e45a6f8
+// 0.183409
+0x3e3bcf89
+// 0.242541
+0x3e785cad
+// 0.146638
+0x3e16284a
+// -0.446367
+0xbee48a2f
+// -0.567706
+0xbf11552a
+// -0.214332
+0xbe5b79ee
+// -0.366051
+0xbebb6b0c
+// -0.230521
+0xbe6c0da0
+// -0.116935
+0xbdef7b99
+// -0.054277
+0xbd5e51ad
+// -0.017258
+0xbc8d6151
+// 0.072584
+0x3d94a6c8
+// -0.395734
+0xbeca9dad
+// -0.138689
+0xbe0e0476
+// -0.483965
+0xbef7ca52
+// 0.200834
+0x3e4da78d
+// 0.023409
+0x3cbfc4d0
+// 0.231034
+0x3e6c944e
+// 0.105490
+0x3dd80b60
+// 0.809690
+0x3f4f47db
+// 0.034617
+0x3d0dcaf2
+// 0.437125
+0x3edfced3
+// -0.441974
+0xbee24a6c
+// -0.297989
+0xbe989206
+// -0.421762
+0xbed7f126
+// 0.031707
+0x3d01df65
+// -0.400101
+0xbeccda08
+// 0.299800
+0x3e997f60
+// -0.204356
+0xbe5142a7
+// -0.150595
+0xbe1a359f
+// 0.254166
+0x3e82220c
+// -0.017535
+0xbc8fa565
+// 0.221797
+0x3e631ec3
+// -0.307801
+0xbe9d980c
+// -0.304292
+0xbe9bcc26
+// 0.198261
+0x3e4b04f0
+// 0.038194
+0x3d1c714e
+// -0.257870
+0xbe840781
+// -0.017501
+0xbc8f5d6c
+// -0.137579
+0xbe0ce1a1
+// -0.413943
+0xbed3f04c
+// 0.007204
+0x3bec0c33
+// -0.024321
+0xbcc73da7
+// -0.632105
+0xbf21d1a5
+// -0.179971
+0xbe384a55
+// -0.019207
+0xbc9d588b
+// 0.505628
+0x3f0170de
+// 0.342564
+0x3eaf6487
+// 0.306465
+0x3e9ce8ec
+// -0.406875
+0xbed051eb
+// -0.168141
+0xbe2c2d3a
+// -0.206752
+0xbe53b6ac
+// -0.175027
+0xbe333a3d
+// -0.361697
+0xbeb93064
+// -0.193132
+0xbe45c473
+// 0.190696
+0x3e4345e5
+// 0.362083
+0x3eb962f7
+// 0.023636
+0x3cc1a10f
+// -0.137524
+0xbe0cd306
+// -0.119920
+0xbdf598cb
+// -0.201309
+0xbe4e2409
+// 0.042915
+0x3d2fc7b4
+// -0.367477
+0xbebc2600
+// -0.151307
+0xbe1af055
+// -0.534617
+0xbf08dca1
+// 0.215442
+0x3e5c9cb8
+// -0.524498
+0xbf064583
+// -0.116891
+0xbdef64bd
+// 0.563391
+0x3f103a60
+// 0.025306
+0x3ccf4efe
+// -0.152182
+0xbe1bd589
+// 0.161971
+0x3e25dba1
+// 0.235638
+0x3e714b36
+// 0.089155
+0x3db696c8
+// -0.170461
+0xbe2e8d73
+// 0.271010
+0x3e8ac1cc
+// -0.098400
+0xbdc9862d
+// -0.273996
+0xbe8c4925
+// 0.001994
+0x3b02a703
+// -0.064240
+0xbd83901a
+// 0.091625
+0x3dbba611
+// -0.008443
+0xbc0a5615
+// 0.158715
+0x3e22863a
+// -0.488341
+0xbefa07de
+// 0.122216
+0x3dfa4c4a
+// 0.151794
+0x3e1b6fdb
+// 0.106143
+0x3dd96179
+// -0.079275
+0xbda25aed
+// 0.292362
+0x3e95b071
+// 0.237777
+0x3e737bde
+// -0.502014
+0xbf008400
+// -0.354972
+0xbeb5bee5
+// -0.058615
+0xbd70165f
+// 0.153375
+0x3e1d0e41
+// -0.086355
+0xbdb0dad8
+// 0.317543
+0x3ea2950e
+// -0.038995
+0xbd1fb95e
+// 0.295155
+0x3e971e9c
+// 0.237003
+0x3e72b0fb
+// 0.927132
+0x3f6d5884
+// -0.354465
+0xbeb57c79
+// -0.284335
+0xbe91945c
+// -0.140236
+0xbe0f9a0f
+// -0.398870
+0xbecc38c0
+// -0.102986
+0xbdd2ea5b
+// 0.538466
+0x3f09d8f0
+// -0.303592
+0xbe9b7072
+// -0.165690
+0xbe29aab2
+// 0.108140
+0x3ddd7863
+// -0.033714
+0xbd0a1751
+// -0.448888
+0xbee5d4ab
+// 0.143564
+0x3e130267
+// -0.291369
+0xbe952e59
+// -0.362140
+0xbeb96a76
+// 0.131248
+0x3e0665f4
+// -0.380291
+0xbec2b580
+// 0.254997
+0x3e828ef0
+// 0.216380
+0x3e5d92d6
+// -0.134909
+0xbe0a2581
+// -0.251682
+0xbe80dc7a
+// 0.225556
+0x3e66f813
+// -0.277353
+0xbe8e0130
+// -0.070846
+0xbd9117e4
+// -0.023430
+0xbcbff0d6
+// -0.731141
+0xbf3b2c11
+// -0.664506
+0xbf2a1d0b
+// -0.131185
+0xbe065558
+// -0.266484
+0xbe88709e
+// -0.523204
+0xbf05f0ad
+// 0.171790
+0x3e2fe9b7
+// 0.243216
+0x3e790d8c
+// -0.106361
+0xbdd9d3a9
+// -0.523114
+0xbf05eacc
+// -0.021285
+0xbcae5d10
+// 0.556631
+0x3f0e7f5d
+// 0.091270
+0x3dbaebd2
+// 0.347385
+0x3eb1dc6b
+// -0.759754
+0xbf427f40
+// -0.256474
+0xbe835096
+// 0.344259
+0x3eb042b7
+// 0.395046
+0x3eca437d
+// -0.370283
+0xbebd95b0
+// -0.512303
+0xbf032651
+// 0.174686
+0x3e32e0e9
+// -0.314474
+0xbea102c4
+// 0.017781
+0x3c91a9c1
+// 0.509089
+0x3f0253a2
+// -0.380669
+0xbec2e70e
+// -0.334069
+0xbeab0b0d
+// 0.139650
+0x3e0f004b
+// 0.043335
+0x3d31805a
+// -0.220310
+0xbe6198ff
+// -0.325291
+0xbea68c8a
+// 0.145932
+0x3e156f1d
+// 0.230598
+0x3e6c21fd
+// 0.056944
+0x3d693dde
+// 0.278453
+0x3e8e9169
+// -0.180892
+0xbe393baa
+// 0.079839
+0x3da3829a
+// 0.489409
+0x3efa93c5
+// 0.300052
+0x3e99a078
+// -0.388508
+0xbec6ea7e
+// 0.189096
+0x3e41a247
+// -0.001887
+0xbaf75358
+// -0.338195
+0xbead27dd
+// -0.196588
+0xbe494e55
+// -0.071205
+0xbd91d40a
+// 0.174667
+0x3e32dbde
+// -0.488617
+0xbefa2bf8
+// 0.049620
+0x3d4b3e40
+// -0.276253
+0xbe8d7114
+// 0.276535
+0x3e8d95f0
+// 0.258893
+0x3e848da4
+// -0.036360
+0xbd14ee39
+// -0.262522
+0xbe866940
+// -0.330246
+0xbea9160f
+// -0.043993
+0xbd3431f0
+// 0.427383
+0x3edad1f0
+// 0.425253
+0x3ed9baca
+// 0.230471
+0x3e6c007c
+// 0.175824
+0x3e340b49
+// 0.417556
+0x3ed5c9de
+// 0.093834
+0x3dc02c03
+// -0.070235
+0xbd8fd776
+// 0.022143
+0x3cb56564
+// -0.372495
+0xbebeb79c
+// -0.075542
+0xbd9ab5d5
+// 0.130702
+0x3e05d6ba
+// 0.665032
+0x3f2a3f82
+// -0.398962
+0xbecc44bb
+// 0.021693
+0x3cb1b480
+// 0.057748
+0x3d6c899d
+// 0.226050
+0x3e67798f
+// 0.254761
+0x3e827001
+// -0.188276
+0xbe40cb86
+// -0.404431
+0xbecf1194
+// 0.007012
+0x3be5c55e
+// 0.498777
+0x3eff5faf
+// 0.023696
+0x3cc21e81
+// -0.296487
+0xbe97cd1a
+// -0.567162
+0xbf113180
+// -0.253800
+0xbe81f20b
+// -0.204598
+0xbe51821d
+// -0.694642
+0xbf31d416
+// -0.655387
+0xbf27c76a
+// 0.121944
+0x3df9bdfb
+// -0.368256
+0xbebc8bfe
+// -0.171509
+0xbe2f9ff8
+// 0.164043
+0x3e27faee
+// 0.014352
+0x3c6b2549
+// -0.091867
+0xbdbc24fc
+// 0.709829
+0x3f35b759
+// 0.014468
+0x3c6d0930
+// -0.266926
+0xbe88aa87
+// -0.025233
+0xbcceb65b
+// 0.045784
+0x3d3b87e9
+// -0.263635
+0xbe86fb33
+// -0.068064
+0xbd8b6550
+// 0.272787
+0x3e8baaae
+// 0.004766
+0x3b9c2e85
+// -0.274585
+0xbe8c9663
+// -0.311394
+0xbe9f6f02
+// -0.277466
+0xbe8e100c
+// -0.089772
+0xbdb7da77
+// 0.507132
+0x3f01d367
+// -0.257973
+0xbe841516
+// -0.021225
+0xbcaddf08
+// 0.108024
+0x3ddd3bdb
+// -0.368862
+0xbebcdb82
+// -0.464027
+0xbeed94ea
+// 0.360360
+0x3eb88126
+// 0.090226
+0x3db8c88c
+// 0.156815
+0x3e209419
+// 0.165809
+0x3e29c9e4
+// -0.239449
+0xbe753213
+// 0.243573
+0x3e796b29
+// -0.120030
+0xbdf5d25b
+// -0.814419
+0xbf507dc7
+// -0.617688
+0xbf1e20d5
+// 0.243774
+0x3e799fe6
+// -0.182859
+0xbe3b3f55
+// 0.252950
+0x3e8182a6
+// -0.189527
+0xbe421362
+// 0.044051
+0x3d346f1d
+// -0.044707
+0xbd371ea7
+// -0.206019
+0xbe52f69e
+// -0.607897
+0xbf1b9f20
+// -0.014872
+0xbc73aad6
+// -0.384807
+0xbec5055d
+// 0.043888
+0x3d33c42d
+// -0.743792
+0xbf3e6920
+// -0.260705
+0xbe857b30
+// 0.160875
+0x3e24bc5b
+// 0.187103
+0x3e3f980b
+// -0.500309
+0xbf001440
+// -0.291297
+0xbe9524e4
+// 0.258593
+0x3e846640
+// -0.124532
+0xbdff0a80
+// -0.298366
+0xbe98c35f
+// -0.367440
+0xbebc2114
+// 0.617682
+0x3f1e206f
+// 0.635749
+0x3f22c070
+// 0.288715
+0x3e93d265
+// 0.201777
+0x3e4e9e83
+// 0.159905
+0x3e23be3e
+// -0.357056
+0xbeb6cffc
+// -0.098678
+0xbdca177c
+// 0.104449
+0x3dd5e94c
+// -0.006156
+0xbbc9bc21
+// -0.003233
+0xbb53e18f
+// 0.298626
+0x3e98e577
+// -0.153218
+0xbe1ce535
+// 0.229214
+0x3e6ab70f
+// 0.254781
+0x3e8272b5
+// 0.297662
+0x3e986736
+// -0.428067
+0xbedb2b95
+// -0.178023
+0xbe364ba7
+// -0.005551
+0xbbb5e44a
+// -0.527266
+0xbf06faef
+// -0.434370
+0xbede65c6
+// -0.364145
+0xbeba712c
+// -0.197840
+0xbe4a968a
+// 0.548218
+0x3f0c5803
+// 0.235568
+0x3e7138d6
+// -0.458613
+0xbeeacf5e
+// 0.149814
+0x3e1968c9
+// -0.189511
+0xbe420f48
+// 0.097625
+0x3dc7efbf
+// 0.143173
+0x3e129be2
+// 0.039491
+0x3d21c113
+// 0.135275
+0x3e0a85a6
+// -0.244690
+0xbe7a9007
+// -0.192562
+0xbe452ee4
+// 0.047009
+0x3d408cbb
+// -0.157788
+0xbe219329
+// 0.407615
+0x3ed0b2f3
+// 0.296101
+0x3e979a99
+// -0.042300
+0xbd2d42d5
+// 0.806994
+0x3f4e9730
+// -0.317594
+0xbea29bac
+// -0.264130
+0xbe873c03
+// -0.245516
+0xbe7b6897
+// -0.489565
+0xbefaa839
+// 0.036946
+0x3d175467
+// 0.149280
+0x3e18dcc3
+// -0.362483
+0xbeb9976e
+// -0.055018
+0xbd615aa4
+// 0.139990
+0x3e0f5979
+// -0.062111
+0xbd7e67eb
+// 0.366915
+0x3ebbdc38
+// -0.321808
+0xbea4c403
+// -0.021487
+0xbcb005e2
+// -0.698373
+0xbf32c88c
+// 0.408099
+0x3ed0f266
+// -0.024644
+0xbcc9e28c
+// -0.060216
+0xbd76a4d0
+// -0.040740
+0xbd26df3e
+// 0.018813
+0x3c9a1d00
+// 0.014932
+0x3c74a50d
+// -0.267854
+0xbe892426
+// -0.119002
+0xbdf3b774
+// -0.351949
+0xbeb432b8
+// -0.023018
+0xbcbc9047
+// -0.657791
+0xbf2864fb
+// -0.130226
+0xbe055a0f
+// -0.008319
+0xbc084dc1
+// 0.549282
+0x3f0c9dc6
+// -0.348925
+0xbeb2a651
+// -0.018215
+0xbc953737
+// 0.254077
+0x3e821669
+// 0.051354
+0x3d5258f7
+// 0.481945
+0x3ef6c172
+// -0.406726
+0xbed03e6f
+// 0.193498
+0x3e462474
+// -0.124989
+0xbdfffa77
+// 0.501467
+0x3f00601e
+// 0.723901
+0x3f395198
+// -0.275818
+0xbe8d380e
+// -0.143208
+0xbe12a52f
+// -0.389349
+0xbec758c9
+// 0.156257
+0x3e2001dc
+// 0.067358
+0x3d89f309
+// 0.024449
+0x3cc84985
+// -0.016052
+0xbc838053
+// 0.116387
+0x3dee5c3c
+// 0.307353
+0x3e9d5d66
+// 0.371354
+0x3ebe2216
+// -0.106456
+0xbdda05b6
+// -0.216671
+0xbe5ddef8
+// -0.392362
+0xbec8e3a1
+// -0.216666
+0xbe5ddda7
+// 0.258485
+0x3e845818
+// -0.500959
+0xbf003ed5
+// 0.070589
+0x3d909130
+// 0.384500
+0x3ec4dd2e
+// 0.061186
+0x3d7a9e92
+// -0.023771
+0xbcc2bada
+// -0.177413
+0xbe35abd7
+// 0.178677
+0x3e36f718
+// -0.520872
+0xbf0557dd
+// 0.050878
+0x3d50659b
+// 0.158327
+0x3e222080
+// -0.336234
+0xbeac26d3
+// 0.440347
+0x3ee17528
+// -0.033495
+0xbd09321a
+// -0.202609
+0xbe4f78c9
+// 0.024451
+0x3cc84cb6
+// -0.081149
+0xbda631b0
+// -0.182281
+0xbe3aa7cd
+// -0.207399
+0xbe546086
+// -0.048487
+0xbd469a0a
+// -0.693495
+0xbf3188e7
+// -0.260513
+0xbe8561fc
+// -0.171182
+0xbe2f4a68
+// -0.207897
+0xbe54e303
+// 0.071484
+0x3d92662c
+// 0.727025
+0x3f3a1e47
+// -0.075951
+0xbd9b8bfe
+// -0.075322
+0xbd9a424a
+// -0.355408
+0xbeb5f802
+// 0.141876
+0x3e114807
+// 0.077176
+0x3d9e0eb5
+// 0.313007
+0x3ea0427b
+// -0.100611
+0xbdce0d48
+// 0.083276
+0x3daa8c59
+// 0.226423
+0x3e67db5e
+// 0.080222
+0x3da44b95
+// 0.273758
+0x3e8c2a03
+// 0.219003
+0x3e604268
+// -0.199167
+0xbe4bf262
+// 0.258247
+0x3e8438e7
+// -0.202365
+0xbe4f38ad
+// 0.225334
+0x3e66be0c
+// -0.009315
+0xbc189e54
+// 0.210734
+0x3e57caae
+// 0.441459
+0x3ee206ee
+// 0.285925
+0x3e9264ba
+// -0.108372
+0xbdddf1eb
+// 0.010774
+0x3c3086f0
+// 0.537431
+0x3f099516
+// 0.339750
+0x3eadf3b3
+// -0.108674
+0xbdde9059
+// -0.266203
+0xbe884bcd
+// -0.873457
+0xbf5f9ada
+// -0.076965
+0xbd9da00f
+// 0.029601
+0x3cf27dcb
+// -0.281336
+0xbe900b40
+// -0.312408
+0xbe9ff3ff
+// 0.334009
+0x3eab033b
+// 0.467034
+0x3eef1f12
+// -0.067858
+0xbd8af901
+// 0.689722
+0x3f30919d
+// -0.199986
+0xbe4cc925
+// 0.114796
+0x3deb1a3f
+// -0.482372
+0xbef6f987
+// -0.340502
+0xbeae5651
+// 0.418398
+0x3ed63854
+// -0.087558
+0xbdb35164
+// 0.156216
+0x3e1ff726
+// -0.078786
+0xbda15a53
+// -0.282075
+0xbe906c1a
+// 0.421018
+0x3ed78fa2
+// 0.625549
+0x3f2023fd
+// 0.134962
+0x3e0a335d
+// 0.290311
+0x3e94a395
+// 0.006704
+0x3bdbaa22
+// -0.082818
+0xbda99c9c
+// 0.130438
+0x3e059191
+// 0.165904
+0x3e29e2c8
+// 0.167655
+0x3e2badbc
+// -0.202374
+0xbe4f3b40
+// -0.673449
+0xbf2c672b
+// 0.212176
+0x3e594490
+// 0.360322
+0x3eb87c24
+// 0.119883
+0x3df58567
+// -0.118969
+0xbdf3a5f0
+// -0.422087
+0xbed81bcb
+// 0.222061
+0x3e6363d9
+// -0.225973
+0xbe676559
+// -0.068432
+0xbd8c25f1
+// 0.119574
+0x3df4e32c
+// -0.093444
+0xbdbf5fa9
+// -0.173338
+0xbe317fa2
+// -0.089525
+0xbdb758e4
+// -0.363041
+0xbeb9e08d
+// -0.434616
+0xbede85ff
+// 0.197376
+0x3e4a1cfc
+// -0.174021
+0xbe3232ab
+// -0.118745
+0xbdf33070
+// 0.201208
+0x3e4e0998
+// 0.172405
+0x3e308adf
+// 0.269370
+0x3e89eaec
+// -0.196612
+0xbe4954bc
+// 0.291291
+0x3e952413
+// 0.036809
+0x3d16c57c
+// -0.176854
+0xbe351949
+// -0.008271
+0xbc0781bc
+// 0.600097
+0x3f199fee
+// 0.204966
+0x3e51e2a2
+// -0.001210
+0xba9e9f60
+// 0.427625
+0x3edaf19d
+// 0.060797
+0x3d79060f
+// -0.210285
+0xbe5754f6
+// 0.291770
+0x3e9562f1
+// -0.128712
+0xbe03ccff
+// 0.392487
+0x3ec8f402
+// -0.059440
+0xbd737754
+// -0.614327
+0xbf1d4488
+// 0.084807
+0x3dadaf0a
+// 0.279112
+0x3e8ee7d2
+// 0.194321
+0x3e46fc21
+// -0.206617
+0xbe539357
+// 0.308204
+0x3e9dccf6
+// -0.073078
+0xbd95a9f7
+// -0.156884
+0xbe20a633
+// -0.223535
+0xbe64e661
+// 0.409932
+0x3ed1e28e
+// 0.060786
+0x3d78fade
+// 0.116148
+0x3deddec5
+// 0.430866
+0x3edc9a70
+// -0.117991
+0xbdf1a537
+// -0.166884
+0xbe2ae3a0
+// -0.173987
+0xbe322988
+// -0.274625
+0xbe8c9ba0
+// 0.069443
+0x3d8e383b
+// 0.152509
+0x3e1c2b5d
+// 0.068332
+0x3d8bf1a1
+// -0.591518
+0xbf176dc1
+// 0.338739
+0x3ead6f3a
+// -0.055723
+0xbd643d93
+// -1.000000
+0xbf800000
+// -0.195715
+0xbe4869a4
+// 0.128106
+0x3e032e23
+// -0.001252
+0xbaa425dc
+// -0.201723
+0xbe4e908e
+// 0.131124
+0x3e064551
+// -0.257277
+0xbe83b9c3
+// 0.024863
+0x3ccbadd9
+// -0.165959
+0xbe29f122
+// -0.328227
+0xbea80d57
+// -0.607005
+0xbf1b64b2
+// -0.274459
+0xbe8c85f2
+// 0.131456
+0x3e069c53
+// -0.287316
+0xbe931b05
+// 0.152472
+0x3e1c2197
+// 0.221784
+0x3e631b5d
+// -0.031065
+0xbcfe7c5f
+// 0.171581
+0x3e2fb302
+// -0.117430
+0xbdf07f53
+// -0.324350
+0xbea61132
+// 0.126062
+0x3e01167c
+// 0.197341
+0x3e4a13b3
+// 0.439141
+0x3ee0d713
+// -0.446962
+0xbee4d839
+// -0.346994
+0xbeb1a927
+// -0.203893
+0xbe50c95f
+// -0.211671
+0xbe58c046
+// -0.091637
+0xbdbbabfa
+// 0.024193
+0x3cc63004
+// 0.039981
+0x3d23c2fa
+// 0.214152
+0x3e5b4aa5
+// -0.424930
+0xbed9907d
+// 0.419537
+0x3ed6cd7d
+// -0.146998
+0xbe16869f
+// 0.044498
+0x3d364376
+// -0.566640
+0xbf110f4a
+// -0.012911
+0xbc538777
+// 0.174987
+0x3e332fda
+// 0.021466
+0x3cafd8e8
+// 0.053028
+0x3d5933db
+// -0.019060
+0xbc9c235a
+// 0.135161
+0x3e0a67a3
+// 0.107546
+0x3ddc4115
+// -0.135285
+0xbe0a880d
+// -0.206938
+0xbe53e7aa
+// 0.457854
+0x3eea6bcd
+// -0.043224
+0xbd310b4d
+// 0.301706
+0x3e9a7943
+// -0.125947
+0xbe00f861
+// 0.346079
+0x3eb13143
+// -0.071872
+0xbd933177
+// -0.013210
+0xbc586e8d
+// 0.471146
+0x3ef13a1d
+// -0.670020
+0xbf2b8666
+// 0.173504
+0x3e31aaf0
+// -0.605756
+0xbf1b12cb
+// -0.495757
+0xbefdd3d7
+// 0.120247
+0x3df6441f
+// 0.137357
+0x3e0ca730
+// -0.477027
+0xbef43cea
+// 0.186388
+0x3e3edc8d
+// 0.066524
+0x3d883dc7
+// -0.289740
+0xbe9458ce
+// -0.367190
+0xbebc0049
+// 0.198600
+0x3e4b5dbf
+// -0.068403
+0xbd8c1708
+// 0.044575
+0x3d369438
+// -0.189875
+0xbe426e82
+// -0.045009
+0xbd385b58
+// 0.152161
+0x3e1bd007
+// 0.244622
+0x3e7a7e2e
+// -0.351716
+0xbeb4142d
+// 0.007358
+0x3bf11df1
+// 0.232960
+0x3e6e8d16
+// 0.249456
+0x3e7f7182
+// 0.528005
+0x3f072b5d
+// 0.629894
+0x3f2140b5
+// -0.211689
+0xbe58c4e5
+// -0.180357
+0xbe38af66
+// -0.004928
+0xbba176e5
+// -0.162022
+0xbe25e904
+// -0.101448
+0xbdcfc3fd
+// -0.140191
+0xbe0f8e41
+// -0.116656
+0xbdeee92b
+// 0.048559
+0x3d46e5dd
+// 0.153707
+0x3e1d655d
+// -0.332620
+0xbeaa4d33
+// -0.239370
+0xbe751d7e
+// -0.004725
+0xbb9ad6ed
+// 0.683053
+0x3f2edc92
+// -0.651776
+0xbf26dacf
+// 0.381882
+0x3ec38619
+// 0.219907
+0x3e612f35
+// -0.082219
+0xbda8626c
+// 0.622719
+0x3f1f6a89
+// 0.044199
+0x3d350a20
+// -0.313822
+0xbea0ad58
+// 0.078200
+0x3da02794
+// -0.254515
+0xbe824fc4
+// 0.324182
+0x3ea5fb3c
+// 0.210685
+0x3e57bdde
+// 0.175108
+0x3e334f7a
+// -0.344186
+0xbeb03930
+// 0.069489
+0x3d8e5062
+// -0.109304
+0xbddfdaf5
+// 0.167227
+0x3e2b3d9d
+// 0.034176
+0x3d0bfbc4
+// 0.173543
+0x3e31b52c
+// 0.237559
+0x3e7342b3
+// -0.021895
+0xbcb35c82
+// -0.271944
+0xbe8b3c3d
+// 0.276866
+0x3e8dc164
+// 0.369973
+0x3ebd6d10
+// 0.157684
+0x3e2177f3
+// 0.073461
+0x3d96727e
+// 0.167321
+0x3e2b5621
+// 0.241548
+0x3e77583d
+// 0.195735
+0x3e486ea5
+// -0.241827
+0xbe77a188
+// 0.369386
+0x3ebd2035
+// -0.123385
+0xbdfcb12e
+// 0.286739
+0x3e92cf64
+// -0.215972
+0xbe5d27a7
+// -0.026908
+0xbcdc6da6
+// 0.312105
+0x3e9fcc3f
+// -0.316446
+0xbea20527
+// -0.154893
+0xbe1e9c5e
+// -0.597187
+0xbf18e146
+// -0.251321
+0xbe80ad31
+// -0.556395
+0xbf0e6fe3
+// -0.030359
+0xbcf8b2d0
+// -0.087121
+0xbdb26c98
+// 0.457180
+0x3eea138f
+// -0.341636
+0xbeaeeaf9
+// -0.212820
+0xbe59ed60
+// 0.452309
+0x3ee79501
+// 0.339645
+0x3eade5e7

+ 514 - 0
Testing/Patterns/DSP/Transform/MFCCF32/MFCCInput_256_1_f32.txt

@@ -0,0 +1,514 @@
+W
+256
+// 0.089738
+0x3db7c865
+// 0.067259
+0x3d89bf0e
+// 0.154389
+0x3e1e1836
+// -0.083019
+0xbdaa05a4
+// -0.087256
+0xbdb2b334
+// -0.621283
+0xbf1f0c6a
+// 0.331273
+0x3ea99cac
+// 0.783341
+0x3f488910
+// 0.092650
+0x3dbdbf72
+// 0.075105
+0x3d99d0d7
+// -0.096163
+0xbdc4f113
+// -0.108939
+0xbddf1b32
+// -0.232866
+0xbe6e7455
+// 0.328005
+0x3ea7f043
+// 0.310901
+0x3e9f2e62
+// -0.039975
+0xbd23bc4d
+// -0.296302
+0xbe97b4e9
+// 0.357151
+0x3eb6dc87
+// 0.421522
+0x3ed7d1b6
+// -0.570618
+0xbf121408
+// 0.385768
+0x3ec5836a
+// 0.262206
+0x3e863fcf
+// 0.100940
+0x3dceb991
+// 0.251663
+0x3e80d9f9
+// -0.069520
+0xbd8e60af
+// -0.174688
+0xbe32e153
+// 0.079187
+0x3da22cc5
+// -0.430499
+0xbedc6a68
+// 0.242275
+0x3e7816f2
+// 0.758464
+0x3f422ab1
+// 0.121298
+0x3df86b1d
+// -0.283242
+0xbe91050b
+// -0.664019
+0xbf29fd2d
+// 0.260954
+0x3e859bc8
+// -0.110971
+0xbde344d5
+// -0.359717
+0xbeb82cd8
+// 0.362777
+0x3eb9bdd8
+// 0.240596
+0x3e765ebe
+// -0.168707
+0xbe2cc17b
+// 0.096354
+0x3dc55542
+// 0.360356
+0x3eb880a2
+// 0.273952
+0x3e8c4375
+// -0.813507
+0xbf5041f7
+// 0.202244
+0x3e4f1927
+// 0.654824
+0x3f27a285
+// -0.027679
+0xbce2c006
+// 0.570388
+0x3f1204ee
+// -0.281811
+0xbe904995
+// 0.439898
+0x3ee13a47
+// 0.034354
+0x3d0cb734
+// -0.404687
+0xbecf3331
+// 0.018210
+0x3c952d78
+// 0.173341
+0x3e318064
+// 0.096519
+0x3dc5ac00
+// 0.025961
+0x3cd4ac02
+// 0.086384
+0x3db0ea03
+// 0.467037
+0x3eef1f82
+// -0.061900
+0xbd7d8b10
+// -0.091634
+0xbdbbaa5e
+// -0.054937
+0xbd6105ec
+// 0.402989
+0x3ece548b
+// 0.104294
+0x3dd59832
+// -0.010941
+0xbc3342e7
+// -0.277462
+0xbe8e0f89
+// 0.317816
+0x3ea2b8b9
+// -0.091144
+0xbdbaa9c0
+// 0.409791
+0x3ed1d02a
+// -0.042292
+0xbd2d3acc
+// 0.075197
+0x3d9a00f3
+// -0.101919
+0xbdd0babb
+// 0.305818
+0x3e9c941f
+// 0.305115
+0x3e9c3801
+// 0.225793
+0x3e673627
+// -0.819021
+0xbf51ab5e
+// 0.099640
+0x3dcc1035
+// -0.359991
+0xbeb850b6
+// -0.123400
+0xbdfcb8eb
+// -0.027310
+0xbcdfb89a
+// -0.223871
+0xbe653e7c
+// 0.455622
+0x3ee94741
+// 0.246788
+0x3e7cb611
+// -0.068658
+0xbd8c9c7e
+// 0.010263
+0x3c28274d
+// 1.000000
+0x3f800000
+// 0.480968
+0x3ef6417f
+// -0.015245
+0xbc79c733
+// 0.013451
+0x3c5c5fc5
+// -0.413680
+0xbed3cdd6
+// -0.451646
+0xbee73e30
+// -0.311718
+0xbe9f9984
+// -0.325950
+0xbea6e2e5
+// -0.385646
+0xbec57374
+// -0.045221
+0xbd39399c
+// 0.110227
+0x3de1be72
+// -0.035305
+0xbd109c7c
+// 0.004051
+0x3b84bc8c
+// -0.331952
+0xbea9f5ad
+// 0.164119
+0x3e280ec3
+// 0.146625
+0x3e1624f8
+// 0.036189
+0x3d143aa4
+// -0.099008
+0xbdcac4c8
+// -0.563731
+0xbf1050aa
+// 0.964170
+0x3f76d3d2
+// 0.428630
+0x3edb7570
+// -0.265563
+0xbe87f7e5
+// 0.443260
+0x3ee2f308
+// -0.627063
+0xbf20872f
+// -0.592591
+0xbf17b410
+// 0.094141
+0x3dc0cd02
+// -0.093867
+0xbdc03d38
+// -0.522123
+0xbf05a9dd
+// -0.035453
+0xbd1136f8
+// -0.031508
+0xbd010e53
+// 0.072731
+0x3d94f436
+// -0.112147
+0xbde5ad66
+// -0.440226
+0xbee1655a
+// -0.106819
+0xbddac410
+// -0.362694
+0xbeb9b308
+// 0.018079
+0x3c941a6a
+// -0.170406
+0xbe2e7ef9
+// 0.622399
+0x3f1f5591
+// 0.119503
+0x3df4bddc
+// 0.008095
+0x3c04a25b
+// -0.032518
+0xbd053165
+// 0.021576
+0x3cb0bf6b
+// -0.317126
+0xbea25e57
+// -0.387595
+0xbec672cc
+// 0.098323
+0x3dc95d5d
+// -0.333914
+0xbeaaf6c5
+// -0.104521
+0xbdd60f35
+// -0.087055
+0xbdb24a01
+// -0.254765
+0xbe82708f
+// -0.445842
+0xbee44567
+// -0.429256
+0xbedbc765
+// 0.540044
+0x3f0a405a
+// 0.177131
+0x3e3561f1
+// 0.268467
+0x3e897490
+// 0.429066
+0x3edbae7e
+// -0.197797
+0xbe4a8b41
+// -0.241472
+0xbe774469
+// 0.323202
+0x3ea57aac
+// -0.235000
+0xbe70a3ba
+// 0.609865
+0x3f1c2018
+// 0.602386
+0x3f1a35fa
+// 0.019534
+0x3ca00609
+// -0.196338
+0xbe490cc9
+// 0.096247
+0x3dc51cec
+// 0.155905
+0x3e1fa572
+// -0.530173
+0xbf07b96e
+// -0.625972
+0xbf203fb4
+// -0.132952
+0xbe082484
+// 0.500561
+0x3f0024c8
+// -0.191938
+0xbe448b75
+// -0.396835
+0xbecb2de5
+// 0.599835
+0x3f198ed0
+// -0.117457
+0xbdf08d21
+// 0.582546
+0x3f1521bc
+// 0.226422
+0x3e67db35
+// -0.223980
+0xbe655b05
+// -0.103188
+0xbdd35454
+// -0.040533
+0xbd26061f
+// 0.086565
+0x3db14927
+// 0.151441
+0x3e1b1359
+// 0.173882
+0x3e320e25
+// -0.148597
+0xbe1829de
+// -0.408066
+0xbed0edf9
+// 0.257180
+0x3e83ad09
+// 0.046722
+0x3d3f5fb7
+// -0.279765
+0xbe8f3d56
+// -0.513039
+0xbf035683
+// 0.232855
+0x3e6e7184
+// 0.724141
+0x3f396155
+// 0.156407
+0x3e202949
+// 0.477019
+0x3ef43bd1
+// 0.782124
+0x3f483950
+// 0.141778
+0x3e112e5d
+// -0.465177
+0xbeee2bb4
+// -0.168128
+0xbe2c29c1
+// 0.528298
+0x3f073e8e
+// -0.411862
+0xbed2dfa2
+// 0.319303
+0x3ea37b9f
+// 0.297564
+0x3e985a55
+// -0.263947
+0xbe8723ff
+// -0.185831
+0xbe3e4a75
+// 0.372901
+0x3ebeece2
+// 0.325011
+0x3ea667cd
+// -0.211544
+0xbe589f02
+// -0.054309
+0xbd5e72fb
+// -0.003084
+0xbb4a15b9
+// -0.024571
+0xbcc94a0c
+// 0.016627
+0x3c883561
+// -0.081301
+0xbda680f8
+// 0.472227
+0x3ef1c7c9
+// 0.586417
+0x3f161f74
+// -0.214688
+0xbe5bd74c
+// 0.133952
+0x3e092aaf
+// -0.465443
+0xbeee4e96
+// -0.173991
+0xbe322a9f
+// 0.043391
+0x3d31baf2
+// 0.199079
+0x3e4bdb3f
+// -0.720737
+0xbf38823b
+// 0.692669
+0x3f3152c0
+// -0.146139
+0xbe15a580
+// -0.089478
+0xbdb74076
+// 0.441291
+0x3ee1f0d5
+// 0.078354
+0x3da077e1
+// 0.375427
+0x3ec037ea
+// -0.033212
+0xbd080925
+// -0.107130
+0xbddb66c5
+// 0.048466
+0x3d468475
+// 0.118295
+0x3df244da
+// -0.062158
+0xbd7e9954
+// 0.044569
+0x3d368e61
+// -0.197895
+0xbe4aa514
+// 0.288538
+0x3e93bb48
+// -0.607111
+0xbf1b6b9d
+// 0.271215
+0x3e8adcaa
+// -0.528523
+0xbf074d44
+// -0.407540
+0xbed0a910
+// -0.010570
+0xbc2d2d1e
+// -0.475852
+0xbef3a2e2
+// 0.117884
+0x3df16cfc
+// -0.325560
+0xbea6afcc
+// -0.341994
+0xbeaf19df
+// -0.603439
+0xbf1a7af4
+// 0.252634
+0x3e815945
+// -0.161713
+0xbe259804
+// -0.173283
+0xbe317100
+// 0.259118
+0x3e84ab15
+// -0.349186
+0xbeb2c87c
+// 0.444531
+0x3ee399a1
+// 0.130996
+0x3e0623b0
+// -0.449434
+0xbee61c40
+// -0.437433
+0xbedff738
+// 0.379204
+0x3ec22702
+// 0.301281
+0x3e9a4181
+// 0.170051
+0x3e2e21d1
+// -0.235498
+0xbe71265b
+// -0.022892
+0xbcbb878b
+// 0.463847
+0x3eed7d4e
+// 0.308328
+0x3e9ddd20
+// 0.375992
+0x3ec08210
+// -0.305638
+0xbe9c7c97
+// -0.199858
+0xbe4ca776
+// 0.041511
+0x3d2a0759
+// -0.212038
+0xbe59208c
+// 0.002997
+0x3b446c1c
+// -0.454472
+0xbee8b097
+// -0.187657
+0xbe402913
+// 0.204091
+0x3e50fd37
+// 0.332860
+0x3eaa6ca7
+// -0.086138
+0xbdb06936
+// 0.000109
+0x38e3bf6c
+// -0.202735
+0xbe4f99db
+// 0.089400
+0x3db71796
+// 0.005566
+0x3bb66229

+ 1026 - 0
Testing/Patterns/DSP/Transform/MFCCF32/MFCCInput_512_1_f32.txt

@@ -0,0 +1,1026 @@
+W
+512
+// 0.478585
+0x3ef50920
+// 0.170853
+0x3e2ef430
+// 0.283887
+0x3e9159b3
+// -0.315848
+0xbea1b6c9
+// -0.258172
+0xbe842f16
+// -0.209893
+0xbe56ee3c
+// 0.616970
+0x3f1df1b8
+// -0.162437
+0xbe2655f7
+// 0.284512
+0x3e91ab8e
+// 0.480972
+0x3ef64207
+// 0.030589
+0x3cfa9662
+// 0.076016
+0x3d9bae7a
+// 0.688069
+0x3f302549
+// -0.511261
+0xbf02e208
+// -0.211647
+0xbe58ba15
+// 0.645929
+0x3f255b9c
+// 0.274638
+0x3e8c9d55
+// -0.653015
+0xbf272bff
+// -0.375294
+0xbec02687
+// -0.355064
+0xbeb5caf3
+// -0.038528
+0xbd1dcfb5
+// 0.269558
+0x3e8a0380
+// -0.327801
+0xbea7d594
+// -0.434870
+0xbedea73a
+// 0.045841
+0x3d3bc3a1
+// 0.134143
+0x3e095ce8
+// -0.180411
+0xbe38bd8c
+// 0.376180
+0x3ec09aa0
+// 0.233878
+0x3e6f7db0
+// -0.110864
+0xbde30c7d
+// -0.101597
+0xbdd01215
+// -0.573921
+0xbf12ec7e
+// 0.079882
+0x3da3990e
+// 0.280125
+0x3e8f6c7d
+// 0.106247
+0x3dd997c9
+// 0.137217
+0x3e0c82b9
+// -0.488765
+0xbefa3f73
+// 0.568116
+0x3f11700e
+// 0.243675
+0x3e7985ee
+// -0.217574
+0xbe5ecbaf
+// 0.171642
+0x3e2fc2eb
+// 0.096190
+0x3dc4ff72
+// -0.442250
+0xbee26ea5
+// 0.055089
+0x3d61a578
+// 0.507327
+0x3f01e030
+// 0.175882
+0x3e341a65
+// 0.275265
+0x3e8cef87
+// -0.407096
+0xbed06ee5
+// -0.360874
+0xbeb8c47c
+// -0.404674
+0xbecf3178
+// -0.194387
+0xbe470d82
+// 0.230976
+0x3e6c8506
+// -0.271754
+0xbe8b2350
+// -0.225052
+0xbe667411
+// -0.819296
+0xbf51bd61
+// 0.236706
+0x3e726324
+// 0.167216
+0x3e2b3abb
+// 0.418769
+0x3ed668da
+// 0.421522
+0x3ed7d1bb
+// 0.131897
+0x3e071016
+// 0.188878
+0x3e41692c
+// 0.216118
+0x3e5d4e26
+// 0.595431
+0x3f186e31
+// 0.238823
+0x3e748dfa
+// 0.126570
+0x3e019bae
+// -0.397021
+0xbecb4653
+// 0.397690
+0x3ecb9df9
+// -0.066593
+0xbd8861a7
+// -0.253365
+0xbe81b914
+// 0.485733
+0x3ef8b1fc
+// 0.093548
+0x3dbf965a
+// -0.189280
+0xbe41d2b7
+// 0.203408
+0x3e504a3c
+// 0.270780
+0x3e8aa3a9
+// -0.035080
+0xbd0fb059
+// -0.434862
+0xbedea62c
+// 0.275612
+0x3e8d1d0d
+// 0.185838
+0x3e3e4c30
+// 0.548872
+0x3f0c82e0
+// -0.090030
+0xbdb861d0
+// 0.720952
+0x3f38904c
+// -0.000840
+0xba5c121f
+// -0.190243
+0xbe42cf00
+// 0.146892
+0x3e166ae7
+// 0.045228
+0x3d394098
+// -0.395129
+0xbeca4e49
+// -0.485684
+0xbef8ab8e
+// 0.092046
+0x3dbc82a1
+// 0.232442
+0x3e6e0555
+// 0.341302
+0x3eaebf22
+// -0.181589
+0xbe39f292
+// 0.591117
+0x3f175371
+// -0.113682
+0xbde8d254
+// 0.026620
+0x3cda119e
+// -0.624459
+0xbf1fdc87
+// 0.086162
+0x3db075d7
+// 0.767946
+0x3f44981e
+// 0.077062
+0x3d9dd292
+// 0.361922
+0x3eb94dd2
+// 0.012390
+0x3c4afdf2
+// 0.491584
+0x3efbb0ea
+// -0.101782
+0xbdd07301
+// -0.550625
+0xbf0cf5c9
+// 0.429414
+0x3edbdc28
+// 0.278232
+0x3e8e7477
+// -0.035371
+0xbd10e18d
+// -0.331172
+0xbea98f69
+// -0.116669
+0xbdeef046
+// 0.120496
+0x3df6c6cb
+// 0.337004
+0x3eac8bd1
+// 0.542431
+0x3f0adcc1
+// -0.100147
+0xbdcd19a5
+// 0.181974
+0x3e3a5759
+// 0.440705
+0x3ee1a423
+// -0.147661
+0xbe173451
+// -0.150020
+0xbe199ebd
+// 0.251648
+0x3e80d801
+// 0.498255
+0x3eff1b46
+// -0.270011
+0xbe8a3ee2
+// 0.648750
+0x3f261478
+// -0.189138
+0xbe41ad6f
+// 0.188073
+0x3e40961d
+// -0.236466
+0xbe72240b
+// -0.519409
+0xbf04f7f8
+// 0.087125
+0x3db26e92
+// 0.072758
+0x3d950250
+// -0.103904
+0xbdd4cba6
+// 0.072561
+0x3d949b1c
+// -0.004361
+0xbb8ee89a
+// 0.136287
+0x3e0b8ec3
+// -0.179195
+0xbe377ee5
+// -0.050442
+0xbd4e9c4e
+// 0.122670
+0x3dfb3a49
+// -0.206287
+0xbe533cec
+// 0.182688
+0x3e3b1293
+// 0.341994
+0x3eaf19dc
+// -0.326033
+0xbea6edce
+// -0.044431
+0xbd35fda2
+// -0.076009
+0xbd9baab4
+// 0.864459
+0x3f5d4d38
+// 0.161491
+0x3e255dd9
+// 0.616108
+0x3f1db942
+// -0.082927
+0xbda9d5af
+// -0.232148
+0xbe6db821
+// 0.206719
+0x3e53ae43
+// 0.244434
+0x3e7a4d03
+// 0.351846
+0x3eb42535
+// -0.382073
+0xbec39f1e
+// 0.002701
+0x3b310347
+// -0.333033
+0xbeaa835d
+// -0.441977
+0xbee24ad0
+// 0.144101
+0x3e138f40
+// -0.316491
+0xbea20b16
+// -0.213005
+0xbe5a1e0d
+// 0.505803
+0x3f017c53
+// -0.809287
+0xbf4f2d71
+// -0.418997
+0xbed686d2
+// -0.042748
+0xbd2f1818
+// 0.447852
+0x3ee54ce4
+// 0.025484
+0x3cd0c32b
+// 0.003717
+0x3b73910e
+// 0.137963
+0x3e0d4641
+// 0.238445
+0x3e742ad6
+// -0.056242
+0xbd665e66
+// -0.025756
+0xbcd2fed4
+// 0.194456
+0x3e471f8b
+// 0.163595
+0x3e278570
+// -0.483661
+0xbef7a262
+// 0.017604
+0x3c9035ff
+// -0.336801
+0xbeac712e
+// -0.981870
+0xbf7b5bce
+// 0.279022
+0x3e8edc05
+// -0.175143
+0xbe3358a0
+// -0.284905
+0xbe91df1c
+// -0.195946
+0xbe48a614
+// 0.066427
+0x3d880ab2
+// 0.123006
+0x3dfbea60
+// -0.431754
+0xbedd0ecf
+// -0.588410
+0xbf16a20c
+// -0.078435
+0xbda0a293
+// 0.252531
+0x3e814bc4
+// -0.065474
+0xbd861720
+// -0.041443
+0xbd29c016
+// 0.146337
+0x3e15d960
+// -0.543497
+0xbf0b22a3
+// -0.197981
+0xbe4abba9
+// -0.098140
+0xbdc8fd98
+// 0.640159
+0x3f23e17e
+// -0.291288
+0xbe9523bf
+// 0.409829
+0x3ed1d50c
+// -0.598554
+0xbf193ad1
+// -0.455540
+0xbee93c87
+// 0.497610
+0x3efec6bd
+// -0.243998
+0xbe79da9e
+// -0.227526
+0xbe68fc90
+// -0.071540
+0xbd9283ab
+// 0.401358
+0x3ecd7ec7
+// -0.323752
+0xbea5c2e1
+// 0.012154
+0x3c4722be
+// 0.225057
+0x3e66755e
+// 0.356849
+0x3eb6b4e2
+// -0.200315
+0xbe4d1f47
+// 0.038758
+0x3d1ec0fc
+// -0.060596
+0xbd783404
+// -0.223661
+0xbe650747
+// 0.730027
+0x3f3ae30c
+// 0.038029
+0x3d1bc449
+// 0.449356
+0x3ee61200
+// -0.368211
+0xbebc861b
+// -0.150874
+0xbe1a7ecb
+// 0.149878
+0x3e19798c
+// -0.240205
+0xbe75f83c
+// -0.069345
+0xbd8e04bd
+// -0.273825
+0xbe8c32c7
+// -0.014491
+0xbc6d6b18
+// -0.213120
+0xbe5a3c21
+// -0.875218
+0xbf600e42
+// 0.316663
+0x3ea221b0
+// -0.372869
+0xbebee8a7
+// 0.094168
+0x3dc0db34
+// 0.020843
+0x3caabe27
+// 0.348409
+0x3eb262aa
+// 0.068981
+0x3d8d4612
+// -0.578867
+0xbf14309d
+// 0.274899
+0x3e8cbf82
+// 0.273452
+0x3e8c01dc
+// 0.102050
+0x3dd0ff5b
+// 0.068480
+0x3d8c3f10
+// 0.164805
+0x3e28c2bc
+// 0.411389
+0x3ed2a19a
+// 0.608656
+0x3f1bd0df
+// 0.359024
+0x3eb7d1ff
+// 0.057513
+0x3d6b92bd
+// -0.729634
+0xbf3ac949
+// 0.126180
+0x3e013539
+// 0.304837
+0x3e9c1395
+// -0.072305
+0xbd941480
+// 0.057325
+0x3d6acd80
+// -0.016539
+0xbc877c21
+// -0.286342
+0xbe929b63
+// -0.418221
+0xbed6210f
+// -0.507646
+0xbf01f519
+// -0.144171
+0xbe13a183
+// -0.354884
+0xbeb5b34e
+// -0.213970
+0xbe5b1b15
+// 0.314795
+0x3ea12cc8
+// 0.541855
+0x3f0ab6fd
+// 0.539750
+0x3f0a2d10
+// 0.004178
+0x3b88eb57
+// -0.364568
+0xbebaa8ab
+// -0.252371
+0xbe8136d6
+// -0.330694
+0xbea950b7
+// 0.448008
+0x3ee5615d
+// -0.400122
+0xbeccdcce
+// -0.511232
+0xbf02e020
+// 0.040213
+0x3d24b6bd
+// 0.017089
+0x3c8bfdf5
+// 0.020535
+0x3ca838df
+// -0.132455
+0xbe07a248
+// 0.250726
+0x3e805f37
+// -0.101534
+0xbdcff133
+// -0.703273
+0xbf3409b1
+// -0.146289
+0xbe15cce0
+// -0.027001
+0xbcdd3034
+// 0.113077
+0x3de794aa
+// 0.329918
+0x3ea8eaff
+// 0.210369
+0x3e576afd
+// -0.392811
+0xbec91e7b
+// -0.397435
+0xbecb7caa
+// -0.170788
+0xbe2ee314
+// 0.442612
+0x3ee29e00
+// 0.496098
+0x3efe0089
+// 0.211886
+0x3e58f8a0
+// -0.536083
+0xbf093cb7
+// 0.287837
+0x3e935f66
+// 0.188145
+0x3e40a926
+// 0.029069
+0x3cee22a4
+// 0.311247
+0x3e9f5bbf
+// -0.317397
+0xbea281d2
+// -0.058582
+0xbd6ff339
+// 0.229852
+0x3e6b5e4b
+// -0.360942
+0xbeb8cd57
+// 0.060474
+0x3d77b3b8
+// 0.237723
+0x3e736dab
+// -0.679560
+0xbf2df79d
+// 0.087220
+0x3db2a037
+// 0.240666
+0x3e76710f
+// -0.028608
+0xbcea5c09
+// 0.153549
+0x3e1d3bfc
+// 0.235841
+0x3e71802e
+// 0.265961
+0x3e882bfd
+// 0.196355
+0x3e491148
+// -0.457122
+0xbeea0bd8
+// 0.212847
+0x3e59f4a1
+// -0.228314
+0xbe69cb22
+// -0.246926
+0xbe7cda2f
+// -0.356761
+0xbeb6a968
+// 0.719300
+0x3f382410
+// -0.412587
+0xbed33eaa
+// 0.168657
+0x3e2cb473
+// 0.021106
+0x3cace723
+// 0.357456
+0x3eb70474
+// 0.566391
+0x3f10ff09
+// 0.431546
+0x3edcf39e
+// 0.208459
+0x3e557644
+// -0.051692
+0xbd53bb15
+// -0.411605
+0xbed2bde2
+// 0.378608
+0x3ec1d8ea
+// 0.195075
+0x3e47c1dd
+// -0.220872
+0xbe622c34
+// -0.367101
+0xbebbf4b2
+// 0.284272
+0x3e918c1c
+// -0.661954
+0xbf2975cc
+// -0.042402
+0xbd2dad95
+// 0.532833
+0x3f0867bd
+// -0.453098
+0xbee7fc74
+// 0.066719
+0x3d88a3f7
+// -0.279022
+0xbe8edc06
+// -0.602399
+0xbf1a36cf
+// 0.481465
+0x3ef6828c
+// -0.172376
+0xbe30835a
+// 0.278264
+0x3e8e7896
+// -0.262124
+0xbe863525
+// -0.195976
+0xbe48addb
+// -0.248409
+0xbe7e5f04
+// -0.463891
+0xbeed832d
+// 0.638451
+0x3f237180
+// 0.064357
+0x3d83cd9e
+// 0.347610
+0x3eb1f9ed
+// 0.161001
+0x3e24dd8f
+// 0.015062
+0x3c76c83c
+// 0.151018
+0x3e1aa463
+// 0.286103
+0x3e927c17
+// -0.022244
+0xbcb639c4
+// 0.130603
+0x3e05bcbd
+// -0.234844
+0xbe707b10
+// 0.730090
+0x3f3ae733
+// 0.365619
+0x3ebb327b
+// -0.206779
+0xbe53bdd1
+// -0.088243
+0xbdb4b8dc
+// -0.056093
+0xbd65c17f
+// -0.421586
+0xbed7da0e
+// 0.043272
+0x3d313e5d
+// -0.142762
+0xbe123054
+// -0.005685
+0xbbba4909
+// 0.263492
+0x3e86e87d
+// -0.185167
+0xbe3d9c73
+// -0.337197
+0xbeaca50c
+// -0.386506
+0xbec5e41c
+// -0.060209
+0xbd769d64
+// 0.274523
+0x3e8c8e40
+// -0.515270
+0xbf03e8bb
+// -0.211789
+0xbe58df35
+// 0.105041
+0x3dd71ff7
+// 0.246751
+0x3e7cac65
+// 0.232754
+0x3e6e56fd
+// -0.291910
+0xbe957540
+// -0.039528
+0xbd21e7d2
+// -0.739895
+0xbf3d69be
+// -0.120133
+0xbdf6083d
+// -0.192651
+0xbe454652
+// 0.186048
+0x3e3e8345
+// 0.590522
+0x3f172c74
+// 0.036105
+0x3d13e2a1
+// -0.242113
+0xbe77ec99
+// 0.264321
+0x3e87551f
+// -0.470435
+0xbef0dcce
+// -0.235246
+0xbe70e449
+// 0.572766
+0x3f12a0d2
+// 0.274954
+0x3e8cc6d5
+// 0.153816
+0x3e1d81d5
+// 0.461862
+0x3eec792e
+// -0.457445
+0xbeea3635
+// 0.038887
+0x3d1f47cb
+// 0.107380
+0x3ddbea3a
+// -0.407021
+0xbed06504
+// -0.422663
+0xbed8674a
+// -0.001836
+0xbaf09ffb
+// -0.172147
+0xbe30475e
+// -0.578095
+0xbf13fe05
+// 0.081134
+0x3da62986
+// 0.372088
+0x3ebe8245
+// -0.020173
+0xbca5411b
+// 0.123369
+0x3dfca8ec
+// 0.447135
+0x3ee4eed4
+// 0.167674
+0x3e2bb2d5
+// -0.317112
+0xbea25c75
+// -0.470582
+0xbef0f02f
+// 0.116705
+0x3def02e2
+// -0.365016
+0xbebae358
+// -0.284393
+0xbe919c04
+// 0.093306
+0x3dbf1755
+// -0.177659
+0xbe35ec5c
+// -0.600363
+0xbf19b15d
+// 0.254524
+0x3e8250fd
+// 0.478478
+0x3ef4fb1d
+// 0.305100
+0x3e9c3621
+// -0.070087
+0xbd8f89cb
+// -0.424462
+0xbed9531f
+// 0.693355
+0x3f317fb4
+// -0.141191
+0xbe109454
+// 0.067796
+0x3d8ad8c2
+// 0.405601
+0x3ecfaaff
+// 0.241329
+0x3e771ee6
+// -0.131911
+0xbe0713a1
+// -0.011413
+0xbc3afe89
+// 0.340258
+0x3eae365a
+// 0.367270
+0x3ebc0acf
+// 0.162617
+0x3e268519
+// 0.068636
+0x3d8c90ca
+// -0.474845
+0xbef31ed5
+// 0.304870
+0x3e9c17e5
+// 0.458537
+0x3eeac558
+// 0.085863
+0x3dafd90e
+// 0.675350
+0x3f2ce3b9
+// -0.231858
+0xbe6d6c3a
+// -0.278680
+0xbe8eaf1a
+// -0.319809
+0xbea3be01
+// 0.565995
+0x3f10e509
+// 0.168242
+0x3e2c47c1
+// 0.387074
+0x3ec62e83
+// -0.169125
+0xbe2d2f20
+// 0.328275
+0x3ea813b9
+// 0.299684
+0x3e99703f
+// 0.101732
+0x3dd058fd
+// 0.243272
+0x3e791c5d
+// -0.241377
+0xbe772b72
+// 0.142001
+0x3e1168b8
+// -0.374696
+0xbebfd835
+// -0.070113
+0xbd8f9788
+// 0.149640
+0x3e193b2a
+// -0.149205
+0xbe18c93d
+// 0.378387
+0x3ec1bbe4
+// -0.417770
+0xbed5e601
+// 0.218877
+0x3e60214b
+// -0.375152
+0xbec013ee
+// -0.659300
+0xbf28c7ea
+// 0.662723
+0x3f29a82f
+// 0.207519
+0x3e547fee
+// -0.020836
+0xbcaab0f9
+// 0.299500
+0x3e995811
+// 0.001345
+0x3ab051e7
+// -0.189639
+0xbe42309b
+// -0.557715
+0xbf0ec66a
+// -0.446359
+0xbee4892f
+// 0.198029
+0x3e4ac825
+// 0.138943
+0x3e0e4717
+// 0.276137
+0x3e8d61c4
+// -0.043167
+0xbd30d019
+// -0.105984
+0xbdd90e18
+// 0.251236
+0x3e80a20d
+// -0.391665
+0xbec88859
+// -0.159218
+0xbe230a0f
+// -0.041162
+0xbd28990a
+// 0.037266
+0x3d18a49c
+// 0.022616
+0x3cb94587
+// 0.244601
+0x3e7a78bf
+// 0.239559
+0x3e754ed8
+// 0.324953
+0x3ea6602e
+// 0.300100
+0x3e99a6b6
+// 0.173920
+0x3e3217fa
+// -0.337058
+0xbeac92db
+// 0.359491
+0x3eb80f34
+// -0.180122
+0xbe3871ef
+// -0.386273
+0xbec5c589
+// -0.610836
+0xbf1c5fc3
+// -0.142944
+0xbe125ffd
+// 0.218753
+0x3e6000e2
+// -0.380813
+0xbec2f9fb
+// -0.208921
+0xbe55ef84
+// -0.067368
+0xbd89f875
+// 0.120998
+0x3df7cda2
+// -0.159583
+0xbe2369b8
+// 0.044544
+0x3d367444
+// 0.076972
+0x3d9da371
+// 0.094107
+0x3dc0bb17
+// 0.369149
+0x3ebd0129
+// -0.181147
+0xbe397e9b
+// 0.017212
+0x3c8d0042
+// 0.245536
+0x3e7b6dba
+// -0.109880
+0xbde108dc
+// 0.258475
+0x3e8456cd
+// -0.295505
+0xbe974c6e
+// 0.188197
+0x3e40b6b6
+// -0.377298
+0xbec12d2f
+// 0.085243
+0x3dae93f2
+// 0.068968
+0x3d8d3f09
+// 0.160768
+0x3e24a059
+// -1.000000
+0xbf800000
+// -0.637145
+0xbf231bf4
+// 0.097624
+0x3dc7ef2d
+// 0.303400
+0x3e9b5743
+// -0.593397
+0xbf17e8d7
+// -0.155009
+0xbe1eba9b
+// -0.153017
+0xbe1cb072
+// 0.021298
+0x3cae78b9
+// 0.032262
+0x3d04258b
+// -0.259754
+0xbe84fe80
+// -0.260177
+0xbe8535ef
+// 0.094375
+0x3dc1479c
+// 0.469493
+0x3ef0616b
+// -0.471891
+0xbef19bc1
+// 0.447449
+0x3ee5180c
+// 0.062863
+0x3d80be8e
+// 0.801461
+0x3f4d2c90
+// -0.323758
+0xbea5c39d
+// -0.044667
+0xbd36f51d
+// 0.128438
+0x3e03852b
+// -0.452756
+0xbee7cf9d
+// 0.553617
+0x3f0db9d3
+// 0.290891
+0x3e94efaf
+// 0.101079
+0x3dcf0291

+ 28 - 0
Testing/Patterns/DSP/Transform/MFCCF32/MFCCRef_1024_1_f32.txt

@@ -0,0 +1,28 @@
+W
+13
+// 29.476383
+0x41ebcfa2
+// -2.793829
+0xc032ce18
+// -0.138950
+0xbe0e48f1
+// -0.255028
+0xbe8292fe
+// -0.086083
+0xbdb04c7c
+// 0.079019
+0x3da1d4bc
+// 0.053065
+0x3d595af3
+// -0.194468
+0xbe4722bc
+// -0.113326
+0xbde81743
+// 0.161914
+0x3e25ccba
+// -0.074321
+0xbd983584
+// -0.266463
+0xbe886dd2
+// 0.096700
+0x3dc60ad7

+ 28 - 0
Testing/Patterns/DSP/Transform/MFCCF32/MFCCRef_256_1_f32.txt

@@ -0,0 +1,28 @@
+W
+13
+// 16.614560
+0x4184ea9e
+// -3.430914
+0xc05b9419
+// -0.449975
+0xbee6631a
+// -0.719270
+0xbf382216
+// -0.009456
+0xbc1aee40
+// 0.375393
+0x3ec03390
+// 0.091797
+0x3dbc0008
+// 0.571371
+0x3f124566
+// 0.544033
+0x3f0b45b8
+// 0.122636
+0x3dfb2858
+// -0.240764
+0xbe768ac1
+// -0.119661
+0xbdf510f6
+// 0.306596
+0x3e9cfa2f

+ 28 - 0
Testing/Patterns/DSP/Transform/MFCCF32/MFCCRef_512_1_f32.txt

@@ -0,0 +1,28 @@
+W
+13
+// 23.285167
+0x41ba4806
+// -3.167810
+0xc04abd66
+// -0.068430
+0xbd8c24da
+// -0.381059
+0xbec31a39
+// -0.164060
+0xbe27ff4d
+// -0.571221
+0xbf123b87
+// -0.156919
+0xbe20af4f
+// 0.145660
+0x3e1527e4
+// 0.060968
+0x3d79b9dc
+// 0.157476
+0x3e21414e
+// 0.226390
+0x3e67d2b2
+// 0.023298
+0x3cbedb77
+// 0.141592
+0x3e10fd8c

+ 109 - 0
Testing/Source/Tests/MFCCF32.cpp

@@ -0,0 +1,109 @@
+#include "MFCCF32.h"
+#include <stdio.h>
+#include "Error.h"
+
+#include "mfccdata.h"
+
+#define SNR_THRESHOLD 120
+
+/* 
+
+Reference patterns are generated with
+a double precision computation.
+
+*/
+#define REL_ERROR (9.2e-5)
+
+
+
+    void MFCCF32::test_mfcc_f32()
+    {
+        const float32_t *inp1=input1.ptr(); 
+        float32_t *tmpinp=tmpin.ptr(); 
+        float32_t *outp=output.ptr();
+        float32_t *tmpp=tmp.ptr();
+
+
+        memcpy((void*)tmpinp,(void*)inp1,sizeof(float32_t)*this->fftLen);
+        arm_mfcc_f32(&mfcc,tmpinp,outp,tmpp);
+
+        ASSERT_EMPTY_TAIL(output);
+
+        ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
+
+        ASSERT_REL_ERROR(output,ref,REL_ERROR);
+
+    } 
+
+   
+    void MFCCF32::setUp(Testing::testID_t id,std::vector<Testing::param_t>& params,Client::PatternMgr *mgr)
+    {
+      
+       (void)params;
+
+       Testing::nbSamples_t nb=MAX_NB_SAMPLES; 
+
+       
+       switch(id)
+       {
+        case MFCCF32::TEST_MFCC_F32_1:
+        {  
+            nb = 256;
+            this->fftLen = nb;
+            ref.reload(MFCCF32::REF_MFCC_256_F32_ID,mgr,nb);
+            input1.reload(MFCCF32::INPUTS_MFCC_256_F32_ID,mgr,nb);
+            arm_mfcc_init_f32(&mfcc,
+                    nb,20,13,mfcc_dct_coefs_config1,
+                    mfcc_filter_pos_config3,mfcc_filter_len_config3,
+                    mfcc_filter_coefs_config3,
+                    mfcc_window_coefs_config3);
+            tmp.create(2*nb,MFCCF32::TMP_MFCC_F32_ID,mgr);
+            tmpin.create(nb,MFCCF32::TMPIN_MFCC_F32_ID,mgr);
+          }
+          break;
+
+        case MFCCF32::TEST_MFCC_F32_2:
+          {
+            nb = 512;
+            this->fftLen = nb;
+            ref.reload(MFCCF32::REF_MFCC_512_F32_ID,mgr,nb);
+            input1.reload(MFCCF32::INPUTS_MFCC_512_F32_ID,mgr,nb);
+            arm_mfcc_init_f32(&mfcc,
+                      nb,20,13,mfcc_dct_coefs_config1,
+                      mfcc_filter_pos_config2,mfcc_filter_len_config2,
+                      mfcc_filter_coefs_config2,
+                      mfcc_window_coefs_config2);
+            tmp.create(2*nb,MFCCF32::TMP_MFCC_F32_ID,mgr);
+            tmpin.create(nb,MFCCF32::TMPIN_MFCC_F32_ID,mgr);
+          }
+          break;
+        case MFCCF32::TEST_MFCC_F32_3:
+          {
+            nb = 1024;
+            this->fftLen = nb;
+            ref.reload(MFCCF32::REF_MFCC_1024_F32_ID,mgr,nb);
+            input1.reload(MFCCF32::INPUTS_MFCC_1024_F32_ID,mgr,nb);
+            arm_mfcc_init_f32(&mfcc,
+                      nb,20,13,mfcc_dct_coefs_config1,
+                      mfcc_filter_pos_config1,mfcc_filter_len_config1,
+                      mfcc_filter_coefs_config1,
+                      mfcc_window_coefs_config1);
+            tmp.create(2*nb,MFCCF32::TMP_MFCC_F32_ID,mgr);
+            tmpin.create(nb,MFCCF32::TMPIN_MFCC_F32_ID,mgr);
+
+          }
+          break;
+
+       }
+      
+
+       output.create(ref.nbSamples(),MFCCF32::OUTPUT_MFCC_F32_ID,mgr);
+
+    }
+
+    void MFCCF32::tearDown(Testing::testID_t id,Client::PatternMgr *mgr)
+    {
+        (void)id;
+        (void)mgr;
+        //output.dump(mgr);
+    }

+ 423 - 0
Testing/Source/Tests/mfccdata.c

@@ -0,0 +1,423 @@
+#include "mfccdata.h"
+
+const float32_t mfcc_dct_coefs_config1[NB_MFCC_DCT_COEFS_CONFIG1]={
+0.316228f,0.316228f,0.316228f,0.316228f,0.316228f,0.316228f,0.316228f,0.316228f,0.316228f,0.316228f,
+0.316228f,0.316228f,0.316228f,0.316228f,0.316228f,0.316228f,0.316228f,0.316228f,0.316228f,0.316228f,
+0.315253f,0.307490f,0.292156f,0.269628f,0.240461f,0.205374f,0.165229f,0.121015f,0.073822f,0.024811f,
+-0.024811f,-0.073822f,-0.121015f,-0.165229f,-0.205374f,-0.240461f,-0.269628f,-0.292156f,-0.307490f,-0.315253f,
+0.312334f,0.281761f,0.223607f,0.143564f,0.049469f,-0.049469f,-0.143564f,-0.223607f,-0.281761f,-0.312334f,
+-0.312334f,-0.281761f,-0.223607f,-0.143564f,-0.049469f,0.049469f,0.143564f,0.223607f,0.281761f,0.312334f,
+0.307490f,0.240461f,0.121015f,-0.024811f,-0.165229f,-0.269628f,-0.315253f,-0.292156f,-0.205374f,-0.073822f,
+0.073822f,0.205374f,0.292156f,0.315253f,0.269628f,0.165229f,0.024811f,-0.121015f,-0.240461f,-0.307490f,
+0.300750f,0.185874f,0.000000f,-0.185874f,-0.300750f,-0.300750f,-0.185874f,-0.000000f,0.185874f,0.300750f,
+0.300750f,0.185874f,0.000000f,-0.185874f,-0.300750f,-0.300750f,-0.185874f,-0.000000f,0.185874f,0.300750f,
+0.292156f,0.121015f,-0.121015f,-0.292156f,-0.292156f,-0.121015f,0.121015f,0.292156f,0.292156f,0.121015f,
+-0.121015f,-0.292156f,-0.292156f,-0.121015f,0.121015f,0.292156f,0.292156f,0.121015f,-0.121015f,-0.292156f,
+0.281761f,0.049469f,-0.223607f,-0.312334f,-0.143564f,0.143564f,0.312334f,0.223607f,-0.049469f,-0.281761f,
+-0.281761f,-0.049469f,0.223607f,0.312334f,0.143564f,-0.143564f,-0.312334f,-0.223607f,0.049469f,0.281761f,
+0.269628f,-0.024811f,-0.292156f,-0.240461f,0.073822f,0.307490f,0.205374f,-0.121015f,-0.315253f,-0.165229f,
+0.165229f,0.315253f,0.121015f,-0.205374f,-0.307490f,-0.073822f,0.240461f,0.292156f,0.024811f,-0.269628f,
+0.255834f,-0.097720f,-0.316228f,-0.097720f,0.255834f,0.255834f,-0.097720f,-0.316228f,-0.097720f,0.255834f,
+0.255834f,-0.097720f,-0.316228f,-0.097720f,0.255834f,0.255834f,-0.097720f,-0.316228f,-0.097720f,0.255834f,
+0.240461f,-0.165229f,-0.292156f,0.073822f,0.315253f,0.024811f,-0.307490f,-0.121015f,0.269628f,0.205374f,
+-0.205374f,-0.269628f,0.121015f,0.307490f,-0.024811f,-0.315253f,-0.073822f,0.292156f,0.165229f,-0.240461f,
+0.223607f,-0.223607f,-0.223607f,0.223607f,0.223607f,-0.223607f,-0.223607f,0.223607f,0.223607f,-0.223607f,
+-0.223607f,0.223607f,0.223607f,-0.223607f,-0.223607f,0.223607f,0.223607f,-0.223607f,-0.223607f,0.223607f,
+0.205374f,-0.269628f,-0.121015f,0.307490f,0.024811f,-0.315253f,0.073822f,0.292156f,-0.165229f,-0.240461f,
+0.240461f,0.165229f,-0.292156f,-0.073822f,0.315253f,-0.024811f,-0.307490f,0.121015f,0.269628f,-0.205374f,
+0.185874f,-0.300750f,-0.000000f,0.300750f,-0.185874f,-0.185874f,0.300750f,0.000000f,-0.300750f,0.185874f,
+0.185874f,-0.300750f,-0.000000f,0.300750f,-0.185874f,-0.185874f,0.300750f,-0.000000f,-0.300750f,0.185874f,
+};
+
+
+const float32_t mfcc_window_coefs_config1[NB_MFCC_WIN_COEFS_CONFIG1]={
+0.080000f,0.080009f,0.080035f,0.080078f,0.080139f,0.080216f,0.080312f,0.080424f,0.080554f,0.080701f,
+0.080866f,0.081047f,0.081246f,0.081463f,0.081696f,0.081947f,0.082215f,0.082500f,0.082803f,0.083123f,
+0.083459f,0.083814f,0.084185f,0.084573f,0.084979f,0.085402f,0.085841f,0.086298f,0.086772f,0.087263f,
+0.087771f,0.088297f,0.088839f,0.089398f,0.089974f,0.090567f,0.091177f,0.091804f,0.092448f,0.093108f,
+0.093786f,0.094480f,0.095191f,0.095919f,0.096663f,0.097424f,0.098202f,0.098996f,0.099807f,0.100635f,
+0.101479f,0.102340f,0.103217f,0.104111f,0.105021f,0.105947f,0.106890f,0.107849f,0.108824f,0.109816f,
+0.110823f,0.111847f,0.112887f,0.113943f,0.115015f,0.116104f,0.117208f,0.118328f,0.119464f,0.120615f,
+0.121783f,0.122966f,0.124165f,0.125380f,0.126610f,0.127856f,0.129117f,0.130394f,0.131686f,0.132993f,
+0.134316f,0.135654f,0.137008f,0.138376f,0.139760f,0.141159f,0.142572f,0.144001f,0.145445f,0.146903f,
+0.148377f,0.149865f,0.151367f,0.152885f,0.154417f,0.155963f,0.157524f,0.159099f,0.160689f,0.162293f,
+0.163911f,0.165543f,0.167190f,0.168850f,0.170525f,0.172213f,0.173915f,0.175631f,0.177361f,0.179104f,
+0.180861f,0.182631f,0.184415f,0.186212f,0.188023f,0.189847f,0.191684f,0.193534f,0.195397f,0.197273f,
+0.199162f,0.201064f,0.202979f,0.204906f,0.206846f,0.208799f,0.210764f,0.212741f,0.214731f,0.216733f,
+0.218747f,0.220773f,0.222811f,0.224862f,0.226924f,0.228997f,0.231083f,0.233180f,0.235289f,0.237409f,
+0.239540f,0.241683f,0.243837f,0.246003f,0.248179f,0.250366f,0.252565f,0.254774f,0.256993f,0.259224f,
+0.261465f,0.263716f,0.265978f,0.268251f,0.270533f,0.272826f,0.275128f,0.277441f,0.279763f,0.282096f,
+0.284438f,0.286789f,0.289151f,0.291521f,0.293901f,0.296290f,0.298689f,0.301096f,0.303513f,0.305938f,
+0.308372f,0.310815f,0.313267f,0.315727f,0.318195f,0.320672f,0.323157f,0.325651f,0.328152f,0.330662f,
+0.333179f,0.335704f,0.338237f,0.340777f,0.343325f,0.345880f,0.348442f,0.351012f,0.353589f,0.356173f,
+0.358764f,0.361361f,0.363966f,0.366577f,0.369194f,0.371818f,0.374448f,0.377085f,0.379727f,0.382376f,
+0.385031f,0.387691f,0.390357f,0.393029f,0.395706f,0.398389f,0.401077f,0.403771f,0.406469f,0.409173f,
+0.411881f,0.414594f,0.417312f,0.420035f,0.422762f,0.425493f,0.428229f,0.430969f,0.433713f,0.436461f,
+0.439213f,0.441969f,0.444729f,0.447492f,0.450258f,0.453028f,0.455802f,0.458578f,0.461358f,0.464140f,
+0.466925f,0.469713f,0.472504f,0.475297f,0.478093f,0.480891f,0.483691f,0.486493f,0.489298f,0.492104f,
+0.494912f,0.497722f,0.500533f,0.503346f,0.506160f,0.508976f,0.511792f,0.514610f,0.517429f,0.520248f,
+0.523069f,0.525890f,0.528711f,0.531533f,0.534355f,0.537178f,0.540000f,0.542822f,0.545645f,0.548467f,
+0.551289f,0.554110f,0.556931f,0.559752f,0.562571f,0.565390f,0.568208f,0.571024f,0.573840f,0.576654f,
+0.579467f,0.582278f,0.585088f,0.587896f,0.590702f,0.593507f,0.596309f,0.599109f,0.601907f,0.604703f,
+0.607496f,0.610287f,0.613075f,0.615860f,0.618642f,0.621422f,0.624198f,0.626972f,0.629742f,0.632508f,
+0.635271f,0.638031f,0.640787f,0.643539f,0.646287f,0.649031f,0.651771f,0.654507f,0.657238f,0.659965f,
+0.662688f,0.665406f,0.668119f,0.670827f,0.673531f,0.676229f,0.678923f,0.681611f,0.684294f,0.686971f,
+0.689643f,0.692309f,0.694969f,0.697624f,0.700273f,0.702915f,0.705552f,0.708182f,0.710806f,0.713423f,
+0.716034f,0.718639f,0.721236f,0.723827f,0.726411f,0.728988f,0.731558f,0.734120f,0.736675f,0.739223f,
+0.741763f,0.744296f,0.746821f,0.749338f,0.751848f,0.754349f,0.756842f,0.759328f,0.761805f,0.764273f,
+0.766733f,0.769185f,0.771628f,0.774062f,0.776487f,0.778904f,0.781311f,0.783710f,0.786099f,0.788479f,
+0.790850f,0.793211f,0.795562f,0.797904f,0.800237f,0.802559f,0.804872f,0.807174f,0.809467f,0.811749f,
+0.814022f,0.816284f,0.818535f,0.820776f,0.823007f,0.825226f,0.827435f,0.829634f,0.831821f,0.833997f,
+0.836163f,0.838317f,0.840460f,0.842591f,0.844711f,0.846820f,0.848917f,0.851003f,0.853076f,0.855138f,
+0.857189f,0.859227f,0.861253f,0.863267f,0.865269f,0.867259f,0.869236f,0.871201f,0.873154f,0.875094f,
+0.877021f,0.878936f,0.880838f,0.882727f,0.884603f,0.886466f,0.888316f,0.890153f,0.891977f,0.893788f,
+0.895585f,0.897369f,0.899139f,0.900896f,0.902639f,0.904369f,0.906085f,0.907787f,0.909475f,0.911150f,
+0.912810f,0.914457f,0.916089f,0.917707f,0.919311f,0.920901f,0.922476f,0.924037f,0.925583f,0.927115f,
+0.928633f,0.930135f,0.931623f,0.933097f,0.934555f,0.935999f,0.937428f,0.938841f,0.940240f,0.941624f,
+0.942992f,0.944346f,0.945684f,0.947007f,0.948314f,0.949606f,0.950883f,0.952145f,0.953390f,0.954620f,
+0.955835f,0.957034f,0.958217f,0.959385f,0.960536f,0.961672f,0.962792f,0.963896f,0.964985f,0.966057f,
+0.967113f,0.968153f,0.969177f,0.970184f,0.971176f,0.972151f,0.973110f,0.974053f,0.974979f,0.975889f,
+0.976783f,0.977660f,0.978521f,0.979365f,0.980193f,0.981004f,0.981798f,0.982576f,0.983337f,0.984081f,
+0.984809f,0.985520f,0.986214f,0.986892f,0.987552f,0.988196f,0.988823f,0.989433f,0.990026f,0.990602f,
+0.991161f,0.991703f,0.992229f,0.992737f,0.993228f,0.993702f,0.994159f,0.994599f,0.995021f,0.995427f,
+0.995815f,0.996186f,0.996541f,0.996877f,0.997197f,0.997500f,0.997785f,0.998053f,0.998304f,0.998537f,
+0.998754f,0.998953f,0.999134f,0.999299f,0.999446f,0.999576f,0.999688f,0.999784f,0.999861f,0.999922f,
+0.999965f,0.999991f,1.000000f,0.999991f,0.999965f,0.999922f,0.999861f,0.999784f,0.999688f,0.999576f,
+0.999446f,0.999299f,0.999134f,0.998953f,0.998754f,0.998537f,0.998304f,0.998053f,0.997785f,0.997500f,
+0.997197f,0.996877f,0.996541f,0.996186f,0.995815f,0.995427f,0.995021f,0.994599f,0.994159f,0.993702f,
+0.993228f,0.992737f,0.992229f,0.991703f,0.991161f,0.990602f,0.990026f,0.989433f,0.988823f,0.988196f,
+0.987552f,0.986892f,0.986214f,0.985520f,0.984809f,0.984081f,0.983337f,0.982576f,0.981798f,0.981004f,
+0.980193f,0.979365f,0.978521f,0.977660f,0.976783f,0.975889f,0.974979f,0.974053f,0.973110f,0.972151f,
+0.971176f,0.970184f,0.969177f,0.968153f,0.967113f,0.966057f,0.964985f,0.963896f,0.962792f,0.961672f,
+0.960536f,0.959385f,0.958217f,0.957034f,0.955835f,0.954620f,0.953390f,0.952145f,0.950883f,0.949606f,
+0.948314f,0.947007f,0.945684f,0.944346f,0.942992f,0.941624f,0.940240f,0.938841f,0.937428f,0.935999f,
+0.934555f,0.933097f,0.931623f,0.930135f,0.928633f,0.927115f,0.925583f,0.924037f,0.922476f,0.920901f,
+0.919311f,0.917707f,0.916089f,0.914457f,0.912810f,0.911150f,0.909475f,0.907787f,0.906085f,0.904369f,
+0.902639f,0.900896f,0.899139f,0.897369f,0.895585f,0.893788f,0.891977f,0.890153f,0.888316f,0.886466f,
+0.884603f,0.882727f,0.880838f,0.878936f,0.877021f,0.875094f,0.873154f,0.871201f,0.869236f,0.867259f,
+0.865269f,0.863267f,0.861253f,0.859227f,0.857189f,0.855138f,0.853076f,0.851003f,0.848917f,0.846820f,
+0.844711f,0.842591f,0.840460f,0.838317f,0.836163f,0.833997f,0.831821f,0.829634f,0.827435f,0.825226f,
+0.823007f,0.820776f,0.818535f,0.816284f,0.814022f,0.811749f,0.809467f,0.807174f,0.804872f,0.802559f,
+0.800237f,0.797904f,0.795562f,0.793211f,0.790850f,0.788479f,0.786099f,0.783710f,0.781311f,0.778904f,
+0.776487f,0.774062f,0.771628f,0.769185f,0.766733f,0.764273f,0.761805f,0.759328f,0.756842f,0.754349f,
+0.751848f,0.749338f,0.746821f,0.744296f,0.741763f,0.739223f,0.736675f,0.734120f,0.731558f,0.728988f,
+0.726411f,0.723827f,0.721236f,0.718639f,0.716034f,0.713423f,0.710806f,0.708182f,0.705552f,0.702915f,
+0.700273f,0.697624f,0.694969f,0.692309f,0.689643f,0.686971f,0.684294f,0.681611f,0.678923f,0.676229f,
+0.673531f,0.670827f,0.668119f,0.665406f,0.662688f,0.659965f,0.657238f,0.654507f,0.651771f,0.649031f,
+0.646287f,0.643539f,0.640787f,0.638031f,0.635271f,0.632508f,0.629742f,0.626972f,0.624198f,0.621422f,
+0.618642f,0.615860f,0.613075f,0.610287f,0.607496f,0.604703f,0.601907f,0.599109f,0.596309f,0.593507f,
+0.590702f,0.587896f,0.585088f,0.582278f,0.579467f,0.576654f,0.573840f,0.571024f,0.568208f,0.565390f,
+0.562571f,0.559752f,0.556931f,0.554110f,0.551289f,0.548467f,0.545645f,0.542822f,0.540000f,0.537178f,
+0.534355f,0.531533f,0.528711f,0.525890f,0.523069f,0.520248f,0.517429f,0.514610f,0.511792f,0.508976f,
+0.506160f,0.503346f,0.500533f,0.497722f,0.494912f,0.492104f,0.489298f,0.486493f,0.483691f,0.480891f,
+0.478093f,0.475297f,0.472504f,0.469713f,0.466925f,0.464140f,0.461358f,0.458578f,0.455802f,0.453028f,
+0.450258f,0.447492f,0.444729f,0.441969f,0.439213f,0.436461f,0.433713f,0.430969f,0.428229f,0.425493f,
+0.422762f,0.420035f,0.417312f,0.414594f,0.411881f,0.409173f,0.406469f,0.403771f,0.401077f,0.398389f,
+0.395706f,0.393029f,0.390357f,0.387691f,0.385031f,0.382376f,0.379727f,0.377085f,0.374448f,0.371818f,
+0.369194f,0.366577f,0.363966f,0.361361f,0.358764f,0.356173f,0.353589f,0.351012f,0.348442f,0.345880f,
+0.343325f,0.340777f,0.338237f,0.335704f,0.333179f,0.330662f,0.328152f,0.325651f,0.323157f,0.320672f,
+0.318195f,0.315727f,0.313267f,0.310815f,0.308372f,0.305938f,0.303513f,0.301096f,0.298689f,0.296290f,
+0.293901f,0.291521f,0.289151f,0.286789f,0.284438f,0.282096f,0.279763f,0.277441f,0.275128f,0.272826f,
+0.270533f,0.268251f,0.265978f,0.263716f,0.261465f,0.259224f,0.256993f,0.254774f,0.252565f,0.250366f,
+0.248179f,0.246003f,0.243837f,0.241683f,0.239540f,0.237409f,0.235289f,0.233180f,0.231083f,0.228997f,
+0.226924f,0.224862f,0.222811f,0.220773f,0.218747f,0.216733f,0.214731f,0.212741f,0.210764f,0.208799f,
+0.206846f,0.204906f,0.202979f,0.201064f,0.199162f,0.197273f,0.195397f,0.193534f,0.191684f,0.189847f,
+0.188023f,0.186212f,0.184415f,0.182631f,0.180861f,0.179104f,0.177361f,0.175631f,0.173915f,0.172213f,
+0.170525f,0.168850f,0.167190f,0.165543f,0.163911f,0.162293f,0.160689f,0.159099f,0.157524f,0.155963f,
+0.154417f,0.152885f,0.151367f,0.149865f,0.148377f,0.146903f,0.145445f,0.144001f,0.142572f,0.141159f,
+0.139760f,0.138376f,0.137008f,0.135654f,0.134316f,0.132993f,0.131686f,0.130394f,0.129117f,0.127856f,
+0.126610f,0.125380f,0.124165f,0.122966f,0.121783f,0.120615f,0.119464f,0.118328f,0.117208f,0.116104f,
+0.115015f,0.113943f,0.112887f,0.111847f,0.110823f,0.109816f,0.108824f,0.107849f,0.106890f,0.105947f,
+0.105021f,0.104111f,0.103217f,0.102340f,0.101479f,0.100635f,0.099807f,0.098996f,0.098202f,0.097424f,
+0.096663f,0.095919f,0.095191f,0.094480f,0.093786f,0.093108f,0.092448f,0.091804f,0.091177f,0.090567f,
+0.089974f,0.089398f,0.088839f,0.088297f,0.087771f,0.087263f,0.086772f,0.086298f,0.085841f,0.085402f,
+0.084979f,0.084573f,0.084185f,0.083814f,0.083459f,0.083123f,0.082803f,0.082500f,0.082215f,0.081947f,
+0.081696f,0.081463f,0.081246f,0.081047f,0.080866f,0.080701f,0.080554f,0.080424f,0.080312f,0.080216f,
+0.080139f,0.080078f,0.080035f,0.080009f,};
+
+const float32_t mfcc_window_coefs_config2[NB_MFCC_WIN_COEFS_CONFIG2]={
+0.080000f,0.080035f,0.080139f,0.080312f,0.080554f,0.080866f,0.081246f,0.081696f,0.082215f,0.082803f,
+0.083459f,0.084185f,0.084979f,0.085841f,0.086772f,0.087771f,0.088839f,0.089974f,0.091177f,0.092448f,
+0.093786f,0.095191f,0.096663f,0.098202f,0.099807f,0.101479f,0.103217f,0.105021f,0.106890f,0.108824f,
+0.110823f,0.112887f,0.115015f,0.117208f,0.119464f,0.121783f,0.124165f,0.126610f,0.129117f,0.131686f,
+0.134316f,0.137008f,0.139760f,0.142572f,0.145445f,0.148377f,0.151367f,0.154417f,0.157524f,0.160689f,
+0.163911f,0.167190f,0.170525f,0.173915f,0.177361f,0.180861f,0.184415f,0.188023f,0.191684f,0.195397f,
+0.199162f,0.202979f,0.206846f,0.210764f,0.214731f,0.218747f,0.222811f,0.226924f,0.231083f,0.235289f,
+0.239540f,0.243837f,0.248179f,0.252565f,0.256993f,0.261465f,0.265978f,0.270533f,0.275128f,0.279763f,
+0.284438f,0.289151f,0.293901f,0.298689f,0.303513f,0.308372f,0.313267f,0.318195f,0.323157f,0.328152f,
+0.333179f,0.338237f,0.343325f,0.348442f,0.353589f,0.358764f,0.363966f,0.369194f,0.374448f,0.379727f,
+0.385031f,0.390357f,0.395706f,0.401077f,0.406469f,0.411881f,0.417312f,0.422762f,0.428229f,0.433713f,
+0.439213f,0.444729f,0.450258f,0.455802f,0.461358f,0.466925f,0.472504f,0.478093f,0.483691f,0.489298f,
+0.494912f,0.500533f,0.506160f,0.511792f,0.517429f,0.523069f,0.528711f,0.534355f,0.540000f,0.545645f,
+0.551289f,0.556931f,0.562571f,0.568208f,0.573840f,0.579467f,0.585088f,0.590702f,0.596309f,0.601907f,
+0.607496f,0.613075f,0.618642f,0.624198f,0.629742f,0.635271f,0.640787f,0.646287f,0.651771f,0.657238f,
+0.662688f,0.668119f,0.673531f,0.678923f,0.684294f,0.689643f,0.694969f,0.700273f,0.705552f,0.710806f,
+0.716034f,0.721236f,0.726411f,0.731558f,0.736675f,0.741763f,0.746821f,0.751848f,0.756842f,0.761805f,
+0.766733f,0.771628f,0.776487f,0.781311f,0.786099f,0.790850f,0.795562f,0.800237f,0.804872f,0.809467f,
+0.814022f,0.818535f,0.823007f,0.827435f,0.831821f,0.836163f,0.840460f,0.844711f,0.848917f,0.853076f,
+0.857189f,0.861253f,0.865269f,0.869236f,0.873154f,0.877021f,0.880838f,0.884603f,0.888316f,0.891977f,
+0.895585f,0.899139f,0.902639f,0.906085f,0.909475f,0.912810f,0.916089f,0.919311f,0.922476f,0.925583f,
+0.928633f,0.931623f,0.934555f,0.937428f,0.940240f,0.942992f,0.945684f,0.948314f,0.950883f,0.953390f,
+0.955835f,0.958217f,0.960536f,0.962792f,0.964985f,0.967113f,0.969177f,0.971176f,0.973110f,0.974979f,
+0.976783f,0.978521f,0.980193f,0.981798f,0.983337f,0.984809f,0.986214f,0.987552f,0.988823f,0.990026f,
+0.991161f,0.992229f,0.993228f,0.994159f,0.995021f,0.995815f,0.996541f,0.997197f,0.997785f,0.998304f,
+0.998754f,0.999134f,0.999446f,0.999688f,0.999861f,0.999965f,1.000000f,0.999965f,0.999861f,0.999688f,
+0.999446f,0.999134f,0.998754f,0.998304f,0.997785f,0.997197f,0.996541f,0.995815f,0.995021f,0.994159f,
+0.993228f,0.992229f,0.991161f,0.990026f,0.988823f,0.987552f,0.986214f,0.984809f,0.983337f,0.981798f,
+0.980193f,0.978521f,0.976783f,0.974979f,0.973110f,0.971176f,0.969177f,0.967113f,0.964985f,0.962792f,
+0.960536f,0.958217f,0.955835f,0.953390f,0.950883f,0.948314f,0.945684f,0.942992f,0.940240f,0.937428f,
+0.934555f,0.931623f,0.928633f,0.925583f,0.922476f,0.919311f,0.916089f,0.912810f,0.909475f,0.906085f,
+0.902639f,0.899139f,0.895585f,0.891977f,0.888316f,0.884603f,0.880838f,0.877021f,0.873154f,0.869236f,
+0.865269f,0.861253f,0.857189f,0.853076f,0.848917f,0.844711f,0.840460f,0.836163f,0.831821f,0.827435f,
+0.823007f,0.818535f,0.814022f,0.809467f,0.804872f,0.800237f,0.795562f,0.790850f,0.786099f,0.781311f,
+0.776487f,0.771628f,0.766733f,0.761805f,0.756842f,0.751848f,0.746821f,0.741763f,0.736675f,0.731558f,
+0.726411f,0.721236f,0.716034f,0.710806f,0.705552f,0.700273f,0.694969f,0.689643f,0.684294f,0.678923f,
+0.673531f,0.668119f,0.662688f,0.657238f,0.651771f,0.646287f,0.640787f,0.635271f,0.629742f,0.624198f,
+0.618642f,0.613075f,0.607496f,0.601907f,0.596309f,0.590702f,0.585088f,0.579467f,0.573840f,0.568208f,
+0.562571f,0.556931f,0.551289f,0.545645f,0.540000f,0.534355f,0.528711f,0.523069f,0.517429f,0.511792f,
+0.506160f,0.500533f,0.494912f,0.489298f,0.483691f,0.478093f,0.472504f,0.466925f,0.461358f,0.455802f,
+0.450258f,0.444729f,0.439213f,0.433713f,0.428229f,0.422762f,0.417312f,0.411881f,0.406469f,0.401077f,
+0.395706f,0.390357f,0.385031f,0.379727f,0.374448f,0.369194f,0.363966f,0.358764f,0.353589f,0.348442f,
+0.343325f,0.338237f,0.333179f,0.328152f,0.323157f,0.318195f,0.313267f,0.308372f,0.303513f,0.298689f,
+0.293901f,0.289151f,0.284438f,0.279763f,0.275128f,0.270533f,0.265978f,0.261465f,0.256993f,0.252565f,
+0.248179f,0.243837f,0.239540f,0.235289f,0.231083f,0.226924f,0.222811f,0.218747f,0.214731f,0.210764f,
+0.206846f,0.202979f,0.199162f,0.195397f,0.191684f,0.188023f,0.184415f,0.180861f,0.177361f,0.173915f,
+0.170525f,0.167190f,0.163911f,0.160689f,0.157524f,0.154417f,0.151367f,0.148377f,0.145445f,0.142572f,
+0.139760f,0.137008f,0.134316f,0.131686f,0.129117f,0.126610f,0.124165f,0.121783f,0.119464f,0.117208f,
+0.115015f,0.112887f,0.110823f,0.108824f,0.106890f,0.105021f,0.103217f,0.101479f,0.099807f,0.098202f,
+0.096663f,0.095191f,0.093786f,0.092448f,0.091177f,0.089974f,0.088839f,0.087771f,0.086772f,0.085841f,
+0.084979f,0.084185f,0.083459f,0.082803f,0.082215f,0.081696f,0.081246f,0.080866f,0.080554f,0.080312f,
+0.080139f,0.080035f,};
+
+const float32_t mfcc_window_coefs_config3[NB_MFCC_WIN_COEFS_CONFIG3]={
+0.080000f,0.080139f,0.080554f,0.081246f,0.082215f,0.083459f,0.084979f,0.086772f,0.088839f,0.091177f,
+0.093786f,0.096663f,0.099807f,0.103217f,0.106890f,0.110823f,0.115015f,0.119464f,0.124165f,0.129117f,
+0.134316f,0.139760f,0.145445f,0.151367f,0.157524f,0.163911f,0.170525f,0.177361f,0.184415f,0.191684f,
+0.199162f,0.206846f,0.214731f,0.222811f,0.231083f,0.239540f,0.248179f,0.256993f,0.265978f,0.275128f,
+0.284438f,0.293901f,0.303513f,0.313267f,0.323157f,0.333179f,0.343325f,0.353589f,0.363966f,0.374448f,
+0.385031f,0.395706f,0.406469f,0.417312f,0.428229f,0.439213f,0.450258f,0.461358f,0.472504f,0.483691f,
+0.494912f,0.506160f,0.517429f,0.528711f,0.540000f,0.551289f,0.562571f,0.573840f,0.585088f,0.596309f,
+0.607496f,0.618642f,0.629742f,0.640787f,0.651771f,0.662688f,0.673531f,0.684294f,0.694969f,0.705552f,
+0.716034f,0.726411f,0.736675f,0.746821f,0.756842f,0.766733f,0.776487f,0.786099f,0.795562f,0.804872f,
+0.814022f,0.823007f,0.831821f,0.840460f,0.848917f,0.857189f,0.865269f,0.873154f,0.880838f,0.888316f,
+0.895585f,0.902639f,0.909475f,0.916089f,0.922476f,0.928633f,0.934555f,0.940240f,0.945684f,0.950883f,
+0.955835f,0.960536f,0.964985f,0.969177f,0.973110f,0.976783f,0.980193f,0.983337f,0.986214f,0.988823f,
+0.991161f,0.993228f,0.995021f,0.996541f,0.997785f,0.998754f,0.999446f,0.999861f,1.000000f,0.999861f,
+0.999446f,0.998754f,0.997785f,0.996541f,0.995021f,0.993228f,0.991161f,0.988823f,0.986214f,0.983337f,
+0.980193f,0.976783f,0.973110f,0.969177f,0.964985f,0.960536f,0.955835f,0.950883f,0.945684f,0.940240f,
+0.934555f,0.928633f,0.922476f,0.916089f,0.909475f,0.902639f,0.895585f,0.888316f,0.880838f,0.873154f,
+0.865269f,0.857189f,0.848917f,0.840460f,0.831821f,0.823007f,0.814022f,0.804872f,0.795562f,0.786099f,
+0.776487f,0.766733f,0.756842f,0.746821f,0.736675f,0.726411f,0.716034f,0.705552f,0.694969f,0.684294f,
+0.673531f,0.662688f,0.651771f,0.640787f,0.629742f,0.618642f,0.607496f,0.596309f,0.585088f,0.573840f,
+0.562571f,0.551289f,0.540000f,0.528711f,0.517429f,0.506160f,0.494912f,0.483691f,0.472504f,0.461358f,
+0.450258f,0.439213f,0.428229f,0.417312f,0.406469f,0.395706f,0.385031f,0.374448f,0.363966f,0.353589f,
+0.343325f,0.333179f,0.323157f,0.313267f,0.303513f,0.293901f,0.284438f,0.275128f,0.265978f,0.256993f,
+0.248179f,0.239540f,0.231083f,0.222811f,0.214731f,0.206846f,0.199162f,0.191684f,0.184415f,0.177361f,
+0.170525f,0.163911f,0.157524f,0.151367f,0.145445f,0.139760f,0.134316f,0.129117f,0.124165f,0.119464f,
+0.115015f,0.110823f,0.106890f,0.103217f,0.099807f,0.096663f,0.093786f,0.091177f,0.088839f,0.086772f,
+0.084979f,0.083459f,0.082215f,0.081246f,0.080554f,0.080139f,};
+
+
+const uint32_t mfcc_filter_pos_config1[NB_MFCC_NB_FILTER_CONFIG1]={
+5,11,17,25,33,43,54,66,79,94,
+111,131,152,176,203,234,268,306,349,397,
+};
+const uint32_t mfcc_filter_len_config1[NB_MFCC_NB_FILTER_CONFIG1]={
+12,14,16,18,21,23,25,28,32,37,
+41,45,51,58,65,72,81,91,103,115,
+};
+
+const uint32_t mfcc_filter_pos_config2[NB_MFCC_NB_FILTER_CONFIG2]={
+3,6,9,13,17,22,27,33,40,47,
+56,66,76,88,102,117,134,153,175,199,
+};
+const uint32_t mfcc_filter_len_config2[NB_MFCC_NB_FILTER_CONFIG2]={
+6,7,8,9,10,11,13,14,16,19,
+20,22,26,29,32,36,41,46,51,57,
+};
+
+const uint32_t mfcc_filter_pos_config3[NB_MFCC_NB_FILTER_CONFIG3]={
+2,3,5,7,9,11,14,17,20,24,
+28,33,38,44,51,59,67,77,88,100,
+};
+const uint32_t mfcc_filter_len_config3[NB_MFCC_NB_FILTER_CONFIG3]={
+3,4,4,4,5,6,6,7,8,9,
+10,11,13,15,16,18,21,23,25,28,
+};
+
+
+
+const float32_t mfcc_filter_coefs_config1[NB_MFCC_FILTER_COEFS_CONFIG1]={
+0.158152f,0.329789f,0.498080f,0.663153f,0.825129f,0.984122f,0.859761f,0.706417f,0.555749f,0.407665f,
+0.262079f,0.118907f,0.140239f,0.293583f,0.444251f,0.592335f,0.737921f,0.881093f,0.978071f,0.839496f,
+0.703110f,0.568845f,0.436636f,0.306422f,0.178142f,0.051741f,0.021929f,0.160504f,0.296890f,0.431155f,
+0.563364f,0.693578f,0.821858f,0.948259f,0.927164f,0.804358f,0.683276f,0.563868f,0.446089f,0.329895f,
+0.215245f,0.102097f,0.072836f,0.195642f,0.316724f,0.436132f,0.553911f,0.670105f,0.784755f,0.897903f,
+0.990413f,0.880155f,0.771288f,0.663777f,0.557588f,0.452689f,0.349050f,0.246640f,0.145430f,0.045394f,
+0.009587f,0.119845f,0.228712f,0.336223f,0.442412f,0.547311f,0.650950f,0.753360f,0.854570f,0.954606f,
+0.946503f,0.848733f,0.752057f,0.656452f,0.561894f,0.468360f,0.375829f,0.284280f,0.193690f,0.104042f,
+0.015315f,0.053497f,0.151267f,0.247943f,0.343548f,0.438106f,0.531640f,0.624171f,0.715720f,0.806310f,
+0.895958f,0.984685f,0.927491f,0.840551f,0.754478f,0.669255f,0.584864f,0.501291f,0.418519f,0.336533f,
+0.255318f,0.174861f,0.095146f,0.016160f,0.072509f,0.159449f,0.245522f,0.330745f,0.415136f,0.498709f,
+0.581481f,0.663467f,0.744682f,0.825139f,0.904854f,0.983840f,0.937891f,0.860325f,0.783449f,0.707252f,
+0.631722f,0.556847f,0.482615f,0.409017f,0.336040f,0.263676f,0.191913f,0.120741f,0.050152f,0.062109f,
+0.139675f,0.216551f,0.292748f,0.368278f,0.443153f,0.517385f,0.590983f,0.663960f,0.736324f,0.808087f,
+0.879259f,0.949848f,0.980135f,0.910681f,0.841781f,0.773427f,0.705610f,0.638322f,0.571554f,0.505298f,
+0.439548f,0.374294f,0.309529f,0.245247f,0.181440f,0.118101f,0.055223f,0.019865f,0.089319f,0.158219f,
+0.226573f,0.294390f,0.361678f,0.428446f,0.494702f,0.560452f,0.625706f,0.690471f,0.754753f,0.818560f,
+0.881899f,0.944777f,0.992800f,0.930826f,0.869293f,0.808195f,0.747527f,0.687282f,0.627454f,0.568039f,
+0.509029f,0.450420f,0.392207f,0.334383f,0.276944f,0.219885f,0.163200f,0.106885f,0.050935f,0.007200f,
+0.069174f,0.130707f,0.191805f,0.252473f,0.312718f,0.372546f,0.431961f,0.490971f,0.549580f,0.607793f,
+0.665617f,0.723056f,0.780115f,0.836800f,0.893115f,0.949065f,0.995345f,0.940111f,0.885228f,0.830692f,
+0.776498f,0.722642f,0.669120f,0.615928f,0.563062f,0.510517f,0.458290f,0.406378f,0.354775f,0.303479f,
+0.252487f,0.201793f,0.151396f,0.101291f,0.051475f,0.001945f,0.004655f,0.059889f,0.114772f,0.169308f,
+0.223502f,0.277358f,0.330880f,0.384072f,0.436938f,0.489483f,0.541710f,0.593622f,0.645225f,0.696521f,
+0.747513f,0.798207f,0.848604f,0.898709f,0.948525f,0.998055f,0.952698f,0.903729f,0.855038f,0.806619f,
+0.758470f,0.710588f,0.662971f,0.615614f,0.568516f,0.521674f,0.475084f,0.428744f,0.382652f,0.336804f,
+0.291199f,0.245834f,0.200705f,0.155811f,0.111150f,0.066718f,0.022514f,0.047302f,0.096271f,0.144962f,
+0.193381f,0.241530f,0.289412f,0.337029f,0.384386f,0.431484f,0.478326f,0.524916f,0.571256f,0.617348f,
+0.663196f,0.708801f,0.754166f,0.799295f,0.844189f,0.888850f,0.933282f,0.977486f,0.978535f,0.934779f,
+0.891243f,0.847926f,0.804826f,0.761939f,0.719265f,0.676800f,0.634543f,0.592492f,0.550645f,0.508999f,
+0.467554f,0.426307f,0.385255f,0.344399f,0.303734f,0.263260f,0.222975f,0.182877f,0.142965f,0.103236f,
+0.063689f,0.024323f,0.021465f,0.065221f,0.108757f,0.152074f,0.195174f,0.238061f,0.280735f,0.323200f,
+0.365457f,0.407508f,0.449355f,0.491001f,0.532446f,0.573693f,0.614745f,0.655601f,0.696266f,0.736740f,
+0.777025f,0.817123f,0.857035f,0.896764f,0.936311f,0.975677f,0.985135f,0.946124f,0.907289f,0.868628f,
+0.830139f,0.791821f,0.753672f,0.715691f,0.677876f,0.640227f,0.602740f,0.565416f,0.528253f,0.491249f,
+0.454402f,0.417713f,0.381178f,0.344798f,0.308570f,0.272494f,0.236568f,0.200790f,0.165161f,0.129678f,
+0.094340f,0.059146f,0.024095f,0.014865f,0.053876f,0.092711f,0.131372f,0.169861f,0.208179f,0.246328f,
+0.284309f,0.322124f,0.359773f,0.397260f,0.434584f,0.471747f,0.508751f,0.545597f,0.582287f,0.618822f,
+0.655202f,0.691430f,0.727506f,0.763432f,0.799210f,0.834839f,0.870322f,0.905660f,0.940854f,0.975905f,
+0.989185f,0.954417f,0.919787f,0.885297f,0.850943f,0.816725f,0.782643f,0.748695f,0.714879f,0.681196f,
+0.647643f,0.614221f,0.580927f,0.547761f,0.514722f,0.481809f,0.449021f,0.416357f,0.383817f,0.351398f,
+0.319101f,0.286924f,0.254866f,0.222928f,0.191107f,0.159402f,0.127814f,0.096341f,0.064982f,0.033737f,
+0.002604f,0.010815f,0.045583f,0.080213f,0.114703f,0.149057f,0.183275f,0.217357f,0.251305f,0.285121f,
+0.318804f,0.352357f,0.385779f,0.419073f,0.452239f,0.485278f,0.518191f,0.550979f,0.583643f,0.616183f,
+0.648602f,0.680899f,0.713076f,0.745134f,0.777072f,0.808893f,0.840598f,0.872186f,0.903659f,0.935018f,
+0.966263f,0.997396f,0.971584f,0.940674f,0.909875f,0.879185f,0.848604f,0.818130f,0.787764f,0.757505f,
+0.727351f,0.697302f,0.667357f,0.637516f,0.607777f,0.578141f,0.548606f,0.519172f,0.489838f,0.460603f,
+0.431467f,0.402428f,0.373487f,0.344643f,0.315895f,0.287242f,0.258684f,0.230221f,0.201850f,0.173573f,
+0.145388f,0.117295f,0.089293f,0.061381f,0.033559f,0.005827f,0.028416f,0.059326f,0.090125f,0.120815f,
+0.151396f,0.181870f,0.212236f,0.242495f,0.272649f,0.302698f,0.332643f,0.362484f,0.392223f,0.421859f,
+0.451394f,0.480828f,0.510162f,0.539397f,0.568533f,0.597572f,0.626513f,0.655357f,0.684105f,0.712758f,
+0.741315f,0.769779f,0.798150f,0.826427f,0.854612f,0.882705f,0.910707f,0.938619f,0.966441f,0.994173f,
+0.978184f,0.950628f,0.923161f,0.895780f,0.868486f,0.841279f,0.814156f,0.787119f,0.760166f,0.733296f,
+0.706511f,0.679808f,0.653187f,0.626648f,0.600191f,0.573814f,0.547518f,0.521302f,0.495165f,0.469106f,
+0.443127f,0.417225f,0.391401f,0.365653f,0.339983f,0.314388f,0.288869f,0.263425f,0.238056f,0.212762f,
+0.187541f,0.162394f,0.137319f,0.112318f,0.087388f,0.062531f,0.037744f,0.013029f,0.021816f,0.049372f,
+0.076839f,0.104220f,0.131514f,0.158721f,0.185844f,0.212881f,0.239834f,0.266704f,0.293489f,0.320192f,
+0.346813f,0.373352f,0.399809f,0.426186f,0.452482f,0.478698f,0.504835f,0.530894f,0.556873f,0.582775f,
+0.608599f,0.634347f,0.660017f,0.685612f,0.711131f,0.736575f,0.761944f,0.787238f,0.812459f,0.837606f,
+0.862681f,0.887682f,0.912612f,0.937469f,0.962256f,0.986971f,0.988384f,0.963810f,0.939305f,0.914869f,
+0.890503f,0.866205f,0.841975f,0.817813f,0.793719f,0.769691f,0.745730f,0.721836f,0.698008f,0.674245f,
+0.650547f,0.626914f,0.603346f,0.579842f,0.556401f,0.533025f,0.509711f,0.486460f,0.463272f,0.440145f,
+0.417081f,0.394078f,0.371136f,0.348254f,0.325434f,0.302673f,0.279973f,0.257332f,0.234750f,0.212227f,
+0.189762f,0.167356f,0.145008f,0.122718f,0.100485f,0.078309f,0.056190f,0.034127f,0.012121f,0.011616f,
+0.036190f,0.060695f,0.085131f,0.109497f,0.133795f,0.158025f,0.182187f,0.206281f,0.230309f,0.254270f,
+0.278164f,0.301992f,0.325755f,0.349453f,0.373086f,0.396654f,0.420158f,0.443599f,0.466975f,0.490289f,
+0.513540f,0.536728f,0.559855f,0.582919f,0.605922f,0.628864f,0.651745f,0.674566f,0.697327f,0.720027f,
+0.742669f,0.765250f,0.787773f,0.810238f,0.832644f,0.854992f,0.877282f,0.899515f,0.921691f,0.943810f,
+0.965873f,0.987879f,0.990171f,0.968276f,0.946437f,0.924653f,0.902923f,0.881249f,0.859628f,0.838062f,
+0.816549f,0.795090f,0.773684f,0.752330f,0.731030f,0.709782f,0.688586f,0.667442f,0.646350f,0.625309f,
+0.604320f,0.583381f,0.562493f,0.541655f,0.520867f,0.500130f,0.479442f,0.458803f,0.438214f,0.417674f,
+0.397182f,0.376740f,0.356345f,0.335998f,0.315700f,0.295448f,0.275245f,0.255088f,0.234978f,0.214916f,
+0.194899f,0.174929f,0.155005f,0.135127f,0.115295f,0.095508f,0.075766f,0.056069f,0.036417f,0.016810f,
+0.009829f,0.031724f,0.053563f,0.075347f,0.097077f,0.118751f,0.140372f,0.161938f,0.183451f,0.204910f,
+0.226316f,0.247670f,0.268970f,0.290218f,0.311414f,0.332558f,0.353650f,0.374691f,0.395680f,0.416619f,
+0.437507f,0.458345f,0.479133f,0.499870f,0.520558f,0.541197f,0.561786f,0.582326f,0.602817f,0.623260f,
+0.643655f,0.664002f,0.684300f,0.704552f,0.724755f,0.744912f,0.765022f,0.785084f,0.805101f,0.825071f,
+0.844995f,0.864873f,0.884705f,0.904492f,0.924234f,0.943931f,0.963583f,0.983190f,0.997247f,0.977729f,
+0.958254f,0.938824f,0.919437f,0.900093f,0.880792f,0.861535f,0.842321f,0.823149f,0.804020f,0.784933f,
+0.765888f,0.746885f,0.727923f,0.709004f,0.690125f,0.671288f,0.652492f,0.633737f,0.615022f,0.596348f,
+0.577714f,0.559120f,0.540567f,0.522053f,0.503578f,0.485144f,0.466748f,0.448391f,0.430074f,0.411795f,
+0.393555f,0.375353f,0.357190f,0.339065f,0.320977f,0.302928f,0.284916f,0.266942f,0.249005f,0.231105f,
+0.213242f,0.195416f,0.177627f,0.159875f,0.142159f,0.124479f,0.106835f,0.089227f,0.071656f,0.054119f,
+0.036619f,0.019154f,0.001724f,0.002753f,0.022271f,0.041746f,0.061176f,0.080564f,0.099907f,0.119208f,
+0.138465f,0.157679f,0.176851f,0.195980f,0.215067f,0.234112f,0.253115f,0.272077f,0.290996f,0.309875f,
+0.328712f,0.347508f,0.366263f,0.384978f,0.403652f,0.422286f,0.440880f,0.459433f,0.477947f,0.496422f,
+0.514856f,0.533252f,0.551609f,0.569926f,0.588205f,0.606445f,0.624647f,0.642810f,0.660935f,0.679023f,
+0.697072f,0.715084f,0.733058f,0.750995f,0.768895f,0.786758f,0.804583f,0.822373f,0.840125f,0.857841f,
+0.875521f,0.893165f,0.910773f,0.928344f,0.945881f,0.963381f,0.980846f,0.998276f,0.984329f,0.966969f,
+0.949644f,0.932354f,0.915098f,0.897877f,0.880689f,0.863537f,0.846418f,0.829333f,0.812281f,0.795264f,
+0.778279f,0.761329f,0.744411f,0.727526f,0.710675f,0.693856f,0.677070f,0.660317f,0.643596f,0.626907f,
+0.610251f,0.593626f,0.577034f,0.560473f,0.543944f,0.527447f,0.510981f,0.494546f,0.478143f,0.461771f,
+0.445430f,0.429119f,0.412840f,0.396591f,0.380372f,0.364184f,0.348027f,0.331899f,0.315802f,0.299734f,
+0.283697f,0.267689f,0.251710f,0.235762f,0.219842f,0.203952f,0.188091f,0.172260f,0.156457f,0.140683f,
+0.124938f,0.109221f,0.093533f,0.077874f,0.062243f,0.046640f,0.031065f,0.015519f,};
+
+const float32_t mfcc_filter_coefs_config2[NB_MFCC_FILTER_COEFS_CONFIG2]={
+0.329789f,0.663153f,0.984122f,0.706417f,0.407665f,0.118907f,0.293583f,0.592335f,0.881093f,0.839496f,
+0.568845f,0.306422f,0.051741f,0.160504f,0.431155f,0.693578f,0.948259f,0.804358f,0.563868f,0.329895f,
+0.102097f,0.195642f,0.436132f,0.670105f,0.897903f,0.880155f,0.663777f,0.452689f,0.246640f,0.045394f,
+0.119845f,0.336223f,0.547311f,0.753360f,0.954606f,0.848733f,0.656452f,0.468360f,0.284280f,0.104042f,
+0.151267f,0.343548f,0.531640f,0.715720f,0.895958f,0.927491f,0.754478f,0.584864f,0.418519f,0.255318f,
+0.095146f,0.072509f,0.245522f,0.415136f,0.581481f,0.744682f,0.904854f,0.937891f,0.783449f,0.631722f,
+0.482615f,0.336040f,0.191913f,0.050152f,0.062109f,0.216551f,0.368278f,0.517385f,0.663960f,0.808087f,
+0.949848f,0.910681f,0.773427f,0.638322f,0.505298f,0.374294f,0.245247f,0.118101f,0.089319f,0.226573f,
+0.361678f,0.494702f,0.625706f,0.754753f,0.881899f,0.992800f,0.869293f,0.747527f,0.627454f,0.509029f,
+0.392207f,0.276944f,0.163200f,0.050935f,0.007200f,0.130707f,0.252473f,0.372546f,0.490971f,0.607793f,
+0.723056f,0.836800f,0.949065f,0.940111f,0.830692f,0.722642f,0.615928f,0.510517f,0.406378f,0.303479f,
+0.201793f,0.101291f,0.001945f,0.059889f,0.169308f,0.277358f,0.384072f,0.489483f,0.593622f,0.696521f,
+0.798207f,0.898709f,0.998055f,0.903729f,0.806619f,0.710588f,0.615614f,0.521674f,0.428744f,0.336804f,
+0.245834f,0.155811f,0.066718f,0.096271f,0.193381f,0.289412f,0.384386f,0.478326f,0.571256f,0.663196f,
+0.754166f,0.844189f,0.933282f,0.978535f,0.891243f,0.804826f,0.719265f,0.634543f,0.550645f,0.467554f,
+0.385255f,0.303734f,0.222975f,0.142965f,0.063689f,0.021465f,0.108757f,0.195174f,0.280735f,0.365457f,
+0.449355f,0.532446f,0.614745f,0.696266f,0.777025f,0.857035f,0.936311f,0.985135f,0.907289f,0.830139f,
+0.753672f,0.677876f,0.602740f,0.528253f,0.454402f,0.381178f,0.308570f,0.236568f,0.165161f,0.094340f,
+0.024095f,0.014865f,0.092711f,0.169861f,0.246328f,0.322124f,0.397260f,0.471747f,0.545597f,0.618822f,
+0.691430f,0.763432f,0.834839f,0.905660f,0.975905f,0.954417f,0.885297f,0.816725f,0.748695f,0.681196f,
+0.614221f,0.547761f,0.481809f,0.416357f,0.351398f,0.286924f,0.222928f,0.159402f,0.096341f,0.033737f,
+0.045583f,0.114703f,0.183275f,0.251305f,0.318804f,0.385779f,0.452239f,0.518191f,0.583643f,0.648602f,
+0.713076f,0.777072f,0.840598f,0.903659f,0.966263f,0.971584f,0.909875f,0.848604f,0.787764f,0.727351f,
+0.667357f,0.607777f,0.548606f,0.489838f,0.431467f,0.373487f,0.315895f,0.258684f,0.201850f,0.145388f,
+0.089293f,0.033559f,0.028416f,0.090125f,0.151396f,0.212236f,0.272649f,0.332643f,0.392223f,0.451394f,
+0.510162f,0.568533f,0.626513f,0.684105f,0.741315f,0.798150f,0.854612f,0.910707f,0.966441f,0.978184f,
+0.923161f,0.868486f,0.814156f,0.760166f,0.706511f,0.653187f,0.600191f,0.547518f,0.495165f,0.443127f,
+0.391401f,0.339983f,0.288869f,0.238056f,0.187541f,0.137319f,0.087388f,0.037744f,0.021816f,0.076839f,
+0.131514f,0.185844f,0.239834f,0.293489f,0.346813f,0.399809f,0.452482f,0.504835f,0.556873f,0.608599f,
+0.660017f,0.711131f,0.761944f,0.812459f,0.862681f,0.912612f,0.962256f,0.988384f,0.939305f,0.890503f,
+0.841975f,0.793719f,0.745730f,0.698008f,0.650547f,0.603346f,0.556401f,0.509711f,0.463272f,0.417081f,
+0.371136f,0.325434f,0.279973f,0.234750f,0.189762f,0.145008f,0.100485f,0.056190f,0.012121f,0.011616f,
+0.060695f,0.109497f,0.158025f,0.206281f,0.254270f,0.301992f,0.349453f,0.396654f,0.443599f,0.490289f,
+0.536728f,0.582919f,0.628864f,0.674566f,0.720027f,0.765250f,0.810238f,0.854992f,0.899515f,0.943810f,
+0.987879f,0.968276f,0.924653f,0.881249f,0.838062f,0.795090f,0.752330f,0.709782f,0.667442f,0.625309f,
+0.583381f,0.541655f,0.500130f,0.458803f,0.417674f,0.376740f,0.335998f,0.295448f,0.255088f,0.214916f,
+0.174929f,0.135127f,0.095508f,0.056069f,0.016810f,0.031724f,0.075347f,0.118751f,0.161938f,0.204910f,
+0.247670f,0.290218f,0.332558f,0.374691f,0.416619f,0.458345f,0.499870f,0.541197f,0.582326f,0.623260f,
+0.664002f,0.704552f,0.744912f,0.785084f,0.825071f,0.864873f,0.904492f,0.943931f,0.983190f,0.977729f,
+0.938824f,0.900093f,0.861535f,0.823149f,0.784933f,0.746885f,0.709004f,0.671288f,0.633737f,0.596348f,
+0.559120f,0.522053f,0.485144f,0.448391f,0.411795f,0.375353f,0.339065f,0.302928f,0.266942f,0.231105f,
+0.195416f,0.159875f,0.124479f,0.089227f,0.054119f,0.019154f,0.022271f,0.061176f,0.099907f,0.138465f,
+0.176851f,0.215067f,0.253115f,0.290996f,0.328712f,0.366263f,0.403652f,0.440880f,0.477947f,0.514856f,
+0.551609f,0.588205f,0.624647f,0.660935f,0.697072f,0.733058f,0.768895f,0.804583f,0.840125f,0.875521f,
+0.910773f,0.945881f,0.980846f,0.984329f,0.949644f,0.915098f,0.880689f,0.846418f,0.812281f,0.778279f,
+0.744411f,0.710675f,0.677070f,0.643596f,0.610251f,0.577034f,0.543944f,0.510981f,0.478143f,0.445430f,
+0.412840f,0.380372f,0.348027f,0.315802f,0.283697f,0.251710f,0.219842f,0.188091f,0.156457f,0.124938f,
+0.093533f,0.062243f,0.031065f,};
+
+const float32_t mfcc_filter_coefs_config3[NB_MFCC_FILTER_COEFS_CONFIG3]={
+0.663153f,0.706417f,0.118907f,0.293583f,0.881093f,0.568845f,0.051741f,0.431155f,0.948259f,0.563868f,
+0.102097f,0.436132f,0.897903f,0.663777f,0.246640f,0.336223f,0.753360f,0.848733f,0.468360f,0.104042f,
+0.151267f,0.531640f,0.895958f,0.754478f,0.418519f,0.095146f,0.245522f,0.581481f,0.904854f,0.783449f,
+0.482615f,0.191913f,0.216551f,0.517385f,0.808087f,0.910681f,0.638322f,0.374294f,0.118101f,0.089319f,
+0.361678f,0.625706f,0.881899f,0.869293f,0.627454f,0.392207f,0.163200f,0.130707f,0.372546f,0.607793f,
+0.836800f,0.940111f,0.722642f,0.510517f,0.303479f,0.101291f,0.059889f,0.277358f,0.489483f,0.696521f,
+0.898709f,0.903729f,0.710588f,0.521674f,0.336804f,0.155811f,0.096271f,0.289412f,0.478326f,0.663196f,
+0.844189f,0.978535f,0.804826f,0.634543f,0.467554f,0.303734f,0.142965f,0.021465f,0.195174f,0.365457f,
+0.532446f,0.696266f,0.857035f,0.985135f,0.830139f,0.677876f,0.528253f,0.381178f,0.236568f,0.094340f,
+0.014865f,0.169861f,0.322124f,0.471747f,0.618822f,0.763432f,0.905660f,0.954417f,0.816725f,0.681196f,
+0.547761f,0.416357f,0.286924f,0.159402f,0.033737f,0.045583f,0.183275f,0.318804f,0.452239f,0.583643f,
+0.713076f,0.840598f,0.966263f,0.909875f,0.787764f,0.667357f,0.548606f,0.431467f,0.315895f,0.201850f,
+0.089293f,0.090125f,0.212236f,0.332643f,0.451394f,0.568533f,0.684105f,0.798150f,0.910707f,0.978184f,
+0.868486f,0.760166f,0.653187f,0.547518f,0.443127f,0.339983f,0.238056f,0.137319f,0.037744f,0.021816f,
+0.131514f,0.239834f,0.346813f,0.452482f,0.556873f,0.660017f,0.761944f,0.862681f,0.962256f,0.939305f,
+0.841975f,0.745730f,0.650547f,0.556401f,0.463272f,0.371136f,0.279973f,0.189762f,0.100485f,0.012121f,
+0.060695f,0.158025f,0.254270f,0.349453f,0.443599f,0.536728f,0.628864f,0.720027f,0.810238f,0.899515f,
+0.987879f,0.924653f,0.838062f,0.752330f,0.667442f,0.583381f,0.500130f,0.417674f,0.335998f,0.255088f,
+0.174929f,0.095508f,0.016810f,0.075347f,0.161938f,0.247670f,0.332558f,0.416619f,0.499870f,0.582326f,
+0.664002f,0.744912f,0.825071f,0.904492f,0.983190f,0.938824f,0.861535f,0.784933f,0.709004f,0.633737f,
+0.559120f,0.485144f,0.411795f,0.339065f,0.266942f,0.195416f,0.124479f,0.054119f,0.061176f,0.138465f,
+0.215067f,0.290996f,0.366263f,0.440880f,0.514856f,0.588205f,0.660935f,0.733058f,0.804583f,0.875521f,
+0.945881f,0.984329f,0.915098f,0.846418f,0.778279f,0.710675f,0.643596f,0.577034f,0.510981f,0.445430f,
+0.380372f,0.315802f,0.251710f,0.188091f,0.124938f,0.062243f,};
+
+

+ 26 - 0
Testing/desc.txt

@@ -2949,6 +2949,32 @@ group Root {
            class = TransformTests
            folder = Transform 
 
+           suite MFCC F32 {
+              class = MFCCF32
+              folder = MFCCF32
+
+              Pattern INPUTS_MFCC_256_F32_ID : MFCCInput_256_1_f32.txt 
+              Pattern REF_MFCC_256_F32_ID : MFCCRef_256_1_f32.txt 
+
+              Pattern INPUTS_MFCC_512_F32_ID : MFCCInput_512_1_f32.txt 
+              Pattern REF_MFCC_512_F32_ID : MFCCRef_512_1_f32.txt 
+
+              Pattern INPUTS_MFCC_1024_F32_ID : MFCCInput_1024_1_f32.txt 
+              Pattern REF_MFCC_1024_F32_ID : MFCCRef_1024_1_f32.txt 
+
+              
+              Output  OUTPUT_MFCC_F32_ID : MFCCOutputs
+              Output  TMP_MFCC_F32_ID : MFCCTmp
+              Output  TMPIN_MFCC_F32_ID : MFCCTmpIn
+
+              Functions {
+                 mfcc_256_f32:test_mfcc_f32
+                 mfcc_512_f32:test_mfcc_f32
+                 mfcc_1024_f32:test_mfcc_f32
+              }
+
+            }
+
            suite Transform Complex F64 {
               class = TransformCF64
               folder = TransformF64