C Library - math.h

Last Updated : 5 Aug, 2026

The <math.h> header file in C provides a collection of standard mathematical functions and predefined constants for performing mathematical operations. These functions generally accept double values as arguments and return double results.

  • Supports common operations such as square root, power, logarithmic, and trigonometric calculations.
  • Includes predefined mathematical constants and utility functions for accurate computations.
C
#include <stdio.h>
#include <math.h>

int main() {
    double num = 25.0;

    printf("Square Root = %.2f\n", sqrt(num));
    printf("Power = %.2f\n", pow(2, 3));

    return 0;
}

Output
Square Root = 5.00
Power = 8.00

Syntax

#include <math.h>

After including the header file, we can use its services in the program. There are two types of elements in math.h header file:

  • Functions
  • Macros

math.h Library Functions

These are functions that are defined inside the <math.h> header file that performs a particular mathematical operation when called.

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

int main()
{
    // two variables for test
    double x = 3.3, y = 1.1;

    // ceil and floor demonstration
    printf(
        "Ceil of %.1lf = %.1lf \nFloor of %.1lf = %.1lf\n",
        x, ceil(x), x, floor(x));

    // pow function demonstration
    printf("%.1lf raised to the power %.1lf = %.1lf\n", x,
           y, pow(x, y));
  
    return 0;
}

Output
Ceil of 3.3 = 4.0 
Floor of 3.3 = 3.0
3.3 raised to the power 1.1 = 3.7

Commonly used math.h header file functions

Function Name

Function Description

ceil(x)

Returns the largest integer smaller than or equal to x.

floor(x)

Returns the smallest integer larger than or equal to x.

fabs(x)

Returns the absolute value of x.

sqrt(x)

Returns the square root of x.

cbrt(x)

Returns the cube root of x.

pow(x , y)

Returns the value of x raised to the power y.

exp(x)

Returns the value of e(Euler's Number) raised to the power x.

fmod(x , y)

Returns the remainder of x divided by y.

log(x)

Returns the natural logarithm of x.

log10(x)

Returns the common logarithm of x.

modf(x , *y)

Returns the fractional component of x and sets the y to the integral component of x.

cos(x)

Returns the cosine of radian angle x.

sin(x)

Returns the sine of radian angle x.

tan(x)

Returns the tangent of radian angle x.

acos(x)

Returns the arc cosine of x in radians.

asin(x)

Returns the arc sine of x in radians.

atan(x)

Returns the arc tangent of x in radians.

cosh(x)

Returns the hyperbolic cosine of x.

sinh(x)

Returns the hyperbolic sine of x.

math.h Library Macros

They are the macros defined inside <math.h> header file using #define preprocessor. They can be either constant that is replaced by their value when used or either function-like macros.

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

int main()
{
    // HUGE_VAL macro
    printf("Value Returned by HUGE_VAL = %.1lf\n", HUGE_VAL);

    // isgreater macro demonstration
    printf("Value returned by isgreater = %d", isgreater(12.0, 13.0));
  
    return 0;
}

Output
Value Returned by HUGE_VAL = inf
Value returned by isgreater = 0

double cos(double x)

This function returns the cosine of x, where x is an angle in radians.

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

int main(void)
{
    double x = 1.5;
    double y = 2.0;
    double z;

    z = sin(x);
    printf("sin(%.2lf) = %.2lf\n", x, z);
    // output: sin(1.50) = 0.99

    z = cos(x);
    printf("cos(%.2lf) = %.2lf\n", x, z);
    // output: cos(1.50) = 0.07

    z = tan(x);
    printf("tan(%.2lf) = %lf\n", x, z);
    // output: tan(1.50) = 14.33

    z = asin(x);
    printf("asin(%.2lf) = %lf\n", x, z);
    // output: asin(1.50) = NAN

    z = acos(x);
    printf("acos(%.2lf) = %lf\n", x, z);
    // output: acos(1.50) = NAN

    z = atan(x);
    printf("atan(%.2lf) = %lf\n", x, z);
    // output: atan(1.50) = 0.98

    z = exp(y);
    printf("exp(%.2lf) = %lf\n", y, z);
    // output: exp(2.00) = 7.39

    z = log(y);
    printf("log(%.2lf) = %lf\n", y, z);
    // output: log(2.00) = 0.69

    z = sqrt(y);
    printf("sqrt(%.2lf) = %lf\n", y, z);
    // output: sqrt(2.00) = 1.41

    return 0;
}

Output

sin(1.50) = 0.997495
cos(1.50) = 0.070737
tan(1.50) = 14.101420
asin(1.50) = nan
acos(1.50) = nan
atan(1.50) = 0.982794
exp(2.00) = 7.389056
log(2.00) = 0.693147
sqrt(2.00) = 1.414214

Note: inf is used to represent positive infinity (very large number that cannot be represented using double or float.

Here is a list of some commonly used math.h library macros:

Macro Name

Macro Description

HUGE_VAL

Represent positive infinity i.e. values too big to represent using a float, or double.

isgreater(x, y)

Checks if x > y and return true/false accordingly.

isless(x, y)

Checks if x < y and return true/false accordingly.

Note: isgreater(x , y) may look like a function but they are defined as macros in the math.h header file and are replaced by their value in preprocessing.

Comment