summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Guschin <guschin.drew@gmail.com>2023-03-17 10:06:02 +0400
committerAndrew Guschin <guschin.drew@gmail.com>2023-03-17 10:06:02 +0400
commit68098bd49d64ef02563ef48095be059d31a4aa54 (patch)
tree51c4f65d8413fe5cb3b18af48bf76a72b443894a
parent10dc704069548def2922dea5c1795b1c3fce0c94 (diff)
Исправлено переполнение при умножении
-rw-r--r--sem2/src/mpn.rs12
1 files changed, 6 insertions, 6 deletions
diff --git a/sem2/src/mpn.rs b/sem2/src/mpn.rs
index b9816a3..d68177c 100644
--- a/sem2/src/mpn.rs
+++ b/sem2/src/mpn.rs
@@ -153,18 +153,18 @@ impl Mul for Number {
let mut digits = vec![0; n + m];
for j in 0..m {
- let vj = other.digits[j];
+ let vj = other.digits[j] as usize;
if vj == 0 {
digits[n + j] = 0;
} else {
let mut k = 0;
for i in 0..n {
- let ui = self.digits[i];
- let t = ui * vj + digits[i + j] + k;
- digits[i + j] = t % self.radix as u8;
- k = t / self.radix as u8;
+ let ui = self.digits[i] as usize;
+ let t = ui * vj + digits[i + j] as usize + k;
+ digits[i + j] = (t % self.radix) as u8;
+ k = t / self.radix;
}
- digits[n + j] = k;
+ digits[n + j] = k as u8;
}
}
return Number {