This repository has been archived on 2023-07-17. You can view files and clone it, but cannot push or open issues or pull requests.
bl_mcu_sdk/examples/dsp/MatrixFunctions_q31Part/mat_sub.c

54 lines
1.7 KiB
C

#include "ref.h"
//#include "../HelperFunctions/ref_helper.c"
riscv_status ref_mat_sub_f32(const riscv_matrix_instance_f32 *pSrcA,
const riscv_matrix_instance_f32 *pSrcB,
riscv_matrix_instance_f32 *pDst)
{
uint32_t i;
uint32_t numSamples; /* total number of elements in the matrix */
/* Total number of samples in the input matrix */
numSamples = (uint32_t)pSrcA->numRows * pSrcA->numCols;
for (i = 0; i < numSamples; i++) {
pDst->pData[i] = pSrcA->pData[i] - pSrcB->pData[i];
}
return RISCV_MATH_SUCCESS;
}
riscv_status ref_mat_sub_q31(const riscv_matrix_instance_q31 *pSrcA,
const riscv_matrix_instance_q31 *pSrcB,
riscv_matrix_instance_q31 *pDst)
{
uint32_t i;
uint32_t numSamples; /* total number of elements in the matrix */
/* Total number of samples in the input matrix */
numSamples = (uint32_t)pSrcA->numRows * pSrcA->numCols;
for (i = 0; i < numSamples; i++) {
pDst->pData[i] = ref_sat_q31((q63_t)pSrcA->pData[i] - pSrcB->pData[i]);
}
return RISCV_MATH_SUCCESS;
}
riscv_status ref_mat_sub_q15(const riscv_matrix_instance_q15 *pSrcA,
const riscv_matrix_instance_q15 *pSrcB,
riscv_matrix_instance_q15 *pDst)
{
uint32_t i;
uint32_t numSamples; /* total number of elements in the matrix */
/* Total number of samples in the input matrix */
numSamples = (uint32_t)pSrcA->numRows * pSrcA->numCols;
for (i = 0; i < numSamples; i++) {
pDst->pData[i] = ref_sat_q15((q31_t)pSrcA->pData[i] - pSrcB->pData[i]);
}
return RISCV_MATH_SUCCESS;
}