2016-01-07 2 views
1

я получил матрицу «х» float128 значений, и я получаю следующую ошибку, когда:Numpy Обратной матрица с float128 типом

> q = (inv(xt * x) * xt) * n 
> array type float128 is unsupported in linalg 

Где х транспонируются й и п другой матрицы float128. Все другие операции с этой матрицей обрабатываются правильно, как транспонирование или матричный продукт.

Да, мне нужен float128 для этого случая, иначе результаты будут отличаться от тех, которые ближе к действительным значениям, которые мы принимаем за ссылку.

+0

Этого сообщения об ошибке, кажется, довольно просто для меня: float128 поддержки в NumPy является не является полным или непротиворечивым. – xnx

+0

@xnx Это, мне нужно обходное решение: p – gerosalesc

+0

Это похоже на проблему [XY] (http://xyproblem.info). Если вы тестируете вычисленные результаты с плавающей запятой по сравнению с ожидаемыми результатами ссылок, вы не можете надеяться на точное равенство в любом случае, поэтому вам нужно будет создать допуск в свой тест; никакая дополнительная точность не заставит эту потребность уйти. (Конечно, какая должна быть толерантность, это еще один сложный вопрос, зависящий от задачи). Вы уверены, что вам нужна дополнительная точность? –

ответ

0

Нет данных типа float128 в numpy. Поддерживаемые Numpy типов данных можно найти здесь: http://docs.scipy.org/doc/numpy-1.10.1/user/basics.types.html

Если вам нужна работа вокруг вас может попытаться использовать NPY_LONGDOUBLE из NumPy C API http://docs.scipy.org/doc/numpy-1.10.0/reference/c-api.dtype.html

+3

Это зависит от платформы. В OS X есть * 'numpy.float128' dtype, хотя он не дает вам формат IEEE 754 binary128, который вы можете надеяться. Он соответствует стандартному 80-битовому расширенному типу x87 с 6 байтами заполнения. (Точно так же в Linux обычно есть «numpy.float96' dtype.) –

+0

Подробнее здесь, в отличном ответе от Натаниэля Смита здесь: http://stackoverflow.com/a/17023995/270986 –

+0

Это хороший пост, он хорошо объясняет. Кажется, мой ответ на самом деле не отвечает на вопрос, но может указывать на способ ответа на него, если «longdouble» - это путь. – veda905

Смежные вопросы