Ответ 1
C не предоставляет функции для вычисления логарифмов любых оснований, отличных от e
или 10
.
Так просто используйте математику:
logarithm of x base b = log(x)/log(b)
Если вы будете повторять логарифмы по одной и той же базе данных, вы можете прекомпилировать 1/log(b)
.
Я бы не стал полагаться на компилятор, который мог бы сделать эту оптимизацию для вас.