@@ -2049,27 +2049,27 @@ macro_rules! float_impl_libm {
20492049macro_rules! integer_decode {
20502050 (
20512051 $func_name: ident,
2052- $T : ty,
2053- $sign_bit_index : expr ,
2054- $fraction_bits_start_index : expr ,
2055- $postshift_mask : expr ,
2052+ $F : ty,
2053+ $size : literal ,
2054+ $fraction_size : literal ,
2055+ $exponent_bias : literal ,
20562056 $fraction_bits_mask: expr,
2057- $exponent_trailing_bit_mask : expr,
2058- $exponent_bias : expr
2057+ $exponent_least_signifigant_bit_mask : expr,
2058+ $postshift_exponent_bits_mask : expr
20592059 ) => {
2060- fn $func_name( f: $T ) -> ( u64 , i16 , i8 ) {
2060+ fn $func_name( f: $F ) -> ( u64 , i16 , i8 ) {
20612061 let bits = f. to_bits( ) ;
20622062
2063- let sign: i8 = if bits >> $sign_bit_index == 0 { 1 } else { -1 } ;
2063+ let sign: i8 = if bits >> $size - 1 == 0 { 1 } else { -1 } ;
20642064
2065- let mantissa = if f == 0 as $T {
2065+ let mantissa = if f == 0 as $F {
20662066 ( bits & $fraction_bits_mask) << 1
20672067 } else {
2068- ( bits & $fraction_bits_mask) | $exponent_trailing_bit_mask
2068+ ( bits & $fraction_bits_mask) | $exponent_least_signifigant_bit_mask
20692069 } ;
20702070
2071- let mut exponent: i16 = ( bits >> $fraction_bits_start_index & $postshift_mask ) as i16 ;
2072- exponent -= $exponent_bias + $fraction_bits_start_index ;
2071+ let mut exponent: i16 = ( bits >> $fraction_size & $postshift_exponent_bits_mask ) as i16 ;
2072+ exponent -= $exponent_bias + $fraction_size ;
20732073
20742074 ( mantissa as u64 , exponent, sign)
20752075 }
@@ -2079,23 +2079,23 @@ macro_rules! integer_decode {
20792079integer_decode ! (
20802080 integer_decode_f32,
20812081 f32 ,
2082- 31 ,
2082+ 32 ,
20832083 23 ,
2084- 0xff ,
2085- 0x7fffff ,
2086- 0x800000 ,
2087- 127
2084+ 127 ,
2085+ 0b0000_0000_0111_1111_1111_1111_1111_1111 ,
2086+ 0b0000_0000_1000_0000_0000_0000_0000_0000 ,
2087+ 0b0000_0000_0000_0000_0000_0000_1111_1111
20882088) ;
20892089
20902090integer_decode ! (
20912091 integer_decode_f64,
20922092 f64 ,
2093- 63 ,
2093+ 64 ,
20942094 52 ,
2095- 0x7ff ,
2096- 0xfffffffffffff_u64 ,
2097- 0x10000000000000_u64 ,
2098- 1023
2095+ 1023 ,
2096+ 0b0000_0000_0000_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111 ,
2097+ 0b0000_0000_0001_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000 ,
2098+ 0b0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0111_1111_1111
20992099) ;
21002100
21012101#[ cfg( feature = "std" ) ]
0 commit comments