not overflowing ops actually
This commit is contained in:
parent
91d4e57588
commit
61304129ae
|
@ -24,30 +24,29 @@ fn main() {
|
||||||
// (p-1) + (p+1) = 0
|
// (p-1) + (p+1) = 0
|
||||||
|
|
||||||
// (p - 1) mod p
|
// (p - 1) mod p
|
||||||
let (p_minus_1, _) = (p - 1u64.into()).overflowing_rem(p);
|
let p_minus_1 = (p - 1u64.into()) % p;
|
||||||
// (p + 1) mod p
|
// (p + 1) mod p
|
||||||
let (p_plus_1, _) = (p + 1u64.into()).overflowing_rem(p);
|
let p_plus_1 = (p + 1u64.into()) % p;
|
||||||
// ((p - 1) mod p + (p + 1) mod p) mod p
|
// ((p - 1) mod p + (p + 1) mod p) mod p
|
||||||
let (sum, _) = (p_minus_1 + p_plus_1).overflowing_rem(p);
|
let sum = (p_minus_1 + p_plus_1) % p;
|
||||||
assert_eq!(sum, 0.into());
|
assert_eq!(sum, 0.into());
|
||||||
|
|
||||||
// on this field,
|
// on this field,
|
||||||
// (p-1) + (p-1) = p-2
|
// (p-1) + (p-1) = p-2
|
||||||
let (p_minus_1, _) = (p - 1u64.into()).overflowing_rem(p);
|
let p_minus_1 = (p - 1u64.into()) % p;
|
||||||
let (sum, _) = (p_minus_1 + p_minus_1).overflowing_rem(p);
|
let sum = (p_minus_1 + p_minus_1) % p;
|
||||||
assert_eq!(sum, p - 2.into());
|
assert_eq!(sum, p - 2.into());
|
||||||
|
|
||||||
// on this field,
|
// on this field,
|
||||||
// (p-1) * 3 = p-3
|
// (p-1) * 3 = p-3
|
||||||
let (p_minus_1, _) = (p - 1u64.into()).overflowing_rem(p);
|
let p_minus_1 = (p - 1u64.into()) % p;
|
||||||
|
|
||||||
// multiplication is a series of additions
|
// multiplication is a series of additions
|
||||||
let multiplicator = 3;
|
let multiplicator = 3;
|
||||||
let mul = {
|
let mul = {
|
||||||
let mut result = p_minus_1;
|
let mut result = p_minus_1;
|
||||||
for _ in 0..multiplicator-1 {
|
for _ in 0..multiplicator-1 {
|
||||||
let (s, _) = (p_minus_1 + result).overflowing_rem(p);
|
result = (p_minus_1 + result) % p;
|
||||||
result = s;
|
|
||||||
}
|
}
|
||||||
result
|
result
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue