Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

// request.cf · coarse context

A page that knows where it met you.

Only coarse request metadata is shown. This demo does not display or persist visitor IP addresses.

Country
US
Cloudflare location
CMH
Connection
HTTP/2
Language
Not provided

Ray ID: a222be7bbc21cf57

Jump to content

Talk:Atan2

Page contents not supported in other languages.
Add topic
From Wikipedia, the free encyclopedia
Latest comment: 16 days ago by Jacobolus in topic Formulation in terms of half-angle tangent

Order of arguments

[edit]

This article isn't very clear about the order of the two arguments x and y in the atan2() function call. Many people will incorrectly assume at first glance that it is atan2(x,y) -- the text should be more explicit (I missed the order in the "more specifically" text the first 3 times I read it). I maintain a parser for an expression language where atan2(a,b) returns atan(b/a) rather than C's atan(a/b)...

Fixed. ~a (usertalkcontribs) 00:22, 31 March 2007 (UTC)Reply

The C-language atan2 is convenient to apply by remembering that tangent = opposite/adjacent. Since angle = atan2(opposite,adjacent), it's easy to remember. Hollimb 18:43, 25 March 2007 (UTC)Reply

I think it is not unnecessary to add a sentence to emphasize that the order of the arguments is (y, x), not (x, y). I remember when I first saw this function in Fortran documents, I took it as atan2(x, y) until I found my results did not make sense. Many people are inclined to make this mistake. --Roland (talk) 19:58, 31 October 2019 (UTC)Reply
Of course, it is important to use the arguments as they are defined in the manual.
But the “natural” (usual, normal, predefined etc.) order of the coordinates is (x,y) and not (y,x). Nobody will say z = y i + x. It is a standard convention that the x-axis comes first, increases to the right (is defined to be identical to the polar axis) and the y-axis (coming second) runs up. So it was kind of an error by the FORTRAN-people to define atan2(y,x) the way they did. Maybe they thought of atan(y/x) =: atan2(y,x) (for 0<x,y) (simply replacing the slash by the comma and appending the letter “2”) and were unable to think of arctan2(x,y) = atan(x-1 y).
This mistake is — in my opinion — the cause of the kind of errors mentioned by Roland above. --Nomen4Omen (talk) 09:35, 1 November 2019 (UTC)Reply

The first note under "Definition"

[edit]

The first note under the section "Definition" read to the effect that adding 2π to a result in the range (-π,π] resulted in the range (0,2π], which doesn't seem correct. I've changed it to read that adding π has this effect, and have further clarified the line to reduce potential ambiguity regarding to which value the additional π is added.198.54.202.94 (talk) 17:52, 28 May 2008 (UTC)Reply


But
--Bob K (talk) 23:24, 28 May 2008 (UTC)Reply

Closed/semi-open interval

[edit]

It is not the first time I see someone changing for in the first paragraph (Indeed, I think I did so sometime in the past). I think this issue should be discussed here and an invisible comment should be kept in the article, for editor's guidance.

As a mathematical funcion, atan2 is defined as

It couldn't be because:

Therefore atan2's codomain is , NOT . I think the confusion arises from computational implementation and how it deals with signed zero.

Since "zero" is now a limit instead of finite real value, we have

and, particularly

but this is only a limit; mathematical atan2 function does NEVER gives that result. Rjgodoy 19:27, 3 July 2007 (UTC)Reply

atan2 and atan

[edit]

In Maxima atan2(x,1)=atan(x)

Adam majewski 21:02, 28 October 2007 (UTC)Reply

[edit]

Hi, I'm not sure where this link shall point out so I may put it here if someone knows how to fix it. There's a broken link in reference [1] where it says:

include the C-style atan2 function. The Linux Programmer's Manual [1] says:

--Felipebm (talk) 19:08, 25 March 2008 (UTC)Reply

Neither I do, but IA-32 Intel® Architecture Software Developer’s Manual. Volume 2A: Instruction Set Reference, A-M, 2004 should include a definition too. We could use it instead of The Linux Programmer's Manual. Rjgodoy (talk) 01:33, 26 March 2008 (UTC)Reply

