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