수학식 및 부동 소수점 지원Math and floating-point support

UCRT(유버니설 C 런타임) 라이브러리는 ISO C99에 필요한 모든 함수를 포함하여 많은 정수 및 부동 소수점 수학 라이브러리 함수를 제공합니다.The Universal C Runtime library (UCRT) provides many integral and floating-point math library functions, including all of those required by ISO C99. 부동 소수점 함수는 성능과 정확성을 균형 있게 유지하도록 구현됩니다.The floating-point functions are implemented to balance performance with correctness. 올바르게 반올림된 결과를 생성하는 것은 막대한 비용이 들 수 있으므로 이러한 함수는 올바르게 반올림된 결과에 대한 근사치를 효율적으로 생성하도록 설계됩니다.Because producing the correctly rounded result may be prohibitively expensive, these functions are designed to efficiently produce a close approximation to the correctly rounded result. 부정확성이 더 큰 경우도 있을 수 있지만 대부분은 생성된 결과가 올바르게 반올림된 결과의 +/-1 ulp 내에 있습니다.In most cases, the result produced is within +/-1 ulp of the correctly rounded result, though there may be cases where there is greater inaccuracy.

대부분의 부동 소수점 수학 라이브러리 함수에는 다양한 CPU 아키텍처에 대한 다양한 구현이 있습니다.Many of the floating point math library functions have different implementations for different CPU architectures. 예를 들어 32비트 x86 CRT에는 64비트 x64 CRT와 다른 구현이 있을 수 있습니다.For example, the 32-bit x86 CRT may have a different implementation than the 64-bit x64 CRT. 또한 일부 함수에는 지정된 CPU 아키텍처에 대한 여러 구현이 있을 수 있습니다.In addition, some of the functions may have multiple implementations for a given CPU architecture. 가장 효율적인 구현은 CPU에서 지원되는 명령 집합에 따라 런타임에 동적으로 선택됩니다.The most efficient implementation is selected dynamically at run-time depending on the instruction sets supported by the CPU. 예를 들어 32비트 x86 CRT에서 일부 함수에는 x87 구현 및 an SSE2 구현이 둘 다 있습니다.For example, in the 32-bit x86 CRT, some functions have both an x87 implementation and an SSE2 implementation. SSE2를 지원하는 CPU에서 실행될 경우 더 빠른 SSE2 구현이 사용됩니다.When running on a CPU that supports SSE2, the faster SSE2 implementation is used. SSE2를 지원하지 않는 CPU에서 실행될 경우 더 느린 x87 구현이 사용됩니다.When running on a CPU that does not support SSE2, the slower x87 implementation is used. 수학 라이브러리 함수의 구현에 따라 다른 CPU 명령 및 다른 알고리즘을 사용하여 결과를 생성할 수 있으므로 CPU에 따라 함수에서 다른 결과가 생성될 수 있습니다.Because different implementations of the math library functions may use different CPU instructions and different algorithms to produce their results, the functions may produce different results across CPUs. 대부분은 결과가 올바르게 반올림된 결과의 +/-1 ulp 내에 있지만 실제 결과는 CPU에 따라 달라질 수 있습니다.In most cases, the results are within +/-1 ulp of the correctly rounded result, but the actual results may vary across CPUs.

이전 16비트 버전의 Microsoft C/C++ 및 Microsoft Visual C++에서는 long double 형식을 80비트 정밀도 부동 소수점 데이터 형식으로 지원했습니다.Previous 16-bit versions of Microsoft C/C++ and Microsoft Visual C++ supported the long double type as an 80-bit precision floating-point data type. Visual C++의 이후 버전에서 long double 데이터 형식은 double 형식과 동일한 64비트 정밀도 부동 소수점 데이터 형식입니다.In later versions of Visual C++, the long double data type is a 64-bit precision floating-point data type identical to the double type. 컴파일러는 long doubledouble을 고유 형식으로 처리하지만 long double 함수는 대응하는 double의 해당 부분과 동일합니다.The compiler treats long double and double as distinct types, but the long double functions are identical to their double counterparts. CRT는 ISO C99 소스 코드 호환성을 위해 수학식 함수의 long double 버전을 제공하지만, 이진 표현이 다른 컴파일러의 이진 표현과 다를 수 있습니다.The CRT provides long double versions of the math functions for ISO C99 source code compatibility, but note that the binary representation may differ from other compilers.

