Практика в C
#include <math.h>
double y = log(x); /* ln */
double t = log10(x); /* lg */
double b = log(x)/log(base);
double y = log(x); /* ln */
double t = log10(x); /* lg */
double b = log(x)/log(base);
Для производительности обычно достаточно libm. Для отладки сверяйте краевые случаи (x→0+, x=1, base→1) с этим сервисом.