|
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Defined in header <math.h> | ||
float atan2f(float y,float x); | (1) | (since C99) |
double atan2(double y,double x); | (2) | |
longdouble atan2l(longdouble y,longdouble x); | (3) | (since C99) |
_Decimal32 atan2d32( _Decimal32 y, _Decimal32 x); | (4) | (since C23) |
_Decimal64 atan2d64( _Decimal64 y, _Decimal64 x); | (5) | (since C23) |
_Decimal128 atan2d128( _Decimal128 y, _Decimal128 x); | (6) | (since C23) |
Defined in header <tgmath.h> | ||
#define atan2( y, x ) | (7) | (since C99) |
atan2l) is called. Otherwise, if any argument has integer type or has typedouble,(2) (atan2) is called. Otherwise,(1) (atan2f) is called.The functions(4-6) are declared if and only if the implementation predefines | (since C23) |
Contents |
| x, y | - | floating-point value |
| y |
| x |
If a domain error occurs, an implementation-defined value is returned.
If a range error occurs due to underflow, the correct result (after rounding) is returned.
Errors are reported as specified inmath_errhandling.
Domain error may occur ifx andy are both zero.
If the implementation supports IEEE floating-point arithmetic (IEC 60559):
±0 andx is negative or-0,±π is returned;±0 andx is positive or+0,±0 is returned;±∞ andx is finite,±π/2 is returned;±∞ andx is-∞,±3π/4 is returned;±∞ andx is+∞,±π/4 is returned;±0 andy is negative,-π/2 is returned;±0 andy is positive,+π/2 is returned;-∞ andy is finite and positive,+π is returned;-∞ andy is finite and negative,-π is returned;+∞ andy is finite and positive,+0 is returned;+∞ andy is finite and negative,-0 is returned;atan2(y, x) is equivalent tocarg(x+ I*y).
POSIX specifies that in case of underflow,y/ x is the value returned, and if that is not supported, an implementation-defined value no greater thanDBL_MIN,FLT_MIN, andLDBL_MIN is returned.
#include <math.h>#include <stdio.h> int main(void){// normal usage: the signs of the two arguments determine the quadrant// atan2(1,1) = +pi/4, Quad Iprintf("(+1,+1) cartesian is (%f,%f) polar\n",hypot(1,1), atan2(1,1));// atan2(1, -1) = +3pi/4, Quad IIprintf("(+1,-1) cartesian is (%f,%f) polar\n",hypot(1,-1), atan2(1,-1));// atan2(-1,-1) = -3pi/4, Quad IIIprintf("(-1,-1) cartesian is (%f,%f) polar\n",hypot(-1,-1), atan2(-1,-1));// atan2(-1,-1) = -pi/4, Quad IVprintf("(-1,+1) cartesian is (%f,%f) polar\n",hypot(-1,1), atan2(-1,1)); // special valuesprintf("atan2(0, 0) = %f atan2(0, -0)=%f\n", atan2(0,0), atan2(0,-0.0));printf("atan2(7, 0) = %f atan2(7, -0)=%f\n", atan2(7,0), atan2(7,-0.0));}
Output:
(+1,+1) cartesian is (1.414214,0.785398) polar(+1,-1) cartesian is (1.414214,2.356194) polar(-1,-1) cartesian is (1.414214,-2.356194) polar(-1,+1) cartesian is (1.414214,-0.785398) polaratan2(0, 0) = 0.000000 atan2(0, -0)=3.141593atan2(7, 0) = 1.570796 atan2(7, -0)=1.570796
(C99)(C99) | computes arc sine (\({\small\arcsin{x} }\)arcsin(x)) (function)[edit] |
(C99)(C99) | computes arc cosine (\({\small\arccos{x} }\)arccos(x)) (function)[edit] |
(C99)(C99) | computes arc tangent (\({\small\arctan{x} }\)arctan(x)) (function)[edit] |
(C99)(C99)(C99) | computes the phase angle of a complex number (function)[edit] |
C++ documentation foratan2 | |