mirror of
https://github.com/ziglang/zig.git
synced 2025-12-16 19:23:08 +00:00
Issue 15535. Normalize remainder in math.big.int.Managed.divTrunc
This commit is contained in:
parent
0972196f4d
commit
37f56a4259
@ -1519,7 +1519,7 @@ pub const Mutable = struct {
|
|||||||
r.positive = r_positive;
|
r.positive = r_positive;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (xy_trailing != 0) {
|
if (xy_trailing != 0 and r.limbs[r.len - 1] != 0) {
|
||||||
// Manually shift here since we know its limb aligned.
|
// Manually shift here since we know its limb aligned.
|
||||||
mem.copyBackwards(Limb, r.limbs[xy_trailing..], r.limbs[0..r.len]);
|
mem.copyBackwards(Limb, r.limbs[xy_trailing..], r.limbs[0..r.len]);
|
||||||
@memset(r.limbs[0..xy_trailing], 0);
|
@memset(r.limbs[0..xy_trailing], 0);
|
||||||
|
|||||||
@ -1373,6 +1373,19 @@ test "big.int div trunc single-single -/-" {
|
|||||||
try testing.expect((try r.to(i32)) == er);
|
try testing.expect((try r.to(i32)) == er);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
test "big.int divTrunc #15535" {
|
||||||
|
var one = try Managed.initSet(testing.allocator, 1);
|
||||||
|
defer one.deinit();
|
||||||
|
var x = try Managed.initSet(testing.allocator, std.math.pow(u128, 2, 64));
|
||||||
|
defer x.deinit();
|
||||||
|
var r = try Managed.init(testing.allocator);
|
||||||
|
defer r.deinit();
|
||||||
|
var q = try Managed.init(testing.allocator);
|
||||||
|
defer q.deinit();
|
||||||
|
try q.divTrunc(&r, &x, &x);
|
||||||
|
try testing.expect(r.order(one) == std.math.Order.lt);
|
||||||
|
}
|
||||||
|
|
||||||
test "big.int divFloor #10932" {
|
test "big.int divFloor #10932" {
|
||||||
var a = try Managed.init(testing.allocator);
|
var a = try Managed.init(testing.allocator);
|
||||||
defer a.deinit();
|
defer a.deinit();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user