authorgravatar for hnakamur@gmail.comHiroaki Nakamura <hnakamur@gmail.com> 2022-07-16 11:46:13+09:00
committergravatar for hnakamur@gmail.comHiroaki Nakamura <hnakamur@gmail.com> 2022-07-16 11:46:13+09:00
log3e667fd2925274c674bddfd2d3f67f6edd1bf72b
treeddb8453bd5e09089438fec6f31055d7ecb188f05
parent0cee8372cfe31e58eaa66621ac4d2039d4600ce9

Use Managed.len in sub, divFloor, and divTrunc too


1 files changed, 8 insertions(+), 8 deletions(-)

lib/std/math/big/int.zig+8-8
...@@ -2719,7 +2719,7 @@ pub const Managed = struct {...@@ -2719,7 +2719,7 @@ pub const Managed = struct {
2719 ///2719 ///
2720 /// Returns an error if memory could not be allocated.2720 /// Returns an error if memory could not be allocated.
2721 pub fn sub(r: *Managed, a: *const Managed, b: *const Managed) !void {2721 pub fn sub(r: *Managed, a: *const Managed, b: *const Managed) !void {
2722 try r.ensureCapacity(math.max(a.limbs.len, b.limbs.len) + 1);2722 try r.ensureCapacity(math.max(a.len(), b.len()) + 1);
2723 var m = r.toMutable();2723 var m = r.toMutable();
2724 m.sub(a.toConst(), b.toConst());2724 m.sub(a.toConst(), b.toConst());
2725 r.setMetadata(m.positive, m.len);2725 r.setMetadata(m.positive, m.len);
...@@ -2813,7 +2813,7 @@ pub const Managed = struct {...@@ -2813,7 +2813,7 @@ pub const Managed = struct {
2813 if (alias_count == 0) {2813 if (alias_count == 0) {
2814 m.mulWrapNoAlias(a.toConst(), b.toConst(), signedness, bit_count, rma.allocator);2814 m.mulWrapNoAlias(a.toConst(), b.toConst(), signedness, bit_count, rma.allocator);
2815 } else {2815 } else {
2816 const limb_count = calcMulWrapLimbsBufferLen(bit_count, a.limbs.len, b.limbs.len, alias_count);2816 const limb_count = calcMulWrapLimbsBufferLen(bit_count, a.len(), b.len(), alias_count);
2817 const limbs_buffer = try rma.allocator.alloc(Limb, limb_count);2817 const limbs_buffer = try rma.allocator.alloc(Limb, limb_count);
2818 defer rma.allocator.free(limbs_buffer);2818 defer rma.allocator.free(limbs_buffer);
2819 m.mulWrap(a.toConst(), b.toConst(), signedness, bit_count, limbs_buffer, rma.allocator);2819 m.mulWrap(a.toConst(), b.toConst(), signedness, bit_count, limbs_buffer, rma.allocator);
...@@ -2843,11 +2843,11 @@ pub const Managed = struct {...@@ -2843,11 +2843,11 @@ pub const Managed = struct {
2843 ///2843 ///
2844 /// Returns an error if memory could not be allocated.2844 /// Returns an error if memory could not be allocated.
2845 pub fn divFloor(q: *Managed, r: *Managed, a: *const Managed, b: *const Managed) !void {2845 pub fn divFloor(q: *Managed, r: *Managed, a: *const Managed, b: *const Managed) !void {
2846 try q.ensureCapacity(a.limbs.len);2846 try q.ensureCapacity(a.len());
2847 try r.ensureCapacity(b.limbs.len);2847 try r.ensureCapacity(b.len());
2848 var mq = q.toMutable();2848 var mq = q.toMutable();
2849 var mr = r.toMutable();2849 var mr = r.toMutable();
2850 const limbs_buffer = try q.allocator.alloc(Limb, calcDivLimbsBufferLen(a.limbs.len, b.limbs.len));2850 const limbs_buffer = try q.allocator.alloc(Limb, calcDivLimbsBufferLen(a.len(), b.len()));
2851 defer q.allocator.free(limbs_buffer);2851 defer q.allocator.free(limbs_buffer);
2852 mq.divFloor(&mr, a.toConst(), b.toConst(), limbs_buffer);2852 mq.divFloor(&mr, a.toConst(), b.toConst(), limbs_buffer);
2853 q.setMetadata(mq.positive, mq.len);2853 q.setMetadata(mq.positive, mq.len);
...@@ -2860,11 +2860,11 @@ pub const Managed = struct {...@@ -2860,11 +2860,11 @@ pub const Managed = struct {
2860 ///2860 ///
2861 /// Returns an error if memory could not be allocated.2861 /// Returns an error if memory could not be allocated.
2862 pub fn divTrunc(q: *Managed, r: *Managed, a: *const Managed, b: *const Managed) !void {2862 pub fn divTrunc(q: *Managed, r: *Managed, a: *const Managed, b: *const Managed) !void {
2863 try q.ensureCapacity(a.limbs.len);2863 try q.ensureCapacity(a.len());
2864 try r.ensureCapacity(b.limbs.len);2864 try r.ensureCapacity(b.len());
2865 var mq = q.toMutable();2865 var mq = q.toMutable();
2866 var mr = r.toMutable();2866 var mr = r.toMutable();
2867 const limbs_buffer = try q.allocator.alloc(Limb, calcDivLimbsBufferLen(a.limbs.len, b.limbs.len));2867 const limbs_buffer = try q.allocator.alloc(Limb, calcDivLimbsBufferLen(a.len(), b.len()));
2868 defer q.allocator.free(limbs_buffer);2868 defer q.allocator.free(limbs_buffer);
2869 mq.divTrunc(&mr, a.toConst(), b.toConst(), limbs_buffer);2869 mq.divTrunc(&mr, a.toConst(), b.toConst(), limbs_buffer);
2870 q.setMetadata(mq.positive, mq.len);2870 q.setMetadata(mq.positive, mq.len);