@@ -2053,29 +2053,29 @@ macro_rules! float_impl_libm {
2053
2053
macro_rules! integer_decode {
2054
2054
(
2055
2055
$func_name: ident,
2056
- $T : ty,
2057
- $sign_bit_index : expr ,
2058
- $fraction_bits_start_index : expr ,
2059
- $postshift_mask : expr ,
2056
+ $F : ty,
2057
+ $size : literal ,
2058
+ $fraction_size : literal ,
2059
+ $exponent_bias : literal ,
2060
2060
$fraction_bits_mask: expr,
2061
- $exponent_trailing_bit_mask : expr,
2062
- $exponent_bias : expr
2061
+ $exponent_least_signifigant_bit_mask : expr,
2062
+ $postshift_exponent_bits_mask : expr
2063
2063
) => {
2064
- fn $func_name( f: $T ) -> ( u64 , i16 , i8 ) {
2064
+ fn $func_name( f: $F ) -> ( u64 , i16 , i8 ) {
2065
2065
let bits = f. to_bits( ) ;
2066
2066
2067
- let sign: i8 = if bits >> $sign_bit_index == 0 { 1 } else { -1 } ;
2067
+ let sign: i8 = if bits >> $size - 1 == 0 { 1 } else { -1 } ;
2068
2068
2069
- let mantissa = if f == 0 as $T {
2069
+ let mantissa = if f == 0 as $F {
2070
2070
// Zeros and subnormals
2071
2071
( bits & $fraction_bits_mask) << 1
2072
2072
} else {
2073
2073
// Normals, infinities, and NaN
2074
- ( bits & $fraction_bits_mask) | $exponent_trailing_bit_mask
2074
+ ( bits & $fraction_bits_mask) | $exponent_least_signifigant_bit_mask
2075
2075
} ;
2076
2076
2077
- let mut exponent: i16 = ( bits >> $fraction_bits_start_index & $postshift_mask ) as i16 ;
2078
- exponent -= $exponent_bias + $fraction_bits_start_index ;
2077
+ let mut exponent: i16 = ( bits >> $fraction_size & $postshift_exponent_bits_mask ) as i16 ;
2078
+ exponent -= $exponent_bias + $fraction_size ;
2079
2079
2080
2080
( mantissa as u64 , exponent, sign)
2081
2081
}
@@ -2085,23 +2085,23 @@ macro_rules! integer_decode {
2085
2085
integer_decode ! (
2086
2086
integer_decode_f32,
2087
2087
f32 ,
2088
- 31 ,
2088
+ 32 ,
2089
2089
23 ,
2090
- 0xff ,
2091
- 0x7fffff ,
2092
- 0x800000 ,
2093
- 127
2090
+ 127 ,
2091
+ 0b0000_0000_0111_1111_1111_1111_1111_1111 ,
2092
+ 0b0000_0000_1000_0000_0000_0000_0000_0000 ,
2093
+ 0b0000_0000_0000_0000_0000_0000_1111_1111
2094
2094
) ;
2095
2095
2096
2096
integer_decode ! (
2097
2097
integer_decode_f64,
2098
2098
f64 ,
2099
- 63 ,
2099
+ 64 ,
2100
2100
52 ,
2101
- 0x7ff ,
2102
- 0xfffffffffffff_u64 ,
2103
- 0x10000000000000_u64 ,
2104
- 1023
2101
+ 1023 ,
2102
+ 0b0000_0000_0000_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111 ,
2103
+ 0b0000_0000_0001_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000 ,
2104
+ 0b0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0111_1111_1111
2105
2105
) ;
2106
2106
2107
2107
#[ cfg( feature = "std" ) ]
0 commit comments