1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#include <math.h> #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 long double logbl(long double x) { return logb(x); } #else long double logbl(long double x) { if (!isfinite(x)) return x * x; if (x == 0) return -1/(x*x); return ilogbl(x); } #endif