rendered paste bodydef dec_log(self, base=10): cur_prec = getcontext().prec getcontext().prec += 2 baseDec = Decimal(10) retValue = self if isinstance(base, Decimal): baseDec = base elif isinstance(base, float): baseDec = Decimal("%f" % (base)) else: baseDec = Decimal(base) integer_part = Decimal(0) while retValue < 1: integer_part = integer_part - 1 retValue = retValue * baseDec while retValue >= baseDec: integer_part = integer_part + 1 retValue = retValue / baseDec retValue = retValue ** 10 decimal_frac = Decimal(0) partial_part = Decimal(1) while cur_prec > 0: partial_part = partial_part / Decimal(10) digit = Decimal(0) while retValue >= baseDec: digit += 1 retValue = retValue / baseDec decimal_frac = decimal_frac + digit * partial_part retValue = retValue ** 10 cur_prec -= 1 getcontext().prec -= 2 return integer_part + decimal_frac