import math
# ----------------------------------------------------------
# ---- Babylonian (Video's) square root algorithm
# ----
# ---- we are estimating the square root of "num". "loop"
# ---- is the number of times to loop thru the calculation
# ---- to improve the accuracy. "estimate" is the 
# ---- estimated square root of "num".
# ----------------------------------------------------------
def video_square_root_algorithm(num,loop):
    # ---- generate algorithm seed (nearest perfect square)
    # ---- (the Babylonians used a table to do this)
    nps_root,nps = nearest_perfect_square(num)
    # ---- loop to increase accuracy
    estimate = nps_root     # initial estimated square root
    print()
    print(f'original estimate = {estimate}')
    for _ in range(loop):
        new_estimate = estimate + \
        (num - (estimate*estimate))/(2*estimate)
        estimate = new_estimate
        print()
        print(f'new estimate      = {new_estimate}')
        print(f'math.sqrt         = {math.sqrt(num)}')
        
    return estimate