Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
ATAN2(3)		 BSD Library Functions Manual		      ATAN2(3)

NAME
     atan2, atan2f -- arc tangent functions of two variables

LIBRARY
     Math Library (libm, -lm)

SYNOPSIS
     #include <math.h>

     double
     atan2(double y, double x);

     float
     atan2f(float y, float x);

DESCRIPTION
     The atan2() and the atan2f() functions 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.

RETURN VALUES
     The atan2() and the atan2f() functions, if	successful, return the arc
     tangent of	y/x in the range [-pi, +pi] radians.  If both x	and y are
     zero, the global variable 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.

NOTES
     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
     reasons 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 inva-
		lidity 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 satis-
		fied when (x=0,y=0) is mapped to (r=0,theta=0) on a VAX.  In
		general, conversions to	polar coordinates should be computed
		thus:

		      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 atan2(+-0, -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);

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

STANDARDS
     The atan2() function conforms to ISO/IEC 9899:1990	("ISO C90").

BSD				  May 2, 1991				   BSD

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUES | NOTES | SEE ALSO | STANDARDS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=atan2&sektion=3&manpath=FreeBSD+5.2-RELEASE+and+Ports>

home | help