On Mon, Jul 06, 2020 at 10:46:03AM -0700, Christopher Barker wrote:

> 1) The math module is written in C, and Guido at least (he was still BDFL
> then) rejected the idea of refactoring it to allow Python components (yes,
> that was proposed, and even started by, I think, Victor Stiner). Yes, you
> can write generic functions in C, but it's a lot more of a pain.

I think that it is long past time that we give up the idea that the math 
module is a thin wrapper around the system's C maths library. We should 
just add a math.py file that looks like this:

    from _math import *


> 2) The rest of the math module is currently all about floats already,

That's not really the case, and hasn't been for a while. Some functions 
manage to work very well with non-floats:

    py> math.factorial(100)
    9332621544394415268169923885626670049071596826438162146859296389
    5217599993229915608941463976156518286253697920827223758251185210
    916864000000000000000000000000

    # New in Python 3.8 I think?
    py> math.prod([1, 2, 3, Fraction(1, 5)])
    Fraction(6, 5)

Even if they return a float, or int, they still work with non-floats 
without losing accuracy:

    py> math.log10(10**5000)
    5000.0

    py> math.ceil(Fraction(1, 10**5000))
    1

even when the argument would overflow or underflow.


-- 
Steven
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/LK4P7AKLUPTJX5RWF6E2Q5HC25HTGNAO/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to