log, logf, logl

< c‎ | numeric‎ | math
 
 
 
常用数学函数
函数
基本运算
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)(C99)(C99)
指数函数
(C99)
(C99)
log
(C99)
(C99)
幂函数
(C99)
(C99)
三角及双曲函数
(C99)
(C99)
(C99)
误差及伽马函数
(C99)
(C99)
(C99)
(C99)
临近整数的浮点运算
(C99)(C99)(C99)
(C99)
(C99)(C99)(C99)
浮点数操作函数
(C99)(C99)
(C99)
(C99)
分类
(C99)
(C99)
(C99)
类型
(C99)(C99)
宏常量
 
定义于头文件 <math.h>
float       logf( float arg );
(1) (C99 起)
double      log( double arg );
(2)
long double logl( long double arg );
(3) (C99 起)
定义于头文件 <tgmath.h>
#define log( arg )
(4) (C99 起)
1-3) 计算 arg 的自然(底 e )对数。
4) 泛型宏:若 arg 拥有 long double 类型,则调用 logl 。否则,若 arg 拥有整数类型或 double 类型,则调用 log 。否则,调用 logf 。若 arg 为复数或序数,则宏调用对应的复数函数( clogfclogclogl )。

参数

arg - 浮点值

返回值

若不出现错误,则返回 arg 的自然(底 e )对数( ln(arg)log
e
(arg)
)。

若出现定义域错误,则返回实现定义值(支持的平台上为 NaN )。

若出现极点错误,则返回 -HUGE_VAL-HUGE_VALF-HUGE_VALL

错误处理

报告 math_errhandling 中指定的错误。

arg 小于零则出现定义域错误。

arg 为零则可能出现极点错误。

若实现支持 IEEE 浮点算术( IEC 60559 ),则

  • 若参数为 ±0 ,则返回 -∞ 并引发 FE_DIVBYZERO
  • 若参数为 1 ,则返回 +0 。
  • 若参数为负数,则返回 NaN 并引发 FE_INVALID
  • 若参数为 +∞ ,则返回 +∞ 。
  • 若参数为 NaN ,则返回 NaN 。

示例

#include <stdio.h>
#include <math.h>
#include <float.h>
#include <errno.h>
#include <fenv.h>
#pragma STDC FENV_ACCESS ON
int main(void)
{
    printf("log(1) = %f\n", log(1));
    printf("base-5 logarithm of 125 = %f\n", log(125)/log(5));
    // 特殊值
    printf("log(1) = %f\n", log(1));
    printf("log(+Inf) = %f\n", log(INFINITY));
    // 错误处理
    errno = 0; feclearexcept(FE_ALL_EXCEPT);
    printf("log(0) = %f\n", log(0));
    if(errno == ERANGE) perror("    errno == ERANGE");
    if(fetestexcept(FE_DIVBYZERO)) puts("    FE_DIVBYZERO raised");
}

输出:

log(1) = 0.000000
base-5 logarithm of 125 = 3.000000
log(1) = 0.000000
log(+Inf) = inf
log(0) = -inf
    errno == ERANGE: Numerical result out of range
    FE_DIVBYZERO raised

引用

  • C11 standard (ISO/IEC 9899:2011):
  • 7.12.6.7 The log functions (p: 244-245)
  • 7.25 Type-generic math <tgmath.h> (p: 373-375)
  • F.10.3.7 The log functions (p: 522)
  • C99 standard (ISO/IEC 9899:1999):
  • 7.12.6.7 The log functions (p: 225)
  • 7.22 Type-generic math <tgmath.h> (p: 335-337)
  • F.9.3.7 The log functions (p: 459)
  • C89/C90 standard (ISO/IEC 9899:1990):
  • 4.5.4.4 The log function

参阅

计算常用对数 (底为 10 )( log10(x)
(函数)
(C99)(C99)(C99)
计算底为 2 的对数( log2(x)
(函数)
(C99)(C99)(C99)
计算给定数加 1 的自然对数(底为 e )( ln(1+x)
(函数)
(C99)(C99)
计算 e 的给定次幂 ( ex
(函数)
(C99)(C99)(C99)
计算复数的自然对数
(函数)