[Mathematica] ArcTan[] bug ?

  • Mathematica
  • Thread starter guerom00
  • Start date
  • #1
93
0

Main Question or Discussion Point

Hello everyone,

I copy-paste here a little bit of code:
Code:
In[4417]:= x = (1.5` + 0.` I);
y = (0.` + 0.` I);

(* 1 *) ArcTan[x, y]
(* 2 *) ArcTan[x // Chop, y // Chop]
(* 3 *) -I Log[(x + I y)/Sqrt[x^2 + y^2]]
{y == 0, Re[y] == 0, Im[y] == 0, Im[x] == 0}

Out[4419]= -1.5708 + 0. I

Out[4420]= 0

Out[4421]= 0. + 0. I

Out[4422]= {True, True, True, True}
The quantities x and y are calculated elsewhere.
The expression 1 for the arctangent is wrong since it gives me -pi/2 :confused:
In expression 2, I chop the arguments and the result is right.
Expression 3 is used when x or y is complex and gives the right answer as well.
Finally, some tests…

Any thoughts ?
TIA
 

Answers and Replies

  • #2
phyzguy
Science Advisor
4,394
1,369
I agree it looks wrong, but I think ArcTan[x,y] is assuming x and y are both real. It must have a problem when thy are complex.
 
  • #3
93
0
The help page of ArcTan[x,y] indicates that it can handle complex arguments. It then uses the expression which involves the Log[] I gave.
Problem is: my quantities x and y are not complex according to the tests I make… Which is strange because I thought that the number 0.` is different from 0 (== wise)…
 
  • #4
phyzguy
Science Advisor
4,394
1,369
ArcTan[x] should handle complex arguments, but what does ArcTan[x,y] even mean when the arguments are complex?
 
  • #5
93
0
  • #6
Hurkyl
Staff Emeritus
Science Advisor
Gold Member
14,916
18
  • #7
93
0
Last edited:
  • #8
Hurkyl
Staff Emeritus
Science Advisor
Gold Member
14,916
18
WTF ?! This is clearly broken, no ?
No and yes.

No, in the sense that you should expect numerical algorithms to misbehave at special values. Yes, in the sense that it's a little surprising these values are special.


What's most likely happening internally is that there is an algebraic identity being used and your point is right on a branch cut of the terms involved. And because your numbers are approximate, different sides of the branch cut wind up being used in different terms.
 
  • #10
93
0
I see now… :)
Well, that doesn't solve my problem: I now have a function of this angle (I use this ArcTan[] to calculate an angle, obviously) which is discontinuous at one point… I'll have to make a specific test to avoid this very point.

Thanks :)
 

Related Threads on [Mathematica] ArcTan[] bug ?

  • Last Post
Replies
5
Views
5K
  • Last Post
Replies
1
Views
2K
Replies
3
Views
3K
Replies
11
Views
3K
Replies
2
Views
835
Replies
0
Views
2K
  • Last Post
Replies
1
Views
3K
  • Last Post
Replies
10
Views
2K
  • Last Post
Replies
1
Views
2K
Top