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
, islessgreater
islessequal
isless
e 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 exp
de 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 exp
de 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_val
uniã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