Welcome, guest | Sign In | My Account | Store | Cart
#On the name of ALLAH and may the blessing and peace of Allah 
#be upon the Messenger of Allah Mohamed Salla Allahu Aliahi Wassalam.
#Author : Fouad Teniou
#Date :  15/07/10
#version :2.6

from decimal import Decimal as D,Context, localcontext

def maclaurin_ln(value, k):
    """
    Compute maclaurin's series approximation for ln(value).
    """

    first_value = 0
    
    #attempt to Approximate ln(x) for a given value    
    try:
        value_x = (value - D("1.0"))/(value + D("1.0"))
        for item in xrange(1,k,2):
            next_value = value_x**item/item
            first_value += next_value
            
        return 2*(first_value)
    
    #Raise TypeError if input is not a number   
    except TypeError:
        print 'Please enter an integer or a float value'

if __name__ == "__main__":
    with localcontext(Context(prec=67)):
        for arg in xrange(7,28,10):
            print "ln(%s) = %s " %\
            (arg, maclaurin_ln(arg,D("10000")))
    
#######################################################################

#FT  "C:\Maclaurin_lndecimal1.py"
#ln(7) = 1.945910149055313305105352743443179729637084729581861188459390149937
#ln(17) = 2.833213344056216080249534617873126535588203012585744787297237737878
#ln(27) = 3.295836866004329074185735710767577113942471673468248355204083000896
##########################################################################################

Version : Python 3.2

#from decimal import Decimal as D

#from decimal import *
#from math import *

#def maclaurin_ln(value, k):
#    """
#    Compute maclaurin's series approximation for ln(value).
#    """
    
#    global first_value    
#    first_value = 0
#    
#    #attempt to Approximate ln(x) for a given value    
#    try:
#        value_x = (value - 1)/(value + 1)
#        for item in range(1,k,2):
#            next_value = value_x**item/item
#            first_value += next_value
#            
#        return 2* first_value
#    
#    #Raise TypeError if input is not a number   
#    except TypeError:
#        print('Please enter an integer or a float value')
#if __name__ == "__main__":
#
#   
#    with localcontext(Context(prec=170)):
#        for arg in range(7,28,10):
#            print("ln(%s) = %s " %\
#            (arg, maclaurin_ln(D(arg),10000)))
#    getcontext().prec = 17
#    for arg in range(7,28,10):
#       
#        print("ln(%s) = %s " %\
#        (arg, maclaurin_ln(D(arg),10000)))

Diff to Previous Revision

--- revision 4 2010-07-15 11:25:21
+++ revision 5 2011-01-20 12:09:24
@@ -38,3 +38,44 @@
 #ln(7) = 1.945910149055313305105352743443179729637084729581861188459390149937
 #ln(17) = 2.833213344056216080249534617873126535588203012585744787297237737878
 #ln(27) = 3.295836866004329074185735710767577113942471673468248355204083000896
+##########################################################################################
+
+Version : Python 3.2
+
+#from decimal import Decimal as D
+
+#from decimal import *
+#from math import *
+
+#def maclaurin_ln(value, k):
+#    """
+#    Compute maclaurin's series approximation for ln(value).
+#    """
+    
+#    global first_value    
+#    first_value = 0
+#    
+#    #attempt to Approximate ln(x) for a given value    
+#    try:
+#        value_x = (value - 1)/(value + 1)
+#        for item in range(1,k,2):
+#            next_value = value_x**item/item
+#            first_value += next_value
+#            
+#        return 2* first_value
+#    
+#    #Raise TypeError if input is not a number   
+#    except TypeError:
+#        print('Please enter an integer or a float value')
+#if __name__ == "__main__":
+#
+#   
+#    with localcontext(Context(prec=170)):
+#        for arg in range(7,28,10):
+#            print("ln(%s) = %s " %\
+#            (arg, maclaurin_ln(D(arg),10000)))
+#    getcontext().prec = 17
+#    for arg in range(7,28,10):
+#       
+#        print("ln(%s) = %s " %\
+#        (arg, maclaurin_ln(D(arg),10000)))

History