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, consulte Estado global na 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
Essas primitivas 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 destas constantes, definida 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 , _fpclassf
específicas _fpclass
da Microsoft. Use a macro ou a fpclassify
função 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
Essas primitivas de ponto flutuante implementam a macro ou a signbit
função na CRT. Eles retornam um valor diferente de zero se o bit de sinal estiver definido no significante (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 usam dois argumentos x
e , e y
retornam um valor que mostra sua relação de ordenação, expressa como o bit a bit ou dessas constantes, definidas em math.h:
Valor | Descrição |
---|---|
_FP_LT |
x pode ser considerado menor que y |
_FP_EQ |
x pode ser considerado igual a y |
_FP_GT |
x pode ser considerado maior que y |
Essas primitivas implementam as macros e funções , , islessequal
isless
isgreaterequal
islessgreater
na CRT.isunordered
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
Essas primitivas 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, definida 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 , _fpclassf
específicas _fpclass
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 levam um ponteiro para um valor de ponto flutuante e um valor de expoente e removem a parte fracionária do valor px
exp
de ponto flutuante abaixo do expoente dado, se possível. O valor retornado é o resultado de no valor de entrada em se for um NaN ou infinito e no valor de fpclassify
saída em px
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
Essas primitivas de ponto flutuante usam um ponteiro para um valor de ponto flutuante e um valor de expoente e dimensionam o valor px
exp
em px
2exp
, se possível. O valor retornado é o resultado de no valor de entrada em se for um NaN ou infinito e no valor de fpclassify
saída em px
px
caso contrário. Para portabilidade, prefira as ldexp
funções , . ldexpl
ldexpf
_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 significante (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 , onde o valor n
original do ponto flutuante é igual ao significante 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 saída de fpclassify
outra forma. Para portabilidade, prefira as frexp
funções , . frexpl
frexpf
_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 se for um NaN ou infinito e no valor de fpclassify
saída em y
px
caso contrário. Para portabilidade, prefira as ldexp
funções , . ldexpl
ldexpf
_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_val
união de punning , _ldouble_val
ou _float_val
type-punning declarada unsigned short
em math.h. O valor de retorno é o resultado de no valor de ponto flutuante de entrada se for um NaN ou infinito e no valor de saída de fpclassify
outra forma.
_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 no polinômio de x
ordem n
cujos coeficientes são representados pelos valores constantes correspondentes em table
. Por exemplo, se table[0]
= 3,0, = 4,0, = 5,0 e n
= 2, ele representa o polinômio 5,0x 2 + 4,0x+ 3,0 table[1]
table[2]
. Se este polinômio for avaliado para x
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 de log 10 de , ou log10(x), quando base_flag
é diferente de x
zero. Essas funções não são usadas internamente. Para portabilidade, prefira as funções , , , , log10
logl
logf
log10f
e .log10l
log
_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 deslocamento x
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 sin
funções , , , , , cosf
cos
, . cosl
sinf
sinl
Requisitos
Cabeçalho: <math.h>
Para obter informações sobre compatibilidade, consulte Compatibilidade.
Confira também
Suporte a matemática e 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
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de