用于实现某些标准 C 运行时库 (CRT) 浮点函数的 Microsoft 特定基元函数。 本文出于完整性而介绍了这些函数,但不建议使用它们。 其中一些函数已注明为“未使用”,因为已知它们在精度、异常处理和 IEEE-754 行为遵从性方面有问题。 将它们包含在库中只是为了后向兼容。 为获得正确的行为、可移植性和标准遵从性,最好使用标准浮点函数而不要使用这些函数。
默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅
CRT 中的全局状态
。
_dclass
,
_ldclass
,
_fdclass
short __cdecl _dclass(double x);
short __cdecl _ldclass(long double x);
short __cdecl _fdclass(float x);
parameters
浮点函数参数。
这些浮点基元为浮点类型实现 CRT 宏 fpclassify
的 C 版本。 参数 x
的分类作为下列常量之一返回,在 math.h 中定义:
有关更多详细信息,可以使用特定于 Microsoft 的 _fpclass
、 _fpclassf
函数。 fpclassify
使用宏或函数实现可移植性。
_dsign
, _ldsign
, _fdsign
int __cdecl _dsign(double x);
int __cdecl _ldsign(long double x);
int __cdecl _fdsign(float x);
parameters
浮点函数参数。
这些浮点基元在 CRT 中实现 signbit
宏或函数。 如果在参数 x
的有符号位 (mantissa) 中设置符号位,则返回非零值。 否则,如果未设置符号位,则返回 0。
_dpcomp、_ldpcomp、_fdpcomp
int __cdecl _dpcomp(double x, double y);
int __cdecl _ldpcomp(long double x, long double y);
int __cdecl _fdpcomp(float x, float y);
x
, y
浮点函数参数。
这些浮点基元采用两个参数 x
和 y
,并返回一个值,该值显示它们的排序关系,表示为按位或这些常量,在 math.h 中定义:
这些基元在 CRT 中实现 isgreater
、isgreaterequal
、isless
、islessequal
islessgreater
、 和 isunordered
宏和函数。
_dtest、_ldtest、_fdtest
short __cdecl _dtest(double* px);
short __cdecl _ldtest(long double* px);
short __cdecl _fdtest(float* px);
parameters
指向浮点参数的指针。
这些浮点基元实现浮点类型的 CRT 函数 fpclassify
的 C++ 版本。 计算参数 x
,分类作为下列常量之一返回,在 math.h 中定义:
有关更多详细信息,可以使用特定于 Microsoft 的 _fpclass
、 _fpclassf
函数。 fpclassify
使用 函数实现可移植性。
_d_int、_ld_int、_fd_int
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);
parameters
指向浮点参数的指针。
整数类型的指数。
这些浮点基元采用指向浮点值和指数值的px
exp
指针,并删除浮点值低于给定指数的小数部分(如果可能)。 返回的值是 中输入值px
的结果fpclassify
(如果为 NaN 或无穷大),否则返回的输出值px
。
_dscale、_ldscale、_fdscale
short __cdecl _dscale(double* px, long exp);
short __cdecl _ldscale(long double* px, long exp);
short __cdecl _fdscale(float* px, long exp);
parameters
指向浮点参数的指针。
整数类型的指数。
这些浮点基元采用指向浮点值和指数值的px
exp
指针,并在可能的情况下将值px
缩放为 2exp
。 返回的值是 中输入值px
的结果fpclassify
(如果为 NaN 或无穷大),否则返回的输出值px
。 为了便于移植,首选 、ldexp
ldexpf
、 ldexpl
函数。
_dunscale、_ldunscale、_fdunscale
short __cdecl _dunscale(short* pexp, double* px);
short __cdecl _ldunscale(short* pexp, long double* px);
short __cdecl _fdunscale(short* pexp, float* px);
parameters
指向整数类型的指数的指针。
指向浮点参数的指针。
如果可能,这些浮点基元将指向 px
的浮点值分解为一个重要的 (mantissa) 和指数。 有效数将被缩放,使得绝对值大于或等于 0.5 且小于 1.0。 指数是值 n
,其中原始浮点值等于刻度幂次 2n。 此整数指数 n
存储在 指向 pexp
的位置。 返回的值是 中输入值px
(如果为 NaN 或无穷大)的结果fpclassify
,否则返回输出值的结果。 为了便于移植,首选 、frexp
frexpf
、 frexpl
函数。
_dexp、_ldexp、_fdexp
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);
parameters
浮点函数参数。
指向浮点参数的指针。
整数类型的指数。
这些浮点基元在指向 px
的位置构造一个浮点值, y
等于 * 2exp。 返回的值是 中输入值y
的结果fpclassify
(如果为 NaN 或无穷大),否则返回的输出值px
。 为了便于移植,首选 、ldexp
ldexpf
、 ldexpl
函数。
_dnorm、_fdnorm
short __cdecl _dnorm(unsigned short* ps);
short __cdecl _fdnorm(unsigned short* ps);
parameters
指向表示为 unsigned short
数组的浮点值的按位表示形式的指针。
这些浮点基元对下溢浮点值的小数部分进行规范化,并调整特征或偏移指数以确保匹配。 该值作为浮点类型的按位表示形式传递,该表示形式通过 _double_val
math.h 中声明的 unsigned short
、 _ldouble_val
或 _float_val
类型双元并集转换为 的数组。 如果输入浮点值是 NaN 或无穷大,则返回值是 的结果 fpclassify
,否则在输出值上。
_dpoly、_ldpoly、_fdpoly
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);
parameters
浮点函数参数。
table
指向多项式常量系数表的指针。
要计算的多项式的阶。
这些浮点基元以多项式n
顺序返回 的计算x
,其系数由 中的table
相应常量值表示。 例如,如果 table[0]
= 3.0、 table[1]
= 4.0、 table[2]
= 5.0 和 n
= 2,则表示多项式 5.0x2 + 4.0x + 3.0。 如果此多项式的计算结果为 x
2.0,则结果为 31.0。 这些函数不会在内部使用。
_dlog、_dlog、_dlog
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);
parameters
浮点函数参数。
base_flag
控制要使用的底数的标志,0 表示底数 e,非零值表示底数 10。
当 为 0 时base_flag
,这些浮点基元返回 (ln (x) 或 loge (x) ) 的自然对数x
。 当 为非零时base_flag
,它们返回 的x
对数 10 或对数10 (x) 。 这些函数不会在内部使用。 为了便于移植,首选函数 log
、logf
、、logl
log10
、 log10f
和 log10l
。
_dsin、_ldsin、_fdsin
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);
parameters
浮点函数参数。
quadrant
用于生成 sin
、cos
、-sin
和 -cos
结果的象限偏移量 0、1、2 或 3。
这些浮点基元返回偏移量 4 的x
quadrant
正弦值。 实际上,当取模 4 分别为 0、1、2 或 3 时quadrant
,它们返回的x
正弦、余弦、-正弦和余弦值。 这些函数不会在内部使用。 为了便于移植,首选 、sin
、sinf
、sinl
cos
、cosf
、 cosl
函数。
标头:<math.h>
有关兼容性的详细信息,请参阅兼容性。
数学和浮点支持
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