[Python-bugs-list] Inverse hyperbolic functions in cmath module (PR#231)

tim_one@email.msn.com tim_one@email.msn.com
Sat, 11 Mar 2000 13:46:05 -0500 (EST)


[Tim]
> C doesn't define any functions on complex numbers -- cmathmodule.c
> implements these all on its own.

[David Ascher]
> As an aside, if anyone ever wants to trim the number of builtin C
> modules, I found that it was much easier to write cmath.py than to
> write cmath.java (for JPython).  The same cmath.py should work fine
> in CPython.

Yes, I don't see anything in cmathmodule.c that *needs* to be coded in C; &
coding would be much clearer in Python, using infix notation for the basic
complex binary ops.  Two possible reasons for leaving it in C:

1. Lower internal call overheads (i.e., speed).

2. Improving quality -- complex libraries are very difficult to get right
   in all cases if they're made IEEE-754 aware, and doing so requires
fiddling
   with the processor-level 754 control & status features.  But there's no
   portable way to do that now, and won't be until the next iteration of C.

> I can dig it up, but I can't swear that I used the most numerically stable
> algorithms.

I can:  you didn't <wink>.  Doesn't matter, though!  cmathmodule.c is naive
too, and achieving good accuracy across the whole domain is a major
undertaking.  That gives the best reason to write it in Python:

3. There's a long way to go to make this "industrial strength", so the
   current cmath is really just a prototype.  Everyone knows prototyping
   is much easier in Python.  QED <wink>.

> It did give the same numbers as CPython's cmath on a test set.

So ship it <wink>.