diff options
| -rw-r--r-- | sem2/src/mpn.rs | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/sem2/src/mpn.rs b/sem2/src/mpn.rs index 97ba55d..1709136 100644 --- a/sem2/src/mpn.rs +++ b/sem2/src/mpn.rs @@ -301,10 +301,16 @@ impl Number { ) .unwrap(); + let b_num = Number::from_digits(&vec![0, 1], self.radix).unwrap(); + let mut b_pow = Number::from_digits(&vec![1], self.radix).unwrap(); + for _ in 0..=n { + b_pow = b_pow * b_num.clone(); + } + let (p, q) = if u_sub >= qv { (u_sub - qv, q as u8) } else { - (u_sub + v_number.clone() - qv, (q - 1) as u8) + (u_sub + b_pow - qv + v_number.clone(), (q - 1) as u8) }; for i in 0..n + 1 { u[j + i] = if i < p.len() { p.digits[i] } else { 0 }; |