Cannot use 128bit float in Python on 64bit architecture
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
просто отлично. Но я не могу использовать np.float128
?
np.array([1,1,1],dtype=np.float128)
или же
np.float128(1)
результаты в:
AttributeError: 'module' object has no attribute 'float128'
Я использую следующую версию:
sys.version_info(major=2, minor=7, micro=6, releaselevel='final', serial=0)
1 ответ
Обновление: Судя по комментариям, в 64-битной системе даже 128-разрядное плавание не имеет смысла.
я использую anaconda
в 64-битной системе Ubuntu 14.04 с sys.version_info(major=2, minor=7, micro=9, releaselevel='final', serial=0)
и поплавки 128 бит работают нормально:
import numpy
a = numpy.float128(3)
Это может быть проблемой распространения. Пытаться:
- Установить Анаконду
- Обновление купола
- Проверьте, что версия python в пути соответствует версии anaconda или canopy.
РЕДАКТИРОВАТЬ: Обновление из комментариев:
Не мое отрицательное мнение, но этот пост на самом деле не отвечает на вопрос "почему np.float128 не существует на моей машине". Истинный ответ заключается в том, что это зависит от платформы: float128 существует на некоторых платформах, но не на других, а на тех платформах, где он существует, это почти наверняка просто 80-битный тип с расширенной точностью x87, дополненный 128 битами. - Марк Дикинсон
Для меня проблема заключалась в модуле Python, у которого проблема в Windows (PyOpenGL для тех, кому не все равно). На этом сайте есть колеса Python с "фиксированными" версиями многих популярных модулей для решения проблемы float128.
Примечание: на этот вопрос есть принятый ответ. Мой ответ для будущих искателей, так как этот вопрос занимает одно из первых мест в результатах Google дляmodule 'numpy' has no attribute 'float128'
.