2016-01-07 1 views
1

je me suis une matrice « x » de float128 valeurs et j'obtiens l'erreur suivante lorsque:Numpy matrice inverse avec le type de float128

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

xt est transposé x et n autre matrice float128. Toutes les autres opérations avec cette matrice sont traitées correctement comme produit de transposition ou de matrice.

Oui J'ai besoin de float128 pour ce cas, sinon les résultats diffèrent de ceux plus proches des valeurs réelles que nous prenons comme référence.

+0

Ce message d'erreur me semble assez simple à: soutien float128 à NumPy est pas complet ou cohérent. – xnx

+0

@xnx C'est, j'ai besoin d'une solution de contournement: p – gerosalesc

+0

Cela ressemble un peu à un [problème XY] (http://xyproblem.info). Si vous testez les résultats à virgule flottante calculés par rapport aux résultats de référence attendus, vous ne pouvez pas espérer l'égalité exacte de toute façon, vous devrez donc créer une tolérance dans votre test; aucune quantité de précision supplémentaire ne va faire disparaître ce besoin. (Bien sûr, ce que cette tolérance devrait être est une autre question difficile et dépendante de la tâche.) Êtes-vous sûr que vous avez besoin de la précision supplémentaire? –

Répondre

0

Il n'y a pas de type de données float128 en numpy. Les types de données numpy pris en charge peuvent être trouvés ici: http://docs.scipy.org/doc/numpy-1.10.1/user/basics.types.html

Si vous avez besoin d'un travail autour de vous pourriez essayer d'utiliser NPY_LONGDOUBLE de l'API numpy C http://docs.scipy.org/doc/numpy-1.10.0/reference/c-api.dtype.html

+3

Cela dépend de la plate-forme. Sur OS X, il y a * dtype de 'numpy.float128', bien qu'il ne vous donne pas le format IEEE 754 binary128 que vous pourriez espérer. Il correspond au type de précision étendue 80 bits x87 standard, avec 6 octets de remplissage. (De même, sur Linux, il ya généralement un 'numty.float96' dtype.) –

+0

Plus d'infos ici dans l'excellente réponse de Nathaniel Smith ici: http://stackoverflow.com/a/17023995/270986 –

+0

C'est un bon post, il explique bien les choses. Il semble que ma réponse ne réponde pas vraiment à la question, mais pourrait indiquer un moyen d'y répondre si «longdouble» est la voie à suivre. – veda905