Существуют проблемы, возникающие при вычислениях со значениями с плавающей точкой: все операции имеют погрешности, которые накапливаются. При достаточно большом накоплении ошибок под сомнением могут оказаться все результаты вычислений, особенно в случаях, связанных с обработкой больших данных, с численным дифференцированием, с моделированием длительных процессов и машинным обучением, в частности, при обучении нейросетей. Особую важность оценка точности имеет в приложениях с большой ценой ошибки, таких как вычисления в медицине и биометрических системах безопасности.
Я расскажу, как сделать наличие проблем с точностью видимым, на примере реализации нашего раcширения XNumPy библиотеки NumPy на Rust и Cython, автоматически вычисляющего точность расчётов. Это почти не требует изменений в коде и снабжает те же результаты математической оценкой их точности. Я расскажу, какие математические и программистские приёмы позволили сделать расширение производительным.