Graph Incorrect?

[edit]

I don't understand why the 3D graph shows a slight curve in the profile visible along the negative x. Shouldn't the graph be a constant value of pi along here? —Preceding unsigned comment added by 198.99.123.63 (talk) 16:37, 10 April 2008 (UTC)Reply

Actually it should be -pi/2. However there is no such a slight curve! After your comment I became very suspicious about the graph and plotted the surface by myself (thus I could verify that the values alongside x axis were correct and constant either -pi/2 or pi/2, but for x=0 y=0 of course). It seems to be a slight curve because of an optical illusion due to the perspective and the slight pendient wrt. y axis. Rjgodoy (talk) 21:35, 10 April 2008 (UTC)Reply

The graph is nice but this graph has no axis labels. I don't suppose it means much to you as you know what the graph is saying but anyone like me who is not 100% sure would appreciate people sticking to the good old rule of labeling each and every axis in every graph ever. —Preceding unsigned comment added by 132.181.15.75 (talk) 22:16, 28 May 2008 (UTC)Reply

The chart showing atan2 is completely wrong. I just plotted it in Excel. —Preceding unsigned comment added by 142.23.221.132 (talk) 01:36, 3 February 2009 (UTC)Reply

Did you note the statement in the article that Excel has the two arguments reversed?  Carl (CBM · talk) 02:36, 3 February 2009 (UTC)Reply

Sign of output

[edit]

The article states that the results are positive for y>0 and negative for y<0, but what about y=0? AFAICT, y<0 either gives 0 or π, so it should read that the results are positive for y>=0 and negative for y<0.--Subversive Sound (talk) 14:57, 9 July 2010 (UTC)Reply

The full definition is given later on, that's a very general idea of how angles are measured. You'd have people saying 0 isn't positive with the change you say. Dmcq (talk) 15:20, 9 July 2010 (UTC)Reply

More stable/consistent 'non-condition' formula?

[edit]

Is there maybe a more convoluted formula that doesn't require any conditions, but is also computationally stable and isn't often undefined when y=0 (or at least the latter) ? I think this would merit inclusion into the article. --Skytopia (talk) 22:32, 5 September 2010 (UTC)Reply

I'm not sure if this formula satisfies your request, but I found the equation:
atan2(y,x) = -i ln((x + i y)/sqrt(x^2 + y^2))
to be useful. I got it from Wolfram Alpha. AnotherNeko (talk) 10:52, 1 December 2022 (UTC)Reply
This is kind of a punt, as then you need to start with a definition of the complex logarithm, which is even more complicated to explain. For the purpose of concrete computation, the complex logarithm is often implemented in code in terms of real atan2 and real natural log. –jacobolus (t) 19:00, 1 December 2022 (UTC)Reply
What about the following:
for
Nomen4Omen (talk) 20:20, 1 December 2022 (UTC)Reply

Derivative

[edit]

In my opinion the section called "Derivative" uses needless complicated formulation, as if some finds such things interesting. As atan2 is a function of two variables, it suffices to just give both the partial derivatives. Nijdam (talk) 20:14, 12 November 2011 (UTC)Reply

Yes the derivation is totally unnecessary. Dmcq (talk) 20:59, 12 November 2011 (UTC)Reply

Quality

[edit]

I first noticed this article existed in 2007 and didn't find it noteworthy but still pointed traffic it's way, since then it has greatly improved! -- BlindWanderer (talk) 06:54, 28 October 2012 (UTC)Reply

[edit]

Hello fellow Wikipedians,

I have just modified one external link on Atan2. Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:

When you have finished reviewing my changes, please set the checked parameter below to true or failed to let others know (documentation at {{Sourcecheck}}).

