Primitives à virgule flottante
Fonctions primitives spécifiques à Microsoft utilisées pour implémenter certaines fonctions de bibliothèque de runtime C standard (CRT). Ils sont documentés ici pour l’exhaustivité, mais ne sont pas recommandés pour une utilisation. Certaines de ces fonctions sont notées comme inutilisées, car elles sont connues pour avoir des problèmes de précision, de gestion des exceptions et de conformité au comportement IEEE-754. Elles existent dans la bibliothèque uniquement pour la compatibilité descendante. Pour un comportement correct, la portabilité et l’adhésion aux normes, préférez les fonctions à virgule flottante standard sur ces fonctions.
Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.
_dclass
, , _ldclass
_fdclass
Syntaxe
short __cdecl _dclass(double x);
short __cdecl _ldclass(long double x);
short __cdecl _fdclass(float x);
Paramètres
x
Argument de fonction à virgule flottante.
Notes
Ces primitives à virgule flottante implémentent les versions C de la macro fpclassify
CRT pour les types à virgule flottante. La classification de l’argument x
est retournée sous la forme d’une de ces constantes, définie dans math.h :
Valeur | Description |
---|---|
FP_NAN |
NaN silencieux, signalant ou indéterminé |
FP_INFINITE |
Infini positif ou négatif |
FP_NORMAL |
Valeur non nulle normalisée positive ou négative |
FP_SUBNORMAL |
Valeur subnormale positive ou négative (dénormalisée) |
FP_ZERO |
Valeur nulle positive ou négative |
Pour plus de détails, vous pouvez utiliser les fonctions spécifiques _fpclassf
à _fpclass
Microsoft. Utilisez la macro ou la fpclassify
fonction pour la portabilité.
_dsign
, , _ldsign
_fdsign
Syntaxe
int __cdecl _dsign(double x);
int __cdecl _ldsign(long double x);
int __cdecl _fdsign(float x);
Paramètres
x
Argument de fonction à virgule flottante.
Notes
Ces primitives à virgule flottante implémentent la macro ou la signbit
fonction dans le CRT. Ils retournent une valeur non nulle si le bit de signe est défini dans le significand (mantissa) de l’argument x
. Sinon, ils retournent 0 si le bit de signe n’est pas défini.
_dpcomp, _ldpcomp, _fdpcomp
Syntaxe
int __cdecl _dpcomp(double x, double y);
int __cdecl _ldpcomp(long double x, long double y);
int __cdecl _fdpcomp(float x, float y);
Paramètres
x
, y
Arguments de fonction à virgule flottante.
Notes
Ces primitives à virgule flottante prennent deux arguments et x
y
retournent une valeur qui montre leur relation d’ordre, exprimée au niveau du bit ou de ces constantes, définies dans math.h :
Valeur | Description |
---|---|
_FP_LT |
x peut être considéré comme inférieur à y |
_FP_EQ |
x peut être considéré comme égal à y |
_FP_GT |
x peut être considéré comme supérieur à y |
Ces primitives implémentent les isgreaterequal
islessgreater
isless
islessequal
isgreater
fonctions et isunordered
macros dans le CRT.
_dtest, _ldtest, _fdtest
Syntaxe
short __cdecl _dtest(double* px);
short __cdecl _ldtest(long double* px);
short __cdecl _fdtest(float* px);
Paramètres
px
Pointeur vers un argument à virgule flottante.
Notes
Ces primitives à virgule flottante implémentent les versions C++ de la fonction fpclassify
CRT pour les types à virgule flottante. L’argument x
est évalué et la classification est retournée comme l’une de ces constantes, définies dans math.h :
Valeur | Description |
---|---|
FP_NAN |
NaN silencieux, signalant ou indéterminé |
FP_INFINITE |
Infini positif ou négatif |
FP_NORMAL |
Valeur non nulle normalisée positive ou négative |
FP_SUBNORMAL |
Valeur subnormale positive ou négative (dénormalisée) |
FP_ZERO |
Valeur nulle positive ou négative |
Pour plus de détails, vous pouvez utiliser les fonctions spécifiques _fpclassf
à _fpclass
Microsoft. Utilisez la fonction pour la fpclassify
portabilité.
_d_int, _ld_int, _fd_int
Syntaxe
short __cdecl _d_int(double* px, short exp);
short __cdecl _ld_int(long double* px, short exp);
short __cdecl _fd_int(float* px, short exp);
Paramètres
px
Pointeur vers un argument à virgule flottante.
exp
Exposant en tant que type intégral.
Notes
Ces primitives à virgule flottante prennent un pointeur vers une valeur px
à virgule flottante et une valeur exp
d’exposant, et suppriment la partie fractionnaire de la valeur à virgule flottante sous l’exposant donné, si possible. La valeur retournée est le résultat de fpclassify
la valeur d’entrée dans px
le cas où il s’agit d’un naN ou d’une infinité, et sur la valeur de sortie dans px
le cas contraire.
_dscale, _ldscale, _fdscale
Syntaxe
short __cdecl _dscale(double* px, long exp);
short __cdecl _ldscale(long double* px, long exp);
short __cdecl _fdscale(float* px, long exp);
Paramètres
px
Pointeur vers un argument à virgule flottante.
exp
Exposant en tant que type intégral.
Notes
Ces primitives à virgule flottante prennent un pointeur vers une valeur px
à virgule flottante et une valeur exp
d’exposant, et mettent à l’échelle la valeur par px
2exp
, si possible. La valeur retournée est le résultat de fpclassify
la valeur d’entrée dans px
le cas où il s’agit d’un naN ou d’une infinité, et sur la valeur de sortie dans px
le cas contraire. Pour la portabilité, préférez les fonctions , . ldexpf
ldexpl
ldexp
_dunscale, _ldunscale, _fdunscale
Syntaxe
short __cdecl _dunscale(short* pexp, double* px);
short __cdecl _ldunscale(short* pexp, long double* px);
short __cdecl _fdunscale(short* pexp, float* px);
Paramètres
pexp
Pointeur vers un exposant en tant que type intégral.
px
Pointeur vers un argument à virgule flottante.
Notes
Ces primitives à virgule flottante décomposent la valeur à virgule flottante pointée par px
un significand (mantissa) et un exposant, si possible. Le significand est mis à l’échelle de sorte que la valeur absolue soit supérieure ou égale à 0,5 et inférieure à 1,0. L’exposant est la valeur n
, où la valeur à virgule flottante d’origine est égale à la valeur significificand mise à l’échelle 2n. Cet exposant n
entier est stocké à l’emplacement vers lequel pointe pexp
. La valeur retournée est le résultat de la valeur d’entrée fpclassify
dans px
le cas où il s’agit d’un naN ou d’une infinité, et dans la valeur de sortie sinon. Pour la portabilité, préférez les fonctions , . frexpf
frexpl
frexp
_dexp, _ldexp, _fdexp
Syntaxe
short __cdecl _dexp(double* px, double y, long exp);
short __cdecl _ldexp(long double* px, long double y, long exp);
short __cdecl _fdexp(float* px, float y, long exp);
Paramètres
y
Argument de fonction à virgule flottante.
px
Pointeur vers un argument à virgule flottante.
exp
Exposant en tant que type intégral.
Notes
Ces primitives à virgule flottante construisent une valeur à virgule flottante dans l’emplacement pointé par px
égal à y
* 2exp. La valeur retournée est le résultat de fpclassify
la valeur d’entrée dans y
le cas où il s’agit d’un naN ou d’une infinité, et sur la valeur de sortie dans px
le cas contraire. Pour la portabilité, préférez les fonctions , . ldexpf
ldexpl
ldexp
_dnorm, _fdnorm
Syntaxe
short __cdecl _dnorm(unsigned short* ps);
short __cdecl _fdnorm(unsigned short* ps);
Paramètres
ps
Pointeur vers la représentation au niveau du bit d’une valeur à virgule flottante exprimée sous la forme d’un tableau de unsigned short
.
Notes
Ces primitives à virgule flottante normalisent la partie fractionnaire d’une valeur à virgule flottante sous-flux et ajustent la caractéristique, ou l’exposant biaisé, pour qu’elles correspondent. La valeur est passée en tant que représentation au niveau du bit du type à virgule flottante convertie en tableau de unsigned short
l’union _double_val
_ldouble_val
de type , ou _float_val
de type-punning union déclarée dans math.h. La valeur de retour est le résultat de la valeur à fpclassify
virgule flottante d’entrée s’il s’agit d’un naN ou d’un infini, et de la valeur de sortie dans le cas contraire.
_dpoly, _ldpoly, _fdpoly
Syntaxe
double __cdecl _dpoly(double x, double const* table, int n);
long double __cdecl _ldpoly(long double x, long double const* table, int n);
float __cdecl _fdpoly(float x, _float const* table, int n);
Paramètres
x
Argument de fonction à virgule flottante.
table
Pointeur vers une table de coefficients constants pour un polynomial.
n
Ordre de la polynomiale à évaluer.
Notes
Ces primitives à virgule flottante retournent l’évaluation dans x
le polynomial de l’ordre n
dont les coefficients sont représentés par les valeurs constantes correspondantes dans table
. Par exemple, si table[0]
= 3.0, table[1]
= 4.0, table[2]
= 5.0 et n
= 2, il représente le polynomial 5.0x2 + 4.0x + 3.0. Si cette polynomiale est évaluée pour x
2,0, le résultat est 31,0. Ces fonctions ne sont pas utilisées en interne.
_dlog, _dlog, _dlog
Syntaxe
double __cdecl _dlog(double x, int base_flag);
long double __cdecl _ldlog(long double x, int base_flag);
float __cdecl _fdlog(float x, int base_flag);
Paramètres
x
Argument de fonction à virgule flottante.
base_flag
Indicateur qui contrôle la base à utiliser, 0 pour la base e et non zéro pour la base 10.
Notes
Ces primitives à virgule flottante retournent le journal naturel de x
(ln(x) ou de loge(x)), quand est base_flag
0. Ils retournent la base de journal 10 de x
, ou journal10(x), lorsqu’il base_flag
n’est pas égal à zéro. Ces fonctions ne sont pas utilisées en interne. Pour la portabilité, préférez les fonctions log
, , logf
logl
, log10
, log10f
, et log10l
.
_dsin, _ldsin, _fdsin
Syntaxe
double __cdecl _dsin(double x, unsigned int quadrant);
long double __cdecl _ldsin(long double x, unsigned int quadrant);
float __cdecl _fdsin(float x, unsigned int quadrant);
Paramètres
x
Argument de fonction à virgule flottante.
quadrant
Décalage de quadrant de 0, 1, 2 ou 3 à utiliser pour produire sin
, cos
, , -sin
et -cos
les résultats.
Notes
Ces primitives à virgule flottante retournent le sinus de x
décalage par le quadrant
modulo 4. En fait, ils retournent le sinus, le cosinus, le sinus et -cosinus de x
quand quadrant
modulo 4 est 0, 1, 2 ou 3, respectivement. Ces fonctions ne sont pas utilisées en interne. Pour la portabilité, préférez les fonctions , sinl
cos
cosf
sinf
sin
, . cosl
Spécifications
En-tête : <math.h>
Pour plus d’informations sur la compatibilité, consultez Compatibility.
Voir aussi
Prise en charge des fonctions mathématiques et à virgule flottante
fpclassify
_fpclass
, _fpclassf
isfinite
, , _finite
_finitef
isinf
isnan
, , _isnan
_isnanf
isnormal
cos
, , cosf
cosl
frexp
, , frexpf
frexpl
ldexp
, , ldexpf
ldexpl
log
, , logf
, log10
logl
, , log10f
log10l
sin
, , sinf
sinl