【问题标题】:Fixed-point arithmetic定点算术
【发布时间】:2009-01-07 21:48:13
【问题描述】:

有人知道在 Python 中进行定点运算的库吗? 或者,有人有示例代码吗?

【问题讨论】:

  • 我认为他的意思是定点。我不得不问为什么?因为如果它是为了性能,你将一无所获。
  • 我必须为要在 FPGA 中实现的算法计算编写一个仿真库(因此,不支持 FP)

标签: python math


【解决方案1】:

如果您对定点运算感兴趣,Python 标准库有一个 decimal 模块可以做到这一点。

实际上,它也比内置的具有更灵活的浮点能力。灵活的意思是:

  • 具有各种异常情况的“信号”(这些可以设置为在信号上做各种事情)

  • 有正负 无穷大,以及 NaN(不是 数)

  • 可以区分阳性 和负0

  • 允许您设置不同的舍入 计划。

  • 允许您设置自己的最小值和 最大值。

总而言之,million household uses 很方便。

【讨论】:

  • 谢谢,这就是我要找的
  • ?? Decimal pkg 允许您定义精度,但它是 base10 精度。您可以在小数点右侧注明 6 位数字。对于要定义位数的硬件建模,精度由二进制点右侧的 base2 位数定义。很好奇,Decimal 包如何成为一个很好的解决方案。
【解决方案2】:

deModel 包听起来像您正在寻找的东西。

【讨论】:

  • 另有定点包可用here
  • numpy 包装器是否与内置 numpy 类型使用对象类型一样快?
【解决方案3】:

如果您想模拟 二进制 定点数的行为而不是简单的算术运算,另一个值得考虑的选项是 spfpm 模块。这将允许您使用固定位数计算平方根、幂、对数和三角函数。它是一个纯 Python 模块,因此不能提供终极性能,但每秒可以对 256 位数字执行数十万次算术运算。

【讨论】:

    【解决方案4】:

    最近我在做类似的项目,https://numfi.readthedocs.io/en/latest/

    >>> from numfi import numfi  
    >>> x = numfi(0.68751,1,6,3)
    >>> x + 1/3
    numfi([1.125]) s7/3-r/s
    >>> np.sin(x)
    numfi([0.625     ]) s6/3-r/s
    

    【讨论】:

    • 同一件事还要粘贴多少个问题?
    • @gurkan 如果这在社区中有不当行为,我很抱歉,但我不仅仅是“粘贴相同的东西”。我开发了一个工具来解决一种问题,并向这些提问者提供我的解决方案。在每篇文章中,我都会用不同的例子展示如何解决不同的问题,我认为这是一个有效的解决方案,至少是一个替代解决方案
    • 感谢您的帮助。但是,您不需要针对不同的问题发布相同的答案。这对你的反应是消极的,而不是积极的。将您的解决方案发布到单个问题就足够了。它已经得到反应取决于你的答案的质量。
    • @gurkan 明白了,我会删除其他答案并保留这个
    • 这只是我个人的看法。因为您的类似答案多次出现在迟到的答案部分。不,如果它没有得到反对票,你当然不需要删除它们
    猜你喜欢
    • 1970-01-01
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多