numpy int больше 63 бит дает неверный расчет - PullRequest
0 голосов
/ 04 февраля 2020

Вычисление по модулю с numpy для большого целого числа (> 63 бит) иногда дает неверные результаты.

Например:

import numpy

numpy.mod(12345678912345679000, 3)
numpy.mod(12345678912345679001, 3)
numpy.mod(12345678912345679002, 3)

все дают результат 1.0. Обратите внимание, что между вторыми 7 и 9 нет 8.

Это может быть связано с тем, что int больше 63 бит.


Однако иногда выдаются правильные результаты.

Например,

numpy.mod(123456789123456789100, 3)
numpy.mod(123456789123456789101, 3)
numpy.mod(123456789123456789102, 3)

дают правильные результаты 1, 2 и 0 соответственно. Обратите внимание, что эти новые целые на 3 бита длиннее, чем раньше, с добавлением 8 между вторыми 7 и 9.

Любая идея, почему numpy .mod будет иметь такое поведение и как я могу работать с большими значениями (> 63 бит) согласованно с numpy?

Заранее спасибо!


Я работаю Python 3.7.3 (v3. 7.3: ef4ec6ed12, 25 марта 2019, 22:22:05) [MS C v.1916 64 бит (AMD64)] на 64-битной windows с numpy v1.18.1.

...