atan
, , atanf
atan2
atanl
atan2f
,atan2l
Вычисляет арктангенс x
(atan
, atanf
и atanl
) или арктангенс y
/x
(atan2
, atan2f
и atan2l
).
Синтаксис
double atan( double x );
float atanf( float x );
long double atanl( long double x );
#define atan(X) // Requires C11 or higher
float atan( float x ); // C++ only
long double atan( long double x ); // C++ only
double atan2( double y, double x );
float atan2f( float y, float x );
long double atan2l( long double y, long double x );
#define atan2(Y, X) // Requires C11 or higher
float atan2( float y, float x ); // C++ only
long double atan2( long double y, long double x ); // C++ only
Параметры
x
, y
Все числа.
Возвращаемое значение
atan
возвращает арктангент x
в диапазоне -π/2 к π/2 радианам. atan2
возвращает арктангент y
/x
в диапазоне -π в π радианы. Если значение x
равно 0, atan
возвращает 0. Если оба параметра atan2
равны 0, функция возвращает значение 0. Все результаты даются в радианах.
Используя признаки обоих параметров, atan2
определяет квадрант возвращаемого значения.
Входные данные | Исключение SEH | Исключение _matherr |
---|---|---|
± QNaN, IND | ничего | _DOMAIN |
Замечания
Функция atan
вычисляет арктангенс (функцию обратного тангенса) x
. atan2
вычисляет арктангенс y
/x
(если x
равно 0; atan2
возвращает π/2; если y
положительно, -π/2, если y
отрицательно, или 0, если y
равно 0).
Если вы используете atan
или atan2
макрос из <tgmath.h>
, тип аргумента определяет, какая версия функции выбрана. Дополнительные сведения см . в разделе "Математика с универсальным типом".
Функция atan
содержит реализацию, которая использует Streaming SIMD Extensions 2 (SSE2). Сведения и ограничения по использованию реализации SSE2 см. в разделе _set_SSE2_enable
.
Так как C++ разрешает перегрузку, можно вызывать перегрузки atan
и atan2
принимать float
или long double
аргументы. В программе C, если вы не используете макрос для вызова этой функции, и всегда принимаете <tgmath.h>
аргументы и возвращаете значениеdouble
.double
atan2
atan
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.
Требования
Маршрут | Обязательный заголовок (C) | Обязательный заголовок (C++) |
---|---|---|
atan , , atan2 atan2f atanf atanl ,atan2l |
<math.h> |
<cmath> или <math.h> |
atan , atan2 макросы |
<tgmath.h> |
Пример
// crt_atan.c
// arguments: 5 0.5
#include <math.h>
#include <stdio.h>
#include <errno.h>
int main( int ac, char* av[] )
{
double x, y, theta;
if( ac != 3 ){
fprintf( stderr, "Usage: %s <x> <y>\n", av[0] );
return 1;
}
x = atof( av[1] );
theta = atan( x );
printf( "Arctangent of %f: %f\n", x, theta );
y = atof( av[2] );
theta = atan2( y, x );
printf( "Arctangent of %f / %f: %f\n", y, x, theta );
return 0;
}
Arctangent of 5.000000: 1.373401
Arctangent of 0.500000 / 5.000000: 0.099669
См. также
Поддержка математических и плавающих точек
acos
, , acosf
acosl
asin
, , asinf
asinl
cos
, , cosf
cosl
_matherr
sin
, , sinf
sinl
tan
, , tanf
tanl
_CIatan
_CIatan2