infiniteAverage
Высокоточное усреднение множества сэмплов с разделением целой и дробной части для предотвращения потери точности при длительном накоплении
Установка
Последняя опубликованная версия- Скачайте архив — реестр отдает его уже проверенным.
- В Arduino IDE выберите «Скетч → Подключить библиотеку → Добавить .ZIP библиотеку».
- Укажите скачанный файл — библиотека появится в списке доступных.
SHA-256:22a144875399c7b7d639a5c9a3c0c00e546346646c3defb9a1df6ff251d5bf69infiniteAverage-0.1.9-22a14487.zipОписание
Когда берёшь много сэмплов для усреднения, может возникнуть проблема: 32-битный float хранит только ~7 значащих цифр, и после миллионов добавлений очередной сэмпл просто перестаёт влиять на сумму. Эта библиотека решает это, комбинируя float с uint32_t — один хранит дробную часть, другой целую, и в теории даёшь себе ~15 значащих цифр. Когда сумма приближается к 2^30 или число сэмплов к 4.3 миллиардам, библиотека делит оба значения пополам, чтобы избежать переполнения. Threshold для срабатывания деления настраивается. Вернёт результат всё равно float, но внутри вычисления будут намного точнее. Библиотека экспериментальная — тестируй на своих данных перед боевым использованием, ограничение точности зависит от характера сэмплов и их диапазона.