aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.x@gmail.com>2026-09-22 00:48:10 +0800
committerRichard Qin <richard.qin.x@gmail.com>2026-09-22 00:48:10 +0800
commitfe849ca438b8110bab519a119e512568b03ff907 (patch)
tree4bc474d458080336b9efe61c34293c3333fe6fdb
parent738971253959dd125303082352354e5fcdfd180f (diff)
downloaddatalab2026-fe849ca438b8110bab519a119e512568b03ff907.tar.gz
datalab2026-fe849ca438b8110bab519a119e512568b03ff907.tar.xz
floatPower2
-rw-r--r--bits.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/bits.c b/bits.c
index 0e2935d..c299fe0 100644
--- a/bits.c
+++ b/bits.c
@@ -311,5 +311,14 @@ int float64_f2i(unsigned uf1, unsigned uf2) {
* Difficulty: 4
*/
unsigned floatPower2(int x) {
- return 2;
+ if (x < -149) {
+ return 0;
+ }
+ if (x < -126) {
+ return 1 << (x + 149);
+ }
+ if (x <= 127) {
+ return (x + 127) << 23;
+ }
+ return 0x7F800000;
}