| 
 
| 对于定点数Q7格式,0x80(对应的浮点数是-1)需要饱和运行到0x7f。 
 老版本DSP库处理是饱和指令__QSUB8做个减法运算取反,即用0去减这个数值。
 /* C = |A| */
 /* Read inputs */
 in1 = (q31_t) * pSrc;
 in2 = (q31_t) * (pSrc + 1);
 in3 = (q31_t) * (pSrc + 2);
 
 /* find absolute value */
 out1 = (in1 > 0) ? in1 : (q31_t)__QSUB8(0, in1);
 
 
 而新版DSP,处理有误,改成了__QSUB去处理,导致0x80没有包含运算到0x7f。
 *pDst++ = (in > 0) ? in : (q7_t)__QSUB(0, in);
 
 如果不使用专门的饱和执行,手动处理就是:
 *pDst++ = (in > 0) ? in : ((in == (q7_t) 0x80) ? (q7_t) 0x7f : -in);
 | 
 |