MirBSD manpage: atan2(3), atan2f(3)

ATAN2(3)                   BSD Programmer's Manual                    ATAN2(3)


     atan2, atan2f - arc tangent function of two variables




     #include <math.h>

     atan2(double y, double x);

     atan2f(float y, float x);


     The atan2() and atan2f() functions compute the principal value of the arc
     tangent of y/x, using the signs of both arguments to determine the qua-
     drant of the return value.


     The atan2() function, if successful, returns the arc tangent of y/x in
     the range [-pi, +pi] radians. If both x and y are zero, the global vari-
     able errno is set to EDOM. On the VAX:

     atan2(y, x):=        atan(y/x)            if x > 0,
                          sign(y)*(pi - atan(|y/x|))         if x < 0,
                          0                    if x = y = 0, or
                          sign(y)*pi/2         if x = 0 y.


     The function atan2() defines "if x > 0," atan2(0, 0) = 0 on a VAX despite
     that previously atan2(0, 0) may have generated an error message. The rea-
     sons for assigning a value to atan2(0, 0) are these:

           1.   Programs that test arguments to avoid computing atan2(0, 0)
                must be indifferent to its value. Programs that require it to
                be invalid are vulnerable to diverse reactions to that invali-
                dity on diverse computer systems.

           2.   The atan2() function is used mostly to convert from rectangu-
                lar (x,y) to polar (r,theta) coordinates that must satisfy x =
                r*cos theta and y = r*sin theta. These equations are satisfied
                when (x=0,y=0) is mapped to (r=0,theta=0) on a VAX. In gen-
                eral, conversions to polar coordinates should be computed

                      r    := hypot(x,y);  ... := sqrt(x*x+y*y)
                      theta     := atan2(y,x).

           3.   The foregoing formulas need not be altered to cope in a rea-
                sonable way with signed zeros and infinities on a machine that
                conforms to IEEE 754; the versions of hypot(3) and atan2()
                provided for such a machine are designed to handle all cases.
                That is why atan20, -0) = ±pi for instance. In general the
                formulas above are equivalent to these:

                      r := sqrt(x*x+y*y); if r = 0 then x := copysign(1,x);


     acos(3), asin(3), atan(3), cos(3), cosh(3), math(3), sin(3), sinh(3),
     tan(3), tanh(3)


     The atan2() function conforms to ANSI X3.159-1989 ("ANSI C89").

MirBSD #10-current               May 2, 1991                                 1

Generated on 2022-12-24 01:00:14 by $MirOS: src/scripts/roff2htm,v 1.113 2022/12/21 23:14:31 tg Exp $ — This product includes material provided by mirabilos.

These manual pages and other documentation are copyrighted by their respective writers; their sources are available at the project’s CVSweb, AnonCVS and other mirrors. The rest is Copyright © 2002–2022 MirBSD.

This manual page’s HTML representation is supposed to be valid XHTML/1.1; if not, please send a bug report — diffs preferred.

Kontakt / Impressum & Datenschutzerklärung