2015-03-03 6:25 GMT+01:00 Chris Barker <[email protected]>:
> As far as I can tell, the math module is entirely a C extension. So I can:
> (...)
> 2) Write it in Python, and monkey-patch it in to the math module -- I
> honestly have no idea how to do that, but as I can add a new name to the
> math module after importing it, it should be doable --but I have no idea
> where the code would go.
Maybe it's time to rename the math module to _math and create a
math.py module, like _decimal/decimal? math.py should end with "from
_math import *".
It may be interesting to have Python implementation of math.fsum(),
math.factorial(), math.degrees() and math.radians().
Extract of fsum() comment:
Full precision summation of a sequence of floats.
def msum(iterable):
partials = [] # sorted, non-overlapping partial sums
for x in iterable:
i = 0
for y in partials:
if abs(x) < abs(y):
x, y = y, x
hi = x + y
lo = y - (hi - x)
if lo:
partials[i] = lo
i += 1
x = hi
partials[i:] = [x]
return sum_exact(partials)
The C implementation of factorial is not naive: "Divide-and-conquer
factorial algorithm" (see the C code).
Obvisouly, a expect lower performances from Python code manipulating
numbers (because of the cost of boxing-unboxing, cost of functions
calls, etc.). But it might help other Python implementations to
implement the math module.
Victor
_______________________________________________
Python-Dev mailing list
[email protected]
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com