double logb(double x) { if (x == 0) return -double.infinity; if (x.isInfinite) return double.infinity; if (x.isNaN) return double.nan; return ilogb(x).toDouble(); }