This message was posted before February 2018. After February 2018, "External links modified" talk page sections are no longer generated or monitored by InternetArchiveBot. No special action is required regarding these talk page notices, other than regular verification using the archive tool instructions below. Editors have permission to delete these "External links modified" talk page sections if they want to de-clutter talk pages, but see the RfC before doing mass systematic removals. This message is updated dynamically through the template {{source check}} (last update: 5 June 2024).

  • If you have discovered URLs which were erroneously considered dead by the bot, you can report them with this tool.
  • If you found an error with any archives or the URLs themselves, you can fix them with this tool.

Cheers.—InternetArchiveBot (Report bug) 12:43, 20 October 2016 (UTC)Reply

section: Definition and computation

[edit]

I do not understand the following (at the end of the section):
"Computation gives

"
  1. I do not see a computation.
  2. In the foregoing definition and statements atan2(y,x) delivers a real (scalar). How can it deliver a 2-dim point ? and
  3. especially this one ?

Can somebody help me ? --Nomen4Omen (talk) 20:24, 26 January 2017 (UTC)Reply

@Nomen4Omen: Thanks for spotting that. This seems to have gotten lost in translation somewhere. This older version (from almost a year ago) makes significantly more sense. I'm going to see what I can do to fix this. --♫CheChe♫ talk 19:34, 27 January 2017 (UTC)Reply
Fixed. --♫CheChe♫ talk 19:47, 27 January 2017 (UTC)Reply

Section: Derivative

[edit]

Up to my knowledge

is not the divergence, but is the gradient of atan2.

(Nabla is OK.) --Nomen4Omen (talk) 14:46, 30 January 2017 (UTC)Reply

@Nomen4Omen: Yikes! My mistake. Slip of the tongue there, divergence is a scalar, so it can't be that (though I'm glad the equation says the right thing). --♫CheChe♫ talk 15:24, 30 January 2017 (UTC)Reply
Ok, that should be fine now. Thanks for the help. --♫CheChe♫ talk 15:29, 30 January 2017 (UTC)Reply

hay Purgy, would you like someone to explain the math to you?

[edit]


This useful and compact expression of atan2() is completely correct:

50.47.104.180 (talk) 18:20, 10 July 2018 (UTC)Reply

I apologize for my precipitous edit summary, in which, for missing the important subtlety (x/y), I wrongly called two alternatives of your edit "blatantly wrong". I would have edited this, if it were possible. In an effort to remediate this at least a bit I wrote "looking closer" in my next summary.
In my penultimate edit I tried to justify the epitethon "compact" of your variant by
  • removing the first alternative since it is included in
  • the second and third, compacted to the new first.
  • I did the necessary expansion of the "±" of the originally third, ambiguous alternative, and
  • tried to give a line of thought to explain how to get to this variant, which I perceived as not immediately obvious.
  • BTW, because of discontinuity the atan2 cannot be fully described by referring to just 2 half planes.
  • I see my last edit as superior to to the now current version.
