atan2#
Synopsis#
#include <math.h>
double atan2(double y, double x);
float atan2f(float y, float x);
Status#
Partially implemented
Conformance#
IEEE Std 1003.1-2017
Description#
These functions shall compute the principal value of the arc tangent of y/x, using the signs of both arguments to determine the quadrant of the return value.
An application wishing to check for error situations should set errno
to zero and call
feclearexcept(FE_ALL_EXCEPT)
before calling these functions. On return, if errno
is non-zero or
fetestexcept(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW)
is non-zero, an error has occurred.
Return value#
Upon successful completion, these functions shall return the arc tangent of y/x in the range [-PI,PI]
radians.
If y is
±0
and x is <0
,±
shall be returned.If y is
±0
and x is >0
,±0
shall be returned.If y is <
0
and x is±0
,-/2
shall be returned.If y is >
0
and x is±0
,/2
shall be returned.If x is
0
, a pole error shall not occur.If either x or y is
NaN
, aNaN
shall be returned.If the correct value would cause underflow, a range error may occur, and
atan()
,atan2f()
, andatan2l()
shall return an implementation-defined value no greater in magnitude thanDBL_MIN
,FLT_MIN
, andLDBL_MIN
, respectively.If the
IEC 60559
Floating-Point option is supported, y/x should be returned.If y is
±0
and x is-0
,±
shall be returned.If y is
±0
and x is+0
,±0
shall be returned.For finite values of ± y >
0
, if x is-Inf
,±
shall be returned.For finite values of ± y >
0
, if x is+Inf
,±0
shall be returned.For finite values of x, if y is
±Inf
,±/2
shall be returned.If y is
±Inf
and x is-Inf
,±3/4
shall be returned.If y is
±Inf
and x is+Inf
,±/4
shall be returned.If both arguments are
0
, a domain error shall not occur.
Errors#
These functions may fail if:
Range Error
The result underflow’s:
If the integer expression
(math_errhandling & MATH_ERRNO)
is non-zero, thenerrno
shall be set toERANGE
. If the integer expression(math_errhandling & MATH_ERREXCEPT)
is non-zero, then the underflow floating-point exception shall be raised.
Tests#
Untested
Known bugs#
None