Blame man3/nextafter.3

Packit 7cfc04
.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de)
Packit 7cfc04
.\" and Copyright 2008, Linux Foundation, written by Michael Kerrisk
Packit 7cfc04
.\"     <mtk.manpages@gmail.com>
Packit 7cfc04
.\"
Packit 7cfc04
.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
Packit 7cfc04
.\" Distributed under GPL
Packit 7cfc04
.\" %%%LICENSE_END
Packit 7cfc04
.\"
Packit 7cfc04
.\" Based on glibc infopages
Packit 7cfc04
.\"
Packit 7cfc04
.TH NEXTAFTER 3 2017-09-15 "GNU" "Linux Programmer's Manual"
Packit 7cfc04
.SH NAME
Packit 7cfc04
nextafter, nextafterf, nextafterl, nexttoward, nexttowardf, nexttowardl \-
Packit 7cfc04
floating-point number manipulation
Packit 7cfc04
.SH SYNOPSIS
Packit 7cfc04
.B #include <math.h>
Packit 7cfc04
.PP
Packit 7cfc04
.BI "double nextafter(double " x ", double " y );
Packit 7cfc04
.br
Packit 7cfc04
.BI "float nextafterf(float " x ", float " y );
Packit 7cfc04
.br
Packit 7cfc04
.BI "long double nextafterl(long double " x ", long double " y );
Packit 7cfc04
.PP
Packit 7cfc04
.BI "double nexttoward(double " x ", long double " y );
Packit 7cfc04
.br
Packit 7cfc04
.BI "float nexttowardf(float " x ", long double " y );
Packit 7cfc04
.br
Packit 7cfc04
.BI "long double nexttowardl(long double " x ", long double " y );
Packit 7cfc04
.PP
Packit 7cfc04
Link with \fI\-lm\fP.
Packit 7cfc04
.PP
Packit 7cfc04
.in -4n
Packit 7cfc04
Feature Test Macro Requirements for glibc (see
Packit 7cfc04
.BR feature_test_macros (7)):
Packit 7cfc04
.in
Packit 7cfc04
.PP
Packit 7cfc04
.ad l
Packit 7cfc04
.BR nextafter ():
Packit 7cfc04
.RS 4
Packit 7cfc04
_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
Packit 7cfc04
    || _XOPEN_SOURCE\ >=\ 500
Packit 7cfc04
.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
Packit 7cfc04
    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
Packit 7cfc04
    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
Packit 7cfc04
.RE
Packit 7cfc04
.br
Packit 7cfc04
.BR nextafterf (),
Packit 7cfc04
.BR nextafterl ():
Packit 7cfc04
.RS 4
Packit 7cfc04
_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
Packit 7cfc04
    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
Packit 7cfc04
    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
