1) В моем алгоритме C много констант. 2) мой код работает как с плавающей запятой, так и с фиксированной точкой.
Прямо сейчас эти константы инициализируются функцией float2fixed, при этом в случае с плавающей запятой она ничего не делает, а в случае с фиксированной точкой находит их представление с фиксированной точкой. Например, 0,5f остается 0,5f при работе с плавающей запятой, тогда как он использует процедуру pow() и становится 32768 при работе с фиксированной запятой, а представление с фиксированной запятой равно Qx.16.
Это легко поддерживать, но на самом деле требуется много времени, чтобы вычислить эти константы в фиксированной точке (pow — это функция с плавающей запятой). В C++ я бы использовал некоторое метапрограммирование, поэтому компилятор вычисляет эти значения во время компиляции, поэтому во время выполнения не происходит попадания. Но в C это невозможно. Или это? Кто-нибудь знает такой трюк? Достаточно ли умен какой-либо компилятор, чтобы сделать это?
С нетерпением жду любых ответов.
A