关于对称四舍五入和非对称四舍五入的分析

关于对称四舍五入和非对称四舍五入的分析

背景


项目中有时需要用到浮点转定点,以便于在低功耗设备上运行,不同平台上对定点化后的浮点运算四舍五入有不同实现,如果处理不慎,容易在精度要求高的场合误差累积导致算法效果恶化。这里分析下四舍五入的对称和非对称实现。

原理分析


一句话总结:两者在正数时表现一致,核心在于负数时,-0.5是向-1取,还是向0取。

  • prnd:非对称四舍五入,HIFI指令中为RA(asymmetric round),-0.5取为0,硬件较易实现
    • 非原点对称
  • rnd:对称四舍五入,HIFI指令中为R(symmetric round),-0.5取为-1,原理易懂,常见算法实现round
    • 负数场景整体也屈从于正数原则,取绝对值后四舍五入,再加负号
    • 关于原点对称
  • 两者精度差异不大,建议优先用rnd原点对称的实现(因为取反是原点对称的),C语言的数学库中round实现是原点对称的。

详细信息解释如下:

对称 & 非对称四舍五入

  • 整数 SIMD 乘法指令扔掉了其结果的高位,就像标准的 C/C++乘法。小数 SIMD 乘法指令使用对称或不对称的四舍五入方法,将低位舍去。
  • 在非对称四舍五入的情况下,两半被向上舍入,即 0.5 倍的最小有效结果位被舍入为 1.0,-0.5 倍的最小有效结果位被舍入为 1.0。即 0.5 倍的最小有效结果位被向上舍入为 1.0,-0.5 倍的最小有效结果位被向上舍入为 0。
  • 在对称四舍五入的情况下,两个半数从零开始四舍五入,即 -0.5 倍的最小有效结果位四舍五入到 -1.0。
  • 在指令描述中,对称舍入被称为 round,而非对称舍入被称为 round+∞。

——《DSP 学习笔记 |(五)HiFi 4 User’s Guide 笔记》

参考资料


  1. 博客园:关于数据截位和四舍五入的分析
  2. DSP 学习笔记 |(五)HiFi 4 User’s Guide 笔记

猜你喜欢

转载自blog.csdn.net/qq_17256689/article/details/128940161