According to the C standard q15_t * and const q15_t * are not compatible
types which, among other things, imply that an object of type const
q15_t * can't be modified by writing to a q15_t ** or vice versa.
Programs doing this are undefined.
Because of this rule all programs using the functions read_q15x2_ia,
read_q15x2_da, read_q7x4_ia, or read_q7x4_da for reading data from an
array of constant elements will be undefined. To solve this it is not
enough to change the type of the function since this will give problems
when reading data from an array of non-const elements. To get a defined
solution I needed to switch from functions to macros to allow the
increment to be done in the original type of the pointer.
The IAR compiler appears to provide more warnings about type
mismatches than the other compilers. This cleans a lot of them up.
Signed-off-by: TTornblom <thomas.tornblom@iar.com>
Cleaned out some non-standard C code, typeof() and using
"const" variables as constants.
Also added some initial IAR support.
Signed-off-by: TTornblom <thomas.tornblom@iar.com>
arm_cmplx_mag_q15 reworked to be more accurate but less efficient.
New function arm_cmplx_mag_fast_q15 introduced to retain previous
(less accurate) but faster behavior.
Improvement to Python wrapper to support the new functions.
This first version is not very accurate due to problems with the log.
A coming commit will improve the log accuracy.
Issues #1305 and #1304 also corrected as part of this commit.
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.
Solve most of f16 issues. But there are still some remaining
build issues with gcc10q4.
2 functions are reverting to scalar version when build with gcc on M55.
(Since Helium versions of those functions are not building).