I consider the heading of this thread as caused by my flawed summary, but nevertheless, in the light of my edits here, as offensive. Purgy (talk) 07:10, 11 July 2018 (UTC)Reply
It was "[my] edit" that restored this expression that appears to have been on this page for some number of years and is also on the Argument (complex analysis) page. The reason this compact expression is useful is because each case is valid for a continuous half plane. There is only one condition to apply, not two, to determine which case you use. In digital signal processing, we make use of the quite often to get phase response for an LTI filter, or for the instantaneous phase of an analytic signal. In the case of group delay for the former or for instantaneous frequency for the latter, we end up differentiating phase with respect to angular frequency (former) or time (latter). This differentiation requires phase unwrapping to deal with discontinuities. But in both cases we know that there will not be negative group delay (which means the derivative is negative) nor negative instantaneous frequency (which means the derivative is positive). In both those cases, the appropriate half-plane is exactly what is needed, eliminating the need to deal with an ostensible discontinuity. The compact expression is more useful and more informative as it is.
You're sorta new around here (apparently 2014) but not so new that it appears you get into a few scrapes with other editors. My only advise is: Don't think that every edit you do makes the article better. Personally, I think the section on Definition and computation was better and cleaner before you changed it. Especially that . It's now wordy, far less concise, and just ickier since July 1 for people who want to get to the facts quickly. The article is important. More important to non-mathematicians because they (the non-mathematicians) need guidance about how to deal with the 4 quadrant argument, but they don't need to worry about an obscure range of for [0, 2π) and alternative definitions with alternative symbols. It just makes it obtuse. Your first edit of July 1 was okay, but I think you took more liberty with the article than was good for it. Despite wp:BOLD. It was cleaner and clearer before. 50.47.104.180 (talk) 09:13, 11 July 2018 (UTC)Reply
@50.47.104.180: Maybe you should not forget to mention that this version of atan2 differs from the first one in the half-plane x<0. --Nomen4Omen (talk) 13:20, 11 July 2018 (UTC)Reply
No, it does not differ. It is ambiguous because of the "±" to an additive term of 2π. But the symbol "±" does not force the reader to choose either particular option. 50.47.104.180 (talk) 19:45, 11 July 2018 (UTC)Reply
If it's ambiguous, then it's NOT a function. Whereas the first atan2 is, as well as Arctan etc. If you let the reader to choose either particular option, you need not say anything. --Nomen4Omen (talk) 20:11, 11 July 2018 (UTC)Reply
That's right. Because there are alternative choices with the overlapping half-planes, it's not a function. But it's still an expression. Say we're in quadrant I. We can use either the Case x>0 or Case y>0. Which one is not explicitly determined in this expression. The purpose of this expression was apparently to offer flexibility it choice, not to strictly define a function. 50.47.104.180 (talk) 23:58, 11 July 2018 (UTC)Reply

I stop in this offensive thread with batting around membership, scrapes, bragging on elementary DSP-terms, whether WP is primarily for quick and dirty access, and other off topics. Purgy (talk) 07:45, 13 July 2018 (UTC)Reply

Defining atan2 via Arg

[edit]

Since there are mainly two different principal branches in the arg-codomain in mathematical use (see also Argument), I mentioned both in defining the atan2 function via these different branches, distinguishing them for notational consistency by writing Arg and Ârg, respectively, trying to be as terse as possible with this clerical detail. However, I think it is of encyclopedic value not to brush over this, saving a few (~ 5) lines.

Since there are reservations to mentioning both standards this making the article obtuse, I ask for further ideas. Purgy (talk) 07:48, 13 July 2018 (UTC)Reply

Defining atan2 via arctan

[edit]

In this case there is no ambiguity wrt the codomain (-π/2,π/2) of the standard principle branch Arctan, but there are subtleties wrt the quotient argument (y/x) of the atan2, and its inherent discontinuity in its domain, when changing between the three necessary branches of arctan.

Additionally, defining atan2 via arctan allows for employing clever alternatives:

  • The use of "cot(x/y)" (watch out the inversion) introduces an Arccot with codomain (-π/2,π/2) and a discontinuity at 0. Shifting this up and down by π/2, according to the sign of y, yields the desired three branches of atan2 as negative arctan-branches, leaving just to separately take care of y = 0.
  • The use of a half angle property. The inherent factor 2 in this identity allows to exhaust the open part of the full codomain (-π,π] of atan2, by doubling the result of the Arctan within (-π/2,π/2), leaving just the margin π for an extra alternative in the definition. Massaging the argument expression yields a minor variant.

While the second variant seems to go uncommented, the first variant is replaced by an incorrect composition of the immediate Arctan-access and this variant. The argumentation that this replacement were compact is evidently wrong, its usefulness is unsourced, and the claim that wrong definitions would not matter in practical applications is obviously a flawed argument. Putting forward that the discontinuity of the atan2 function were ostensible is also flawed in itself.

This is my suggestion for this definition, where already the first alternative covers almost the whole X/Y-plane, and the single exception y = 0 is dealt with in the remaining three.

Please, comment. Purgy (talk) 10:21, 13 July 2018 (UTC)Reply

