Supporto delle funzioni matematiche e a virgola mobileMath and floating-point support

La libreria di Universal C Runtime (UCRT) include molte funzioni della libreria delle operazioni matematiche con numeri interi e a virgola mobile, incluse tutte quelle richieste dallo standard 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. L'implementazione delle funzioni a virgola mobile consente di bilanciare prestazioni e correttezza.The floating-point functions are implemented to balance performance with correctness. Dato che generare un risultato con il corretto arrotondamento può avere costi proibitivi, queste funzioni sono progettate per ottenere in modo efficiente un'approssimazione molto vicina al risultato arrotondato correttamente.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. Nella maggior parte dei casi, il risultato prodotto è compreso entro +/-1 ulp rispetto al risultato arrotondato correttamente, sebbene in alcuni casi possa esistere un'imprecisione maggiore.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.

Molte delle funzioni della libreria delle operazioni matematiche a virgola mobile hanno implementazioni diverse per architetture della CPU differenti.Many of the floating point math library functions have different implementations for different CPU architectures. La versione di CRT x86 a 32 bit, ad esempio, può avere un'implementazione diversa di CRT x64 a 64 bit.For example, the 32-bit x86 CRT may have a different implementation than the 64-bit x64 CRT. Alcune funzioni potrebbero inoltre avere più implementazioni per una particolare architettura della CPU.In addition, some of the functions may have multiple implementations for a given CPU architecture. L'implementazione più efficiente viene selezionata in modo dinamico in fase di esecuzione a seconda del set di istruzioni supportate dalla CPU.The most efficient implementation is selected dynamically at run-time depending on the instruction sets supported by the CPU. Ad esempio, in CRT x86 a 32 bit alcune funzioni hanno sia un'implementazione x87 che un'implementazione SSE2.For example, in the 32-bit x86 CRT, some functions have both an x87 implementation and an SSE2 implementation. In caso di esecuzione su una CPU che supporta SSE2, viene usata l'implementazione SSE2 più veloce.When running on a CPU that supports SSE2, the faster SSE2 implementation is used. Per l'esecuzione su una CPU che non supporta SSE2 viene usata l'implementazione x87 più lenta.When running on a CPU that does not support SSE2, the slower x87 implementation is used. Dato che implementazioni diverse delle funzioni della libreria delle operazioni matematiche possono usare istruzioni diverse della CPU e algoritmi differenti per produrre i risultati, le funzioni possono produrre risultati diversi con CPU differenti.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. Nella maggior parte dei casi, i risultati sono compresi entro +/-1 ulp rispetto al risultato arrotondato correttamente, ma i risultati effettivi possono variare tra CPU diverse.In most cases, the results are within +/-1 ulp of the correctly rounded result, but the actual results may vary across CPUs.

Le versioni precedenti a 16 bit di Microsoft C/C++ e Microsoft Visual C++ supportano il tipo long double come tipo di dati a virgola mobile con precisione 80 bit.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. Nelle versioni successive di Visual C++, il tipo di dati long double è un tipo di dati a virgola mobile con precisione a 64 bit identico al tipo double.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. Sebbene il compilatore consideri long double e double come tipi distinti, le funzioni long double sono identiche alle funzioni double corrispondenti.The compiler treats long double and double as distinct types, but the long double functions are identical to their double counterparts. CRT include versioni long double delle funzioni matematiche per la compatibilità con il codice sorgente ISO C99, ma tenere presente che la rappresentazione binaria può differire da altri compilatori.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.

Routine matematiche e a virgola mobile supportateSupported math and floating-point routines

