IEEE(3) BSD Programmer's Manual IEEE(3)NAME
copysign, copysignf, finite, finitef, ilogb, ilogbf, nextafter,
nextafterf, remainder, remainderf, scalbn, scalbnf - Functions for IEEE
754 arithmetic
SYNOPSIS
#include <math.h>
double
copysign(double x, double y);
float
copysignf(float x, float y);
int
finite(double x);
int
finitef(float x);
int
ilogb(double x);
int
ilogbf(float x);
double
nextafter(double x, double y);
float
nextafterf(float x, float y);
double
remainder(double x, double y);
float
remainderf(float x, float y);
double
scalbn(double x, int n);
float
scalbnf(float x, int n);
DESCRIPTION
These functions are required or recommended by IEEE 754.
copysign() and copysignf() return x with its sign changed to y's.
finite() and finitef() return the value 1 just when -infinity < x < +in-
finity; otherwise a zero is returned (when |x| = infinity or x is NaN).
ilogb() and ilogbf() return x's exponent n, in integer format.
ilogb(+-infinity) returns INT_MAX and ilogb(0) returns INT_MIN.
nextafter() and nextafterf() return the next machine representable number
from x in direction y.
remainder() and remainderf() return the remainder r := x - n*y where n is
the integer nearest the exact value of x/y; moreover if |n - x/y| = 1/2
then n is even. Consequently the remainder is computed exactly and |r|
<= |y|/2. But remainder(x, 0) and remainder(infinity, 0) are invalid op-
erations that produce a NaN.
scalbn() and scalbnf() return x*(2**n) computed by exponent manipulation.
ERRORS
For remainder() and remainderf(), if y = 0 then:
_IEEE_ The return value is NaN.
_POSIX_ Same as _IEEE_, but errno is also set to EDOM.
_XOPEN_ Same as _POSIX_, but errno is only set if matherr(3) returns 0.
The exception type is DOMAIN.
_SVID_ Same as _XOPEN_, and a message is printed to stderr if errno is
set.
SEE ALSOmath(3)HISTORY
The ieee functions appeared in 4.3BSD.
BSDI BSD/OS March 4, 1998 2