39 lines
707 B
Plaintext
39 lines
707 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 };
|
|
}
|
|
|