There are a few things to comment about. First, it is not me bringing into this any axe-grinding. Just being firm about what is technically correct and technically useful.
The reason for a strict functional definition (over an ambiguous, but correct, expression) is in case someone is going to implement this in a computer program. Otherwise, for mathematical purposes, the ambiguous expression is correct and more useful because of its ambiguous flexibility. Just choose whichever half-plane best serves your needs. That was the reason for the two DSP illustrations, of which purpose seemed to be missed. It's just an example, but it's a real-world example that illustrates the usefulness of the ambiguous expression.
If this were to be used as a definition for implementation, remember that the common series for is good for . Then, as a function, this is better:
With the argument to known to have magnitude no larger than 1, a straight-forward series (with no additional tests for case) can be implemented for it. 50.47.108.245 (talk) 00:04, 18 July 2018 (UTC)Reply
It is obvious that there are arbitrarily many variants to calculate appropriate values for a certain notion, like here atan2(y,x), especially, since there are already arbitrarily many ways to give a well defined meaning to this notion. Besides the doubt that series are a widely applied algorithm to calculate concrete values, the prime task in this chapter is to give a clean meaning to the notion in a most accessible way. Besides the, perhaps unsatisfactory, simple renaming to Arg(x,y), the article offers a straightforward definition, justifying the naming, via the unhandy Arctan(y/x), which necessarily needs an exception for x = 0 and for the discontinuity of the atan2 along y = 0 and x < 0. The arguably complex look of this definition is the price for its straightforwardness.
The next two variants in my suggestion exploit, respectively, the shift between the tan and cot, introducing the expression Arctan(x/y) (note the inverted argument!), and a trigonometric half-angle identity. Both variants give a maximally compact definition of the atan2 at the expense of being less obvious.
The immediately above suggestion may or may not be a variant, that is especially apt for calculation, preferred in specific applications, or that has non-obvious merits for calling it better, but it certainly does not prevail in readability. Discussing it in detail:
  1. The first line, excluding (0,0), is necessary in all variants.
  2. The second line contains the same expression as the immediate Arctan-definition, restricted to a region for dubious advantages in calculation.
  3. The third and the fourth line contain expressions identical to the single expression in my suggestion, again with restricted regions for an assumed background in calculation.
  4. The fifth and the sixth line also apply given expressions, and are necessary to complement the given regions to the full domain of atan2.
Summing it up, the most recent suggestion offers no new conceptual access to the atan2-function. It is neither immediately acessible, nor in any way compact, but is only justified by assumed advantages in calculating Arctan-values in a specific manner, that may lack any application in real computation. Purgy (talk) 09:32, 22 July 2018 (UTC)Reply
Purgy, don't think for a minute that the changes you have made, make the article better or more readable. There is no consensus to those changes. The functional definition mentioned above is not meant for "publication" but to make a point about what a function, that is numerically well-behaved and useful for implementation, might look like. But it's not meant for the mainspace.
But the expression (function) you keep changing this to is truly useless in every sense of the word:
No one will ever use that definition either for mathematical reference (which is what the first definition of the restored version is) nor for implementation. And you have no cited references for that. When the angle is close to zero and the sign of the angle undetermined, no one should be using . It's a lousy expression with an ostensible discontinuity that is unnecessary and no practical nor elegant attribute. 50.47.108.245 (talk) 18:59, 23 July 2018 (UTC)Reply
IP50.47.108.245, don't think for a minute that the changes you have made, make the article better or more readable. There is no consensus to those changes.
Please, let's have had enough of this language, and let's start some arguing about improvements. In my last edit I tried to respect your interest in numerical aspects by adding an identity to satisfy bounds, considered to be important for calculation, even when I doubt that they are. I am not focused on this aspect of the topic, and would appreciate you adding relevant information on this. I do however try to keep the conceptual math part separate from the numerical math. I think being explicit about the formal background is relevant in an encyclopedia, even when the numerical info is comparatively terse as of now.
I appreciate any improvement of my efforts to put the conceptual "definitions" of atan2 on a solid base to a more readable, but also consistent form. I pointed out already above where the reinstated version lacks reasoning and that it contains partially poor mathematics. This is the target I am aiming my details at, btw, at an expense of ~700 chars.
Furthermore, please, start to accept that all the unmotivatedly grouped lines (as far as they are correct) in the definitions of the current version are (as explained already) identical to, and fully covered by the fewer lines in well sorted variants of my suggestion, and that an inherent jump-discontinuity along a full ray in the X/Y-plane is within math concepts not just an ostensible one. WP is (tries to be) an encyclopedia, not a cookbook. Purgy (talk) 05:36, 25 July 2018 (UTC)Reply
Purgy, "mak[ing] the article better or more readable" and "consensus" regarding "changes" is the language of wikipedia.
The convention of atan2() returning values in the range [0, 2π) is so rare and obscure that I cannot find a single use of it. Elevating this alternate convention from footnote does not improve the article.
The definition as originally presented is still the most straightforward initial definition of the function:
The lede paragraph that also defines the function (but without an explicit function of x and y) in terms of Polar coordinate system and the complex arg() needs some good work. And, historically, even though there was a reference to Fortran IV, the first documented appearance of atan2() is Fortran 77. 50.47.108.245 (talk) 18:40, 26 July 2018 (UTC)Reply
Would you please mind to note that
  • to my knowledge I never wrote about a convention of atan2() returning values (from)(?) in the range [0, 2π) necessary modification due to intransparent edit of above comment 06:49, 27 July 2018 (UTC), and that
  • I do not object to the immediately above given atan2-definition, and finally, that
  • I cannot perceive any adherence from your side to the language of WP, which you seem to claim I would not cling to.
