Tutorialspoint.dev

nextafter() and nexttoward() in C/C++

How would you solve below problems in C/C++?

  • What is the smallest representable positive floating point number in C/C++?
  • What is the largest representable negative floating point number in C/C++?
  • Given a positive floating point number x, find the largest representable floating point value smaller than x?

nextafter(x, y) and nexttoward(x.y)
In C and C++, both nextafter(x, y)  and nexttoward(x.y)  are similar functions defined in math.h or cmath header files. They both return next representable value after x in the direction of y. nexttoward() has more precise second parameter y.

The following program demonstrates the concept :

// C program to demonstrate use of nextafter() and nexttoward()
#include <stdio.h>
#include <math.h>
int main ()
{
    // using nextafter
    printf ("Smallest positive floating point number : %e ",
            nextafter(0.0, 1.0));
    printf ("Largest negative floating point number :%e ",
            nextafter(0.0, -1.0));
    printf ("Largest positive floating point number smaller than 0.5 : %e ",
            nextafter(0.5, 0.0));
  
    // using nexttoward
    printf ("Smallest positive floating point number : %e ",
            nexttoward(0.0, 1.0));
    printf ("Largest negative floating point number : %e ",
            nexttoward(0.0, -1.0));
    printf ("Largest positive floating point number smaller than 0.5 : %e ",
            nexttoward(0.5, 0.0));
    return (0);
}

Output:

nextafter first value greater than zero: 4.940656e-324
nextafter first value less than zero: -4.940656e-324
nexttoward first value greater than zero: 4.940656e-324
nexttoward first valnextafter first value greater than zero: 4.940656e-324
nextafter first value less than zero: -4.940656e-324
nexttoward first value greater than zero: 4.940656e-324
nexttoward first value less than zero: -4.940656e-324 ue less than zero: -4.940656e-324 

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above



This article is attributed to GeeksforGeeks.org

leave a comment

code

0 Comments

load comments

Subscribe to Our Newsletter