fabs, fabsf, fabsl

From cppreference.com
< clrm; | numericlrm; | math
Common mathematical functions
Functions
Basic operations
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)(C99)(C99)
Exponential functions
(C99)
(C99)
(C99)
(C99)
Power functions
(C99)
(C99)
Trigonometric and hyperbolic functions
(C99)
(C99)
(C99)
Error and gamma functions
(C99)
(C99)
(C99)
(C99)
Nearest integer floating point operations
(C99)(C99)(C99)
(C99)
(C99)(C99)(C99)
Floating point manipulation functions
(C99)(C99)
(C99)
(C99)
Classification
(C99)
(C99)
(C99)
Types
(C99)(C99)
Macro constants
Defined in header <math.h>
float fabsf( float arg );
(1) (since C99)
double fabs( double arg );
(2)
long double fabsl( long double arg );
(3) (since C99)
Defined in header <tgmath.h>
#define fabs( arg )
(4) (since C99)
1-3) Computes the absolute value of a floating point value arg.
4) Type-generic macro: If the argument has type long double, fabsl is called. Otherwise, if the argument has integer type or has type double, fabs is called. Otherwise, fabsf is called. If the argument is complex, then the macro invokes the corresponding complex function (cabsf, cabs, cabsl).

Parameters

arg - floating point value

Return value

If successful, returns the absolute value of arg (|arg|). The value returned is exact and does not depend on any rounding modes.

Error handling

This function is not subject to any of the error conditions specified in math_errhandling.

If the implementation supports IEEE floating-point arithmetic (IEC 60559),

  • If the argument is 0, +0 is returned
  • If the argument is , + is returned
  • If the argument is NaN, NaN is returned

Example

#include <stdio.h>
#include <math.h>

/* This numerical integration assumes all area is positive. */
#define PI 3.14159
double num_int (double a, double b,
                double f(double),
                unsigned n) {
    if (a == b) return 0.0;
    if (n == 0) n=1;   /* avoid division by zero */
    double h = (b-a)/n;
    double sum = 0.0;
    for (unsigned k=0; k < n; ++k)
        sum += h*fabs(f(a+k*h));
    return sum;
}

int main(void)
{
    printf("fabs(+3) =%f\n", fabs(+3.0));
    printf("fabs(-3) =%f\n", fabs(-3.0));
    // special values
    printf("fabs(-0) =%f\n", fabs(-0.0));
    printf("fabs(-Inf) =%f\n", fabs(-INFINITY));

    printf("%f\n", num_int(0.0,2*PI,sin,100000));

}

Output:

fabs(+3) = 3.000000
fabs(-3) = 3.000000
fabs(-0) = 0.000000
fabs(-Inf) = inf
4.000000

References

  • C11 standard (ISO/IEC 9899:2011):
  • 7.12.7.2 The fabs functions (p: 248)
  • 7.25 Type-generic math <tgmath.h> (p: 373-375)
  • C99 standard (ISO/IEC 9899:1999):
  • 7.12.7.2 The fabs functions (p: 228-229)
  • 7.22 Type-generic math <tgmath.h> (p: 335-337)
  • C89/C90 standard (ISO/IEC 9899:1990):
  • 4.5.6.2 The fabs function

See also

computes absolute value of an integral value (|x|)
(function)
produces a value with the magnitude of a given value and the sign of another given value
(function)
checks if the given number is negative
(function)
(C99)(C99)(C99)
computes the magnitude of a complex number
(function)