I am interested in improving this article, but not in getting rebuffed with wrong claims and and inappropriate admonishing. I wait for some constructive reply to the thread I started above with #Defining atan2 via Arg. Purgy (talk) 21:07, 26 July 2018 (UTC)Reply
Purgy, now you've been explicit that you're a hypocrite. (All this defensiveness about "language".) The onus is on you to expose one item of "mathematical rubbish". 50.47.108.245 (talk) 18:19, 30 July 2018 (UTC)Reply

For the time being I am tired of any further attempts to come to a reasonable consensus on any improvement of this article. Ongoing personal offenses, mathematically inane conceptions, and absolute lack of any readiness for cooperation are to blame. Read it to your liking. Purgy (talk) 13:04, 31 July 2018 (UTC)Reply

Reverse the order of arguments and negate the arguments

[edit]

While the order of arguments can be reversed by mistake, it can be reversed intentionally to achieve a different purpose. In engineering problems, especially in the area of solar energy application, the solar azimuth angle, which can be computed from the x- and y-component of the vector pointing to the Sun using the atan2 function, normally measures from due North (positive y-axis) or due South (negative y-axis), this can be achieved by using atan2(x, y) or atan2(-x, -y). Notice the order of x and y and negative signs. In both of these cases, clockwise angles are positive. Maybe this can be added in a new section. --Roland (talk) 22:22, 31 October 2019 (UTC)Reply

Derivative across Heaviside step function boundary

[edit]

I disagree the statement "this derivative is continuously defined except at the origin,". My belief is that coordinate derivative across Heaviside step function boundary should include Dirac delta function term.  Preceding unsigned comment added by Textdirected (talkcontribs) 02:05, 1 November 2020 (UTC)Reply

The derivatives
are 100 % correct. They are defined in and continuous there. The same is, of course, true for the total differential.
You are kind of right wrt the principal value of , which is kind of an artifact − similar to the Heaviside step function. The latter has derivative 0 almost everywhere. Where not you may employ some Dirac delta function term of height exactly 1. For the derivatives of the height of the Dirac delta function term is exactly 0. Weird? Isn't it weird?
In summary, the phenomenon resembles more the complex logarithm than the Heaviside step function. −Nomen4Omen (talk) 13:36, 1 November 2020 (UTC)Reply

Truly bad article

[edit]

The article is extremely confusing, because it makes assertions about the relation between atan2(y,x) and arctan(y/x) without defining which conventions it is assuming for arctan. (At least not until much later in the article.)

If the article is to make sense, then it must be clear on this point.

