babylonianSqrt method
Implementation
BigInt babylonianSqrt() {
  var z = BigInt.zero;
  BigInt x;
  if (this > BigInt.from(3)) {
    z = this;
    x = this ~/ BigInt.two + BigInt.one;
    while (x < z) {
      z = x;
      x = (this ~/ x + x) ~/ BigInt.two;
    }
  } else if (this != BigInt.zero) {
    z = BigInt.one;
  }
  return z;
}