C 복합 수학식 지원

Microsoft C 런타임 라이브러리(CRT)는 ISO C99에 필요한 모든 함수를 포함하여 복잡한 수학 라이브러리 함수를 제공합니다. 컴파일러는 직접 또는 _Complex 키워드(keyword) 지원하지 complex 않으므로 Microsoft 구현에서는 구조체 형식을 사용하여 복소수를 나타냅니다.

이러한 함수는 수정을 통해 성능을 균형있게 분배하도록 구현됩니다. 올바르게 반올림된 결과를 생성하는 것은 막대한 비용이 들 수 있으므로 이러한 함수는 올바르게 반올림된 결과에 대한 근사치를 효율적으로 생성하도록 설계됩니다. 대부분의 경우 생성되는 결과는 정확하지 않은 경우가 있을 수 있지만 올바르게 반올림된 결과의 ULP(최소 정밀도)의 +/-1 단위 내에 있습니다.

복합 수학식 루틴은 해당 구현에 대한 부동 소수점 수학식 라이브러리 함수를 사용합니다. 이러한 함수는 다양한 CPU 아키텍처를 다양하게 구현합니다. 예를 들어 32비트 x86 CRT에는 64비트 x64 CRT와 다른 구현이 있을 수 있습니다. 또한 일부 함수에는 지정된 CPU 아키텍처에 대한 여러 구현이 있을 수 있습니다. 가장 효율적인 구현은 CPU에서 지원되는 명령 집합에 따라 런타임에 동적으로 선택됩니다. 예를 들어 32비트 x86 CRT에서 일부 함수에는 x87 구현 및 an SSE2 구현이 둘 다 있습니다. SSE2를 지원하는 CPU에서 실행될 경우 더 빠른 SSE2 구현이 사용됩니다. SSE2를 지원하지 않는 CPU에서 실행하는 경우 느린 x87 구현이 사용됩니다. 수학 라이브러리 함수의 구현에 따라 다른 CPU 명령 및 다른 알고리즘을 사용하여 결과를 생성할 수 있으므로 CPU에 따라 함수에서 다른 결과가 생성될 수 있습니다. 대부분의 경우 결과는 올바르게 반올림된 결과의 +/-1 ULP 내에 있지만 실제 결과는 CPU에 따라 다를 수 있습니다.

복합 수학식에 사용되는 형식

헤더의 complex.h Microsoft 구현에서는 이러한 형식을 C99 표준 네이티브 복합 형식에 해당하는 형식으로 정의합니다.

표준 형식 Microsoft 형식
float complex 또는 float _Complex _Fcomplex
double complex 또는 double _Complex _Dcomplex
long double complex 또는 long double _Complex _Lcomplex

헤더는 math.h 함수에 사용되는 별도의 형식 struct _complex을 정의합니다 _cabs . 형식은 struct _complex 해당하는 복합 수학 함수cabs인 . cabslcabsf

복합 상수 및 매크로

I는 .에 의해 { 0.0f, 1.0f }초기화된 복합 형식 _Fcomplex 으로 정의됩니다.

삼각 함수

함수 설명
cacos, cacosf, cacosl 복소수의 복합 아크코사인 컴퓨팅
casin, casinf, casinl 복소수의 복합 아크사인 컴퓨팅
catan, catanf, catanl 복소수의 복합 아크탄젠트 컴퓨팅
ccos, ccosf, ccosl 복소수의 복합 코사인 컴퓨팅
csin, csinf, csinl 복소수의 복합 사인 컴퓨팅
ctan, ctanf, ctanl 복소수의 복합 탄젠트 컴퓨팅

쌍곡선 함수

함수 설명
cacosh, cacoshf, cacoshl 복소수의 복합 쌍곡선 아크코사인 컴퓨팅
casinh, casinhf, casinhl 복소수의 복합 쌍곡선 아크사인 컴퓨팅
catanh, catanhf, catanhl 복소수의 복합 쌍곡선 아크탄젠트 컴퓨팅
ccosh, ccoshf, ccoshl 복소수의 복합 쌍곡선 코사인 컴퓨팅
csinh, csinhf, csinhl 복소수의 복합 쌍곡선 사인 컴퓨팅
ctanh, ctanhf, ctanhl 복소수의 복합 쌍곡선 탄젠트 컴퓨팅

지수 및 로그 함수

함수 설명
cexp, cexpf, cexpl 복소수의 밑이 e인 복합 지수 컴퓨팅
clog, clogf, clogl 복소수의 복합 자연 로그 컴퓨팅(밑이 e)
clog10, clog10f, clog10l 복소수의 밑이 10인 복합 로그 컴퓨팅

거듭제곱 및 절대값 함수

함수 설명
cabs, cabsf, cabsl 복소수의 복합 절대값(기준, 계수 또는 자릿수라고도 함) 컴퓨팅
cpow, cpowf, cpowl 복잡한 전원 함수 컴퓨팅
csqrt, csqrtf, csqrtl 복소수의 복합 제곱근 컴퓨팅

조작 함수

함수 설명
_Cbuild, _FCbuild, _LCbuild 실수 및 허수부에서 복소수 생성
carg, cargf, cargl 복소수의 인수(위상각이라고도 함) 컴퓨팅
cimag, cimagf, cimagl 복소수의 허수부 컴퓨팅
conj, conjf, conjl 복소수의 켤레 복소수 컴퓨팅
cproj, cprojf, cprojl 리만 구(Reimann sphere)에서 복소수의 사영 컴퓨팅
creal, crealf, creall 복소수의 실수부 컴퓨팅
norm, normf, norml 복소수의 제곱 자릿수 컴퓨팅

연산 함수

복소수는 Microsoft 컴파일러의 네이티브 형식이 아니므로 표준 산술 연산자는 복합 형식에 정의되지 않습니다. 편의상 이러한 복합 수학식 라이브러리 함수를 제공하여 사용자 코드에서 복소수의 제한된 조작을 가능하게 합니다.

함수 설명
_Cmulcc, _FCmulcc, _LCmulcc 두 복소수 곱셈
_Cmulcr, _FCmulcr, _LCmulcr 복합 및 부동 소수점 숫자 곱셈

참고 항목

형식-제네릭 수학
범주별 유버니설 C 런타임 루틴