Also: The atan2(y,x) function as implemented in computer systems is not multivalued. So this article should make that unambiguously clear. One of the illustrations shows it to be multivalued, and this is wrong.2601:200:C000:1A0:492D:B65:DB52:4EFE (talk) 20:46, 23 May 2021 (UTC)Reply

This criticism is overall bit vague and hard to turn into specific changes/improvements. The relation graphed in the figure, is "multivalued" in the domain (first coordinate). The axes are clearly labeled, this figure doesn't seem like a problem to me. It’s hard to graph a function of 2 inputs in a 2-dimensional picture. –jacobolus (t) 22:42, 22 October 2022 (UTC)Reply
I took a couple swings at cleaning up the first 2 sections, making them more concise and hopefully a bit more comprehensible. Does that help at all? –jacobolus (t) 07:02, 23 October 2022 (UTC)Reply

Decomposing a rotation matrix missing

[edit]

http://nghiaho.com/?page_id=846  Preceding unsigned comment added by 2A02:810A:1840:1ED4:C05C:C067:55B1:DE00 (talk) 13:35, 22 October 2022 (UTC)Reply

If you think this is an important application of atan2, feel free to add it (if others disagree, they can start a discussion explaining why). I don’t think it’s quite fair to say that any particular application of a general purpose tool is "missing" with the implication that it is essential to discuss. –jacobolus (t) 22:45, 22 October 2022 (UTC)Reply

avoiding over-lengthy implementation section

[edit]

@Quantling I reverted your most recent change, because I think it takes us back in the direction of (what I found to be) a mess that we had a few years ago, see special:permalink/1117668569#Definition and computation. I don't think our goal should be to write a long list of alternative computer implementations, but to try to concisely explain the topic, without excessive distraction. One case-based definition seems to me like plenty, and I think we can assume that readers who need a variant can figure it out. –jacobolus (t) 00:20, 21 January 2026 (UTC)Reply

