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)

Это может быть проблемой распространения. Пытаться:

РЕДАКТИРОВАТЬ: Обновление из комментариев:

Не мое отрицательное мнение, но этот пост на самом деле не отвечает на вопрос "почему np.float128 не существует на моей машине". Истинный ответ заключается в том, что это зависит от платформы: float128 существует на некоторых платформах, но не на других, а на тех платформах, где он существует, это почти наверняка просто 80-битный тип с расширенной точностью x87, дополненный 128 битами. - Марк Дикинсон

Для меня проблема заключалась в модуле Python, у которого проблема в Windows (PyOpenGL для тех, кому не все равно). На этом сайте есть колеса Python с "фиксированными" версиями многих популярных модулей для решения проблемы float128.


Примечание: на этот вопрос есть принятый ответ. Мой ответ для будущих искателей, так как этот вопрос занимает одно из первых мест в результатах Google дляmodule 'numpy' has no attribute 'float128'.

Другие вопросы по тегам