相关文章推荐
讲道义的企鹅  ·  dataframe ...·  3 天前    · 
独立的打火机  ·  json - ...·  1 年前    · 

用于实现某些标准 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
浮点函数参数。

这些浮点基元采用两个参数 xy,并返回一个值,该值显示它们的排序关系,表示为按位或这些常量,在 math.h 中定义:

这些基元在 CRT 中实现 isgreaterisgreaterequalislessislessequalislessgreater、 和 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

指向浮点参数的指针。

整数类型的指数。

这些浮点基元采用指向浮点值和指数值的pxexp指针,并删除浮点值低于给定指数的小数部分(如果可能)。 返回的值是 中输入值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

指向浮点参数的指针。

整数类型的指数。

这些浮点基元采用指向浮点值和指数值的pxexp指针,并在可能的情况下将值px缩放为 2exp。 返回的值是 中输入值px的结果fpclassify(如果为 NaN 或无穷大),否则返回的输出值px。 为了便于移植,首选 ldexpldexpfldexpl 函数。

_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,否则返回输出值的结果。 为了便于移植,首选 frexpfrexpffrexpl 函数。

_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。 为了便于移植,首选 ldexpldexpfldexpl 函数。

_dnorm、_fdnorm

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

parameters

指向表示为 unsigned short 数组的浮点值的按位表示形式的指针。

这些浮点基元对下溢浮点值的小数部分进行规范化,并调整特征或偏移指数以确保匹配。 该值作为浮点类型的按位表示形式传递,该表示形式通过 _double_valmath.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) 。 这些函数不会在内部使用。 为了便于移植,首选函数 loglogf、、logllog10log10flog10l

_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
用于生成 sincos-sin-cos 结果的象限偏移量 0、1、2 或 3。

这些浮点基元返回偏移量 4 的xquadrant正弦值。 实际上,当取模 4 分别为 0、1、2 或 3 时quadrant,它们返回的x正弦、余弦、-正弦和余弦值。 这些函数不会在内部使用。 为了便于移植,首选 sinsinfsinlcoscosfcosl 函数。

标头:<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