Sunday, August 2, 2015

Python: math(10)

Abstract: Sqrt

One common method is sqrt() in the module known as math. Here, I introduce my code.
The result:
sqrt of 7 is 2.64575131106
sqrt of 7 is 2.64575131106




The script:
# -*- coding: utf-8 -*-
"""
Created on Sun Aug  2 10:11:56 2015

@author: yuan
"""

#method 1
import math
a=7
print 'sqrt of', a, 'is', math.sqrt(a)


#method 2
def mysqrt(number, digits=1):
   
    value=0
    for power in range(digits+1):
        #print power, value
        value=binary_search(power,value, number)
        #print '\n'
    return value

def binary_search(power, value, target):
    start_index=0
    end_index=9
    pool=[]
    #print float(1)/(10**power)
    for x in range(10):
        new=value+float(x)/(10**power)
        pool.append(new)
    #print pool
    if target==pool[start_index]*pool[start_index]:
        value = pool[start_index]
        return
    elif target==pool[end_index]*pool[end_index]:
        value = pool[end_index]       
        return
    #
    n=1
    while start_index<end_index:
        mid_index=int((end_index-start_index)/2)+start_index
        mid_value=pool[mid_index]*pool[mid_index]
        #print start_index, end_index, mid_index, mid_value
        if mid_value>=target:
            end_index=mid_index
        else:
            start_index=mid_index
        #set bound
        if end_index-start_index==1:
            break
    value=pool[start_index]
    #print value, start_index, end_index
    return value

#
print 'sqrt of', a, 'is', mysqrt(7, digits=20)
print 'ok'

No comments:

Post a Comment