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
±0and x is <0,±shall be returned.If y is
±0and x is >0,±0shall be returned.If y is <
0and x is±0,-/2shall be returned.If y is >
0and x is±0,/2shall be returned.If x is
0, a pole error shall not occur.If either x or y is
NaN, aNaNshall 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 60559Floating-Point option is supported, y/x should be returned.If y is
±0and x is-0,±shall be returned.If y is
±0and x is+0,±0shall 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,±0shall be returned.For finite values of x, if y is
±Inf,±/2shall be returned.If y is
±Infand x is-Inf,±3/4shall be returned.If y is
±Infand x is+Inf,±/4shall 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, thenerrnoshall 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