所以我有一个32位的处理器,我可以用C语言编程,需要用定点速度。
我了解不动点表示和基本实现。我要找的是如何组合数字与不同的小数位数。
假设我求和Q10+Q10,我会用Q10作为和。如果我把Q10和Q20相加呢?算法是否同时考虑两个数字并选择适当的Qx值以最小化精度损失和溢出?我基本上需要加、减、乘和除。
问题是我的手术看起来像:
2*3.14159*50*1e-4*10+5.2*10
我宁愿避免“用手”做缩放和戏法。
最佳答案
通用处理器没有现成的工具,但有一个项目声称具有可变精度的固定点:https://versaweb.dl.sourceforge.net/project/fixedptc/fixedptc.h。
对于PIC micro,有些库处理8位大小的不同Q算法,如下所述:
http://ww1.microchip.com/downloads/en/AppNotes/00617.pdf
此外,您可能会看到这个问题的更一般的描述。
http://www.superkits.net/whitepapers/Fixed%20Point%20Representation%20&%20Fractional%20Math.pdf
是否需要编写这样一个库?如果需要,可以编写它,需要付出一些努力。