Namespaces
Variants

atan2, atan2f, atan2l

From cppreference.net
< c ‎ | numeric ‎ | math
Common mathematical functions
Functions
Basic operations
(C99)
(C99)
(C99)
(C99) (C99) (C99) (C23)
Maximum/minimum operations
Exponential functions
Power functions
Trigonometric and hyperbolic functions
Nearest integer floating-point
(C99) (C99) (C99)
(C23) (C23) (C23) (C23)
Floating-point manipulation
Narrowing operations
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
Quantum and quantum exponent
Decimal re-encoding functions
Total order and payload functions
Classification
Error and gamma functions
(C99)
(C99)
(C99)
(C99)
Types
Macro constants
Special floating-point values
Arguments and return values
Error handling
Fast operation indicators
헤더 파일에 정의됨 <math.h>
float atan2f ( float y, float x ) ;
(1) (C99부터)
double atan2 ( double y, double x ) ;
(2)
long double atan2l ( long double y, long double x ) ;
(3) (C99부터)
_Decimal32  atan2d32 ( _Decimal32 y, _Decimal32 x ) ;
(4) (C23부터)
_Decimal64  atan2d64 ( _Decimal64 y, _Decimal64 x ) ;
(5) (C23부터)
_Decimal128 atan2d128 ( _Decimal128 y, _Decimal128 x ) ;
(6) (C23부터)
헤더 파일에 정의됨 <tgmath.h>
#define atan2( y, x )
(7) (C99부터)
1-6) 인수의 부호를 사용하여 올바른 사분면을 결정하면서 y / x 의 아크탄젠트를 계산합니다.
7) 타입-제네릭 매크로: 인자 중 하나라도 long double 타입을 가지면 (3) ( atan2l )이 호출됩니다. 그렇지 않고 인자 중 하나라도 정수 타입이거나 double 타입을 가지면 (2) ( atan2 )이 호출됩니다. 그 외의 경우에는 (1) ( atan2f )이 호출됩니다.

함수 (4-6) 은 구현이 __STDC_IEC_60559_DFP__ 를 미리 정의하는 경우에만 선언됩니다 (즉, 구현이 10진 부동 소수점 숫자를 지원하는 경우).

(C23부터)

목차

매개변수

x, y - 부동소수점 값

반환값

If no errors occur, the arc tangent of y / x ( arctan(
y
x
)
) in the range [-π ; +π] radians, is returned.
Y 인수
반환 값
X 인수

도메인 오류가 발생하면 구현에서 정의한 값이 반환됩니다.

언더플로우로 인해 범위 오류가 발생하는 경우, 올바른 결과(반올림 후)가 반환됩니다.

오류 처리

오류는 math_errhandling 에 명시된 대로 보고됩니다.

x y 가 모두 0인 경우 도메인 오류가 발생할 수 있습니다.

구현체가 IEEE 부동 소수점 연산(IEC 60559)을 지원하는 경우:

  • x y 가 모두 0이면, 정의역 오류가 발생하지 않음 ;
  • x y 가 모두 0이면, 치역 오류도 발생하지 않음;
  • y 가 0이면, 극점 오류가 발생하지 않음;
  • y ±0 이고 x 가 음수 또는 -0 이면, ±π 가 반환됨;
  • y ±0 이고 x 가 양수 또는 +0 이면, ±0 가 반환됨;
  • y ±∞ 이고 x 가 유한하면, ±π/2 가 반환됨;
  • y ±∞ 이고 x -∞ 이면, ±3π/4 가 반환됨;
  • y ±∞ 이고 x +∞ 이면, ±π/4 가 반환됨;
  • x ±0 이고 y 가 음수이면, -π/2 가 반환됨;
  • x ±0 이고 y 가 양수이면, +π/2 가 반환됨;
  • x -∞ 이고 y 가 유한하며 양수이면, 가 반환됨;
  • x -∞ 이고 y 가 유한하며 음수이면, 가 반환됨;
  • x +∞ 이고 y 가 유한하며 양수이면, +0 가 반환됨;
  • x +∞ 이고 y 가 유한하며 음수이면, -0 가 반환됨;
  • x 또는 y 가 NaN이면, NaN이 반환됨.

