minor bug in cmath.asin?

Edwin Young edwin at localhost.localdomain
Sat Apr 3 20:43:03 EST 2004


Erik Max Francis <max at alcyone.com> writes:

> Edwin Young wrote:
> 
> > I think it should be 0+0j (+0 for both parts). The official formula is
> > at
> > 
> > http://functions.wolfram.com/ElementaryFunctions/ArcSin/02/
> 
> Well this is Mathematica's official formula ... :-).

Mathworld doesn't document how Mathematica works, it's a repository of
generic mathetical info. "Official" is the wrong word, but I don't
have a more authoritative reference to hand.

> 
> > and is asin(z) = -i * log(i*z + sqrt(1 - z*z))
> > 
> > Which is slightly ambiguous. I read it as:
> > 
> > (+0 - 1i) * log(i*z + sqrt(1 - z*z))
> 
> How is the original equation amiguous?

It's not clear if the leading - sign affects the entire expression or
indicates that i is negative. Python's implementation uses the former
- I argue that the latter is more correct. The difference in result is
just whether you get +0 or -0.

I've also noticed that cmath.acos has the same issue, and that the
formula used for cmath.asinh is not quite accurate around 0 :
cmath.asinh(0) gives 4.44089e-16+0j, rather than 0 as expected.

Does anyone know the history of the cmath implementation? There are
some interesting formulas used for some of the trig functions and I'm
curious to know where they came from.

--
Edwin



More information about the Python-list mailing list