Pull to refresh

Comments 8

Операционная система Debian-like

А что там такого специфического, что на винде или других линуксах не заводится?

Сборка производилась при помощи manylinux, так что на других Linux вроде как должно тоже работать, но пока что на других библиотека не тестировалась. В целом специфичны могут быть версии имеющихся от numpy зависимостей, таких как glibc, openblas и так далее.

Под Windows сложность в том, что библиотека включает бинарники (shared libraries в Linux, аналогично dll в Windows), а формат бинарников под Windows и Linux разный, так что бинарники одной ОС не запускаются в другой, для этого нужна отдельная сборка, ей пока не занимались.

Кажется, что это опечатка:

Если вы вычислите arcsin(pi/2), вы получите «?.???».

Функция arcsin не определена только для значений от -1.0 до 1.0

Да, опечатка, спасибо. Должно быть arcsin(1.0).

для работы с числами типа float, автоматически по мере вычислений делающих оценки точности. Это первая в своём роде разработка, позволяющая выполнять вычисления с подсчётом числа точных битов на каждом этапе.

А почему нельзя использовать другие типы данных, специально предназначенные для точных вычислений? Или это исключительно рекламный пост?

Проблема в том, что для точных вычислений надо либо вычислять значение в ленивой семантике, где требуемая в конце точность определяет точность предыдущих вычислений в направленном графе вычисления, что при неточностях начальных данных может быть проблематично, либо использовать символическую алгебру, что несильно спасёт.

При работе с большими данными структуры данных для точных вычислений на практике невозможны, вы не сможете сохранить в памяти и одно вещественное число полностью в десятичной или двоичной записи. На практике все используют что-то типа float64 или float32 в большинстве случаев.

Структуры для более точных вычислений (например, предоставляемые библиотекой gmp) дают повышенную точность, но всё равно не учитывают уровень ошибок. Но уже они неприменимы в больших вычислениях, так как очень медленно производятся. XNumPy решает проблему в стандартно используемом f64 (в перспективе f32 и прочих), не меняя само вычисление, но давая оценку точности.

Я бы предпочел, чтоб этот xnumpy был реализован как расширение в отладчик IDE, скажем, в variable explorer spyder'а или как плагин в pycharm. Но не очень понятно, как сделать, чтоб работало для любого кода "на лету", неочевидно, насколько подмена numpy-типов предсказуема.

Если вы хотите в режиме отладки в PyCharm видеть точность переменных, вам для этого не требуется никакой плагин, достаточно наличия xnumpy в вашем venv. Рядом с переменными по ходу вычислений вы увидите значения с вопросами вместо неточных цифр, в списке локальных переменных аналогично. Выглядит это вот так:

Мы старались, чтобы практически все операции, где может теряться точность, автоматически приводили ndarray с dtype=float64 к xf64array, а также заменили тип float64 по умолчанию на xf64 в функциях, создающих новые массивы, чтобы учёт точность требовал минимума изменений в коде.

Sign up to leave a comment.