From 56a99c8e58a6cd0cb729454c618fc164815b7427 Mon Sep 17 00:00:00 2001 From: jan Date: Mon, 9 Mar 2026 01:52:03 -0700 Subject: [PATCH] [encode_real8] improve handling of tiny floats --- klamath/basic.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/klamath/basic.py b/klamath/basic.py index f545090..e880393 100644 --- a/klamath/basic.py +++ b/klamath/basic.py @@ -149,7 +149,7 @@ def encode_real8(fnums: NDArray[numpy.float64]) -> NDArray[numpy.uint64]: gds_exp = exp16 + 64 neg_biased = (gds_exp < 0) - gds_mant[neg_biased] >>= (gds_exp[neg_biased] * 4).astype(numpy.uint16) + gds_mant[neg_biased] >>= (-gds_exp[neg_biased] * 4).astype(numpy.uint16) gds_exp[neg_biased] = 0 too_big = (gds_exp > 0x7f) & ~(zero | subnorm) @@ -160,7 +160,6 @@ def encode_real8(fnums: NDArray[numpy.float64]) -> NDArray[numpy.uint64]: real8 = sign | gds_exp_bits | gds_mant real8[zero] = 0 - real8[gds_exp < -14] = 0 # number is too small return real8.astype(numpy.uint64, copy=False)