.\" Copyright (C) 2016, Michael Kerrisk <mtk.manpages@gmail.com>
.\"
.\" %%%LICENSE_START(VERBATIM)
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of this
.\" manual under the conditions for verbatim copying, provided that the
.\" entire resulting derived work is distributed under the terms of a
.\" permission notice identical to this one.
.\"
.\" Since the Linux kernel and libraries are constantly changing, this
.\" manual page may be incorrect or out-of-date.  The author(s) assume no
.\" responsibility for errors or omissions, or for damages resulting from
.\" the use of the information contained herein.  The author(s) may not
.\" have taken the same level of care in the production of this manual,
.\" which is licensed free of charge, as they might when working
.\" professionally.
.\"
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
.\" %%%LICENSE_END
.\"
.TH NEXTUP 3 2017-09-15 "GNU" "Linux Programmer's Manual"
.SH NAME
nextup, nextupf, nextupl, nextdown, nextdownf, nextdownl \-
return next floating-point number toward positive/negative infinity
.SH SYNOPSIS
.nf
.BR "#define _GNU_SOURCE" "     /* See feature_test_macros(7) */"
.B #include <math.h>
.PP
.BI "double nextup(double " x );
.BI "float nextupf(float " x );
.BI "long double nextupl(long double " x );
.PP
.BI "double nextdown(double " x );
.BI "float nextdownf(float " x );
.BI "long double nextdownl(long double " x );
.fi
.PP
Link with \fI\-lm\fP.
.SH DESCRIPTION
The
.BR nextup (),
.BR nextupf (),
and
.BR nextupl ()
functions return the next representable floating-point number greater than
.IR x .
.PP
If
.I x
is the smallest representable negative number in the corresponding type,
these functions return \-0.
If
.I x
is 0, the returned value is the smallest representable positive number
of the corresponding type.
.PP
If
.I x
is positive infinity, the returned value is positive infinity.
If
.I x
is negative infinity,
the returned value is the largest representable finite negative number
of the corresponding type.
.PP
If
.I x
is Nan,
the returned value is NaN.
.PP
The value returned by
.IR nextdown(x)
is
.IR \-nextup(\-x) ,
and similarly for the other types.
.SH RETURN VALUE
See DESCRIPTION.
.\" .SH ERRORS
.SH VERSIONS
These functions first appeared in glibc in version 2.24.
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
.TS
allbox;
lbw36 lb lb
l l l.
Interface	Attribute	Value
T{
.BR nextup (),
.BR nextupf (),
.BR nextupl (),
.br
.BR nextdown (),
.BR nextdownf (),
.BR nextdownl ()
T}	Thread safety	MT-Safe
.TE
.SH CONFORMING TO
These functions are described in
.IR "IEEE Std 754-2008 - Standard for Floating-Point Arithmetic"
and
.IR "ISO/IEC TS 18661".
.SH SEE ALSO
.BR nearbyint (3),
.BR nextafter (3)
