Skip to content

Commit f0256d5

Browse files
committed
more tests passing
1 parent c9b0af7 commit f0256d5

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

src/math/log.rs

+5-4
Original file line numberDiff line numberDiff line change
@@ -402,11 +402,11 @@ impl DInt64 {
402402
}
403403

404404
let c: u64 = if b < 0 { -b } else { b } as u64;
405-
let sign = if b < 0 { !self.sign } else { self.sign };
405+
let sign = if b < 0 { (self.sign == 0) as u64 } else { self.sign };
406406

407407
let mut t = self.hi as u128 * c as u128;
408408

409-
let mut m = if t >> 64 != 0 { (t >> 64).leading_zeros() } else { 64 };
409+
let mut m = if t >> 64 != 0 { t.hi().leading_zeros() } else { 64 };
410410

411411
t <<= m;
412412

@@ -415,8 +415,9 @@ impl DInt64 {
415415
let mut l: u128 = self.lo as u128 * c as u128;
416416
l = (l << (m - 1)) >> 63;
417417

418-
t = l + t;
419-
if t != 0 {
418+
let oflow;
419+
(t, oflow) = l.overflowing_add(t);
420+
if oflow {
420421
t += t & 0x1;
421422
t = 1u128 << 127 | t >> 1;
422423
m -= 1;

0 commit comments

Comments
 (0)