tasm_lib/arithmetic/
u192.rs1pub mod overflowing_add;
2pub mod safe_add;
3
4#[cfg(test)]
5pub(crate) type U192 = [u32; 6];
6
7#[cfg(test)]
9pub(super) fn u128_to_u192(x: u128) -> U192 {
10 [
11 (x & (u32::MAX as u128)) as u32,
12 ((x >> 32) & (u32::MAX as u128)) as u32,
13 ((x >> 64) & (u32::MAX as u128)) as u32,
14 ((x >> 96) & (u32::MAX as u128)) as u32,
15 0,
16 0,
17 ]
18}
19
20#[cfg(test)]
22pub(super) fn u128_to_u192_shl64(x: u128) -> U192 {
23 [
24 0,
25 0,
26 (x & (u32::MAX as u128)) as u32,
27 ((x >> 32) & (u32::MAX as u128)) as u32,
28 ((x >> 64) & (u32::MAX as u128)) as u32,
29 ((x >> 96) & (u32::MAX as u128)) as u32,
30 ]
31}
32
33#[cfg(test)]
34pub(super) fn to_u192(hi: u128, lo: u64) -> U192 {
35 [
36 (lo & u32::MAX as u64) as u32,
37 (lo >> 32) as u32,
38 (hi & (u32::MAX as u128)) as u32,
39 ((hi >> 32) & (u32::MAX as u128)) as u32,
40 ((hi >> 64) & (u32::MAX as u128)) as u32,
41 (hi >> 96) as u32,
42 ]
43}