Calculates the arctangent of x (atan or atanf) or the arctangent of y/x (atan2 or atan2f).
double
atan(
double
x
);
float atan(
float
x
); // C++ only
long double atan(
long double
x
); // C++ only
double
atan2(
double
y
,
double
x
);
float atan2(
float
y
,
float
x
); // C++ only
long double atan2(
long double
y
,
long double
x
); // C++ only
float
atanf(
float
x
);
float
atan2f(
float
y
,
float
x
);
Parameters
-
x, y
- Any numbers.
Return Value
atan returns the arctangent of x in the range of -?/2 to ?/2 radians.atan2 returns the arctangent of y/x in the range -? to ? radians. If x is 0, atan returns 0. If both parameters of atan2 are 0, the function returns 0.
atan2 uses the signs of both parameters to determine the quadrant of the return value.
| Input |
SEH Exception |
Matherr Exception |
| ± QNAN,IND |
none |
_DOMAIN |
Remarks
The atan function calculates the arctangent of x. atan2 calculates the arctangent of y/x. atan2 is well defined for every point other than the origin, even if x equals 0 and y does not equal 0.
atan has an implementation that uses Streaming SIMD Extensions 2 (SSE2). See _set_SSE2_enable for information and restrictions on using the SSE2 implementation.
C++ allows overloading, so you can call overloads of atan and atan2. In a C program, atan and atan2 always take and return doubles.
Requirements
| Routine |
Required header |
Compatibility |
|
atan, atan2, atanf, atan2f |
<math.h> |
ANSI, Win 98, Win Me, Win NT, Win 2000, Win XP |
For additional compatibility information, see Compatibility in the Introduction.
Libraries
All versions of the C run-time libraries.
Example
// crt_atan.c
// arguments: 0.5 5
#include <math.h>
#include <stdio.h>
#include <errno.h>
int main( int ac, char* av[] )
{
double x1, x2, y;
if( ac != 3 ){
fprintf( stderr, "Usage: %s <x1> <x2>\n", av[0] );
return;
}
x1 = atof( av[1] );
y = atan( x1 );
printf( "Arctangent of %f: %f\n", x1, y );
x2 = atof( av[2] );
y = atan2( x1, x2 );
printf( "Arctangent of %f / %f: %f\n", x1, x2, y );
}
Output
Arctangent of 0.500000: 0.463648
Arctangent of 0.500000 / 5.000000: 0.099669