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, then errno
shall be set to ERANGE
.
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