用Numpy打领带

用Numpy打领带,第1张

用Numpy打领带

NumPy不对内部舍入模式进行任何控制。这有两种选择:

  1. 使用此答案中
    gmpy2
    概述的内容。这使您可以完全控制舍入模式,但是用于简单的浮点数学运算可能会比NumPy慢。
    gmpy2
  2. 使用

    fesetround
    via
    ctypes
    手动设置舍入模式。这是特定于系统的,因为常量可能因平台而异。检查
    fenv.h
    平台上的常量值。在我的机器上(Mac OS X):

    import numpy as np

    import ctypes
    FE_TonEAREST = 0x0000
    FE_DOWNWARD = 0x0400
    FE_UPWARD = 0x0800
    FE_TOWARDZERO = 0x0c00
    libc = ctypes.CDLL(‘libc.dylib’)

    v = 1. / (1<<23)
    print repr(np.float32(1+v) - np.float32(v/2)) # prints 1.0
    libc.fesetround(FE_UPWARD)
    print repr(np.float32(1+v) - np.float32(v/2)) # prints 1.0000002



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5647358.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存