Yes, that past presentation is an overwhelming mess. In the present situation, I find the cases array for the half-angle formulae easier to parse than working through the sentences. (Obviously, or I wouldn't have made the edit!) Let's see if any other editors have thoughts about this. —Quantling (talk | contribs) 01:04, 21 January 2026 (UTC)Reply

Formulation in terms of half-angle tangent

[edit]

@David Eppstein @Jacobolus et al. I am in favor of keeping the half-angle tangent formulation in the article. However, it needs a citation for noteworthiness. The present citation is newer than the presence of the formulation in this Wikipedia article, which makes it an after-the-fact justification of sorts; potentially, the citation mentions this formulation because Wikipedia does. If you have one or more citations from further back, that'd be much better. My brief search did not uncover any — I was trying to look at books like Numerical Recipes but I didn't always have sufficient access. —Quantling (talk | contribs) 13:39, 11 July 2026 (UTC)Reply

The half-angle tangent formula is of course important in trigonometry. But this article is not really about trigonometry in general; it's about a standard computing library routine that is convenient for certain trigonometric computations. The removed material claims that "it can be convenient" to express the result of that routine, not by calling the routine, but by a different formula. Is this supposed to mean that, when implementing atan2, these formulas are computationally useful? Is it supposed to mean that when you think your code wants to call atan2, you should instead use one of these formulas, which are by the way expressed as formulas and not as code? It is completely unclear to me what the point of this material is supposed to be. —David Eppstein (talk) 16:46, 11 July 2026 (UTC)Reply
There are some contexts where someone has easy access to common mathematical functions like square root and (arc)tan, but for one reason or another cannot (or does not want to) write conditional logic, but where it's still handy to have access to a 4-quadrant arctan function. Maybe inside a calculator tool, or from a graphics shader, or in some quick prototype one-liner. This relation seems well worth mentioning in this article, and quite harmless. I don't think we need to do an exhaustive literature search to justify it (there's no rule that says Wikipedia articles can't cite recent sources) or have a long debate about it.
If someone's hunting for things to remove from this article or sections to rewrite, there's a lot of lower-hanging fruit. –jacobolus (t) 17:59, 11 July 2026 (UTC)Reply
If we're mentioning it in the article, we should mention it in a way that is actually useful to readers. Saying that the atan2 function obeys a certain trigonometric identity is not useful for people trying to use atan2 to calculate things. It is backwards. What circumstance do you have in mind that a reader would find this formula, in this form, useful for anything? What are they going to do with that information?
What I would expect to see here is: if you're trying to calculate [some formula], what you want to use is [some expression involving atan2]. But instead, what I see is: if you calculate [atan2 itself], what you get is [some complicated formula]. Why do I care? What use case is this aimed at? —David Eppstein (talk) 18:10, 11 July 2026 (UTC)Reply
A reader who already has access to an existing atan2 implementation that they plan to use does not need this. But a reader who does not have access to an atan2 function and wants to implement one might find this useful, depending on their context.
Kusaka & Tanaka mentioned as a context "embedded in a field-programmable gate array (FPGA) or micro controller unit (MCU), or when performing many large-scale operations on a graphics processing unit (GPU)."
Feel free to add (in a different section) further material about applications, along the lines of "if you're trying to calculate [some formula], what you want to use is [some expression involving atan2]."jacobolus (t) 18:16, 11 July 2026 (UTC)Reply
Ok, so it is for implementing atan2, not for using atan2. That information is not visible in the article.
If it is for implementing atan2, what is the implementer supposed to do about the fact that the formula on the right hand side is also an atan of a quotient? Call something recursively? Is it maybe intended as a workaround for when you want atan2 but you only have atan available? If this is actually relevant its relevance needs to be made much clearer. —David Eppstein (talk) 18:22, 11 July 2026 (UTC)Reply
"workaround for when you want atan2 but you only have atan available" – that's where I personally have used this (more than once, in multiple different contexts). Or where you have neither available but you know how to implement atan, or perhaps where you do have an atan2 implementation already but it is too computationally expensive. –jacobolus (t) 18:51, 11 July 2026 (UTC)Reply
This section used to be completely absurd: In 2022 it looked like special:permalink/1117668569#Definition and computation. I cleaned most of it out, but I think we can keep the parts that actually say things that are not completely redundant. –jacobolus (t) 16:47, 11 July 2026 (UTC)Reply

On a closely related note — do we have citation support, in the context of atan2, for using the version of the half-angle formula with y in the denominator? For example, it can fail even when we're not in the mentioned case of x < 0 and y = 0. I'm going to boldly remove it. —Quantling (talk | contribs) 19:54, 11 July 2026 (UTC)Reply

I'm sure we could find sources for that if we hunted, but I don't care much either way. Someone who needs to implement this and runs into numerical problems with the subtraction can probably figure it out. –jacobolus (t) 20:55, 11 July 2026 (UTC)Reply
I'd also drop the mention of "Pythagorean addition" which seems like a distracting aside. (If we really need a wiklink for being the radius of a circle through the point , it should be to hypotenuse or the like.) –jacobolus (t) 21:00, 11 July 2026 (UTC)Reply
Pythagorean addition aka hypot definitely needs to be mentioned somewhere in this article. It and atan2 go together hand in hand as the functions that convert Cartesian coordinates to polar. And as this article is about the computational function, not the general concept of trigonometry, so too the Pythagorean addition article (again, aka hypot) is more about the computational function than the general concept of radius or distance.
And if you think it's silly to have a function for the formula and an article about that function, when you could just write the formula, then (1) look in the mirror for atan2, and (2) Knuth has written that it should be the other way around: most of the time when we want to compute square roots it's really Pythagorean addition that we want. —David Eppstein (talk) 21:50, 11 July 2026 (UTC)Reply
I don't think it's silly to have a function for this formula or an article about it. I just think it's a distracting aside in the context where it was referenced here. It would be much more relevant to mention in a section about converting between polar and rectangular coordinates. –jacobolus (t) 22:07, 11 July 2026 (UTC)Reply
I added a bit to the beginning of the Motivation section. Feel free to rewrite if you can make it clearer. –jacobolus (t) 01:08, 12 July 2026 (UTC)Reply