C 복합 수학식 지원
Microsoft C 런타임 라이브러리(CRT)는 ISO C99에 필요한 모든 함수를 포함하여 복잡한 수학 라이브러리 함수를 제공합니다. 컴파일러는 a 또는 _Complex
키워드를 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
인 . cabsl
cabsf
복합 상수 및 매크로
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 |
복합 및 부동 소수점 숫자 곱셈 |