diff --git a/src/arm_float_to_q23.c b/src/arm_float_to_q23.c index 4f77e2a..8eb21be 100644 --- a/src/arm_float_to_q23.c +++ b/src/arm_float_to_q23.c @@ -22,6 +22,10 @@ void arm_float_to_q23(const float32_t * pSrc, q23_t * pDst, uint32_t blockSize) cvt = vcvtq_n_s32_f32(inV, 23); + /* saturate */ + cvt = vminq_s32(cvt, vdupq_n_s32(0x007fffff)); + cvt = vmaxq_s32(cvt, vdupq_n_s32(0xff800000)); + vst1q_s32(pDst, cvt); pDst += 4; pIn += 4;