float atan2f( float y, float x );
(1) (since C99)double atan2( double y, double x );
(2)long double atan2l( long double y, long double 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)#define atan2( y, x )
(7) (since C99)1-6) Computes the arc tangent of y / x using the signs of arguments to determine the correct quadrant.
7) Type-generic macro: If any argument has type long double, (3) (atan2l
) is called. Otherwise, if any argument has integer type or has type double, (2) (atan2
) is called. Otherwise, (1) (atan2f
) is called.
The functions (4-6) are declared if and only if the implementation predefines __STDC_IEC_60559_DFP__
(i.e. the implementation supports decimal floating-point numbers).
If no errors occur, the arc tangent of
y / x(
arctan()) in the range
[-π ; +π]radians, is returned.
Y argument
Return value
X argument
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.
[edit] Error handlingErrors are reported as specified in math_errhandling
.
Domain error may occur if x and y are both zero.
If the implementation supports IEEE floating-point arithmetic (IEC 60559):
±0
and x is negative or -0
, 屹
is returned;±0
and x is positive or +0
, ±0
is returned;屉
and x is finite, 屹/2
is returned;屉
and x is -â
, ±3π/4
is returned;屉
and x is +â
, 屹/4
is returned;±0
and y is negative, -π/2
is returned;±0
and y is positive, +π/2
is returned;-â
and y is finite and positive, +π
is returned;-â
and y is finite and negative, -π
is returned;+â
and y is finite and positive, +0
is returned;+â
and y is finite and negative, -0
is returned;atan2(y, x) is equivalent to carg(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 than DBL_MIN, FLT_MIN, and LDBL_MIN is returned.
[edit] Example#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 I printf("(+1,+1) cartesian is (%f,%f) polar\n", hypot( 1, 1), atan2( 1, 1)); // atan2(1, -1) = +3pi/4, Quad II printf("(+1,-1) cartesian is (%f,%f) polar\n", hypot( 1,-1), atan2( 1,-1)); // atan2(-1,-1) = -3pi/4, Quad III printf("(-1,-1) cartesian is (%f,%f) polar\n", hypot(-1,-1), atan2(-1,-1)); // atan2(-1,-1) = -pi/4, Quad IV printf("(-1,+1) cartesian is (%f,%f) polar\n", hypot(-1, 1), atan2(-1, 1)); // special values printf("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) polar atan2(0, 0) = 0.000000 atan2(0, -0)=3.141593 atan2(7, 0) = 1.570796 atan2(7, -0)=1.570796[edit] References
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4