fabs, fabsf, fabsl, fabsd32, fabsd64, fabsd128

来自cppreference.com
< c‎ | numeric‎ | math
 
 
 
常用数学函数
类型
(C99)(C99)    

(C99)(C99)    

函数
基本运算
fabs
(C99)
(C99)
(C99)
(C99)(C99)(C99)(C23)
最大/最小运算
(C99)
(C23)    
指数函数
(C23)
(C99)
(C99)
(C23)
(C23)
(C99)
(C99)(C23)
(C23)
(C23)
幂函数
(C99)
(C23)
(C23)
(C99)
(C23)
(C23)
三角及双曲函数
(C23)
(C23)
(C23)
(C23)
(C99)
(C99)
(C99)
误差及伽马函数
(C99)
(C99)
(C99)
(C99)
临近整数的浮点运算
(C99)(C99)(C99)
(C99)
(C99)(C99)(C99)
(C23)(C23)(C23)(C23)
浮点操作函数
(C99)(C99)
(C99)(C23)
(C99)
窄化运算
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
量与量指数函数
十进制重编码函数
全序与载荷函数
分类
(C99)
(C99)
(C99)
(C23)
宏常量
特殊浮点值
(C99)(C23)
参数与返回值
(C99)(C99)(C99)(C99)(C99)    
错误处理
(C99)    

 
在标头 <math.h> 定义
float       fabsf( float arg );
(1) (C99 起)
double      fabs( double arg );
(2)
long double fabsl( long double arg );
(3) (C99 起)
_Decimal32  fabsd32( _Decimal32 arg );
(4) (C23 起)
_Decimal64  fabsd64( _Decimal64 arg );
(5) (C23 起)
_Decimal128 fabsd128( _Decimal128 arg );
(6) (C23 起)
在标头 <tgmath.h> 定义
#define fabs( arith )
(7) (C99 起)
1-6) 计算浮点值 arg 的绝对值。

当且仅当实现预定义了 __STDC_IEC_60559_DFP__(即实现支持十进制浮点数)才声明带有十进制浮点形参的函数。

(C23 起)
7) 泛型宏:若实参拥有 _Decimal128_Decimal64_Decimal32 (C23 起)long doubledoublefloat 类型,则分别调用 fabsd128fabsd64fabsd32 (C23 起)fabslfabsfabsf。否则若实参拥有整数类型,则调用 fabs。否则若实参为复数,则宏调用对应的复函数(cabsfcabscabsl)。否则行为未定义。

参数

arg - 浮点值
arith - 浮点或整数值

返回值

若成功,则返回 arg 的绝对值(|arg|)。值是准确的,且不依赖任何舍入模式。

错误处理

此函数不受制于任何指定于 math_errhandling 的错误条件。

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

  • 若参数为 ±0,则返回 +0
  • 若参数为 ±∞,则返回 +∞
  • 若参数为 NaN,则返回 NaN

示例

#include <math.h>
#include <stdio.h>
 
#define PI 3.14159
 
// 此数值积分假定所有面积均为正。
double integrate(double f(double),
                 double a, double b, // 假定 a < b
                 unsigned steps) // 假定 steps > 0
{
    const double dx = (b - a) / steps;
    double sum = 0.0;
    for (double x = a; x < b; x += dx)
        sum += fabs(f(x));
    return dx * sum;
}
 
int main(void)
{
    printf("fabs(+3) = %f\n", fabs(+3.0));
    printf("fabs(-3) = %f\n", fabs(-3.0));
    // 特殊值
    printf("fabs(-0) = %f\n", fabs(-0.0));
    printf("fabs(-Inf) = %f\n", fabs(-INFINITY));
 
    printf("Area under sin(x) in [-PI, PI] = %f\n", integrate(sin, -PI, PI, 5101));
}

输出:

fabs(+3) = 3.000000
fabs(-3) = 3.000000
fabs(-0) = 0.000000
fabs(-Inf) = inf
Area under sin(x) in [-PI, PI] = 4.000000

引用

  • C23 标准(ISO/IEC 9899:2024):
  • 7.12.7.2 The fabs functions (第 TBD 页)
  • 7.25 Type-generic math <tgmath.h> (第 TBD 页)
  • F.10.4.2 The fabs functions (第 TBD 页)
  • C17 标准(ISO/IEC 9899:2018):
  • 7.12.7.2 The fabs functions (第 181 页)
  • 7.25 Type-generic math <tgmath.h> (第 272-273 页)
  • F.10.4.2 The fabs functions (第 382 页)
  • C11 标准(ISO/IEC 9899:2011):
  • 7.12.7.2 The fabs functions (第 248 页)
  • 7.25 Type-generic math <tgmath.h> (第 373-375 页)
  • F.10.4.2 The fabs functions (第 524 页)
  • C99 标准(ISO/IEC 9899:1999):
  • 7.12.7.2 The fabs functions (第 228-229 页)
  • 7.22 Type-generic math <tgmath.h> (第 335-337 页)
  • F.9.4.2 The fabs functions (第 460 页)
  • C89/C90 标准(ISO/IEC 9899:1990):
  • 4.5.6.2 The fabs function

参阅

计算整数值的绝对值(|x|
(函数)
从一个给定值的绝对值和另一个给定值的符号产生值
(函数)
检查给定数是不是负数
(宏函数)
(C99)(C99)(C99)
计算复数的模(绝对值)
(函数)