# FreeBSD Manual Pages

```ATAN2(3)	       FreeBSD Library Functions Manual		      ATAN2(3)

NAME
atan2, atan2f, atan2l, carg, cargf, cargl -- arc tangent and complex
phase angle functions

LIBRARY
Math Library (libm, -lm)

SYNOPSIS
#include <math.h>

double
atan2(double y, double x);

float
atan2f(float y, float x);

long double
atan2l(long double	y, long	double x);

#include <complex.h>

double
carg(double complex z);

float
cargf(float complex z);

long double
cargl(long	double complex z);

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

The carg(), cargf(), and cargl() functions	compute	the complex argument
(or phase angle) of z.  The complex argument is the number	theta such
that z = r	* e^(I * theta), where r = cabs(z).  The call carg(z) is
equivalent	to atan2(cimag(z), creal(z)), and similarly for	cargf()	and
cargl().

RETURN VALUES
The atan2(), atan2f(), and	atan2l() functions, if successful, return the
arc tangent of y/x	in the range [-pi, +pi]	radians.  Here are some	of the
special cases:

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 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).	 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);

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

STANDARDS
The atan2(), atan2f(), atan2l(), carg(), cargf(), and cargl() functions
conform to	ISO/IEC	9899:1999 ("ISO	C99").

FreeBSD	13.0			 July 31, 2008			  FreeBSD 13.0
```

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=carg&sektion=3&manpath=FreeBSD+12.1-RELEASE+and+Ports>