mirror of
https://github.com/Fishwaldo/bl_mcu_sdk.git
synced 2025-07-14 08:48:51 +00:00
49 lines
1.1 KiB
C
49 lines
1.1 KiB
C
#include "ref.h"
|
|
|
|
void ref_dot_prod_f32(float32_t *pSrcA, float32_t *pSrcB, uint32_t blockSize,
|
|
float32_t *result)
|
|
{
|
|
uint32_t i;
|
|
float32_t sum = 0.0f;
|
|
|
|
for (i = 0; i < blockSize; i++) {
|
|
sum += pSrcA[i] * pSrcB[i];
|
|
}
|
|
*result = sum;
|
|
}
|
|
|
|
void ref_dot_prod_q31(q31_t *pSrcA, q31_t *pSrcB, uint32_t blockSize,
|
|
q63_t *result)
|
|
{
|
|
uint32_t i;
|
|
q63_t sum = 0.0f;
|
|
|
|
for (i = 0; i < blockSize; i++) {
|
|
sum += ((q63_t)pSrcA[i] * pSrcB[i]) >> 14; // 16.48
|
|
}
|
|
*result = sum;
|
|
}
|
|
|
|
void ref_dot_prod_q15(q15_t *pSrcA, q15_t *pSrcB, uint32_t blockSize,
|
|
q63_t *result)
|
|
{
|
|
uint32_t i;
|
|
q63_t sum = 0.0f;
|
|
|
|
for (i = 0; i < blockSize; i++) {
|
|
sum += (q31_t)pSrcA[i] * pSrcB[i]; // 34.30
|
|
}
|
|
*result = sum;
|
|
}
|
|
|
|
void ref_dot_prod_q7(q7_t *pSrcA, q7_t *pSrcB, uint32_t blockSize,
|
|
q31_t *result)
|
|
{
|
|
uint32_t i;
|
|
q31_t sum = 0.0f;
|
|
|
|
for (i = 0; i < blockSize; i++) {
|
|
sum += (q31_t)pSrcA[i] * pSrcB[i]; // 18.14
|
|
}
|
|
*result = sum;
|
|
}
|