#include "ref.h" void ref_cmplx_mult_real_f32(float32_t *pSrcCmplx, float32_t *pSrcReal, float32_t *pCmplxDst, uint32_t numSamples) { uint32_t i; for (i = 0; i < numSamples; i++) { pCmplxDst[2 * i + 0] = pSrcCmplx[2 * i + 0] * pSrcReal[i]; pCmplxDst[2 * i + 1] = pSrcCmplx[2 * i + 1] * pSrcReal[i]; } } void ref_cmplx_mult_real_q31(q31_t *pSrcCmplx, q31_t *pSrcReal, q31_t *pCmplxDst, uint32_t numSamples) { uint32_t i; q31_t tempR, tempI; for (i = 0; i < numSamples; i++) { tempR = ((q63_t)pSrcCmplx[2 * i + 0] * pSrcReal[i]) >> 32; tempI = ((q63_t)pSrcCmplx[2 * i + 1] * pSrcReal[i]) >> 32; pCmplxDst[2 * i + 0] = ref_sat_n(tempR, 31) << 1; pCmplxDst[2 * i + 1] = ref_sat_n(tempI, 31) << 1; } } void ref_cmplx_mult_real_q15(q15_t *pSrcCmplx, q15_t *pSrcReal, q15_t *pCmplxDst, uint32_t numSamples) { uint32_t i; q31_t tempR, tempI; for (i = 0; i < numSamples; i++) { tempR = ((q31_t)pSrcCmplx[2 * i + 0] * pSrcReal[i]) >> 15; tempI = ((q31_t)pSrcCmplx[2 * i + 1] * pSrcReal[i]) >> 15; pCmplxDst[2 * i + 0] = ref_sat_q15(tempR); pCmplxDst[2 * i + 1] = ref_sat_q15(tempI); } }