Talk:Arbitrary-precision elementary mathematical functions (Python)

From LiteratePrograms

Jump to: navigation, search
#!/usr/bin/python

from __future__ import division

def log(N,X):
   epsilon = 0.000000000001
   integer_value=0
   while X < 1:
      integer_value = integer_value - 1
      X = X * N
   while X >= N:
      integer_value = integer_value + 1
      X = X / N
   decfrac = 0.0
   partial = 0.5
   X=X*X
   while partial > epsilon:
      while X >= N:
         decfrac = decfrac + partial
         X = X / N
      partial = partial / 2
      X=X*X
   return (integer_value + decfrac)

if __name__ == '__main__':
   value = 45.7
   print "     X  =",value
   print "LOG6(X) =",log(6,value)
   print "  LN(X) =",log(2.718281828,value)

#  SAMPLE OUTPUT
#    $ python log.py
#         X  = 45.7
#    LOG6(X) = 2.13315367578
#      LN(X) = 3.82209829854 
Personal tools