Установка

Поставить и попробовать

Пакет опубликован на PyPI под именем balansis. Обязательных зависимостей две — numpy и pydantic; ни C-расширений, ни системных библиотек в обязательном пути установки нет.

Установка

pip install balansis            # текущая версия — 1.1.0
pipx install balansis           # если нужен только CLI

python -c "import balansis; print(balansis.__version__)"
# 1.1.0
Метаданные релиза, полученные из JSON-API PyPI во время прогона бенчмарков. Проверено 2026-09-08
Файлbalansis-1.1.0-py3-none-any.whl
Размер96 КБ
Опубликован2026-08-31T03:19:21.786970Z
Требует Python<4.0,>=3.10
Лицензия в метаданныхAGPL-3.0-only
sha256 колеса2445ae239cb21e48e5b267e5364e161cc6b89a0fbaef90160bf88bd3eae0b828
Сверкаsha256 скачанного файла совпал с digest из API PyPI; все 35 .py-файлов установленного пакета побайтово равны содержимому колеса

Проверить, что установилось именно то

pip download balansis==1.1.0 --no-deps -d /tmp/w
sha256sum /tmp/w/balansis-1.1.0-py3-none-any.whl
# 2445ae239cb21e48e5b267e5364e161cc6b89a0fbaef90160bf88bd3eae0b828

curl -s https://pypi.org/pypi/balansis/1.1.0/json \
  | python -c "import json,sys; print(json.load(sys.stdin)['urls'][0]['digests']['sha256'])"

CLI

Ниже — вывод команд того же прогона: скрипт бенчмарков запускает CLI установленного пакета и кладёт его stdout в data/benchmarks.json, откуда страница его и печатает. Вписать сюда что-то другое руками нельзя — блок собирается из данных. Снято 2026-09-08

$ balansis doctor
{"compensation": 1e-12, "operation": "compensated_add", "result": 0.0, "status": "ok", "version": "1.1.0"}

$ balansis add 0.1 0.2 --json
{"compensation": 1.0, "left": 0.1, "operation": "compensated_add", "result": 0.30000000000000004, "right": 0.2}
Обратите внимание на вторую строку. 0.1 + 0.2 здесь даёт то же самое 0.30000000000000004, что и обычный float. Balansis не «чинит» двоичное представление десятичных дробей и не заменяет Decimal. Он работает там, где потеря точности возникает при накоплении и при взаимном уничтожении слагаемых, а не при вводе десятичного литерала.

Первые вызовы API

Значения в комментариях получены тем же прогоном — это результат вызовов, а не ожидание автора. Снято 2026-09-08

from balansis import AbsoluteValue as Bv, Operations, SingularPolicy

# 1. Компенсация возвращается вместе с результатом
values = [Bv.from_float(v) for v in (1e16, 1.0, -1e16)]
total, compensation = Operations.sequence_sum(values)
total.to_float()      # 1
compensation          # 1.000e+15 — столько точности пришлось спасать

# 2. Ноль как состояние, а не как маленькое число
Bv.absolute().is_absolute()          # True

# 3. Деление на ноль: состояние + политика
ratio, _ = Operations.compensated_divide_extended(Bv.from_float(1.0), Bv.absolute())
ratio.kind                            # 'infinite'
ratio.reason                          # 'finite_over_absolute'

value, _, event = Operations.compensated_divide_policy(
    Bv.from_float(1.0), Bv.absolute(), policy=SingularPolicy.SATURATE
)
value.numerical_value()               # 1000000000000

Быстрый путь: без объектов

Если нужна точность, а не типы, берите примитивы напрямую — они работают на голых float и стоят в разы, а не в десятки раз дороже обычной арифметики (см. цену компенсации).

from balansis.core._eft import two_sum, two_product, dot2
from balansis.numpy_integration import compensated_dot_product, compensated_softmax

s, err = two_sum(1e16, 1.0)        # s = 10000000000000000, err = 1
                                   # s + err == 1e16 + 1.0 точно (проверено в рациональной арифметике)
value = dot2(a, b)                 # корректно округлённое скалярное произведение

Что ещё есть в пакете

Модули

core (арифметика и EFT-примитивы), linalg (matmul, QR, SVD с телеметрией), numpy_integration (мост к массивам), finance/ledger, ml/optimizer, algebra, cli.

Документация и примеры

Пять Jupyter-ноутбуков в examples/, справочник API и материалы по формальной верификации в docs/ репозитория.

Совместимость

В метаданных релиза: Requires-Python <4.0,>=3.10, а классификаторы объявляют 3.103.14. Числа на этом сайте получены только на Python 3.12.3 и numpy 1.26.4; на остальных версиях прогон не выполнялся, и заявлять его результат было бы нечестно.

Лицензия

Двойное лицензирование: AGPL-3.0-only для открытых проектов и коммерческая лицензия для закрытых. Условия и маршрутизация — в LICENSING.md. Патентов по этой работе нет и не подаётся.

Исходники: github.com/StudyLabPro/Balansis. Пакет: pypi.org/project/balansis.