Initial commit

This commit is contained in:
2023-03-05 15:36:10 +01:00
commit 528134d084
1464 changed files with 1331348 additions and 0 deletions

View File

@ -0,0 +1,8 @@
#include "max.c"
#include "mean.c"
#include "min.c"
#include "power.c"
#include "rms.c"
#include "std.c"
#include "var.c"

View File

@ -0,0 +1,85 @@
#include "ref.h"
void ref_max_f32(
float32_t * pSrc,
uint32_t blockSize,
float32_t * pResult,
uint32_t * pIndex)
{
uint32_t i, ind=0;
float32_t max=-FLT_MAX;
for(i=0;i<blockSize;i++)
{
if (max < pSrc[i])
{
max = pSrc[i];
ind = i;
}
}
*pResult = max;
*pIndex = ind;
}
void ref_max_q31(
q31_t * pSrc,
uint32_t blockSize,
q31_t * pResult,
uint32_t * pIndex)
{
uint32_t i, ind=0;
q31_t max=INT_MIN;
for(i=0;i<blockSize;i++)
{
if (max < pSrc[i])
{
max = pSrc[i];
ind = i;
}
}
*pResult = max;
*pIndex = ind;
}
void ref_max_q15(
q15_t * pSrc,
uint32_t blockSize,
q15_t * pResult,
uint32_t * pIndex)
{
uint32_t i, ind=0;
q15_t max=SHRT_MIN;
for(i=0;i<blockSize;i++)
{
if (max < pSrc[i])
{
max = pSrc[i];
ind = i;
}
}
*pResult = max;
*pIndex = ind;
}
void ref_max_q7(
q7_t * pSrc,
uint32_t blockSize,
q7_t * pResult,
uint32_t * pIndex)
{
uint32_t i, ind=0;
q7_t max=SCHAR_MIN;
for(i=0;i<blockSize;i++)
{
if (max < pSrc[i])
{
max = pSrc[i];
ind = i;
}
}
*pResult = max;
*pIndex = ind;
}

View File

@ -0,0 +1,61 @@
#include "ref.h"
void ref_mean_f32(
float32_t * pSrc,
uint32_t blockSize,
float32_t * pResult)
{
uint32_t i;
float32_t sum=0;
for(i=0;i<blockSize;i++)
{
sum += pSrc[i];
}
*pResult = sum / (float32_t)blockSize;
}
void ref_mean_q31(
q31_t * pSrc,
uint32_t blockSize,
q31_t * pResult)
{
uint32_t i;
q63_t sum=0;
for(i=0;i<blockSize;i++)
{
sum += pSrc[i];
}
*pResult = (q31_t) (sum / (int32_t) blockSize);
}
void ref_mean_q15(
q15_t * pSrc,
uint32_t blockSize,
q15_t * pResult)
{
uint32_t i;
q31_t sum=0;
for(i=0;i<blockSize;i++)
{
sum += pSrc[i];
}
*pResult = (q15_t) (sum / (int32_t) blockSize);
}
void ref_mean_q7(
q7_t * pSrc,
uint32_t blockSize,
q7_t * pResult)
{
uint32_t i;
q31_t sum=0;
for(i=0;i<blockSize;i++)
{
sum += pSrc[i];
}
*pResult = (q7_t) (sum / (int32_t) blockSize);
}

View File

