atan, atanf, atan2, atan2f
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
See Also
Floating-Point Support Routines | acos | asin, cos | _matherr | sin | tan | Run-Time Routines and .NET Framework Equivalents