Skip to content

Commit 9d88687

Browse files
committed
Remove unnecessary casts in float add impl
1 parent 7cd3e5a commit 9d88687

File tree

1 file changed

+15
-15
lines changed

1 file changed

+15
-15
lines changed

src/float/add.rs

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,24 @@ macro_rules! add {
77
/// Returns `a + b`
88
#[cfg_attr(not(test), no_mangle)]
99
pub extern fn $intrinsic(a: $ty, b: $ty) -> $ty {
10-
let bits = (<$ty>::bits()) as <$ty as Float>::Int;
11-
let significand_bits = (<$ty>::significand_bits()) as <$ty as Float>::Int;
12-
let exponent_bits = (bits - significand_bits - 1) as <$ty as Float>::Int;
13-
let max_exponent = ((1 << exponent_bits) - 1) as <$ty as Float>::Int;
14-
15-
let implicit_bit = (1 << significand_bits) as <$ty as Float>::Int;
16-
let significand_mask = (implicit_bit - 1) as <$ty as Float>::Int;
17-
let sign_bit = (1 << (significand_bits + exponent_bits)) as <$ty as Float>::Int;
18-
let abs_mask = (sign_bit - 1) as <$ty as Float>::Int;
19-
let exponent_mask = (abs_mask ^ significand_mask) as <$ty as Float>::Int;
20-
let inf_rep = (exponent_mask) as <$ty as Float>::Int;
21-
let quiet_bit = (implicit_bit >> 1) as <$ty as Float>::Int;
22-
let qnan_rep = (exponent_mask | quiet_bit) as <$ty as Float>::Int;
10+
let bits = <$ty>::bits() as <$ty as Float>::Int;
11+
let significand_bits = <$ty>::significand_bits() as <$ty as Float>::Int;
12+
let exponent_bits = bits - significand_bits - 1;
13+
let max_exponent = (1 << exponent_bits) - 1;
14+
15+
let implicit_bit = 1 << significand_bits;
16+
let significand_mask = implicit_bit - 1;
17+
let sign_bit = 1 << (significand_bits + exponent_bits);
18+
let abs_mask = sign_bit - 1;
19+
let exponent_mask = abs_mask ^ significand_mask;
20+
let inf_rep = exponent_mask;
21+
let quiet_bit = implicit_bit >> 1;
22+
let qnan_rep = exponent_mask | quiet_bit;
2323

2424
let mut a_rep = unsafe { transmute::<_, <$ty as Float>::Int>(a) };
2525
let mut b_rep = unsafe { transmute::<_, <$ty as Float>::Int>(b) };
26-
let a_abs = (a_rep & abs_mask) as <$ty as Float>::Int;
27-
let b_abs = (b_rep & abs_mask) as <$ty as Float>::Int;
26+
let a_abs = a_rep & abs_mask;
27+
let b_abs = b_rep & abs_mask;
2828

2929
// Detect if a or b is zero, infinity, or NaN.
3030
if a_abs - 1 >= inf_rep - 1 ||

0 commit comments

Comments
 (0)