Писать эффективные вычматы на чистом C — содомия, поскольку кроме убогого препроцессора средств метапрограммирования нет.
Альтернатвы:
1) Более лучший препроцессор, например erb
(Ruby). Минус — неудобно возиться с получившимся выхлопом (отладка, балансировка скобочек, етц).
2) Языки, в которых можно явно указать, какие вычисления будут происходить в compile-time. Например, C++ (шаблоны, constexpr).
Хочу попробовать D в качестве второй альтернативы. Есть гнутый компилятор, который [по мнению авторитетных анонимных экспертов] даёт на выхлопе код, не хуже, чем gcc.