Pb.double.f32bits: def of bendonnect-rpc@0.1.0.0 Import: import bendonnect-rpc@0.1.0.0/src/pb.bend as Pb Lines 336-361 of bendonnect-rpc@0.1.0.0/src/pb.bend: https://jend.leeeet.dev/read.txt?path=bendonnect-rpc@0.1.0.0/src/pb.bend&start_line=336&end_line=361 import Base import bend-kit-protobuf@0.1.0.0/protobuf.bend as Pb # IEEE binary64 bits -> binary32 bits, round to nearest even (overflow -> infinity, tiny -> zero). def double.f32bits(w: Pb.Word64) -> U32: Pb.Word64{+h, +l} = w +s = ((h >> 31n) << 31n : U32) +e = ((h >> 20n) .&. 2047 : U32) +fh = (h .&. 1048575 : U32) +m23 = ((fh << 3n) .|. (l >> 29n) : U32) +rem = (l .&. 536870911 : U32) +up = U32.is_gt(rem, 268435456) || (U32.is_eq(rem, 268435456) && U32.is_eq((m23 .&. 1 : U32), 1)) +normal = (((e - 896) << 23n) + m23 + Bool.to_u32(up) : U32) +special = Bool.pick(U32, U32.is_zero(fh) && U32.is_zero(l), 2139095040, (2143289344 .|. m23 : U32)) +k = (926 - e : U32) +sig = {Pb.Word64{(fh .|. 1048576 : U32), l} : Pb.Word64} +mm = word64.lo(word64.shr(sig, k)) +t = word64.shl(sig, (64 - k : U32)) +th = word64.hi(t) +tl = word64.lo(t) +gt = U32.is_gt(th, 2147483648) || (U32.is_eq(th, 2147483648) && U32.is_ne(tl, 0)) +eq = U32.is_eq(th, 2147483648) && U32.is_zero(tl) +up2 = gt || (eq && U32.is_eq((mm .&. 1 : U32), 1)) +subn = (mm + Bool.to_u32(up2) : U32) (s .|. Bool.pick(U32, U32.is_eq(e, 2047), special, Bool.pick(U32, U32.is_ge(e, 1151), 2139095040, Bool.pick(U32, U32.is_ge(e, 897), normal, Bool.pick(U32, U32.is_ge(e, 873), subn, 0)))) : U32) Uses (21): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Bool.and https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Bool.or https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Bool.pick https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Bool.to_u32 https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32 https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.add https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.and https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.is_eq https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.is_ge https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.is_gt https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.is_ne https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.is_zero https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.or https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.shln https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.shrn https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.sub https://jend.leeeet.dev/definition.txt?path=bend-kit-protobuf@0.2.0.0/protobuf.bend&name=Word64 https://jend.leeeet.dev/definition.txt?path=bendonnect-rpc@0.1.0.0/src/pb.bend&name=word64.hi https://jend.leeeet.dev/definition.txt?path=bendonnect-rpc@0.1.0.0/src/pb.bend&name=word64.lo https://jend.leeeet.dev/definition.txt?path=bendonnect-rpc@0.1.0.0/src/pb.bend&name=word64.shl https://jend.leeeet.dev/definition.txt?path=bendonnect-rpc@0.1.0.0/src/pb.bend&name=word64.shr