From d4a06eaf3649f6000ceafc105f37f3349364df00 Mon Sep 17 00:00:00 2001 From: Richard Qin Date: Mon, 21 Sep 2026 23:55:03 +0800 Subject: floatScale2 --- bits.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/bits.c b/bits.c index bf437f0..40355a2 100644 --- a/bits.c +++ b/bits.c @@ -232,7 +232,25 @@ unsigned float_i2f(int x) { * Difficulty: 4 */ unsigned floatScale2(unsigned uf) { - return 2; + unsigned sign; + unsigned exp; + + sign = uf & 0x80000000; + exp = uf & 0x7F800000; + + if (exp == 0x7F800000) { + return uf; + } + + if (exp == 0) { + return sign | ((uf & 0x7FFFFFFF) << 1); + } + + if (exp == 0x7F000000) { + return sign | 0x7F800000; + } + + return uf + 0x00800000; } /* -- cgit v1.2.3