相关疑难解决方法(0)

numpy.float128的内部精度是多少?

numpy.float128在内部映射到什么精度?是__float128还是长双?(或完全不同的东西!?)

如果有人知道,可能会有一个问题:在C中将__float128强制转换为(16字节)长的双精度是否安全?(这是为了与长双打的C lib接口).

编辑:响应评论,该平台是'Linux-3.0.0-14-generic-x86_64-with-Ubuntu-11.10-oneiric'.现在,如果numpy.float128具有依赖于平台的不同精度,那对我来说也是有用的知识!

需要明确的是,这是我感兴趣的精度,而不是元素的大小.

c python numpy

25
推荐指数
3
解决办法
2万
查看次数

Numpy longdouble算术似乎没有转换的长双倍

我一直在玩C99的四倍精度长双.据我所知,(平台特定的)numpy支持long double和128bit float.

我遇到了一些我无法解释的事情.

鉴于:

>>> import numpy as np
Run Code Online (Sandbox Code Playgroud)

计算需要超过64位但小于128位的数字表示为整数:

>>> 2**64+2
18446744073709551618          # note the '8' at the end
>>> int(2**64+2)
18446744073709551618          # same obviously
Run Code Online (Sandbox Code Playgroud)

如果我在C99 128位长双倍中计算相同的数字,我得到18446744073709551618.000000

现在,如果我使用numpy long double:

>>> a=np.longdouble(2)
>>> b=np.longdouble(64)
>>> a**b+a
18446744073709551618.0              # all good...
Run Code Online (Sandbox Code Playgroud)

这些不正确的结果怎么样:

>>> np.longdouble(2**64+2)
18446744073709551616.0             # Note '6'; appears 2**64 not done in long double
>>> np.longdouble(int(2**64+2))
18446744073709551616.0             # can't force the use of a Python long
>>> n=int(2**64+2)
>>> np.longdouble(n)
18446744073709551616.0 …
Run Code Online (Sandbox Code Playgroud)

python floating-point numpy

12
推荐指数
1
解决办法
4056
查看次数

标签 统计

numpy ×2

python ×2

c ×1

floating-point ×1