python支持double_python – 如何使用numpy longdouble dtype?

我正在尝试使用我的

Python代码中的np.longdouble dtype,并且我正在尝试使用NumPy来操作我从使用Cython编译的C模块获得的长双精度.

假设我这样做:

import numpy as np

print np.finfo(np.longdouble)

Machine parameters for float128

---------------------------------------------------------------------

precision= 18 resolution= 1e-18

machep= -63 eps= 1.08420217249e-19

negep = -64 epsneg= 5.42101086243e-20

minexp=-16382 tiny= 3.36210314311e-4932

maxexp= 16384 max= 1.18973149536e+4932

nexp = 15 min= -max

---------------------------------------------------------------------

a = np.longdouble(1e+346)

a

Out[4]: inf

b = np.longdouble(1e+347)

b

Out[6]: inf

c = a/b

/usr/lib/python2.7/site-packages/spyderlib/widgets/externalshell/start_ipython_kernel.py:1:

RuntimeWarning: invalid value encountered in longdouble_scalars

# -*- coding: utf-8 -*-

c

Out[8]: nan

a.dtype, b.dtype, c.dtype

Out[9]: (dtype('float128'), dtype('float128'), dtype('float128'))

本质上,它与this问题中的相同问题相关联,我理解Python首先将1e 346转换为浮点数,其重新定义为inf.但是,有人可以建议一个解决方法吗?有没有办法创建未首先转换为浮点数的NumPy longdoubles?

我有一个可以输出长双打的C模块,我想在dtype np.longdouble的numpy数组中使用它.

即使解决方案涉及重新编译Python / NumPy,我也愿意尝试.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值