2015-03-03 6:25 GMT+01:00 Chris Barker <chris.bar...@noaa.gov>:
> 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
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to