NAC_Blockchain/charter-std/utils/math.ch

33 lines
701 B
Plaintext

pub fn safe_add(a: u256, b: u256) -> u256 {
let result = a + b;
require(result >= a, "Addition overflow");
return result;
}
pub fn safe_sub(a: u256, b: u256) -> u256 {
require(a >= b, "Subtraction underflow");
return a - b;
}
pub fn safe_mul(a: u256, b: u256) -> u256 {
if a == 0 {
return 0;
}
let result = a * b;
require(result / a == b, "Multiplication overflow");
return result;
}
pub fn safe_div(a: u256, b: u256) -> u256 {
require(b > 0, "Division by zero");
return a / b;
}
pub fn max(a: u256, b: u256) -> u256 {
return if a >= b { a } else { b };
}
pub fn min(a: u256, b: u256) -> u256 {
return if a <= b { a } else { b };
}