12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- // SPDX-License-Identifier: MIT
- // OpenZeppelin Contracts (last updated v4.5.0) (utils/math/Math.sol)
- pragma solidity ^0.8.0;
- /**
- * @dev Standard math utilities missing in the Solidity language.
- */
- library Math {
- /**
- * @dev Returns the largest of two numbers.
- */
- function max(uint256 a, uint256 b) internal pure returns (uint256) {
- return a >= b ? a : b;
- }
- /**
- * @dev Returns the smallest of two numbers.
- */
- function min(uint256 a, uint256 b) internal pure returns (uint256) {
- return a < b ? a : b;
- }
- /**
- * @dev Returns the average of two numbers. The result is rounded towards
- * zero.
- */
- function average(uint256 a, uint256 b) internal pure returns (uint256) {
- // (a + b) / 2 can overflow.
- return (a & b) + (a ^ b) / 2;
- }
- /**
- * @dev Returns the ceiling of the division of two numbers.
- *
- * This differs from standard division with `/` in that it rounds up instead
- * of rounding down.
- */
- function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {
- // (a + b - 1) / b can overflow on addition, so we distribute.
- return a / b + (a % b == 0 ? 0 : 1);
- }
- }
|