참고 사항

atan2 ( y, x ) carg ( x + I * y ) 와 동등합니다.

POSIX는 언더플로우가 발생한 경우, y / x 값을 반환하도록 규정하며, 이를 지원하지 않을 경우 DBL_MIN , FLT_MIN , 그리고 LDBL_MIN 이하의 구현 정의 값을 반환합니다.

예제

#include <math.h>
#include <stdio.h>
int main(void)
{
    // 일반적인 사용법: 두 인자의 부호가 사분면을 결정함
    // atan2(1,1) = +pi/4, 제1사분면
    printf("(+1,+1) cartesian is (%f,%f) polar\n", hypot( 1, 1), atan2( 1, 1));
    // atan2(1, -1) = +3pi/4, 제2사분면
    printf("(+1,-1) cartesian is (%f,%f) polar\n", hypot( 1,-1), atan2( 1,-1));
    // atan2(-1,-1) = -3pi/4, 제3사분면
    printf("(-1,-1) cartesian is (%f,%f) polar\n", hypot(-1,-1), atan2(-1,-1));
    // atan2(-1,-1) = -pi/4, 제4사분면
    printf("(-1,+1) cartesian is (%f,%f) polar\n", hypot(-1, 1), atan2(-1, 1));
    // 특수 값
    printf("atan2(0, 0) = %f atan2(0, -0)=%f\n", atan2(0,0), atan2(0,-0.0));
    printf("atan2(7, 0) = %f atan2(7, -0)=%f\n", atan2(7,0), atan2(7,-0.0));
}

출력:

(+1,+1) cartesian is (1.414214,0.785398) polar
(+1,-1) cartesian is (1.414214,2.356194) polar
(-1,-1) cartesian is (1.414214,-2.356194) polar
(-1,+1) cartesian is (1.414214,-0.785398) polar
atan2(0, 0) = 0.000000 atan2(0, -0)=3.141593
atan2(7, 0) = 1.570796 atan2(7, -0)=1.570796

참고문헌

  • C23 표준 (ISO/IEC 9899:2024):
  • 7.12.4.4 atan2 함수들 (p: TBD)
  • 7.25 타입-제네릭 수학 <tgmath.h> (p: TBD)
  • F.10.1.4 atan2 함수들 (p: TBD)
  • C17 표준 (ISO/IEC 9899:2018):
  • 7.12.4.4 atan2 함수들 (p: 174)
  • 7.25 유형-일반 수학 <tgmath.h> (p: 272-273)
  • F.10.1.4 atan2 함수들 (p: 378)
  • C11 표준 (ISO/IEC 9899:2011):
  • 7.12.4.4 atan2 함수들 (p: 239)
  • 7.25 유형-일반 수학 <tgmath.h> (p: 373-375)
  • F.10.1.4 atan2 함수들 (p: 519)
  • C99 표준 (ISO/IEC 9899:1999):
  • 7.12.4.4 The atan2 functions (p: 219)
  • 7.22 Type-generic math <tgmath.h> (p: 335-337)
  • F.9.1.4 The atan2 functions (p: 456)
  • C89/C90 표준 (ISO/IEC 9899:1990):
  • 4.5.2.4 The atan2 function

참고 항목

(C99) (C99)
아크 사인을 계산합니다 ( arcsin(x) )
(함수)
(C99) (C99)
아크 코사인을 계산합니다 ( arccos(x) )
(함수)
(C99) (C99)
아크 탄젠트를 계산합니다 ( arctan(x) )
(함수)
(C99) (C99) (C99)
복소수의 위상각을 계산합니다
(함수)