1. log10 функция не линейная и может принимать значения меньше 0.
2. MSP430F149 - я так понимаю он целочисленный.
3. Таблица из 4095 значений отпадает.
4. Точность 0.2 дБ
Тогда значения удобно записывать в виде
<41 : х=10*log(100*отсчёты АЦП/4095) * -1 * 10 (x = от -161 до 0)
>41 : х=10*log(100*отсчёты АЦП/4095) * 10 (x = от 0 до 151)
тогда они будут занимать 1 байт
Начиная с некоторого места начнется повторение по 3 и более раз.
Тогда можно построить формулу для интерполяции "на кусках", смотря где выигрывается соотношение получаемого кода с размером таблицы.
( if i<41 then ... if i<51 ... )
В Exel'e хорошо видно.
Столбец 1 задаем =10*(LOG(100*RC[1]/4095))
Столбец 2 задаем =СТРОКА()
Столбец 3 задаем ==ОКРУГЛ(10*RC[-3]; 0)
Копируем до 4096 и смотрим =)
Думаю, что скорость будет быстрее чем просто вычислять.
Если еще посмотреть распределение отсчетов_АЦП и исходя из этого расположить переходы по if =)