Первое впечатление - непонятно ничего.
- Это весы, т.е в режиме калибровки поставили 1кг, запомнили показания АЦП или частоты, поставили 2кг,... В рабочем режиме считали значение - определяем массу.
- Критична память данных, а не время выполнения, поэтому хранятся только первая точка (x1) и вторые разности меньшей разрядности, по ним восстанавливается все остальное. Причем память под переменные сильно ограничена и при расчете. Кроме того, хранение разностей позволяло изменять только первую точку при изменении наклона характеристики, которое могло быть от времени или от переезда в другое место( изменилась гравитация - изменился вес).
- Сначала была сделана просто линейная интерполяция, потом, при увеличении точности, прилеплена такая добавка и все устраивало почти 15 лет. Но, как обычно, внезапно надо постараться переделать под переменный шаг калибровки, а память данных(256 байт) под завязку набита и ничего простого не получается и не гуглится.