26 lines
639 B
Solidity
26 lines
639 B
Solidity
// SPDX-License-Identifier: GPL-3.0
|
|
|
|
pragma solidity =0.6.12;
|
|
|
|
// a library for performing various math operations
|
|
|
|
library Math {
|
|
function min(uint x, uint y) internal pure returns (uint z) {
|
|
z = x < y ? x : y;
|
|
}
|
|
|
|
// babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)
|
|
function sqrt(uint y) internal pure returns (uint z) {
|
|
if (y > 3) {
|
|
z = y;
|
|
uint x = y / 2 + 1;
|
|
while (x < z) {
|
|
z = x;
|
|
x = (y / x + x) / 2;
|
|
}
|
|
} else if (y != 0) {
|
|
z = 1;
|
|
}
|
|
}
|
|
}
|