The Math Functions in C programming



C Math Library Functions

Math library functions allow you to perform certain common mathematical calculations. We use some of them here to introduce the concept of functions. Later in the book, we’ll discuss many of the other functions in the C standard library.

Functions are normally used in a program by writing the name of the function followed by a left parenthesis followed by the argument (or a comma-separated list of arguments) of the function followed by a right parenthesis.

To calculate and print the square root of 900.0 you might write:


    printf( "%.2f", sqrt( 900.0 ) );

When this statement executes, the math library function sqrt is called to calculate the square root of the number contained in the parentheses (900.0). The number 900.0 is the argument of the sqrt function.

The C11 standard adds a wide range of floating point and complex-number capabilities.

The following table shows the functions of the math library:

Function Description Example
sqrt( x ) square root of x sqrt( 900.0 ) is 30.0
sqrt( 9.0 ) is 3.0
cbrt( x ) cube root of x (C99 and C11 only) cbrt( 27.0 ) is 3.0
cbrt( -8.0 ) is -2.0
exp( x ) exponential function ex exp( 1.0 ) is 2.718282
exp( 2.0 ) is 7.389056
log( x ) natural logarithm of x (base e) log( 2.718282 ) is 1.0
log( 7.389056 ) is 2.0
log10( x ) logarithm of x (base 10) log10( 1.0 ) is 0.0
log10( 10.0 ) is 1.0
log10( 100.0 ) is 2.0
fabs( x ) absolute value of x as a floating-point number fabs( 13.5 ) is 13.5
fabs( 0.0 ) is 0.0
fabs( -13.5 ) is 13.5
ceil( x ) rounds x to the smallest integer not less than x ceil( 9.2 ) is 10.0
ceil( -9.8 ) is -9.0
floor( x ) rounds x to the largest integer not greater than x floor( 9.2 ) is 9.0 floor( -9.8 ) is -10.0
pow( x, y ) x raised to power y pow( 2, 7 ) is 128.0
pow( 9, .5 ) is 3.0
fmod( x, y ) remainder of x/y as a floating-point number fmod( 13.657, 2.333 ) is 1.992
sin( x ) trigonometric sine of x (x in radians) sin( 0.0 ) is 0.0
cos( x ) trigonometric cosine of x (x in radians) cos( 0.0 ) is 1.0
tan( x ) trigonometric tangent of x (x in radians) tan( 0.0 ) is 0.0

Example of Math Library

The C program below tests the math library functions:

   
    // Using the goto statement
    #include <stdio.h>
    #include <math.h>
    // function main begins program execution
    int main( void )  {
    // calculates and outputs the square root
   printf( "sqrt(%.1f) = %.1f\n", 900.0, sqrt( 900.0 ) );
   printf( "sqrt(%.1f) = %.1f\n", 9.0, sqrt( 9.0 ) );
   
    // calculates and outputs the exponential function e to the x
   printf( "exp(%.1f) = %f\n", 1.0, exp( 1.0 ) );
   printf( "exp(%.1f) = %f\n", 2.0, exp( 2.0 ) );
   
    // calculates and outputs the logarithm (base e)
   printf( "log(%f) = %.1f\n", 2.718282, log( 2.718282 ) );
   printf( "log(%f) = %.1f\n", 7.389056, log( 7.389056 ) );
   
    // calculates and outputs the logarithm (base 10)
   printf( "log10(%.1f) = %.1f\n", 1.0, log10( 1.0 ) );
   printf( "log10(%.1f) = %.1f\n", 10.0, log10( 10.0 ) );
   printf( "log10(%.1f) = %.1f\n", 100.0, log10( 100.0 ) );
   
    // calculates and outputs the absolute value
   printf( "fabs(%.1f) = %.1f\n", 13.5, fabs( 13.5 ) );
   printf( "fabs(%.1f) = %.1f\n", 0.0, fabs( 0.0 ) );
   printf( "fabs(%.1f) = %.1f\n", -13.5, fabs( -13.5 ) );
   
    // calculates and outputs ceil( x )
   printf( "ceil(%.1f) = %.1f\n", 9.2, ceil( 9.2 ) );
   printf( "ceil(%.1f) = %.1f\n", -9.8, ceil( -9.8 ) );
    // calculates and outputs floor( x )
   printf( "floor(%.1f) = %.1f\n", 9.2, floor( 9.2 ) );
   printf( "floor(%.1f) = %.1f\n", -9.8, floor( -9.8 ) );
   
    // calculates and outputs pow( x, y )
   printf( "pow(%.1f, %.1f) = %.1f\n", 2.0, 7.0, pow( 2.0, 7.0 ) );
   printf( "pow(%.1f, %.1f) = %.1f\n", 9.0, 0.5, pow( 9.0, 0.5 ) );
   
    // calculates and outputs fmod( x, y )
   printf( "fmod(%.3f/%.3f) = %.3f\n", 13.657, 2.333, 
      fmod( 13.657, 2.333 ) );
    // calculates and outputs sin( x )
   printf( "sin(%.1f) = %.1f\n", 0.0, sin( 0.0 ) );
   
    // calculates and outputs cos( x )
   printf( "cos(%.1f) = %.1f\n", 0.0, cos( 0.0 ) );
   
    // calculates and outputs tan( x )
   printf( "tan(%.1f) = %.1f\n", 0.0, tan( 0.0 ) );
    } // end main

    Output:
    sqrt(900.0) = 30.0
    sqrt(9.0) = 3.0
    exp(1.0) = 2.718282
    exp(2.0) = 7.389056
    log(2.718282) = 1.0
    log(7.389056) = 2.0
    log10(1.0) = 0.0
    log10(10.0) = 1.0
    log10(100.0) = 2.0
    fabs(13.5) = 13.5
    fabs(0.0) = 0.0
    fabs(-13.5) = 13.5
    ceil(9.2) = 10.0
    ceil(-9.8) = -9.0
    floor(9.2) = 9.0
    floor(-9.8) = -10.0
    pow(2.0, 7.0) = 128.0
    pow(9.0, 0.5) = 3.0
    fmod(13.657/2.333) = 1.992
    sin(0.0) = 0.0
    cos(0.0) = 1.0
    tan(0.0) = 0.0

PROMOTIONS