190 lines
4.1 KiB
Groff
190 lines
4.1 KiB
Groff
|
.\" Copyright (c) 1985, 1991 Regents of the University of California.
|
||
|
.\" All rights reserved.
|
||
|
.\"
|
||
|
.\" Redistribution and use in source and binary forms, with or without
|
||
|
.\" modification, are permitted provided that the following conditions
|
||
|
.\" are met:
|
||
|
.\" 1. Redistributions of source code must retain the above copyright
|
||
|
.\" notice, this list of conditions and the following disclaimer.
|
||
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||
|
.\" notice, this list of conditions and the following disclaimer in the
|
||
|
.\" documentation and/or other materials provided with the distribution.
|
||
|
.\" 3. Neither the name of the University nor the names of its contributors
|
||
|
.\" may be used to endorse or promote products derived from this software
|
||
|
.\" without specific prior written permission.
|
||
|
.\"
|
||
|
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||
|
.\" SUCH DAMAGE.
|
||
|
.\"
|
||
|
.\" from: @(#)ieee.3 6.4 (Berkeley) 5/6/91
|
||
|
.\" $NetBSD: ieee.3,v 1.21 2010/09/15 16:11:30 christos Exp $
|
||
|
.\"
|
||
|
.Dd February 25, 1994
|
||
|
.Dt IEEE 3
|
||
|
.Os
|
||
|
.Sh NAME
|
||
|
.Nm copysign ,
|
||
|
.Nm copysignf ,
|
||
|
.Nm copysignl ,
|
||
|
.Nm finite ,
|
||
|
.Nm finitef ,
|
||
|
.Nm ilogb ,
|
||
|
.Nm ilogbf ,
|
||
|
.Nm nextafter ,
|
||
|
.Nm nextafterf ,
|
||
|
.Nm nextafterl ,
|
||
|
.Nm nexttoward ,
|
||
|
.Nm remainder ,
|
||
|
.Nm remainderf ,
|
||
|
.Nm scalbn ,
|
||
|
.Nm scalbnf
|
||
|
.Nd functions for IEEE arithmetic
|
||
|
.Sh LIBRARY
|
||
|
.Lb libm
|
||
|
.Sh SYNOPSIS
|
||
|
.In math.h
|
||
|
.Ft double
|
||
|
.Fn copysign "double x" "double y"
|
||
|
.Ft float
|
||
|
.Fn copysignf "float x" "float y"
|
||
|
.Ft long double
|
||
|
.Fn copysignl "long double x" "long double y"
|
||
|
.Ft int
|
||
|
.Fn finite "double x"
|
||
|
.Ft int
|
||
|
.Fn finitef "float x"
|
||
|
.Ft int
|
||
|
.Fn ilogb "double x"
|
||
|
.Ft int
|
||
|
.Fn ilogbf "float x"
|
||
|
.Ft double
|
||
|
.Fn nextafter "double x" "double y"
|
||
|
.Ft float
|
||
|
.Fn nextafterf "float x" "float y"
|
||
|
.Ft long double
|
||
|
.Fn nextafterl "long double x" "long double y"
|
||
|
.Ft double
|
||
|
.Fn nexttoward "double x" "long double y"
|
||
|
.Ft double
|
||
|
.Fn remainder "double x" "double y"
|
||
|
.Ft float
|
||
|
.Fn remainderf "float x" "float y"
|
||
|
.Ft double
|
||
|
.Fn scalbn "double x" "int n"
|
||
|
.Ft float
|
||
|
.Fn scalbnf "float x" "int n"
|
||
|
.Sh DESCRIPTION
|
||
|
These functions are required or recommended by
|
||
|
.St -ieee754 .
|
||
|
.Pp
|
||
|
.Fn copysign
|
||
|
returns
|
||
|
.Fa x
|
||
|
with its sign changed to
|
||
|
.Fa y Ns 's .
|
||
|
.Pp
|
||
|
.Fn finite
|
||
|
returns the value 1 just when
|
||
|
\-\*(If \*(Lt
|
||
|
.Fa x
|
||
|
\*(Lt +\*(If;
|
||
|
otherwise a
|
||
|
zero is returned
|
||
|
(when
|
||
|
.Pf \*(Ba Ns Fa x Ns \*(Ba
|
||
|
= \*(If or
|
||
|
.Fa x
|
||
|
is \*(Na).
|
||
|
.Pp
|
||
|
.Fn ilogb
|
||
|
returns
|
||
|
.Fa x Ns 's exponent
|
||
|
.Fa n ,
|
||
|
in integer format.
|
||
|
.Fn ilogb \*(Pm\*(If
|
||
|
returns
|
||
|
.Dv INT_MAX
|
||
|
and
|
||
|
.Fn ilogb 0
|
||
|
returns
|
||
|
.Dv INT_MIN .
|
||
|
.Pp
|
||
|
.Fn nextafter
|
||
|
returns the next machine representable number from
|
||
|
.Fa x
|
||
|
in direction
|
||
|
.Fa y .
|
||
|
.Pp
|
||
|
.Fn nexttoward
|
||
|
is equivalent to
|
||
|
.Fn nextafter ,
|
||
|
except that the second parameter has type
|
||
|
.Ft long double
|
||
|
and the function returns
|
||
|
.Dv y
|
||
|
converted to the type of the function if
|
||
|
.Dv x
|
||
|
equals
|
||
|
.Dv y .
|
||
|
.Pp
|
||
|
.Fn remainder
|
||
|
returns the remainder
|
||
|
.Fa r
|
||
|
:=
|
||
|
.Fa x
|
||
|
\-
|
||
|
.Fa n\(**y
|
||
|
where
|
||
|
.Fa n
|
||
|
is the integer nearest the exact value of
|
||
|
.Bk -words
|
||
|
.Fa x Ns / Ns Fa y ;
|
||
|
.Ek
|
||
|
moreover if
|
||
|
.Pf \*(Ba Fa n
|
||
|
\-
|
||
|
.Sm off
|
||
|
.Fa x No / Fa y No \*(Ba
|
||
|
.Sm on
|
||
|
=
|
||
|
1/2
|
||
|
then
|
||
|
.Fa n
|
||
|
is even.
|
||
|
Consequently the remainder is computed exactly and
|
||
|
.Sm off
|
||
|
.Pf \*(Ba Fa r No \*(Ba
|
||
|
.Sm on
|
||
|
\*(Le
|
||
|
.Sm off
|
||
|
.Pf \*(Ba Fa y No \*(Ba/2 .
|
||
|
.Sm on
|
||
|
But
|
||
|
.Fn remainder x 0
|
||
|
and
|
||
|
.Fn remainder \*(If 0
|
||
|
are invalid operations that produce a \*(Na.
|
||
|
.Pp
|
||
|
.Fn scalbn
|
||
|
returns
|
||
|
.Fa x Ns \(**(2** Ns Fa n )
|
||
|
computed by exponent manipulation.
|
||
|
.Sh SEE ALSO
|
||
|
.Xr math 3
|
||
|
.Sh STANDARDS
|
||
|
.St -ieee754
|
||
|
.Sh HISTORY
|
||
|
The
|
||
|
.Nm ieee
|
||
|
functions appeared in
|
||
|
.Bx 4.3 .
|