@@ -2049,27 +2049,27 @@ macro_rules! float_impl_libm {
2049
2049
macro_rules! integer_decode {
2050
2050
(
2051
2051
$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 ,
2056
2056
$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
2059
2059
) => {
2060
- fn $func_name( f: $T ) -> ( u64 , i16 , i8 ) {
2060
+ fn $func_name( f: $F ) -> ( u64 , i16 , i8 ) {
2061
2061
let bits = f. to_bits( ) ;
2062
2062
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 } ;
2064
2064
2065
- let mantissa = if f == 0 as $T {
2065
+ let mantissa = if f == 0 as $F {
2066
2066
( bits & $fraction_bits_mask) << 1
2067
2067
} else {
2068
- ( bits & $fraction_bits_mask) | $exponent_trailing_bit_mask
2068
+ ( bits & $fraction_bits_mask) | $exponent_least_signifigant_bit_mask
2069
2069
} ;
2070
2070
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 ;
2073
2073
2074
2074
( mantissa as u64 , exponent, sign)
2075
2075
}
@@ -2079,23 +2079,23 @@ macro_rules! integer_decode {
2079
2079
integer_decode ! (
2080
2080
integer_decode_f32,
2081
2081
f32 ,
2082
- 31 ,
2082
+ 32 ,
2083
2083
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
2088
2088
) ;
2089
2089
2090
2090
integer_decode ! (
2091
2091
integer_decode_f64,
2092
2092
f64 ,
2093
- 63 ,
2093
+ 64 ,
2094
2094
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
2099
2099
) ;
2100
2100
2101
2101
#[ cfg( feature = "std" ) ]
0 commit comments