copyediting for Usenix manuals
[unix-history] / usr / src / lib / libm / common_source / rint.3
.\" Copyright (c) 1985, 1991, 1993
.\" The Regents of the University of California. All rights reserved.
.\"
.\" %sccs.include.redist.man%
.\"
.\" @(#)rint.3 8.2 (Berkeley) %G%
.\"
.Dd
.Dt RINT 3
.Os
.Sh NAME
.Nm rint
.Nd round-to-closest integer functions
.Sh SYNOPSIS
.Fd #include <math.h>
.Ft double
.Fn rint "double x"
.Sh DESCRIPTION
The
.Fn rint
function finds the integer (represented as a double precision number)
nearest to
.Fa x
in the direction of the prevailing rounding mode.
.Sh NOTES
On a
.Tn VAX ,
.Fn rint x
is equivalent to adding half to the magnitude
and then rounding towards zero.
.Pp
In the default rounding mode, to nearest,
on a machine that conforms to
.Tn IEEE
754,
.Fn rint x
is the integer nearest
.Fa x
with the additional stipulation
that if
.Li |rint(x)\-x|=1/2
then
.Fn rint x
is even.
Other rounding modes can make
.Fn rint
act like
.Fn floor ,
or like
.Fn ceil ,
or round towards zero.
.Pp
Another way to obtain an integer near
.Fa x
is to declare (in C)
.Bd -literal -offset indent
double x;\0\0\0\0 int k;\0\0\0\0k\0=\0x;
.Ed
.Pp
Most C compilers round
.Fa x
towards 0 to get the integer
.Fa k ,
but
some do otherwise.
If in doubt, use
.Fn floor ,
.Fn ceil ,
or
.Fn rint
first, whichever you intend.
Also note that, if x is larger than
.Fa k
can accommodate, the value of
.Fa k
and the presence or absence of an integer overflow are hard to
predict.
.Sh SEE ALSO
.Xr abs 3 ,
.Xr fabs 3 ,
.Xr ceil 3 ,
.Xr floor 3 ,
.Xr ieee 3 ,
.Xr math 3
.Sh HISTORY
A
.Fn rint
function appeared in
.At v6 .