Raymond Hettinger <[email protected]> added the comment:
Internally, the math.log10() function only works on floats. By way of the
__float__() method, the input to the the math.log10() function is asked to
convert itself to a float. Fractions implement __float__() by just dividing
the numerator and denominator. In your example, the result is smaller than the
smallest representable positive float (2**-1074), so the result gets rounded
down to 0.0. The log10() function isn't defined for zero:
>>> f = Fraction(factorial(10000), factorial(20000)+1)
>>> float(f)
0.0
>>> log10(f)
Traceback (most recent call last):
...
ValueError: math domain error
Short of adding a log10() method to the Fraction class, there isn't a straight
forward way to accommodate getting this to work.
----------
nosy: +rhettinger
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue42886>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com