from __future__ import division import math def logN(X, base = math.e, decimalplaces = 12): integer_value=0 while X < 1: integer_value -= 1 X *= base while X >= base: integer_value += 1 X /= base result = str(integer_value) + '.' X **= 10 # Calc X to the 10th power while decimalplaces > 0: digit = 0 while X >= base: digit += 1 X /= base result += str(digit) X **= 10 # Calc X to the 10th power decimalplaces -= 1 return result if __name__ == '__main__': value = 4.5 print " X =", value print " 3 decimal places LOG(X) =", logN(value, base = 10, decimalplaces = 3) print " 6 decimal places LOG(X) =", logN(value, base = 10, decimalplaces = 6) print "12 decimal places LOG(X) =", logN(value, base = 10, decimalplaces = 10)