From 885f5974cdf65b59415837ae97f5a14ef1350670 Mon Sep 17 00:00:00 2001 From: Kacper Date: Tue, 9 Dec 2025 19:20:15 +0100 Subject: feat: add gzip and new headers --- lib/libm/hypotf.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 lib/libm/hypotf.c (limited to 'lib/libm/hypotf.c') diff --git a/lib/libm/hypotf.c b/lib/libm/hypotf.c new file mode 100644 index 00000000..60186e9e --- /dev/null +++ b/lib/libm/hypotf.c @@ -0,0 +1,38 @@ +#include +#include + +float hypotf(float x, float y) +{ + union { + float f; + uint32_t i; + } ux = { x }, uy = { y }, ut; + float_t z; + + ux.i &= -1U >> 1; + uy.i &= -1U >> 1; + if (ux.i < uy.i) { + ut = ux; + ux = uy; + uy = ut; + } + + x = ux.f; + y = uy.f; + if (uy.i == 0xff << 23) + return y; + if (ux.i >= 0xff << 23 || uy.i == 0 || ux.i - uy.i >= 25 << 23) + return x + y; + + z = 1; + if (ux.i >= (0x7f + 60) << 23) { + z = 0x1p90f; + x *= 0x1p-90f; + y *= 0x1p-90f; + } else if (uy.i < (0x7f - 60) << 23) { + z = 0x1p-90f; + x *= 0x1p90f; + y *= 0x1p90f; + } + return z * sqrtf((double)x * x + (double)y * y); +} -- cgit v1.2.3