ATAN2(3)

명칭
atan2, atan2f - 2 개의 변수의 역탄젠트 함수

프로그램 라이브러리
libm

서식
#include <math.h> double atan2(double y, double x) float atan2f(float y, float x)

해설
atan2() 함수와 atan2f() 함수는, y/x 의 역탄젠트의 주치를 계산합니다. 그 때, 양쪽 모두의 인수의 부호를 사용해 반환값의 상한을 판정합니다.

반환값
atan2() 함수와 atan2f() 함수는, 처리가 성공하면(자), 범위 [-, +] 의 라디안으로, y/x 의 역탄젠트를 돌려줍니다. x (와)과 y 의 양쪽 모두가 0 의 경우, 글로벌 변수 errno 하지만 EDOM (으)로 설정됩니다. VAX 그럼 다음과 같습니다.
atan2(y, x) := |
atan(y/x) | x > 0 의 경우
 | sign(y)*( -
atan(\*(Bay/x\*(Ba, )) | x < 0 의 경우
 |
0 | x = y = 0 의 경우,
 |
sign(y)*\*(Pi/2 | x = 0 = y 의 경우

주
함수 atan2() 하 VAX 그리고 ``x > 0 의 경우'', atan2(0, 0) = 0 (을)를 정의합니다. 이전에는 atan2(0, 0) (은)는 에러 메세지를 생성하고 있었다 가능성이 있는 것에도 불구하고입니다. atan2(0, 0) 에 값을 할당하는 이유는 다음과 같습니다.

1.  atan2(0, 0) 의 계산을 회피하기 위해서 인수를 테스트하는 프로그램은, 이 값에 무관계한 필요가 있습니다. 이것이 무효라는 점을 요구하는 프로그램은, 다양한 컴퓨터 시스템상에서 이것이 무효라는 점에 대한 다양한 반응에 대해 취약합니다.

2.  atan2() 함수는, 구형 (x, y) (을)를, 극좌표 (으)로 변환하기 위해서(때문에) 가장 자주(잘) 사용됩니다. 이 좌표는, 및 y = (을)를 채웁니다. 채워지는 것은, (x=0, y=0)가 VAX 그리고 (r=0, theta=0) 에 MAP 될 때입니다. 일반적으로, 극좌표에의 변환은 다음과 같이 해 계산할 필요가 있습니다.

        r	:= hypot(x, y); ... := sqrt(x*x+y*y)
        theta   := atan2(y, x)

3.  상기의 공식은, IEEE 754 에 준거하는 머신에서는 부호 첨부의 0 및 무한하게, 합리적인 방법으로, 대처하려고 변경할 필요는 없습니다. 그러한 머신용으로 제공되고 있다 hypot(3) (와)과 atan2() (은)는 모든 케이스를 처리하는 듯 설계되고 있습니다. 이것이 예를 들어 atan2(±0, -0) = ± 인 이유입니다. 일반적으로, 상기의 공식은 다음의 것과 동등합니다.

        r := sqrt(x*x+y*y); r =0 의 경우는, x := copysign(1, x);

관련 항목
acos(3), asin(3), atan(3), cos(3), cosh(3), math(3), sin(3), sinh(3), tan(3), tanh(3)

표준
atan2() 함수는 isoC 에 적합하고 있습니다.