====== atan2 ====== $$\mathrm{atan2}: \mathbb{R}^2 \setminus (0, 0) \mapsto (-\pi, \pi]$$ $$\mathrm{atan2}(y, x) = \begin{cases} +\frac{\pi}{2} &: (x = 0) \land (y > 0) \\ -\frac{\pi}{2} &: (x = 0) \land (y < 0) \\ \tan^{-1}\frac{y}{x} &: x > 0 \\ \tan^{-1}\frac{y}{x} + \pi &: (x < 0) \land (y \geq 0) \\ \tan^{-1}\frac{y}{x} - \pi &: (x < 0) \land (y < 0) \\ \end{cases} $$ where $\tan^{-1} x$ is the principal value of the arctangent, ie. the one in the interval $(-\pi, \pi]$. ===== Properties ===== [{{ ::atan2-plot.png?200|A 3D plot of atan2(y, x).}}] * $\mathrm{atan2}(-y, x) = -\mathrm{atan2}(y, x)$ * $\mathrm{atan2}(cy, cx) = \mathrm{atan2}(y, x)$ for any $c > 0$. * Discontinuous along $(x < 0) \land (y = 0)$: For any $x < 0$: * $\lim_{y\to 0^-}\mathrm{atan2}(y, x) = -\pi$ * $\lim_{y\to 0^+}\mathrm{atan2}(y, x) = \pi$ ==== Partial derivatives ==== The partial derivatives, just like the function itself, are defined everywhere except at the origin. Furthermore, unlike the function, they're not discontinuous along $y = 0$ (except at the origin). $$ \begin{align} \frac{\partial}{\partial y} &= \frac{x}{x^2 + y^2} \\ \frac{\partial}{\partial x} &= \frac{-y}{x^2 + y^2} \end{align} $$ Interesingly, the function $\tan^{-1}\frac{y}{x}$ has the same partial derivatives. ===== Systems of equations involving the cosine and the sine of an unknown ==== [{{ ::polar-coords.png?200|A geometric intepretation: θ = atan2(y,x).}}] Let $\theta, x, y \in \mathbb{R}$. Consider the following system of equations: $$ \begin{cases} \sin{\theta} = y \\ \cos{\theta} = x \end{cases} $$ If $x^2 + y^2 = 1$, this system has a unique (up to a multiple of $2\pi$) solution: $$ \theta = \mathrm{atan2}(y, x) + 2\pi k $$ for any $k \in \mathbb{Z}$. For simplicity k is often set to zero. Because $\mathrm{atan2}(\sin{\theta}, \cos{\theta}) = \theta$ (up to a multiple of $2\pi$), atan2 can be thought of as the "inverse" of the cosine and sine of the same argument. ===== C's atan2 ===== The definition at the beginning of this article is suitable for mathematical analysis. However, a more intricate definition is needed for floating-point computation, one that takes signed zeros and infinites into account. The following appears in the C standard: $$\mathrm{atan2}(y, x) = \begin{cases} \mathrm{NaN} &: (y = \mathrm{NaN}) \lor (x = \mathrm{NaN}) \\ \pm \pi &: (x < +0) \land (y = \pm 0) \\ \pm 0 &: (x > +0) \land (y = \pm 0) \\ -\frac{\pi}{2} &: (x = \pm 0) \land (y < -0) \\ \frac{\pi}{2} &: (x = \pm 0) \land (y > +0) \\ \pm \pi &: (x = -0) \land (y = \pm 0) \\ \pm 0 &: (x = +0) \land (y = \pm 0) \\ \pi &: (x = -\infty) \land (y > +0) \land (y < +\infty) \\ -\pi &: (x = -\infty) \land (y < -0) \land (y > -\infty) \\ +0 &: (x = +\infty) \land (y > +0) \land (y < +\infty) \\ -0 &: (x = +\infty) \land (y < -0) \land (y > -\infty) \\ \pm \frac{\pi}{2} &: (x > -\infty) \land (x < +\infty) \land (y = \pm \infty) \\ \pm \frac{3\pi}{4} &: (x = -\infty) \land (y = \pm \infty) \\ \pm \frac{\pi}{4} &: (x = +\infty) \land (y = \pm \infty) \\ \\ \tan^{-1}\frac{y}{x} &: x > +0 \\ \tan^{-1}\frac{y}{x} + \pi &: (x < -0) \land (y \geq 0) \\ \tan^{-1}\frac{y}{x} - \pi &: (x < -0) \land (y < -0) \\ \end{cases} $$ In this definition $\mathrm{atan2}(0, 0)$ is //not// undefined. ===== See also ===== * [[https://linux.die.net/man/3/atan2|atan2(3)]] * [[wp>Atan2|Atan2]] * [[wp>Argument_(complex_analysis)|Argument (complex analysis)]] * [[wp>Inverse_trigonometric_functions|Inverse trigonometric functions]]