Namespaces
Variants

cacosf, cacos, cacosl

From cppreference.net
헤더 파일에 정의됨 <complex.h>
float complex cacosf ( float complex z ) ;
(1) (C99부터)
double complex cacos ( double complex z ) ;
(2) (C99부터)
long double complex cacosl ( long double complex z ) ;
(3) (C99부터)
헤더 파일에 정의됨 <tgmath.h>
#define acos( z )
(4) (C99부터)
1-3) z 의 복소 아크 코사인을 계산하며, 실수 축을 따라 [−1,+1] 구간 외부에 분기 절단을 갖습니다.
4) 타입-제네릭 매크로: z 의 타입이 long double complex 인 경우 cacosl 이 호출됩니다. z 의 타입이 double complex 인 경우 cacos 가 호출되며, z 의 타입이 float complex 인 경우 cacosf 가 호출됩니다. z 가 실수 또는 정수인 경우, 매크로는 해당 실수 함수( acosf , acos , acosl )를 호출합니다. z 가 허수인 경우, 매크로는 해당 복소수 버전을 호출합니다.

목차

매개변수

z - 복소 인수

반환값

오류가 발생하지 않으면, 복소수 아크 코사인 값이 반환됩니다. 허수 축을 따라 무한하고 실수 축을 따라 [0; π] 구간에 있는 영역 내에서 반환됩니다.

오류 처리 및 특수 값

오류는 math_errhandling 과 일관되게 보고됩니다.

구현이 IEEE 부동 소수점 연산을 지원하는 경우,

  • cacos ( conj ( z ) ) == conj ( cacos ( z ) )
  • 만약 z ±0+0i 인 경우, 결과는 π/2-0i 입니다.
  • 만약 z ±0+NaNi 인 경우, 결과는 π/2+NaNi 입니다.
  • 만약 z x+∞i (임의의 유한한 x에 대해)인 경우, 결과는 π/2-∞i 입니다.
  • 만약 z x+NaNi (0이 아닌 임의의 유한한 x에 대해)인 경우, 결과는 NaN+NaNi 이며 FE_INVALID 가 발생할 수 있습니다.
  • 만약 z -∞+yi (임의의 양의 유한한 y에 대해)인 경우, 결과는 π-∞i 입니다.
  • 만약 z +∞+yi (임의의 양의 유한한 y에 대해)인 경우, 결과는 +0-∞i 입니다.
  • 만약 z -∞+∞i 인 경우, 결과는 3π/4-∞i 입니다.
  • 만약 z +∞+∞i 인 경우, 결과는 π/4-∞i 입니다.
  • 만약 z ±∞+NaNi 인 경우, 결과는 NaN±∞i 입니다 (허수부의 부호는 지정되지 않음).
  • 만약 z NaN+yi (임의의 유한한 y에 대해)인 경우, 결과는 NaN+NaNi 이며 FE_INVALID 가 발생할 수 있습니다.
  • 만약 z NaN+∞i 인 경우, 결과는 NaN-∞i 입니다.
  • 만약 z NaN+NaNi 인 경우, 결과는 NaN+NaNi 입니다.

참고 사항

역코사인(또는 아크 코사인)은 다가 함수이며 복소평면 상에서 가지 절단이 필요합니다. 가지 절단은 일반적으로 실수 축의 선분 (-∞,-1) (1,∞) 에 위치합니다.

The mathematical definition of the principal value of arc cosine is acos z =
1
2
π + i ln( i z + 1-z 2
)

모든 z에 대해, acos(z) = π - acos(-z)

예제

#include <stdio.h>
#include <math.h>
#include <complex.h>
int main(void)
{
    double complex z = cacos(-2);
    printf("cacos(-2+0i) = %f%+fi\n", creal(z), cimag(z));
    double complex z2 = cacos(conj(-2)); // or CMPLX(-2, -0.0)
    printf("cacos(-2-0i) (the other side of the cut) = %f%+fi\n", creal(z2), cimag(z2));
    // for any z, acos(z) = pi - acos(-z)
    double pi = acos(-1);
    double complex z3 = ccos(pi-z2);
    printf("ccos(pi - cacos(-2-0i) = %f%+fi\n", creal(z3), cimag(z3));
}

출력:

cacos(-2+0i) = 3.141593-1.316958i
cacos(-2-0i) (the other side of the cut) = 3.141593+1.316958i
ccos(pi - cacos(-2-0i) = 2.000000+0.000000i

참고문헌

  • C11 표준 (ISO/IEC 9899:2011):
  • 7.3.5.1 The cacos functions (p: 190)
  • 7.25 Type-generic math <tgmath.h> (p: 373-375)
  • G.6.1.1 The cacos functions (p: 539)
  • G.7 Type-generic math <tgmath.h> (p: 545)
  • C99 표준 (ISO/IEC 9899:1999):
  • 7.3.5.1 The cacos functions (p: 172)
  • 7.22 Type-generic math <tgmath.h> (p: 335-337)
  • G.6.1.1 The cacos functions (p: 474)
  • G.7 Type-generic math <tgmath.h> (p: 480)

참고 항목

(C99) (C99) (C99)
복소수 아크 사인 계산
(함수)
(C99) (C99) (C99)
복소수 아크 탄젠트 계산
(함수)
(C99) (C99) (C99)
복소수 코사인 계산
(함수)
(C99) (C99)
아크 코사인 계산 ( arccos(x) )
(함수)
C++ 문서 for acos