Финансы, биллинг и риск
Расчёты, которые не портятся молча: остаток округления виден и не теряется, баланс сходится. Для задач, где неверное число стоит денег и проходит аудит.
Компенсированная арифметика на Python
Открытая библиотека для устойчивых численных вычислений на компенсированной арифметике: потеря точности, деление на ноль и переполнение не портят расчёт молча, а становятся видимым состоянием. Алгебра модели доказана на Lean 4, код на PyPI (1.1.0, AGPL-3.0 или коммерческая лицензия).
Обычная арифметика с плавающей точкой молча теряет значащие разряды, когда складывает величины разного масштаба (catastrophic cancellation), и выдаёт nan или inf при переполнении. Сигнала об ошибке нет. Финансовый расчёт, инженерная симуляция или нормализация в машинном обучении дают правдоподобное, но неверное число, и оно уходит дальше по конвейеру.
Наивная сумма отбрасывает остаток округления без следа. Приёмы компенсации известны давно, но обычно живут в отдельных функциях: без типов, без явных состояний для особых случаев и без формальной проверки. Там, где правильность расчёта нужно показать проверяющему (биллинг, риск, регулируемые расчёты), этого мало.
Каждое сложение сохраняет свой остаток округления и переносит его дальше, а у результата есть тип. Деление на ноль становится явным состоянием: вы выбираете политику, и событие записывается в журнал. В основе лежит экспериментальная вычислительная модель (ACT). Библиотеку мы сравниваем с наивной суммой и не утверждаем, что она точнее других методов компенсации: если нужна только точная сумма, стандартная math.fsum справится так же точно и быстрее. Код открыт. Алгебра модели доказана на Lean 4 над вещественными числами, поведение float64 формально не доказано.

Расчёты, которые не портятся молча: остаток округления виден и не теряется, баланс сходится. Для задач, где неверное число стоит денег и проходит аудит.
Сложение величин разного масштаба без потери разрядов и softmax, который не переполняется на больших логитах: вероятности вместо nan.
Алгебра модели доказана на Lean 4, и эти доказательства можно предъявить проверяющему. Поведение float64 они не покрывают.
Проект доказательств собирается без единого sorry или admit (так в Lean помечают недоказанное). Доказана алгебра модели над вещественными числами, поведение float64 не формализовано. Подсчёт на 05.10.2026.
Как повторить: lake build + grep -r "sorry\|admit" formal/
На задокументированном сценарии наивная сумма float даёт 93, что неверно, а компенсированная 3333, как и эталон на Decimal. Сравнение идёт с наивной суммой; с другими методами компенсации мы библиотеку не сравниваем.
Как повторить: pytest tests/test_documented_scenarios.py
На больших логитах наивный softmax выдаёт nan, а компенсированный возвращает корректные вероятности с суммой 1.
Как повторить: pytest tests/test_documented_scenarios.py
Набор тестов разрабатываемой версии проходит без падений на чистом Python (на 05.10.2026). Покрытие строк 76 % при собственном пороге проекта 80 %.
Как повторить: pytest
Код открыт, поэтому всё, что выше, можно проверить в репозитории. Открыть код ↗
Библиотека на Python, ставится из PyPI. Встраивается в расчётный слой вместо наивной арифметики там, где потеря точности недопустима.
Калькулятор AVA считает, окупится ли автоматизация процесса, на ваших цифрах, без формы и без нашей цены. Если не окупится, он так и скажет.
Посчитать окупаемостьОпишите задачу своими словами. Если она не решается или не окупится, скажем об этом до начала работ.