C - Math Functions
C provides a set of standard math functions in the math.h library for performing common mathematical operations like square root, power, trigonometry, and more.
Common Math Functions
- abs(x)- Absolute value (int)
- fabs(x)- Absolute value (float/double)
- ceil(x)- Smallest integer not less than x
- floor(x)- Largest integer not greater than x
- sqrt(x)- Square root
- cbrt(x)- Cube root
- pow(x, y)- x raised to the power y
- exp(x)- Exponential function e^x
- log(x)- Natural logarithm (base e)
- log10(x)- Logarithm base 10
- sin(x)- Sine (x in radians)
- cos(x)- Cosine (x in radians)
- tan(x)- Tangent (x in radians)
- asin(x)- Arc sine (result in radians)
- acos(x)- Arc cosine (result in radians)
- atan(x)- Arc tangent (result in radians)
- sinh(x)- Hyperbolic sine
- cosh(x)- Hyperbolic cosine
- tanh(x)- Hyperbolic tangent
- fmod(x, y)- Floating-point remainder of x/y
- modf(x, &intpart)- Splits x into integer and fractional parts
- frexp(x, &exp)- Breaks x into normalized fraction and exponent
- ldexp(x, exp)- Multiplies x by 2 raised to exp
- hypot(x, y)- Square root of (x*x + y*y)
- round(x)- Rounds x to nearest integer
- trunc(x)- Truncates x to integer
Example
#include <stdio.h>
#include <math.h>
int main() {
    printf("abs(-5) = %d\\n", abs(-5));
    printf("fabs(-5.5) = %.2f\\n", fabs(-5.5));
    printf("ceil(2.3) = %.2f\\n", ceil(2.3));
    printf("floor(2.7) = %.2f\\n", floor(2.7));
    printf("sqrt(16) = %.2f\\n", sqrt(16));
    printf("cbrt(27) = %.2f\\n", cbrt(27));
    printf("pow(2, 3) = %.2f\\n", pow(2, 3));
    printf("exp(1) = %.2f\\n", exp(1));
    printf("log(2.71828) = %.2f\\n", log(2.71828));
    printf("log10(100) = %.2f\\n", log10(100));
    printf("sin(0) = %.2f\\n", sin(0));
    printf("cos(0) = %.2f\\n", cos(0));
    printf("tan(0) = %.2f\\n", tan(0));
    printf("asin(1) = %.2f\\n", asin(1));
    printf("acos(1) = %.2f\\n", acos(1));
    printf("atan(1) = %.2f\\n", atan(1));
    printf("sinh(0) = %.2f\\n", sinh(0));
    printf("cosh(0) = %.2f\\n", cosh(0));
    printf("tanh(0) = %.2f\\n", tanh(0));
    printf("fmod(5.3, 2) = %.2f\\n", fmod(5.3, 2));
    double intpart, fracpart;
    fracpart = modf(3.14, &intpart);
    printf("modf(3.14): intpart = %.2f, fracpart = %.2f\\n", intpart, fracpart);
    int exp;
    double frac = frexp(8.0, &exp);
    printf("frexp(8.0): frac = %.2f, exp = %d\\n", frac, exp);
    printf("ldexp(0.5, 4) = %.2f\\n", ldexp(0.5, 4));
    printf("hypot(3, 4) = %.2f\\n", hypot(3, 4));
    printf("round(2.5) = %.2f\\n", round(2.5));
    printf("trunc(2.9) = %.2f\\n", trunc(2.9));
    return 0;
}
Output (partial):
abs(-5) = 5
fabs(-5.5) = 5.50
ceil(2.3) = 3.00
floor(2.7) = 2.00
sqrt(16) = 4.00
cbrt(27) = 3.00
pow(2, 3) = 8.00
exp(1) = 2.72
log(2.71828) = 1.00
log10(100) = 2.00
sin(0) = 0.00
cos(0) = 1.00
tan(0) = 0.00
asin(1) = 1.57
acos(1) = 0.00
atan(1) = 0.79
sinh(0) = 0.00
cosh(0) = 1.00
tanh(0) = 0.00
fmod(5.3, 2) = 1.30
modf(3.14): intpart = 3.00, fracpart = 0.14
frexp(8.0): frac = 0.50, exp = 4
ldexp(0.5, 4) = 8.00
hypot(3, 4) = 5.00
round(2.5) = 3.00
trunc(2.9) = 2.00
Compile tip
On many systems you must link with the math library: gcc prog.c -o prog -lm.
Summary
Use math.h for advanced mathematical operations in C. Prefer double for precision, and be mindful of floating-point rounding.