Home C&C++函数库 c++ 语法 程序源码 Linux C库

ilogb

函数  <cmath> <ctgmath>

C99 double ilogb (double x);
float ilogbf (float x);
long double ilogbl (long double x);
C++11 double ilogb (double x);
float ilogb (float x);
long double ilogb (long double x);
double ilogb (T x);     // additional overloads for integral types

整型二元对数
返回|x|的对数的整数部分,使用 FLT_RADIX 基数作为对数。
这是机器内部用来表示浮点值x的指数(exponent ),当它使用1.0和 FLT_RADIX之间的有效位数( significand)时, 如果x为正:

x = significand * FLT_RADIX exponent

通常,flt_RADIX是2,这个函数返回的值比用frexp得到的指数小1(因为有效值标准为[1.0,2.0) 而不是[0.5,1.0))。
C99 头文件<tgmath.h> 提供了该函数的泛型类型宏版本。
C++11 这个头文件(<cmath>)为整型提供了额外的重载:这些重载在计算之前将x转换为double (在T是任何整型时定义)。

这个函数可以返回两个特定的宏常量来表示以下特殊情况:
说明
FP_ILOGB0 x = 0
FP_ILOGBNAN x = NaN

这些宏常量在同一个头文件(<cmath>)中定义。

☲  参数


x
返回其ilogb的值。

☉  返回值



如果x是正常值(normal),则返回x的底为FLT_RADIX 的对数。
如果x低于正常值,则返回值是对应的规范化表示(负指数)的值。
如果x为0,它返回FP_LOGB0(一个特殊值,仅由该函数返回,在<cmath>中定义)。
如果x是无穷大的,它返回INT_MAX。
如果x是NaN,它返回FP_ILOGBNAN(一个特殊值,仅由该函数返回,在<cmath>中定义)。

如果结果的值太大,无法用返回类型的值表示,则函数返回一个未指定的值,并发生溢出范围错误。
x的零、无穷大或NaN值也可能导致域错误或溢出范围错误。

如果出现域错误:
-并且math_errhandling设置了MATH_ERRNO: 全局变量errno设置为 EDOM。
-并且math_errhandling设置了MATH_ERREXCEPT: 触发 FE_INVALID
如果出现溢出范围错误:
-并且math_errhandling设置了MATH_ERRNO: 全局变量errno设置为 ERANGE。
-并且math_errhandling设置了MATH_ERREXCEPT: 触发FE_OVERFLOW

☣  示例



/* ilogb example */
#include <stdio.h>      /* printf */
#include <math.h>       /* ilogb */

int main ()
{
  double param;
  int result;

  param = 10.0;
  result = ilogb (param);
  printf ("ilogb(%f) = %d\n", param, result);
  return 0;
}

输出:
ilogb(10.000000) = 3

🍄  另请参阅



log2 计算对数(function )
pow 幂(function )
logb 计算浮点型对数(function )

联系我们 免责声明 关于CandCplus 网站地图