Partilhar via


Primitivos de ponto flutuante

Funções primitivas específicas da Microsoft que são usadas para implementar algumas funções de ponto flutuante padrão da biblioteca do CRT (runtime do C). Elas estão documentados aqui para exaustividade, mas não são recomendadas para uso. Algumas dessas funções são notadas como não usadas, pois são conhecidas por terem problemas de comportamento de precisão, tratamento de exceção e conformidade com o IEEE-754. Elas existem na biblioteca apenas para compatibilidade com versões anteriores. Para obter comportamento correto, portabilidade e adesão aos padrões, prefira as funções de ponto flutuante padrão em vez dessas funções.

Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no CRT.

_dclass, _ldclass, _fdclass

Sintaxe

short __cdecl _dclass(double x);
short __cdecl _ldclass(long double x);
short __cdecl _fdclass(float x);

Parâmetros

x
Argumento da função de ponto flutuante.

Comentários

Esses primitivos de ponto flutuante implementam as versões C da macro fpclassify CRT para tipos de ponto flutuante. A classificação do argumento x é retornada como uma dessas constantes, definidas em math.h:

Valor Descrição
FP_NAN Um NaN silencioso, indeterminado ou com sinalização
FP_INFINITE Um infinito positivo ou negativo
FP_NORMAL Um valor positivo ou negativo normalizado diferente de zero
FP_SUBNORMAL Um valor positivo ou negativo subnormal (desnormalizado)
FP_ZERO Um valor de zero positivo ou negativo

Para obter mais detalhes, você pode usar as funções específicas _fpclass_fpclassf da Microsoft. Use a macro ou função fpclassify para portabilidade.

_dsign, _ldsign, _fdsign

Sintaxe

int __cdecl _dsign(double x);
int __cdecl _ldsign(long double x);
int __cdecl _fdsign(float x);

Parâmetros

x
Argumento da função de ponto flutuante.

Comentários

Esses primitivos de ponto flutuante implementam a macro ou função signbit no CRT. Eles retornam um valor diferente de zero se o bit de sinal for definido no significando (mantissa) do argumento x. Caso contrário, eles retornarão 0 se o bit de sinal não estiver definido.

_dpcomp, _ldpcomp, _fdpcomp

Sintaxe

int __cdecl _dpcomp(double x, double y);
int __cdecl _ldpcomp(long double x, long double y);
int __cdecl _fdpcomp(float x, float y);

Parâmetros

x, y
Argumento da função de ponto flutuante.

Comentários

Essas primitivas de ponto flutuante recebem dois argumentos x e y, e retornam um valor que mostra sua relação de ordenação, expressa como bit a bit ou dessas constantes, definidas em math.h:

Valor Descrição
_FP_LT x pode ser considerado inferior a y
_FP_EQ x pode ser considerado igual a y
_FP_GT x pode ser considerado maior que y

Esses primitivos implementam as macros e funções , isgreaterequal, islessgreaterislessequalislesse isunordered no CRT.isgreater

_dtest, _ldtest, _fdtest

Sintaxe

short __cdecl _dtest(double* px);
short __cdecl _ldtest(long double* px);
short __cdecl _fdtest(float* px);

Parâmetros

px
Ponteiro para um argumento de ponto flutuante.

Comentários

Esses primitivos de ponto flutuante implementam as versões C++ da função fpclassify CRT para tipos de ponto flutuante. O argumento x é avaliado e a classificação é retornada como uma dessas constantes, definidas em math.h:

Valor Descrição
FP_NAN Um NaN silencioso, indeterminado ou com sinalização
FP_INFINITE Um infinito positivo ou negativo
FP_NORMAL Um valor positivo ou negativo normalizado diferente de zero
FP_SUBNORMAL Um valor positivo ou negativo subnormal (desnormalizado)
FP_ZERO Um valor de zero positivo ou negativo

Para obter mais detalhes, você pode usar as funções específicas _fpclass_fpclassf da Microsoft. Use a fpclassify função para portabilidade.

_d_int, _ld_int, _fd_int

Sintaxe

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);

Parâmetros

px
Ponteiro para um argumento de ponto flutuante.

exp
Um expoente como um tipo integral.

Comentários

Essas primitivas de ponto flutuante pegam um ponteiro para um valor px de ponto flutuante e um valor expde expoente , e removem a parte fracionária do valor de ponto flutuante abaixo do expoente dado, se possível. O valor retornado é o resultado de no valor de entrada em px se for um NaN ou infinito e no valor de fpclassify saída em px caso contrário.

_dscale, _ldscale, _fdscale

Sintaxe

short __cdecl _dscale(double* px, long exp);
short __cdecl _ldscale(long double* px, long exp);
short __cdecl _fdscale(float* px, long exp);

Parâmetros

px
Ponteiro para um argumento de ponto flutuante.

exp
Um expoente como um tipo integral.

Comentários

Esses primitivos de ponto flutuante pegam um ponteiro para um valor px de ponto flutuante e um valor expde expoente e dimensionam o valor em px 2exp, se possível. O valor retornado é o resultado de no valor de entrada em px se for um NaN ou infinito e no valor de fpclassify saída em px caso contrário. Para portabilidade, prefira as funções , ldexpf, ldexpl .ldexp

