Namespaces
Variants
Views
Actions

std::atan2

From cppreference.com
< cpp‎ | numeric‎ | math
 
 
 
Common mathematical functions
Functions
Basic operations
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
Exponential functions
(C++11)
(C++11)
(C++11)
(C++11)
Power functions
(C++11)
(C++11)
Trigonometric and hyperbolic functions
(C++11)
(C++11)
(C++11)
Error and gamma functions
(C++11)
(C++11)
(C++11)
(C++11)
Nearest integer floating point operations
(C++11)(C++11)(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
Floating point manipulation functions
(C++11)(C++11)
(C++11)
(C++11)
(C++11)(C++11)
(C++11)
Classification/Comparison
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Macro constants
(C++11)(C++11)(C++11)(C++11)(C++11)
 
Defined in header <cmath>
float       atan2( float y, float x );
(1)
double      atan2( double y, double x );
(2)
long double atan2( long double y, long double x );
(3)
Promoted    atan2( Arithmetic1 y, Arithmetic2 x );
(4) (since C++11)

Computes the inverse tangent of y/x using the signs of arguments to correctly determine quadrant.

4) If any argument has integral type, it is cast to double. If any other argument is long double, then the return type is long double, otherwise it is double.

Contents

[edit] Parameters

x, y - values of floating-point or integral types

[edit] Return value

Arc tangent of y/x in radians in the range of [-π; π] radians.

Y argument
Return value
math-atan2.png
X argument

std::atan2(+0, -0) return . std::atan2(-0, -0) return

std::atan2(+0, +0) return +0. std::atan2(-0, +0) return -0

std::atan2(+0, x) return if x<0 and +0 if x>0.

std::atan2(-0, x) return if x<0 and -0 if x>0.

std::atan2(y, 0) return -π/2 if y<0 and +π/2 if y>0.

std::atan2(y, -) returns if y>0 and if y<0

std::atan2(y, +) returns +0 if y>0 and -0 if y<0

std::atan2(+∞, x) returns +π/2. std::atan2(-∞, x) returns -π/2.

std::atan2(+∞, -) returns +3π/4. std::atan2(-∞, -) returns -3π/4.

std::atan2(+∞, +) returns +π/4. std::atan2(-∞, +) returns -π/4.


[edit] Example

#include <cmath>
#include <utility>
#include <iostream>
 
std::pair<double, double> cartesian_to_polar(double x, double y)
{
    return {std::hypot(x, y), std::atan2(y,x)};
}
 
int main()
{
    std::pair<double, double> polar = cartesian_to_polar(1, 1);
    std::cout << "(1,1) cartesian is (" << polar.first
               << "," << polar.second<< ") polar\n";
}

Output:

(1,1) cartesian is (1.41421,0.785398) polar


[edit] See also

computes arc tangent (arctan(x))
(function) [edit]
computes arc sine (arcsin(x))
(function) [edit]
computes arc cosine (arccos(x))
(function) [edit]
computes tangent (tan(x))
(function) [edit]
C documentation for atan2