1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#[inline(always)]
pub(crate) const fn adc(a: u64, b: u64, c: u64) -> (u64, u64) {
let t = a as u128 + b as u128 + c as u128;
(t as u64, (t >> 64) as u64)
}
#[inline(always)]
pub(crate) const fn sbb(a: u64, b: u64, brw: u64) -> (u64, u64) {
let t = (a as u128).wrapping_sub((b as u128) + (brw >> 63) as u128);
(t as u64, (t >> 64) as u64)
}
#[inline(always)]
pub(crate) const fn mac(a: u64, b: u64, c: u64, d: u64) -> (u64, u64) {
let t = (a as u128) + ((b as u128) * (c as u128)) + (d as u128);
(t as u64, (t >> 64) as u64)
}
pub type ProjectiveCoordinate<L> = (L, L, L);
pub type Bits = Vec<u8>;