_dunscale, _ldunscale, _fdunscale

Sintaxe

short __cdecl _dunscale(short* pexp, double* px);
short __cdecl _ldunscale(short* pexp, long double* px);
short __cdecl _fdunscale(short* pexp, float* px);

Parâmetros

pexp
Um ponteiro para um expoente como um tipo integral.

px
Ponteiro para um argumento de ponto flutuante.

Comentários

Essas primitivas de ponto flutuante decompõem o valor de ponto flutuante apontado por px em um significando (mantissa) e um expoente, se possível. O significando é dimensionado de modo que o valor absoluto seja maior ou igual a 0,5 e menor que 1,0. O expoente é o valor n, onde o valor original do ponto flutuante é igual ao significando escalado vezes 2n. Esse expoente n inteiro é armazenado no local apontado por pexp. O valor retornado é o resultado de no valor de entrada em px se for um NaN ou infinito e no valor de fpclassify saída caso contrário. Para portabilidade, prefira as funções , frexpf, frexpl .frexp

_dexp, _ldexp, _fdexp

Sintaxe

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);

Parâmetros

y
Argumento da função de ponto flutuante.

px
Ponteiro para um argumento de ponto flutuante.

exp
Um expoente como um tipo integral.

Comentários

Essas primitivas de ponto flutuante constroem um valor de ponto flutuante no local apontado por px igual a y * 2exp. O valor retornado é o resultado de no valor de entrada em y se for um NaN ou infinito e no valor de fpclassify saída em px caso contrário. Para portabilidade, prefira as funções , ldexpf, ldexpl .ldexp

_dnorm, _fdnorm

Sintaxe

short __cdecl _dnorm(unsigned short* ps);
short __cdecl _fdnorm(unsigned short* ps);

Parâmetros

ps
Ponteiro para a representação bit a bit de um valor de ponto flutuante expresso como uma matriz de unsigned short.

Comentários

Esses primitivos de ponto flutuante normalizam a parte fracionária de um valor de ponto flutuante com estouro negativo e ajustam a characteristic, ou expoente de desvio, para correspondência. O valor é passado como a representação bit a bit do tipo de ponto flutuante convertido em uma matriz de através da _double_valunião de trocadilho de tipo , _ldouble_val, ou _float_val declarada unsigned short em math.h. O valor retornado é o resultado do valor de ponto flutuante de fpclassify entrada se for um NaN ou infinito e, caso contrário, no valor de saída.

_dpoly, _ldpoly, _fdpoly

Sintaxe

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);

Parâmetros

x
Argumento da função de ponto flutuante.

table
Ponteiro para uma tabela de coeficientes de constantes de um polinômio.

n
Ordem do polinômio a ser avaliado.

Comentários

Essas primitivas de ponto flutuante retornam a avaliação de x no polinômio de ordem n cujos coeficientes são representados pelos valores constantes correspondentes em table. Por exemplo, se table[0] = 3,0, table[1] = 4,0, table[2] = 5,0 e n = 2, representa o polinômio 5,0x2 + 4,0x + 3,0. Se este polinômio for avaliado para x de 2,0, o resultado é 31,0. Essas funções não são usadas internamente.

_dlog, _dlog, _dlog

Sintaxe

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);

Parâmetros

x
Argumento da função de ponto flutuante.

base_flag
Sinalizador que controla a base a ser usada, 0 para base e e não zero para base 10.

Comentários

Essas primitivas de ponto flutuante retornam o log natural de x (ln(x) ou loge(x)), quando base_flag é 0. Eles retornam a base logarítmica 10 de x, ou logarítmica10(x), quando base_flag é diferente de zero. Essas funções não são usadas internamente. Para portabilidade, prefira as funções log, logf, logl, log10, log10f, e log10l.

_dsin, _ldsin, _fdsin

Sintaxe

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);

Parâmetros

x
Argumento da função de ponto flutuante.

quadrant
Deslocamento de quadrante igual a 0, 1, 2 ou 3 a ser usado para produzir resultados sin, cos, -sin e -cos.

Comentários

Essas primitivas de ponto flutuante retornam o seno de x deslocamento pelo quadrant módulo 4. Efetivamente, eles retornam o seno, o cosseno, o -seno e o -cosseno de x quando quadrant o módulo 4 é 0, 1, 2 ou 3, respectivamente. Essas funções não são usadas internamente. Para portabilidade, prefira as funções , sinf, sinl,cos , cosf, cosl .sin

Requisitos

Cabeçalho: <math.h>

Para obter informações sobre compatibilidade, consulte Compatibilidade.

Confira também

Suporte matemático e de ponto flutuante
fpclassify
_fpclass, _fpclassf
isfinite, _finite, _finitef
isinf
isnan, _isnan, _isnanf
isnormal
cos, cosf, cosl
frexp, frexpf, frexpl
ldexp, ldexpf, ldexpl
log, logf, logl, log10, log10f, , log10l
sin, sinf, sinl