ldexp , ldexpf 或 ldexpl 子例程

用途

装入浮点数的指数。

语法

#include <math.h>
float ldexpf (x, exp)
float x;
int exp;

long double ldexpl (x, exp)
long double x;
int exp;

double ldexp (x, exp)
double  x;
int exp;

描述

ldexpfldexpl, 和 ldexp 子例程计算数量 x * 2exp

希望检查错误情况的应用程序应将 errno 全局变量设置为零,并在调用这些函数之前调用 feclearexcept(FE_ALL_EXCEPT)。 返回时,如果 errno 为非零或 fetestexcept(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW) 为非零,那么发生了错误。

参数

描述
X 指定要计算的值。
EXP 指定 2 的指数。

返回值

成功完成后, ldexpfldexplldexp 子例程将返回 x 乘以 2 ,再乘以幂 exp

如果 ldexpfldexplldexp 子例程将导致溢出,那么会发生范围错误, ldexpfldexpl, 和 ldexp 子例程分别返回 ±HUGE_VALF, ±HUGE_VALL和 ±HUGE_VAL (根据 x的符号)。

如果正确的值将导致下溢,并且不可表示,那么可能会发生范围错误,并返回 0.0 。

如果x为NaN,返回NaN。

如果 x 是 ± 0 或 Inf ,那么将返回 x

如果 exp 为 0 ,那么将返回 x

如果正确的值将导致下流,并且可表示,那么可能会发生范围错误并返回正确的值。

错误代码

如果 ldexpldexpl 子例程溢出的结果,那么将返回 +/- HUGE_VAL , 并且全局变量 errno 设置为 ERANGE

如果 ldexpldexpl 子例程下流的结果,那么将返回 0 ,并将 errno 全局变量设置为 ERANGE 值。