github.com/0xPolygon/supernets2-node@v0.0.0-20230711153321-2fe574524eaa/test/contracts/uniswap/v2/Math.sol (about)

     1  pragma solidity =0.5.16;
     2  
     3  // a library for performing various math operations
     4  
     5  library Math {
     6      function min(uint x, uint y) internal pure returns (uint z) {
     7          z = x < y ? x : y;
     8      }
     9  
    10      // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)
    11      function sqrt(uint y) internal pure returns (uint z) {
    12          if (y > 3) {
    13              z = y;
    14              uint x = y / 2 + 1;
    15              while (x < z) {
    16                  z = x;
    17                  x = (y / x + x) / 2;
    18              }
    19          } else if (y != 0) {
    20              z = 1;
    21          }
    22      }
    23  }