///|
#inline
pub fn is_even(n : BigInt) -> Bool {
(
// Fixed in Jan 9, 2026:
// `n & 1` panic for n is large even (≥ 2^32)
// Also see: https://github.com/moonbitlang/core/issues/3133
n & 1
) ==
0
}
///|
#inline
pub fn is_odd(n : BigInt) -> Bool {
!is_even(n)
}
///|
pub fn euclid_mod(a : BigInt, n : BigInt) -> BigInt {
let r = a.mod(n)
guard r < 0 else { r }
r + n
}
///|
pub fn abs(x : BigInt) -> BigInt {
guard x < 0 else { x }
-x
}