def sqrt(n):
# 3 iterations of newton's method, hard-coded
# normalize
# find highest bit
highest = 1
sqrt_highest = 1
while highest < n:
highest <<= 2
sqrt_highest <<= 1
n /= highest+0.0
result = (n/4) + 1
result = (result/2) + (n/(result*2))
result = (result/2) + (n/(result*2))
return result*sqrt_highest
print(sqrt(4))
print(sqrt(64))
print(sqrt(10000))
print(sqrt(2))
print(sqrt(10**10))
ZGVmIHNxcnQobik6CgkjIDMgaXRlcmF0aW9ucyBvZiBuZXd0b24ncyBtZXRob2QsIGhhcmQtY29kZWQKCSMgbm9ybWFsaXplCgkKCSMgZmluZCBoaWdoZXN0IGJpdAoJaGlnaGVzdCA9IDEKCXNxcnRfaGlnaGVzdCA9IDEKCXdoaWxlIGhpZ2hlc3QgPCBuOgoJCWhpZ2hlc3QgPDw9IDIKCQlzcXJ0X2hpZ2hlc3QgPDw9IDEKCQoJbiAvPSBoaWdoZXN0KzAuMAoJCglyZXN1bHQgPSAobi80KSArIDEKCXJlc3VsdCA9IChyZXN1bHQvMikgKyAobi8ocmVzdWx0KjIpKQoJcmVzdWx0ID0gKHJlc3VsdC8yKSArIChuLyhyZXN1bHQqMikpCgkKCXJldHVybiByZXN1bHQqc3FydF9oaWdoZXN0CgpwcmludChzcXJ0KDQpKQpwcmludChzcXJ0KDY0KSkKcHJpbnQoc3FydCgxMDAwMCkpCnByaW50KHNxcnQoMikpCnByaW50KHNxcnQoMTAqKjEwKSk=