@ -0,0 +1,85 @@
#include "ref.h"
void ref_min_f32(
float32_t * pSrc,
uint32_t blockSize,
float32_t * pResult,
uint32_t * pIndex)
{
uint32_t i, ind=0;
float32_t min=FLT_MAX;
for(i=0;i<blockSize;i++)
{
if (min > pSrc[i])
{
min = pSrc[i];
ind = i;
}
}
*pResult = min;
*pIndex = ind;
}
void ref_min_q31(
q31_t * pSrc,
uint32_t blockSize,
q31_t * pResult,
uint32_t * pIndex)
{
uint32_t i, ind=0;
q31_t min=INT_MAX;
for(i=0;i<blockSize;i++)
{
if (min > pSrc[i])
{
min = pSrc[i];
ind = i;
}
}
*pResult = min;
*pIndex = ind;
}
void ref_min_q15(
q15_t * pSrc,
uint32_t blockSize,
q15_t * pResult,
uint32_t * pIndex)
{
uint32_t i, ind=0;
q15_t min=SHRT_MAX;
for(i=0;i<blockSize;i++)
{
if (min > pSrc[i])
{
min = pSrc[i];
ind = i;
}
}
*pResult = min;
*pIndex = ind;
}
void ref_min_q7(
q7_t * pSrc,
uint32_t blockSize,
q7_t * pResult,
uint32_t * pIndex)
{
uint32_t i, ind=0;
q7_t min=SCHAR_MAX;
for(i=0;i<blockSize;i++)
{
if (min > pSrc[i])
{
min = pSrc[i];
ind = i;
}
}
*pResult = min;
*pIndex = ind;
}

View File

@ -0,0 +1,61 @@
#include "ref.h"
void ref_power_f32(
float32_t * pSrc,
uint32_t blockSize,
float32_t * pResult)
{
uint32_t i;
float32_t sumsq=0;
for(i=0;i<blockSize;i++)
{
sumsq += pSrc[i] * pSrc[i];
}
*pResult = sumsq;
}
void ref_power_q31(
q31_t * pSrc,
uint32_t blockSize,
q63_t * pResult)
{
uint32_t i;
q63_t sumsq=0;
for(i=0;i<blockSize;i++)
{
sumsq += ((q63_t)pSrc[i] * pSrc[i]) >> 14;
}
*pResult = sumsq;
}
void ref_power_q15(
q15_t * pSrc,
uint32_t blockSize,
q63_t * pResult)
{
uint32_t i;
q63_t sumsq=0;
for(i=0;i<blockSize;i++)
{
sumsq += (q63_t)pSrc[i] * pSrc[i];
}
*pResult = sumsq;
}
void ref_power_q7(
q7_t * pSrc,
uint32_t blockSize,
q31_t * pResult)
{
uint32_t i;
q31_t sumsq=0;
for(i=0;i<blockSize;i++)
{
sumsq += (q31_t)pSrc[i] * pSrc[i];
}
*pResult = sumsq;
}

View File

@ -0,0 +1,65 @@
#include "ref.h"
void ref_rms_f32(
float32_t * pSrc,
uint32_t blockSize,
float32_t * pResult)
{
uint32_t i;
float32_t sumsq=0;
for(i=0;i<blockSize;i++)
{
sumsq += pSrc[i] * pSrc[i];
}
*pResult = sqrtf(sumsq / (float32_t)blockSize);
}
void ref_rms_q31(
q31_t * pSrc,
uint32_t blockSize,
q31_t * pResult)
{
uint32_t i;
uint64_t sumsq = 0; /* accumulator (can get never negative. changed type from q63 to uint64 */
q63_t tmp1;
q31_t tmp2;
float help_float;
for(i=0;i<blockSize;i++)
{
sumsq += (q63_t)pSrc[i] * pSrc[i];
}
tmp1 = (sumsq / (q63_t)blockSize) >> 31;
tmp2 = ref_sat_q31(tmp1);
/* GCC M0 problem: __aeabi_f2iz(QNAN) returns not 0 */
help_float = (sqrtf((float)tmp2 / 2147483648.0f) * 2147483648.0f);
/* Checking for a NAN value in help_float */
if (((*((int *)(&help_float))) & 0x7FC00000) == 0x7FC00000) {
help_float = 0;
}
*pResult = (q31_t)(help_float);
// *pResult = (q31_t)(sqrtf((float)tmp2 / 2147483648.0f) * 2147483648.0f);
}
void ref_rms_q15(
q15_t * pSrc,
uint32_t blockSize,
q15_t * pResult)
{
uint32_t i;
q63_t sumsq=0;
q31_t tmp1;
q15_t tmp2;
for(i=0;i<blockSize;i++)
{
sumsq += (q63_t)pSrc[i] * pSrc[i];
}
tmp1 = (sumsq / (q63_t)blockSize) >> 15;
tmp2 = ref_sat_q15(tmp1);
*pResult = (q15_t)(sqrtf((float)tmp2 / 32768.0f) * 32768.0f);
}

View File

@ -0,0 +1,74 @@
#include "ref.h"
void ref_std_f32(
float32_t * pSrc,
uint32_t blockSize,
float32_t * pResult)
{
uint32_t i;
float32_t sum=0, sumsq=0;
if (blockSize == 1)
{
*pResult = 0;
return;
}
for(i=0;i<blockSize;i++)
{
sum += pSrc[i];
sumsq += pSrc[i] * pSrc[i];
}
*pResult = sqrtf((sumsq - sum * sum / (float32_t)blockSize) / ((float32_t)blockSize - 1));
}
void ref_std_q31(
q31_t * pSrc,
uint32_t blockSize,
q31_t * pResult)
{
uint32_t i;
q63_t sum=0, sumsq=0;
q31_t in;
if (blockSize == 1)
{
*pResult = 0;
return;
}
for(i=0;i<blockSize;i++)
{
in = pSrc[i] >> 8;
sum += in;
sumsq += (q63_t)in * in;
}
sumsq /= (q63_t)(blockSize - 1);
sum = sum * sum / (q63_t)(blockSize * (blockSize - 1));
*pResult = (q31_t)(sqrtf((float)( (sumsq - sum) >> 15) / 2147483648.0f ) * 2147483648.0f);
}
void ref_std_q15(
q15_t * pSrc,
uint32_t blockSize,
q15_t * pResult)
{
uint32_t i;
q31_t sum=0;
q63_t sumsq=0;
if (blockSize == 1)
{
*pResult = 0;
return;
}
for(i=0;i<blockSize;i++)
{
sum += pSrc[i];
sumsq += (q63_t)pSrc[i] * pSrc[i];
}
sumsq /= (q63_t)(blockSize - 1);
sum = (q31_t)((q63_t)sum * sum / (q63_t)(blockSize * (blockSize - 1)));
*pResult = (q15_t)(sqrtf((float)ref_sat_q15( (sumsq - sum) >> 15) / 32768.0f ) * 32768.0f);
}

View File

@ -0,0 +1,70 @@
#include "ref.h"
void ref_var_f32(
float32_t * pSrc,
uint32_t blockSize,
float32_t * pResult)
{
uint32_t i;
float32_t sum=0, sumsq=0;
if (blockSize == 1)
{
*pResult = 0;
return;
}
for(i=0;i<blockSize;i++)
{
sum += pSrc[i];
sumsq += pSrc[i] * pSrc[i];
}
*pResult = (sumsq - sum * sum / (float32_t)blockSize) / ((float32_t)blockSize - 1);
}
void ref_var_q31(
q31_t * pSrc,
uint32_t blockSize,
q31_t * pResult)
{
uint32_t i;
q63_t sum=0, sumsq=0;
q31_t in;
if (blockSize == 1)
{
*pResult = 0;
return;
}
for(i=0;i<blockSize;i++)
{
in = pSrc[i] >> 8;
sum += in;
sumsq += (q63_t)in * in;
}
*pResult = (sumsq - sum * sum / (q31_t)blockSize) / ((q31_t)blockSize - 1) >> 15;
}
void ref_var_q15(
q15_t * pSrc,
uint32_t blockSize,
q15_t * pResult)
{
uint32_t i;
q31_t sum=0;
q63_t sumsq=0;
if (blockSize == 1)
{
*pResult = 0;
return;
}
for(i=0;i<blockSize;i++)
{
sum += pSrc[i];
sumsq += (q63_t)pSrc[i] * pSrc[i];
}
*pResult = (q31_t)((sumsq - (q63_t)sum * sum / (q63_t)blockSize) / ((q63_t)blockSize - 1)) >> 15;
}