지원되는 수학식 및 부동 소수점 루틴Supported math and floating-point routines

루틴에서 반환된 값Routine 사용Use
abs, labs, llabs, _abs64abs, labs, llabs, _abs64 정수 형식의 절대값을 계산합니다.Computes the absolute value of an integer type
acos, acosf, acoslacos, acosf, acosl 아크코사인을 계산합니다.Computes the arc cosine
acosh, acoshf, acoshlacosh, acoshf, acoshl 쌍곡선 아크코사인을 계산합니다.Computes the hyperbolic arc cosine
asin, asinf, asinlasin, asinf, asinl 아크사인을 계산합니다.Computes the arc sine
asinh, asinhf, asinhlasinh, asinhf, asinhl 쌍곡선 아크사인을 계산합니다.Computes the hyperbolic arc sine
atan, atanf, atanl, atan2, atan2f, atan2latan, atanf, atanl, atan2, atan2f, atan2l 아크탄젠트를 계산합니다.Computes the arc tangent
atanh, atanhf, atanhlatanh, atanhf, atanhl 쌍곡선 아크탄젠트를 계산합니다.Computes the hyperbolic arc tangent
_atodbl, _atodbl_l_atodbl, _atodbl_l 로캘별 문자열을 double로 변환합니다.Converts a locale-specific string to a double
atof, _atof_latof, _atof_l 문자열을 double로 변환합니다.Converts a string to a double
_atoflt, _atoflt_l, _atoldbl, _atoldbl_l_atoflt, _atoflt_l, _atoldbl, _atoldbl_l 로캘별 문자열을 float 또는 long double로 변환합니다.Converts a locale-specific string to a float or long double
cbrt, cbrtf, cbrtlcbrt, cbrtf, cbrtl 세제곱근을 계산합니다.Computes the cube root
ceil, ceilf, ceillceil, ceilf, ceill 최곳값을 계산합니다.Computes the ceiling
_chgsign, _chgsignf, _chgsignl_chgsign, _chgsignf, _chgsignl 덧셈 역원을 계산합니다.Computes the additive inverse
_clear87, _clearfp_clear87, _clearfp 부동 소수점 상태 레지스터를 가져오고 지웁니다.Gets and clears the floating-point status register
_control87, __control87_2, _controlfp_control87, __control87_2, _controlfp 부동 소수점 제어 단어를 가져오고 설정합니다.Gets and sets the floating-point control word
_controlfp_s_controlfp_s _controlfp의 안전한 버전입니다.Secure version of _controlfp
copysign, copysignf, copysignl, _copysign, _copysignf, _copysignlcopysign, copysignf, copysignl, _copysign, _copysignf, _copysignl 한 인수의 크기 및 다른 인수의 부호가 있는 값을 반환합니다.Returns a value that has the magnitude of one argument and the sign of another
cos, cosf, coslcos, cosf, cosl 사인을 계산합니다.Computes the sine
cosh, coshf, coshlcosh, coshf, coshl 쌍곡선 사인을 계산합니다.Computes the hyperbolic sine
div, ldiv, lldivdiv, ldiv, lldiv 두 정수 값의 몫과 나머지를 계산합니다.Computes the quotient and the remainder of two integer values
_ecvt, ecvt_ecvt, ecvt double을 문자열로 변환합니다.Converts a double to a string
_ecvt_s_ecvt_s _ecvt의 안전한 버전입니다.Secure version of _ecvt
erf, erff, erflerf, erff, erfl 오차 함수를 계산합니다.Computes the error function
erfc, erfcf, erfclerfc, erfcf, erfcl 보상 오차 함수를 계산합니다.Computes the complementary error function
exp, expf, explexp, expf, expl 지수 ex를 계산합니다.Computes the exponential ex
exp2, exp2f, exp2lexp2, exp2f, exp2l 지수 2x를 계산합니다.Computes the exponential 2x
expm1, expm1f, expm1lexpm1, expm1f, expm1l ex-1를 계산합니다.Computes ex-1
fabs, fabsf, fabslfabs, fabsf, fabsl 부동 소수점 형식의 절대값을 계산합니다.Computes the absolute value of a floating-point type
_fcvt, fcvt_fcvt, fcvt 부동 소수점 숫자를 문자열로 변환합니다.Converts a floating-point number to a string
_fcvt_s_fcvt_s _fcvt의 안전한 버전입니다.Secure version of _fcvt
fdim, fdimf, fdimlfdim, fdimf, fdiml 두 값의 양수 차이를 결정합니다.Determines the positive difference between two values
feclearexceptfeclearexcept 지정된 부동 소수점 예외를 지웁니다.Clears specified floating-point exceptions
fegetenvfegetenv 현재 부동 소수점 환경을 저장합니다.Stores the current floating-point environment
fegetexceptflagfegetexceptflag 지정된 부동 소수점 예외 상태를 가져옵니다.Gets the specified floating-point exception status
fegetroundfegetround 부동 소수점 반올림 모드를 가져옵니다.Gets the floating-point rounding mode
feholdexceptfeholdexcept 중단 없는 부동 소수점 예외 모드를 설정합니다.Sets non-stop floating-point exception mode
feraiseexceptferaiseexcept 지정된 부동 소수점 예외를 발생시킵니다.Raises the specified floating-point exceptions
fesetenvfesetenv 현재 부동 소수점 환경을 설정합니다.Sets the current floating-point environment
fesetexceptflagfesetexceptflag 지정된 부동 소수점 상태 플래그를 설정합니다.Sets the specified floating-point status flags
fesetroundfesetround 지정된 부동 소수점 반올림 모드를 설정합니다.Sets the specified floating-point rounding mode
fetestexceptfetestexcept 설정된 부동 소수점 예외 상태 플래그를 결정합니다.Determines which floating-point exception status flags are set
feupdateenvfeupdateenv 부동 소수점 환경을 복원한 다음, 이전 예외를 발생시킵니다.Restores a floating-point environment then raises previous exceptions
_finite, _finitef_finite, _finitef 유한 값인지 여부를 결정합니다.Determines whether a value is finite
floor, floorf, floorlfloor, floorf, floorl 최젓값을 계산합니다.Computes the floor
fma, fmaf, fmalfma, fmaf, fmal 단일 곱셈 누산기(Fused Multiply-Add)를 계산합니다.Computes a fused multiply-add
fmax, fmaxf, fmaxlfmax, fmaxf, fmaxl 인수의 최댓값을 계산합니다.Computes the maximum of the arguments
fmin, fminf, fminlfmin, fminf, fminl 인수의 최솟값을 계산합니다.Computes the minumum of the arguments
fmod, fmodf, fmodlfmod, fmodf, fmodl 부동 소수점 나머지를 계산합니다.Computes the floating-point remainder
_fpclass, _fpclassf_fpclass, _fpclassf 부동 소수점 값의 분류를 반환합니다.Returns the classification of a floating-point value
fpclassifyfpclassify 부동 소수점 값의 분류를 반환합니다.Returns the classification of a floating-point value
_fpieee_flt_fpieee_flt 부동 소수점 예외에 대한 처리기를 설정합니다.Sets a handler for floating-point exceptions
_fpreset_fpreset 부동 소수점 환경을 다시 설정합니다.Resets the floating-point environment
frexp, frexpf, frexplfrexp, frexpf, frexpl 부동 소수점 숫자의 가수와 지수를 가져옵니다.Gets the mantissa and exponent of a floating-point number
_gcvt, gcvt_gcvt, gcvt 부동 소수점 숫자를 문자열로 변환합니다.Converts a floating-point number to a string
_gcvt_s_gcvt_s _gcvt의 안전한 버전입니다.Secure version of _gcvt
_get_FMA3_enable, _set_FMA3_enable_get_FMA3_enable, _set_FMA3_enable x64에서 FMA3 명령을 사용하기 위한 플래그를 가져오거나 설정합니다.Gets or sets a flag for use of FMA3 instructions on x64
hypot, hypotf, hypotl, _hypot, _hypotf, _hypotlhypot, hypotf, hypotl, _hypot, _hypotf, _hypotl 빗변을 계산합니다.Computes the hypotenuse
ilogb, ilogbf, ilogblilogb, ilogbf, ilogbl 밑이 2인 정수 지수를 계산합니다.Computes the integer base-2 exponent
imaxabsimaxabs 정수 형식의 절대값을 계산합니다.Computes the absolute value of an integer type
imaxdivimaxdiv 두 정수 값의 몫과 나머지를 계산합니다.Computes the quotient and the remainder of two integer values
isnan, _isnan, _isnanfisnan, _isnan, _isnanf NaN에 대한 부동 소수점 값을 테스트합니다.Tests a floating-point value for NaN
_j0, _j1, _jn_j0, _j1, _jn Bessel 함수를 계산합니다.Computes the Bessel function
ldexp, ldexpf, ldexplldexp, ldexpf, ldexpl x*2n을 계산합니다.Computes x*2n
lgamma, lgammaf, lgammallgamma, lgammaf, lgammal 감마 함수의 절대값에 대한 자연 로그를 계산합니다.Computes the natural logarithm of the absolute value of the gamma function
llrint, llrintf, llrintlllrint, llrintf, llrintl 부동 소수점 값을 가장 가까운 long long 값으로 반올림합니다.Rounds a floating-point value to the nearest long long value
llround, llroundf, llroundlllround, llroundf, llroundl 부동 소수점 값을 가장 가까운 long long 값으로 반올림합니다.Rounds a floating-point value to the nearest long long value
log, logf, logl, log10, log10f, log10llog, logf, logl, log10, log10f, log10l 자연 로그 또는 상용 로그를 계산합니다.Computes the natural or base-10 logarithm
log1p, log1pf, log1pllog1p, log1pf, log1pl 1 + x의 자연 로그를 계산합니다.Computes the natural logarithm of 1+x
log2, log2f, log2llog2, log2f, log2l 밑이 2인 로그를 계산합니다.Computes the base-2 logarithm
logb, logbf, logbl, _logb, _logbflogb, logbf, logbl, _logb, _logbf 부동 소수점 값의 지수를 반환합니다.Returns the exponent of a floating-point value
lrint, lrintf, lrintllrint, lrintf, lrintl 부동 소수점 값을 가장 가까운 long 값으로 반올림합니다.Rounds a floating-point value to the nearest long value
_lrotl, _lrotr_lrotl, _lrotr 정수 값을 왼쪽 또는 오른쪽으로 회전합니다.Rotates an integer value left or right
lround, lroundf, lroundllround, lroundf, lroundl 부동 소수점 값을 가장 가까운 long 값으로 반올림합니다.Rounds a floating-point value to the nearest long value
_matherr_matherr 기본 수학 오류 처리기입니다.The default math error handler
__max__max 두 값 중 큰 값을 반환하는 매크로입니다.Macro that returns the larger of two values
__min__min 두 값 중 작은 값을 반환하는 매크로입니다.Macro that returns the smaller of two values
modf, modff, modflmodf, modff, modfl 부동 소수점 값을 소수 부분과 정수 부분으로 분할합니다.Splits a floating-point value into fractional and integer parts
nan, nanf, nanlnan, nanf, nanl QNaN(Quiet NaN) 값을 반환합니다.Returns a quiet NaN value
nearbyint, nearbyintf, nearbyintlnearbyint, nearbyintf, nearbyintl 반올림된 값을 반환합니다.Returns the rounded value
nextafter, nextafterf, nextafterl, _nextafter, _nextafterfnextafter, nextafterf, nextafterl, _nextafter, _nextafterf 표현 가능한 다음 부동 소수점 값을 반환합니다.Returns the next representable floating-point value
nexttoward, nexttowardf, nexttowardlnexttoward, nexttowardf, nexttowardl 표현 가능한 다음 부동 소수점 값을 반환합니다.Returns the next representable floating-point value
pow, powf, powlpow, powf, powl xy의 값을 반환합니다.Returns the value of xy
remainder, remainderf, remainderlremainder, remainderf, remainderl 두 부동 소수점 값의 몫과 나머지를 계산합니다.Computes the remainder of the quotient of two floating-point values
remquo, remquof, remquolremquo, remquof, remquol 두 정수 값의 나머지를 계산합니다.Computes the remainder of two integer values
rint, rintf, rintlrint, rintf, rintl 부동 소수점 값을 반올림합니다.Rounds a floating-point value
_rotl, _rotl64, _rotr, _rotr64_rotl, _rotl64, _rotr, _rotr64 비트를 정수 형식으로 회전합니다.Rotates bits in integer types
round, roundf, roundlround, roundf, roundl 부동 소수점 값을 반올림합니다.Rounds a floating-point value
_scalb, _scalbf_scalb, _scalbf 인수의 크기를 2의 거듭제곱으로 조정합니다.Scales argument by a power of 2
scalbn, scalbnf, scalbnl, scalbln, scalblnf, scalblnlscalbn, scalbnf, scalbnl, scalbln, scalblnf, scalblnl 부동 소수점 숫자를 FLT_RADIX의 정수 거듭제곱으로 곱합니다.Multiplies a floating-point number by an integral power of FLT_RADIX
_set_controlfp_set_controlfp 부동 소수점 제어 단어를 설정합니다.Sets the floating-point control word
_set_SSE2_enable_set_SSE2_enable SSE2 명령을 사용하거나 사용하지 않도록 설정합니다.Enables or disables SSE2 instructions
sin, sinf, sinlsin, sinf, sinl 사인을 계산합니다.Computes the sine
sinh, sinhf, sinhlsinh, sinhf, sinhl 쌍곡선 사인을 계산합니다.Computes the hyperbolic sine
sqrt, sqrtf, sqrtlsqrt, sqrtf, sqrtl 제곱근을 계산합니다.Computes the square root
_status87, _statusfp, _statusfp2_status87, _statusfp, _statusfp2 부동 소수점 상태 단어를 가져옵니다.Gets the floating-point status word
strtof, _strtof_lstrtof, _strtof_l 문자열을 float로 변환합니다.Converts a string to a float
strtold, _strtold_lstrtold, _strtold_l 문자열을 long double로 변환합니다.Converts a string to a long double
tan, tanf, tanltan, tanf, tanl 탄젠트를 계산합니다.Computes the tangent
tanh, tanhf, tanhltanh, tanhf, tanhl 쌍곡선 탄젠트를 계산합니다.Computes the hyperbolic tangent
tgamma, tgammaf, tgammaltgamma, tgammaf, tgammal 감마 함수를 계산합니다.Computes the gamma function
trunc, truncf, truncltrunc, truncf, truncl 소수 부분을 자릅니다.Truncates the fractional part
_wtof, _wtof_l_wtof, _wtof_l 와이드 문자열을 double로 변환합니다.Converts a wide string to a double
_y0, _y1, _yn_y0, _y1, _yn Bessel 함수를 계산합니다.Computes the Bessel function

참고 항목See also

범주별 유버니설 C 런타임 루틴Universal C runtime routines by category