MathFp32.exponential_scale: def of stelliferous@0.0.2.0 Import: import stelliferous@0.0.2.0/math_fp32.bend as MathFp32 Lines 119-125 of stelliferous@0.0.2.0/math_fp32.bend: https://jend.leeeet.dev/read.txt?path=stelliferous@0.0.2.0/math_fp32.bend&start_line=119&end_line=125 import Base # Split 2^n at +64 for nonnegative inputs and -64 for negative inputs. # The first product is always normal and exact; only the last product can # underflow. The exponent words come directly from the biased integer n. def exponential_scale(biased: F32,x: F32,p: F32) -> F32: +sign = U32.shrn(U32.and(F32.bits(x),2147483648),1n) ((p * from_bits((1602224128 - sign : U32)) : F32) * from_bits((528482304 + U32.shln(F32.bits(biased),23n) + sign : U32)) : F32) Uses (10): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=F32 https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=F32.bits https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=F32.mul 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.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=stelliferous@0.0.2.0/math_fp32.bend&name=from_bits