Ускоряем вычисления с использованием дробной константы

Небольшая таблица в Exel для быстрого расчета коэффициентов.

Cover Image

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

Но что делать если у нас есть требования ко времени выполнения и использовать float кажется слишком дорого?

Правильно использовать обходные пути - например умножение и деление на целочисленные значения. Правда и тут есть свои "но..." в ядре Cortex-M3 деление тоже немного затратная операция и занимает коколо 7 тактов (могу ошибаться). Значит будем использовать умножение и сдвиг.

Да, мы конечно потеряем немного в точности вычислений, но что делать, всегда чем-то приходится жертвовать.

Для ускорения и небольшой автоматизации подобных вычислений я набросал небольшую табличку в Excel. Принцип использования прост - вводим текущее значение IN и необходимое значение OUT, а так же по желанию увеличиваем и уменьшаем дельту DELTA (в вычислениях она не участвует, но поможет быстренько сориентироваться).

В итоге имеем следующую формулу:

OUT = IN * MUL >> RSHIFT;

Самы таблицу можно скачать здесь.

Как всегда приятного и удачного кодинга.