fn sinh32(x: f32) f32
fn sinh32(x: f32) f32 { const u = @as(u32, @bitCast(x)); const ux = u & 0x7FFFFFFF; const ax = @as(f32, @bitCast(ux)); if (x == 0.0 or math.isNan(x)) { return x; } var h: f32 = 0.5; if (u >> 31 != 0) { h = -h; } // |x| < log(FLT_MAX) if (ux < 0x42B17217) { const t = math.expm1(ax); if (ux < 0x3F800000) { if (ux < 0x3F800000 - (12 << 23)) { return x; } else { return h * (2 * t - t * t / (t + 1)); } } return h * (t + t / (t + 1)); } // |x| > log(FLT_MAX) or nan return 2 * h * expo2(ax); }