[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Octave-bug-tracker] [bug #44280] asin, asind, atan, and atand may have
From: |
Dan Sebald |
Subject: |
[Octave-bug-tracker] [bug #44280] asin, asind, atan, and atand may have incorrect values |
Date: |
Tue, 17 Feb 2015 03:31:15 +0000 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:18.0) Gecko/20100101 Firefox/18.0 SeaMonkey/2.15 |
Follow-up Comment #1, bug #44280 (project octave):
Thanks for reporting this. I've confirmed one bug for sure.
Here's what I'm seeing on a linux system:
>> asind(3)
ans = 90.000 - 100.998i
>> atand(5i)
ans = -90.000 + 11.616i
>> atan(5i)
ans = -1.57080 + 0.20273i
>> asin(3)
ans = 1.5708 - 1.7627i
This looks to be an incorrect formula for arc tangent in
liboctave/numberic/lo-mappers.c:
Complex
atan (const Complex& x)
{
static Complex i (0, 1);
return i * log ((i + x) / (i - x)) / 2.0;
}
I think it should be (i - x) / (i + x) in the argument of the complex
logarithm. Or i/2 * (ln(i-x) - ln(i+x)). In the case of x=5i, something for
which the argument of the logarithm is solely imaginary (i.e., -4i and 6i),
the imaginary portion of the logarithm in both cases is -pi/2*i - -pi/2*i =
-pi*i, multiplying by i/2 gives us pi/2, or 90 degrees.
So, yes, atand() seems like a bug. But more than that we should have some
good test cases to find these bugs, and that's a bit of a project.
But I don't know why your build of Octave is having problems with asin() as
well. Different library for the Apple products? I don't know. I will look
into this more and try making some guesses.
_______________________________________________________
Reply to this item at:
<http://savannah.gnu.org/bugs/?44280>
_______________________________________________
Message sent via/by Savannah
http://savannah.gnu.org/