수학식 및 부동 소수점 지원
UCRT(유니버설 C 런타임 라이브러리)는 ISO C99에 필요한 모든 함수를 포함하여 많은 정수 및 부동 소수점 수학 라이브러리 함수를 제공합니다. 부동 소수점 함수는 성능과 정확성을 균형 있게 유지하도록 구현됩니다. 올바르게 반올림된 결과를 생성하는 것은 막대한 비용이 들 수 있으므로 이러한 함수는 올바르게 반올림된 결과에 대한 근사치를 효율적으로 생성하도록 설계됩니다. 대부분의 경우 생성되는 결과는 올바르게 반올림된 결과의 +/-1 ULP(최소 정밀도 단위) 내에 있지만 부정확성이 더 큰 경우가 있을 수 있습니다.
ISO C Standard 11(C11) 이상의 <tgmath.h>
경우 헤더는 포함 및 <complex.h>
포함 <math.h>
외에도 매개 변수 형식에 따라 해당 수학 함수를 호출하는 매크로를 제공합니다. 자세한 내용은 형식 제네릭 수학을 참조하세요.
대부분의 부동 소수점 수학 라이브러리 함수에는 다양한 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에 따라 다를 수 있습니다.
Microsoft C/C++ 및 Microsoft Visual C++의 이전 16비트 버전에서는 long double
형식을 80비트 정밀도 부동 소수점 데이터 형식으로 지원했습니다. Visual C++의 이후 버전에서 long double
데이터 형식은 double
형식과 동일한 64비트 정밀도 부동 소수점 데이터 형식입니다. 컴파일러에서는 long double
및 double
을 서로 다른 형식으로 처리하지만 long double
함수는 해당 함수의 double
상응 함수와 동일합니다. CRT는 ISO C99 소스 코드 호환성을 위해 수학 함수의 long double
버전을 제공하지만, 이진 표현이 다른 컴파일러의 이진 표현과 다를 수 있습니다.
지원되는 수학식 및 부동 소수점 루틴
루틴에서 반환된 값 | 사용 |
---|---|
abs , labs , llabs , _abs64 |
정수 형식의 절대값을 계산합니다. |
acos , acosf , acosl |
아크코사인을 계산합니다. |
acosh , acoshf , acoshl |
쌍곡선 아크코사인을 계산합니다. |
asin , asinf , asinl |
아크사인을 계산합니다. |
asinh , asinhf , asinhl |
쌍곡선 아크사인을 계산합니다. |
atan , atanf , atanl , atan2 , atan2f , atan2l |
아크탄젠트를 계산합니다. |
atanh , atanhf , atanhl |
쌍곡선 아크탄젠트를 계산합니다. |
_atodbl , _atodbl_l |
로캘별 문자열을 로 변환합니다. double |
atof , _atof_l |
문자열을 로 변환합니다. double |
_atoflt , _atoflt_l , _atoldbl , _atoldbl_l |
로캘별 문자열을 로 변환합니다.float long double |
cbrt , cbrtf , cbrtl |
세제곱근을 계산합니다. |
ceil , ceilf , ceill |
최곳값을 계산합니다. |
_chgsign , _chgsignf , _chgsignl |
덧셈 역원을 계산합니다. |
_clear87 , _clearfp |
부동 소수점 상태 레지스터를 가져오고 지웁니다. |
_control87 , _controlfp , __control87_2 |
부동 소수점 제어 단어를 가져오고 설정합니다. |
_controlfp_s |
보안 버전의 _controlfp |
copysign , copysignf , copysignl , _copysign , _copysignf , _copysignl |
한 인수의 크기 및 다른 인수의 부호가 있는 값을 반환합니다. |
cos , cosf , cosl |
사인을 계산합니다. |
cosh , coshf , coshl |
쌍곡선 사인을 계산합니다. |
div , ldiv , lldiv |
두 정수 값의 몫과 나머지를 계산합니다. |
_ecvt , ecvt |
문자열로 double 변환 |
_ecvt_s |
보안 버전의 _ecvt |
erf , erff , erfl |
오차 함수를 계산합니다. |
erfc , erfcf , erfcl |
보상 오차 함수를 계산합니다. |
exp , expf , expl |
지수 ex를 계산합니다. |
exp2 , exp2f , exp2l |
지수 2x를 계산합니다. |
expm1 , expm1f , expm1l |
ex-1를 계산합니다. |
fabs , fabsf , fabsl |
부동 소수점 형식의 절대값을 계산합니다. |
_fcvt , fcvt |
부동 소수점 숫자를 문자열로 변환합니다. |
_fcvt_s |
보안 버전의 _fcvt |
fdim , fdimf , fdiml |
두 값의 양수 차이를 결정합니다. |
feclearexcept |
지정된 부동 소수점 예외를 지웁니다. |
fegetenv |
현재 부동 소수점 환경을 저장합니다. |
fegetexceptflag |
지정된 부동 소수점 예외 상태를 가져옵니다. |
fegetround |
부동 소수점 반올림 모드를 가져옵니다. |
feholdexcept |
중단 없는 부동 소수점 예외 모드를 설정합니다. |
feraiseexcept |
지정된 부동 소수점 예외를 발생시킵니다. |
fesetenv |
현재 부동 소수점 환경을 설정합니다. |
fesetexceptflag |
지정된 부동 소수점 상태 플래그를 설정합니다. |
fesetround |
지정된 부동 소수점 반올림 모드를 설정합니다. |
fetestexcept |
설정된 부동 소수점 예외 상태 플래그를 결정합니다. |
feupdateenv |
부동 소수점 환경을 복원한 다음, 이전 예외를 발생시킵니다. |
floor , floorf , floorl |
최젓값을 계산합니다. |
fma , fmaf , fmal |
단일 곱셈 누산기(Fused Multiply-Add)를 계산합니다. |
fmax , fmaxf , fmaxl |
인수의 최댓값을 계산합니다. |
fmin , fminf , fminl |
인수의 최소값을 계산합니다. |
fmod , fmodf , fmodl |
부동 소수점 나머지를 계산합니다. |
_fpclass , _fpclassf |
부동 소수점 값의 분류를 반환합니다. |
fpclassify |
부동 소수점 값의 분류를 반환합니다. |
_fpieee_flt |
부동 소수점 예외에 대한 처리기를 설정합니다. |
_fpreset |
부동 소수점 환경을 다시 설정합니다. |
frexp , frexpf , frexpl |
부동 소수점 숫자의 가수와 지수를 가져옵니다. |
_gcvt , gcvt |
부동 소수점 숫자를 문자열로 변환합니다. |
_gcvt_s |
보안 버전의 _gcvt |
_get_FMA3_enable , _set_FMA3_enable |
x64에서 FMA3 명령을 사용하기 위한 플래그를 가져오거나 설정합니다. |
hypot , hypotf , hypotl , _hypot , _hypotf , _hypotl |
빗변을 계산합니다. |
ilogb , ilogbf , ilogbl |
밑이 2인 정수 지수를 계산합니다. |
imaxabs |
정수 형식의 절대값을 계산합니다. |
imaxdiv |
두 정수 값의 몫과 나머지를 계산합니다. |
isfinite , _finite , _finitef |
유한 값인지 여부를 결정합니다. |
isgreater , isgreaterequal , isless , islessequal , islessgreater , isunordered |
두 부동 소수점 값의 순서 비교 |
isinf |
부동 소수점 값이 무한인지 확인 |
isnan , _isnan , _isnanf |
NaN에 대한 부동 소수점 값을 테스트합니다. |
isnormal |
부동 소수점 값이 유한하고 비정상적인지 여부를 테스트합니다. |
_j0 , _j1 , _jn |
Bessel 함수를 계산합니다. |
ldexp , ldexpf , ldexpl |
x*2n을 계산합니다. |
lgamma , lgammaf , lgammal |
감마 함수의 절대값에 대한 자연 로그를 계산합니다. |
llrint , llrintf , llrintl |
부동 소수점 값을 가장 long long 가까운 값으로 반올림합니다. |
llround , llroundf , llroundl |
부동 소수점 값을 가장 long long 가까운 값으로 반올림합니다. |
log , logf , logl , log10 , log10f , log10l |
자연 로그 또는 상용 로그를 계산합니다. |
log1p , log1pf , log1pl |
1 + x의 자연 로그를 계산합니다. |
log2 , log2f , log2l |
밑이 2인 로그를 계산합니다. |
logb , logbf , logbl , _logb , _logbf |
부동 소수점 값의 지수를 반환합니다. |
lrint , lrintf , lrintl |
부동 소수점 값을 가장 long 가까운 값으로 반올림합니다. |
_lrotl , _lrotr |
정수 값을 왼쪽 또는 오른쪽으로 회전합니다. |
lround , lroundf , lroundl |
부동 소수점 값을 가장 long 가까운 값으로 반올림합니다. |
_matherr |
기본 수학 오류 처리기입니다. |
__max |
두 값 중 큰 값을 반환하는 매크로입니다. |
__min |
두 값 중 작은 값을 반환하는 매크로입니다. |
modf , modff , modfl |
부동 소수점 값을 소수 부분과 정수 부분으로 분할합니다. |
nan , nanf , nanl |
QNaN(Quiet NaN) 값을 반환합니다. |
nearbyint , nearbyintf , nearbyintl |
반올림된 값을 반환합니다. |
nextafter , nextafterf , nextafterl , _nextafter , _nextafterf |
표현 가능한 다음 부동 소수점 값을 반환합니다. |
nexttoward , nexttowardf , nexttowardl |
표현 가능한 다음 부동 소수점 값을 반환합니다. |
pow , powf , powl |
의 값을 반환합니다. x y |
remainder , remainderf , remainderl |
두 부동 소수점 값의 몫과 나머지를 계산합니다. |
remquo , remquof , remquol |
두 정수 값의 나머지를 계산합니다. |
rint , rintf , rintl |
부동 소수점 값을 반올림합니다. |
_rotl , _rotl64 , _rotr , _rotr64 |
비트를 정수 형식으로 회전합니다. |
round , roundf , roundl |
부동 소수점 값을 반올림합니다. |
_scalb , _scalbf |
인수의 크기를 2의 거듭제곱으로 조정합니다. |
scalbn , scalbnf , scalbnl , scalbln , scalblnf , scalblnl |
부동 소수점 숫자와 정수 계열을 곱합니다. FLT_RADIX |
_set_controlfp |
부동 소수점 제어 단어를 설정합니다. |
_set_SSE2_enable |
SSE2 명령을 사용하거나 사용하지 않도록 설정합니다. |
signbit |
부동 소수점 값의 부호 비트를 테스트합니다. |
sin , sinf , sinl |
사인을 계산합니다. |
sinh , sinhf , sinhl |
쌍곡선 사인을 계산합니다. |
sqrt , sqrtf , sqrtl |
제곱근을 계산합니다. |
_status87 , _statusfp , _statusfp2 |
부동 소수점 상태 단어를 가져옵니다. |
strtof , _strtof_l |
문자열을 로 변환합니다. float |
strtold , _strtold_l |
문자열을 로 변환합니다. long double |
tan , tanf , tanl |
탄젠트를 계산합니다. |
tanh , tanhf , tanhl |
쌍곡선 탄젠트를 계산합니다. |
tgamma , tgammaf , tgammal |
감마 함수를 계산합니다. |
trunc , truncf , truncl |
소수 부분을 자릅니다. |
_wtof , _wtof_l |
와이드 문자열을 로 변환합니다. double |
_y0 , _y1 , _yn |
Bessel 함수를 계산합니다. |
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기