---
title: logb
description: "计算x的指数，以浮点形式返回。"
url: https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpckit/devg/kunpengaccel_kml_0191.html
sourcePath: /source/zh/kunpenghpcs/hpckit/devg/kunpengaccel_kml_0191.html
indexId: 0e40efe6665c2d8c0370291905294a0a9c2bc1d3f2ec78e8199e5556887ba7ed61
---
# logb

计算x的指数，以浮点形式返回。

#### 接口定义

C interface：

float logbf(float x);

double logb(double x);

long double logbl(long double x);


#### 参数

| 参数名 | 类型 | 描述 | 输入/输出 |
| --- | --- | --- | --- |
| x | 在logbf中，x是单精度浮点类型。 在logb中，x是双精度浮点类型。 在logbl中，x是长双精度浮点类型。 | 表示输入数据的浮点值。 | 输入 |


#### 返回值

- 返回x的指数部分，单精度y ∈ [-150, 127]，双精度y ∈ [-1074, 1024]。
- 输入x为±∞，返回+∞。
- 输入x为±0，返回-∞。
- 输入x为nan，返回nan。


#### 依赖

C: "km.h"


#### 示例

C interface：```
// typical usage
    double x1 = 0.0, x2 = -0.0, x3 = 0x1p-1074, x4 = 0x1p1024;
    float x5 = 0x1p-149f;
    // special handling
    double a = INFINITY, b = -INFINITY, c = NAN;
    // print result
    printf("logb(0.0) = %.15f\n", logb(x1));
    printf("logb(-0.0) = %.15f\n", logb(x2));
    printf("logb(0x1p-1074) = %.15f\n", logb(x3));
    printf("logb(0x1p1024) = %.15f\n", logb(x4));
    printf("logbf(0x1p-150) = %.15f\n", logbf(x5));
    printf("logb(INFINITY) = %.15f\n", logb(a));
    printf("logb(-INFINITY) = %.15f\n", logb(b));
    printf("logb(NAN) = %.15f\n", logb(c));
    /* 
     * logb(0.0) = -inf
     * logb(-0.0) = -inf
     * logb(0x1p-1074) = -1074.000000000000000
     * logb(0x1p1024) = inf
     * logbf(0x1p-150) = -149.000000000000000
     * logb(INFINITY) = inf
     * logb(-INFINITY) = inf
     * logb(NAN) = nan
     * 
     * */
```