Packit 7cfc04
.RE
Packit 7cfc04
.br
Packit 7cfc04
.BR nexttoward (),
Packit 7cfc04
.BR nexttowardf (),
Packit 7cfc04
.BR nexttowardl ():
Packit 7cfc04
.RS 4
Packit 7cfc04
_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
Packit 7cfc04
_POSIX_C_SOURCE\ >=\ 200112L
Packit 7cfc04
.RE
Packit 7cfc04
.ad b
Packit 7cfc04
.SH DESCRIPTION
Packit 7cfc04
The
Packit 7cfc04
.BR nextafter (),
Packit 7cfc04
.BR nextafterf (),
Packit 7cfc04
and
Packit 7cfc04
.BR nextafterl ()
Packit 7cfc04
functions return the next representable floating-point value following
Packit 7cfc04
.I x
Packit 7cfc04
in the direction of
Packit 7cfc04
.IR y .
Packit 7cfc04
If
Packit 7cfc04
.I y
Packit 7cfc04
is less than
Packit 7cfc04
.IR x ,
Packit 7cfc04
these functions will return the largest representable number less than
Packit 7cfc04
.IR x .
Packit 7cfc04
.PP
Packit 7cfc04
If
Packit 7cfc04
.I x
Packit 7cfc04
equals
Packit 7cfc04
.IR y ,
Packit 7cfc04
the functions return
Packit 7cfc04
.IR y .
Packit 7cfc04
.PP
Packit 7cfc04
The
Packit 7cfc04
.BR nexttoward (),
Packit 7cfc04
.BR nexttowardf (),
Packit 7cfc04
and
Packit 7cfc04
.BR nexttowardl ()
Packit 7cfc04
functions do the same as the corresponding
Packit 7cfc04
.BR nextafter ()
Packit 7cfc04
functions, except that they have a
Packit 7cfc04
.I "long double"
Packit 7cfc04
second argument.
Packit 7cfc04
.SH RETURN VALUE
Packit 7cfc04
On success,
Packit 7cfc04
these functions return the next representable floating-point value after
Packit 7cfc04
.I x
Packit 7cfc04
in the direction of
Packit 7cfc04
.IR y .
Packit 7cfc04
.PP
Packit 7cfc04
If
Packit 7cfc04
.I x
Packit 7cfc04
equals
Packit 7cfc04
.IR y ,
Packit 7cfc04
then
Packit 7cfc04
.I y
Packit 7cfc04
(cast to the same type as
Packit 7cfc04
.IR x )
Packit 7cfc04
is returned.
Packit 7cfc04
.PP
Packit 7cfc04
If
Packit 7cfc04
.I x
Packit 7cfc04
or
Packit 7cfc04
.I y
Packit 7cfc04
is a NaN,
Packit 7cfc04
a NaN is returned.
Packit 7cfc04
.PP
Packit 7cfc04
If
Packit 7cfc04
.I x
Packit 7cfc04
is finite,
Packit 7cfc04
.\" e.g., DBL_MAX
Packit 7cfc04
and the result would overflow,
Packit 7cfc04
a range error occurs,
Packit 7cfc04
and the functions return
Packit 7cfc04
.BR HUGE_VAL ,
Packit 7cfc04
.BR HUGE_VALF ,
Packit 7cfc04
or
Packit 7cfc04
.BR HUGE_VALL ,
Packit 7cfc04
respectively, with the correct mathematical sign.
Packit 7cfc04
.PP
Packit 7cfc04
If
Packit 7cfc04
.I x
Packit 7cfc04
is not equal to
Packit 7cfc04
.IR y ,
Packit 7cfc04
and the correct function result would be subnormal, zero, or underflow,
Packit 7cfc04
a range error occurs,
Packit 7cfc04
and either the correct value (if it can be represented),
Packit 7cfc04
or 0.0, is returned.
Packit 7cfc04
.SH ERRORS
Packit 7cfc04
See
Packit 7cfc04
.BR math_error (7)
Packit 7cfc04
for information on how to determine whether an error has occurred
Packit 7cfc04
when calling these functions.
Packit 7cfc04
.PP
Packit 7cfc04
The following errors can occur:
Packit 7cfc04
.TP
Packit 7cfc04
Range error: result overflow
Packit 7cfc04
.\" e.g., nextafter(DBL_MAX, HUGE_VAL);
Packit 7cfc04
.\" .I errno
Packit 7cfc04
.\" is set to
Packit 7cfc04
.\" .BR ERANGE .
Packit 7cfc04
An overflow floating-point exception
Packit 7cfc04
.RB ( FE_OVERFLOW )
Packit 7cfc04
is raised.
Packit 7cfc04
.TP
Packit 7cfc04
Range error: result is subnormal or underflows
Packit 7cfc04
.\" e.g., nextafter(DBL_MIN, 0.0);
Packit 7cfc04
.\" .I errno
Packit 7cfc04
.\" is set to
Packit 7cfc04
.\" .BR ERANGE .
Packit 7cfc04
An underflow floating-point exception
Packit 7cfc04
.RB ( FE_UNDERFLOW )
Packit 7cfc04
is raised.
Packit 7cfc04
.PP
Packit 7cfc04
These functions do not set
Packit 7cfc04
.IR errno .
Packit 7cfc04
.\" FIXME . Is it intentional that these functions do not set errno?
Packit 7cfc04
.\" Bug raised: http://sources.redhat.com/bugzilla/show_bug.cgi?id=6799
Packit 7cfc04
.SH ATTRIBUTES
Packit 7cfc04
For an explanation of the terms used in this section, see
Packit 7cfc04
.BR attributes (7).
Packit 7cfc04
.TS
Packit 7cfc04
allbox;
Packit 7cfc04
lbw28 lb lb
Packit 7cfc04
l l l.
Packit 7cfc04
Interface	Attribute	Value
Packit 7cfc04
T{
Packit 7cfc04
.BR nextafter (),
Packit 7cfc04
.BR nextafterf (),
Packit 7cfc04
.br
Packit 7cfc04
.BR nextafterl (),
Packit 7cfc04
.BR nexttoward (),
Packit 7cfc04
.br
Packit 7cfc04
.BR nexttowardf (),
Packit 7cfc04
.BR nexttowardl ()
Packit 7cfc04
T}	Thread safety	MT-Safe
Packit 7cfc04
.TE
Packit 7cfc04
.SH CONFORMING TO
Packit 7cfc04
C99, POSIX.1-2001, POSIX.1-2008.
Packit 7cfc04
This function is defined in IEC 559 (and the appendix with
Packit 7cfc04
recommended functions in IEEE 754/IEEE 854).
Packit 7cfc04
.SH BUGS
Packit 7cfc04
In glibc version 2.5 and earlier, these functions do not raise an underflow
Packit 7cfc04
floating-point
Packit 7cfc04
.RB ( FE_UNDERFLOW )
Packit 7cfc04
exception when an underflow occurs.
Packit 7cfc04
.SH SEE ALSO
Packit 7cfc04
.BR nearbyint (3)
Packit 7cfc04
.SH COLOPHON
Packit 7cfc04
This page is part of release 4.15 of the Linux
Packit 7cfc04
.I man-pages
Packit 7cfc04
project.
Packit 7cfc04
A description of the project,
Packit 7cfc04
information about reporting bugs,
Packit 7cfc04
and the latest version of this page,
Packit 7cfc04
can be found at
Packit 7cfc04
\%https://www.kernel.org/doc/man\-pages/.