def my_sqrt(n):
def midpoint(a, b):
return a + (b - a)/2
left = 0.0
right = float(n)
approx = midpoint(left, right)
while abs(approx*approx - n) > 0.0000000000001:
if approx*approx < n:
left = approx
else:
right = approx
approx = midpoint(left, right)
return approx
def main():
x = 2
y = my_sqrt(x)
print("sqrt("+str(x)+") = "+str(y))
if __name__ == '__main__':
main()
ZGVmIG15X3NxcnQobik6CgogICAgZGVmIG1pZHBvaW50KGEsIGIpOgogICAgICAgIHJldHVybiBhICsgKGIgLSBhKS8yCgogICAgbGVmdCA9IDAuMAogICAgcmlnaHQgPSBmbG9hdChuKQogICAgYXBwcm94ID0gbWlkcG9pbnQobGVmdCwgcmlnaHQpCiAgICB3aGlsZSBhYnMoYXBwcm94KmFwcHJveCAtIG4pID4gMC4wMDAwMDAwMDAwMDAxOgogICAgICAgIGlmIGFwcHJveCphcHByb3ggPCBuOgogICAgICAgICAgICBsZWZ0ID0gYXBwcm94CiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmlnaHQgPSBhcHByb3gKICAgICAgICBhcHByb3ggPSBtaWRwb2ludChsZWZ0LCByaWdodCkKICAgIHJldHVybiBhcHByb3gKCmRlZiBtYWluKCk6CiAgICB4ID0gMgogICAgeSA9IG15X3NxcnQoeCkKICAgIHByaW50KCJzcXJ0KCIrc3RyKHgpKyIpID0gIitzdHIoeSkpCgppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgbWFpbigpCg==