Namespaces
Variants
Views
Actions

std::atan2

From cppreference.com
 
 
 
Common mathematical functions
Functions
Basic operations
remainder(C++11)
remquo(C++11)
fma(C++11)
fmax(C++11)
fmin(C++11)
fdim(C++11)
nan
nanf
nanl
(C++11)
(C++11)
(C++11)
Exponential functions
exp
exp2(C++11)
expm1(C++11)
log
log10
log1p(C++11)
log2(C++11)
Power functions
sqrt
cbrt(C++11)
hypot(C++11)
pow
Trigonometric and hyperbolic functions
sinh
cosh
tanh
asinh(C++11)
acosh(C++11)
atanh(C++11)
Error and gamma functions
erf(C++11)
erfc(C++11)
lgamma(C++11)
tgamma(C++11)
Nearest integer floating point operations
ceil
floor
round
lround
llround
(C++11)
(C++11)
(C++11)
trunc(C++11)
nearbyint(C++11)
rint
lrint
llrint
(C++11)
(C++11)
(C++11)
Floating point manipulation functions
ldexp
scalbn
scalbln
(C++11)
(C++11)
ilogb(C++11)
logb(C++11)
frexp
modf
nextafter
nexttoward
(C++11)
(C++11)
copysign(C++11)
Classification
fpclassify(C++11)
isfinite(C++11)
isinf(C++11)
isnan(C++11)
isnormal(C++11)
signbit(C++11)
Macro constants
FP_NORMAL
FP_SUBNORMAL
FP_ZERO
FP_INFINITE
FP_NAN
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
FLT_EVAL_METHOD(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( Arithmetic y, Arithmetic 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 - floating point value

[edit] Return value

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

Y argument
Return value
math-atan2.png
X argument

[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]