Cannot use 128bit float in Python on 64bit architecture

大城市里の小女人 提交于 2019-12-04 00:29:12

问题


I checked the size of a pointer in my python terminal (in Enthought Canopy IDE) via

import ctypes
print (ctypes.sizeof(ctypes.c_voidp) * 8)

I've a 64bit architecture and working with numpy.float64 is just fine. But I cannot use np.float128?

np.array([1,1,1],dtype=np.float128)

or

np.float128(1)

results in:

AttributeError: 'module' object has no attribute 'float128'

I'm running the following version:

sys.version_info(major=2, minor=7, micro=6, releaselevel='final', serial=0)

回答1:


Update: From the comments, it seems pointless to even have a 128 bit float on a 64 bit system.

I am using anaconda on a 64-bit Ubuntu 14.04 system with sys.version_info(major=2, minor=7, micro=9, releaselevel='final', serial=0)

and 128 bit floats work fine:

import numpy
a = numpy.float128(3)

This might be an distribution problem. Try:

  • Install Anaconda
  • Update canopy
  • Check that the version of python in the path is the one supplied by anaconda or canopy

EDIT: Update from the comments:

Not my downvote, but this post doesn't really answer the "why doesn't np.float128 exist on my machine" implied question. The true answer is that this is platform specific: float128 exists on some platforms but not others, and on those platforms where it does exist it's almost certainly simply the 80-bit x87 extended precision type, padded to 128 bits. – Mark Dickinson



来源:https://stackoverflow.com/questions/29820829/cannot-use-128bit-float-in-python-on-64bit-architecture

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!