atan2, atan2f, atan2l
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
헤더 파일에 정의됨
<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부터) |
atan2l
)이 호출됩니다. 그렇지 않고 인자 중 하나라도 정수 타입이거나
double
타입을 가지면
(2)
(
atan2
)이 호출됩니다. 그 외의 경우에는
(1)
(
atan2f
)이 호출됩니다.
|
함수
(4-6)
은 구현이
|
(C23부터) |
목차 |
매개변수
| x, y | - | 부동소수점 값 |
반환값
If no errors occur, the arc tangent of y / x ( arctan(| 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)
|
아크 사인을 계산합니다 (
\({\small\arcsin{x} }\)
arcsin(x)
)
(함수) |
|
(C99)
(C99)
|
아크 코사인을 계산합니다 (
\({\small\arccos{x} }\)
arccos(x)
)
(함수) |
|
(C99)
(C99)
|
아크 탄젠트를 계산합니다 (
\({\small\arctan{x} }\)
arctan(x)
)
(함수) |
|
(C99)
(C99)
(C99)
|
복소수의 위상각을 계산합니다
(함수) |
|
C++ documentation
for
atan2
|
|