RoutineRoutine UsaUse
abs, labs, llabs, _abs64abs, labs, llabs, _abs64 Calcola il valore assoluto di un tipo IntegerComputes the absolute value of an integer type
acos, acosf, acoslacos, acosf, acosl Calcola l'arcocosenoComputes the arc cosine
acosh, acoshf, acoshlacosh, acoshf, acoshl Calcola l'arcocoseno iperbolicoComputes the hyperbolic arc cosine
asin, asinf, asinlasin, asinf, asinl Calcola l'arcosenoComputes the arc sine
asinh, asinhf, asinhlasinh, asinhf, asinhl Calcola l'arcoseno iperbolicoComputes the hyperbolic arc sine
atan, atanf, atanl, atan2, atan2f, atan2latan, atanf, atanl, atan2, atan2f, atan2l Calcola l'arcotangenteComputes the arc tangent
atanh, atanhf, atanhlatanh, atanhf, atanhl Calcola l'arcotangente iperbolicaComputes the hyperbolic arc tangent
_atodbl, _atodbl_l_atodbl, _atodbl_l Converte una stringa specifica delle impostazioni locali in un valore doubleConverts a locale-specific string to a double
atof, _atof_latof, _atof_l Converte una stringa in un valore doubleConverts a string to a double
_atoflt, _atoflt_l, _atoldbl, _atoldbl_l_atoflt, _atoflt_l, _atoldbl, _atoldbl_l Converte una stringa specifica delle impostazioni locali in un valore float o long doubleConverts a locale-specific string to a float or long double
cbrt, cbrtf, cbrtlcbrt, cbrtf, cbrtl Calcola la radice cubicaComputes the cube root
ceil, ceilf, ceillceil, ceilf, ceill Calcola il limite massimoComputes the ceiling
_chgsign, _chgsignf, _chgsignl_chgsign, _chgsignf, _chgsignl Calcola l'inverso additivoComputes the additive inverse
_clear87, _clearfp_clear87, _clearfp Ottiene e cancella il registro di stato a virgola mobileGets and clears the floating-point status register
_control87, __control87_2, _controlfp_control87, __control87_2, _controlfp Ottiene e imposta la parola di controllo a virgola mobileGets and sets the floating-point control word
_controlfp_s_controlfp_s Versione sicura di _controlfpSecure version of _controlfp
copysign, copysignf, copysignl, _copysign, _copysignf, _copysignlcopysign, copysignf, copysignl, _copysign, _copysignf, _copysignl Restituisce un valore che ha la grandezza di un argomento e il segno di un altroReturns a value that has the magnitude of one argument and the sign of another
cos, cosf, coslcos, cosf, cosl Calcola il senoComputes the sine
cosh, coshf, coshlcosh, coshf, coshl Calcola il seno iperbolicoComputes the hyperbolic sine
div, ldiv, lldivdiv, ldiv, lldiv Calcola il quoziente e il resto di due valori IntegerComputes the quotient and the remainder of two integer values
_ecvt, ecvt_ecvt, ecvt Converte un valore double in una stringaConverts a double to a string
_ecvt_s_ecvt_s Versione sicura di _ecvtSecure version of _ecvt
erf, erff, erflerf, erff, erfl Calcola la funzione di erroreComputes the error function
erfc, erfcf, erfclerfc, erfcf, erfcl Calcola la funzione di errore complementareComputes the complementary error function
exp, expf, explexp, expf, expl Calcola l'esponenziale exComputes the exponential ex
exp2, exp2f, exp2lexp2, exp2f, exp2l Calcola l'esponenziale 2xComputes the exponential 2x
expm1, expm1f, expm1lexpm1, expm1f, expm1l Calcola ex-1Computes ex-1
fabs, fabsf, fabslfabs, fabsf, fabsl Calcola il valore assoluto di un tipo a virgola mobileComputes the absolute value of a floating-point type
_fcvt, fcvt_fcvt, fcvt Converte un numero a virgola mobile in una stringaConverts a floating-point number to a string
_fcvt_s_fcvt_s Versione sicura di _fcvtSecure version of _fcvt
fdim, fdimf, fdimlfdim, fdimf, fdiml Determina la differenza positiva tra due valoriDetermines the positive difference between two values
feclearexceptfeclearexcept Cancella le eccezioni a virgola mobile specificateClears specified floating-point exceptions
fegetenvfegetenv Archivia l'ambiente a virgola mobile correnteStores the current floating-point environment
fegetexceptflagfegetexceptflag Ottiene lo stato delle eccezioni a virgola mobile specificateGets the specified floating-point exception status
fegetroundfegetround Ottiene la modalità di arrotondamento a virgola mobileGets the floating-point rounding mode
feholdexceptfeholdexcept Imposta la modalità di eccezione a virgola mobile senza interruzioniSets non-stop floating-point exception mode
feraiseexceptferaiseexcept Genera le eccezioni a virgola mobile specificateRaises the specified floating-point exceptions
fesetenvfesetenv Imposta l'ambiente a virgola mobile correnteSets the current floating-point environment
fesetexceptflagfesetexceptflag Imposta i flag di stato a virgola mobile specificatiSets the specified floating-point status flags
fesetroundfesetround Imposta la modalità di arrotondamento a virgola mobile specificataSets the specified floating-point rounding mode
fetestexceptfetestexcept Determina quali flag di stato delle eccezioni a virgola mobile sono impostatiDetermines which floating-point exception status flags are set
feupdateenvfeupdateenv Ripristina un ambiente a virgola mobile e quindi genera le eccezioni precedentiRestores a floating-point environment then raises previous exceptions
_finite, _finitef_finite, _finitef Determina se un valore è finitoDetermines whether a value is finite
floor, floorf, floorlfloor, floorf, floorl Calcola il limite minimoComputes the floor
fma, fmaf, fmalfma, fmaf, fmal Calcola un'operazione congiunta di moltiplicazione e addizioneComputes a fused multiply-add
fmax, fmaxf, fmaxlfmax, fmaxf, fmaxl Calcola il valore massimo degli argomentiComputes the maximum of the arguments
fmin, fminf, fminlfmin, fminf, fminl Calcola il valore minimo degli argomentiComputes the minumum of the arguments
fmod, fmodf, fmodlfmod, fmodf, fmodl Calcola il resto a virgola mobileComputes the floating-point remainder
_fpclass, _fpclassf_fpclass, _fpclassf Restituisce la classificazione di un valore a virgola mobileReturns the classification of a floating-point value
fpclassifyfpclassify Restituisce la classificazione di un valore a virgola mobileReturns the classification of a floating-point value
_fpieee_flt_fpieee_flt Imposta un gestore per le eccezioni a virgola mobileSets a handler for floating-point exceptions
_fpreset_fpreset Reimposta l'ambiente a virgola mobileResets the floating-point environment
frexp, frexpf, frexplfrexp, frexpf, frexpl Ottiene la mantissa e l'esponente di un numero a virgola mobileGets the mantissa and exponent of a floating-point number
_gcvt, gcvt_gcvt, gcvt Converte un numero a virgola mobile in una stringaConverts a floating-point number to a string
_gcvt_s_gcvt_s Versione sicura di _gcvtSecure version of _gcvt
_get_FMA3_enable, _set_FMA3_enable_get_FMA3_enable, _set_FMA3_enable Ottiene o imposta un flag per l'uso di istruzioni FMA3 su x64Gets or sets a flag for use of FMA3 instructions on x64
hypot, hypotf, hypotl, _hypot, _hypotf, _hypotlhypot, hypotf, hypotl, _hypot, _hypotf, _hypotl Calcola l'ipotenusaComputes the hypotenuse
ilogb, ilogbf, ilogblilogb, ilogbf, ilogbl Calcola l'esponente in base 2 come valore IntegerComputes the integer base-2 exponent
imaxabsimaxabs Calcola il valore assoluto di un tipo IntegerComputes the absolute value of an integer type
imaxdivimaxdiv Calcola il quoziente e il resto di due valori IntegerComputes the quotient and the remainder of two integer values
isnan, _isnan, _isnanfisnan, _isnan, _isnanf Verifica se un valore a virgola mobile è un valore NaNTests a floating-point value for NaN
_j0, _j1, _jn_j0, _j1, _jn Calcola la funzione di BesselComputes the Bessel function
ldexp, ldexpf, ldexplldexp, ldexpf, ldexpl Calcola x*2nComputes x*2n
lgamma, lgammaf, lgammallgamma, lgammaf, lgammal Calcola il logaritmo naturale del valore assoluto della funzione gammaComputes the natural logarithm of the absolute value of the gamma function
llrint, llrintf, llrintlllrint, llrintf, llrintl Arrotonda un valore a virgola mobile al valore long long più vicinoRounds a floating-point value to the nearest long long value
llround, llroundf, llroundlllround, llroundf, llroundl Arrotonda un valore a virgola mobile al valore long long più vicinoRounds a floating-point value to the nearest long long value
log, logf, logl, log10, log10f, log10llog, logf, logl, log10, log10f, log10l Calcola il logaritmo naturale o in base 10Computes the natural or base-10 logarithm
log1p, log1pf, log1pllog1p, log1pf, log1pl Calcola il logaritmo naturale di 1+xComputes the natural logarithm of 1+x
log2, log2f, log2llog2, log2f, log2l Calcola il logaritmo in base 2Computes the base-2 logarithm
logb, logbf, logbl, _logb, _logbflogb, logbf, logbl, _logb, _logbf Restituisce l'esponente di un valore a virgola mobileReturns the exponent of a floating-point value
lrint, lrintf, lrintllrint, lrintf, lrintl Arrotonda un valore a virgola mobile al valore long più vicinoRounds a floating-point value to the nearest long value
_lrotl, _lrotr_lrotl, _lrotr Ruota un valore Integer a sinistra o a destraRotates an integer value left or right
lround, lroundf, lroundllround, lroundf, lroundl Arrotonda un valore a virgola mobile al valore long più vicinoRounds a floating-point value to the nearest long value
_matherr_matherr Gestore di errori matematici predefinitoThe default math error handler
__max__max Macro che restituisce il maggiore di due valoriMacro that returns the larger of two values
__min__min Macro che restituisce il minore di due valoriMacro that returns the smaller of two values
modf, modff, modflmodf, modff, modfl Divide un valore a virgola mobile in parte frazionaria e parte interaSplits a floating-point value into fractional and integer parts
nan, nanf, nanlnan, nanf, nanl Restituisce un valore NaN non interattivoReturns a quiet NaN value
nearbyint, nearbyintf, nearbyintlnearbyint, nearbyintf, nearbyintl Restituisce il valore arrotondatoReturns the rounded value
nextafter, nextafterf, nextafterl, _nextafter, _nextafterfnextafter, nextafterf, nextafterl, _nextafter, _nextafterf Restituisce il valore a virgola mobile rappresentabile successivoReturns the next representable floating-point value
nexttoward, nexttowardf, nexttowardlnexttoward, nexttowardf, nexttowardl Restituisce il valore a virgola mobile rappresentabile successivoReturns the next representable floating-point value
pow, powf, powlpow, powf, powl Restituisce il valore di xyReturns the value of xy
remainder, remainderf, remainderlremainder, remainderf, remainderl Calcola il resto del quoziente di due valori a virgola mobileComputes the remainder of the quotient of two floating-point values
remquo, remquof, remquolremquo, remquof, remquol Calcola il resto di due valori IntegerComputes the remainder of two integer values
rint, rintf, rintlrint, rintf, rintl Arrotonda un valore a virgola mobileRounds a floating-point value
_rotl, _rotl64, _rotr, _rotr64_rotl, _rotl64, _rotr, _rotr64 Ruota i bit in tipi IntegerRotates bits in integer types
round, roundf, roundlround, roundf, roundl Arrotonda un valore a virgola mobileRounds a floating-point value
_scalb, _scalbf_scalb, _scalbf Eleva l'argomento alla potenza di 2Scales argument by a power of 2
scalbn, scalbnf, scalbnl, scalbln, scalblnf, scalblnlscalbn, scalbnf, scalbnl, scalbln, scalblnf, scalblnl Moltiplica un numero a virgola mobile per una potenza integrale di FLT_RADIXMultiplies a floating-point number by an integral power of FLT_RADIX
_set_controlfp_set_controlfp Imposta la parola di controllo a virgola mobileSets the floating-point control word
_set_SSE2_enable_set_SSE2_enable Abilita o disabilita le istruzioni SSE2Enables or disables SSE2 instructions
sin, sinf, sinlsin, sinf, sinl Calcola il senoComputes the sine
sinh, sinhf, sinhlsinh, sinhf, sinhl Calcola il seno iperbolicoComputes the hyperbolic sine
sqrt, sqrtf, sqrtlsqrt, sqrtf, sqrtl Calcola la radice quadrataComputes the square root
_status87, _statusfp, _statusfp2_status87, _statusfp, _statusfp2 Ottiene la parola di stato nelle operazioni a virgola mobileGets the floating-point status word
strtof, _strtof_lstrtof, _strtof_l Converte una stringa in un valore floatConverts a string to a float
strtold, _strtold_lstrtold, _strtold_l Converte una stringa in un valore long doubleConverts a string to a long double
tan, tanf, tanltan, tanf, tanl Calcola la tangenteComputes the tangent
tanh, tanhf, tanhltanh, tanhf, tanhl Calcola la tangente iperbolicaComputes the hyperbolic tangent
tgamma, tgammaf, tgammaltgamma, tgammaf, tgammal Calcola la funzione gammaComputes the gamma function
trunc, truncf, truncltrunc, truncf, truncl Tronca la parte frazionariaTruncates the fractional part
_wtof, _wtof_l_wtof, _wtof_l Converte una stringa di caratteri "wide" in un valore doubleConverts a wide string to a double
_y0, _y1, _yn_y0, _y1, _yn Calcola la funzione di BesselComputes the Bessel function

Vedere ancheSee also

Routine di Universal C Runtime per categoriaUniversal C runtime routines by category