diff options
| author | Andrew Guschin <guschin.drew@gmail.com> | 2023-03-17 10:06:02 +0400 |
|---|---|---|
| committer | Andrew Guschin <guschin.drew@gmail.com> | 2023-03-17 10:06:02 +0400 |
| commit | 68098bd49d64ef02563ef48095be059d31a4aa54 (patch) | |
| tree | 51c4f65d8413fe5cb3b18af48bf76a72b443894a /sem2/src/mpn.rs | |
| parent | 10dc704069548def2922dea5c1795b1c3fce0c94 (diff) | |
Исправлено переполнение при умножении
Diffstat (limited to 'sem2/src/mpn.rs')
| -rw-r--r-- | sem2/src/mpn.rs | 12 |
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 { |