fix to_f32 and to_f64 for no fractional or no integer bits

This commit is contained in:
Trevor Spiteri 2018-08-12 11:52:48 +02:00
parent 33b5d3601c
commit 048033b68c
1 changed files with 7 additions and 1 deletions

View File

@ -208,7 +208,13 @@ macro_rules! to_f {
let (int_bits, frac_bits) = (Self::int_bits(), Self::frac_bits());
let (neg, int, frac) = self.parts();
let int_frac = (int << frac_bits) | (frac >> int_bits);
let int_frac = if frac_bits == 0 {
int
} else if int_bits == 0 {
frac
} else {
(int << frac_bits) | (frac >> int_bits)
};
let leading_zeros = int_frac.leading_zeros();
let signif_bits = int_bits + frac_bits - leading_zeros;
if signif_bits == 0 {