atan, atanf, atanl, atan2, 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.doubleatan2atan

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.

Требования

Маршрут Обязательный заголовок (C) Обязательный заголовок (C++)
atan, atan2, atanf, atan2f, 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