added spqlios as submodule

This commit is contained in:
Jean-Philippe Bossuat
2025-01-27 14:10:59 +01:00
parent 250d1a4942
commit c30f598776
244 changed files with 51 additions and 29899 deletions

31
rns/src/num_bigint.rs Normal file
View File

@@ -0,0 +1,31 @@
use num_bigint::BigInt;
use num_integer::Integer;
use num_traits::{One, Signed, Zero};
pub trait Div {
fn div_floor(&self, other: &Self) -> Self;
fn div_round(&self, other: &Self) -> Self;
}
impl Div for BigInt {
fn div_floor(&self, other: &Self) -> Self {
let quo: BigInt = self / other;
if self.sign() != other.sign() {
return quo - BigInt::one();
}
return quo;
}
fn div_round(&self, other: &Self) -> Self {
let (quo, mut rem) = self.div_rem(other);
rem <<= 1;
if rem != BigInt::zero() && &rem.abs() > other {
if self.sign() == other.sign() {
return quo + BigInt::one();
} else {
return quo - BigInt::one();
}
}
return quo;
}
}