Related Articles

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

• Difficulty Level : Basic
• Last Updated : 29 May, 2017

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 ``#include ``int` `main ()``{``    ``// using nextafter``    ``printf` `(``"Smallest positive floating point number : %e\n"``,``            ``nextafter(0.0, 1.0));``    ``printf` `(``"Largest negative floating point number :%e\n"``,``            ``nextafter(0.0, -1.0));``    ``printf` `(``"Largest positive floating point number smaller than 0.5 : %e\n"``,``            ``nextafter(0.5, 0.0));`` ` `    ``// using nexttoward``    ``printf` `(``"Smallest positive floating point number : %e\n"``,``            ``nexttoward(0.0, 1.0));``    ``printf` `(``"Largest negative floating point number : %e\n"``,``            ``nexttoward(0.0, -1.0));``    ``printf` `(``"Largest positive floating point number smaller than 0.5 : %e\n"``,``            ``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 ```