IEEE(3M) IEEE(3M)
NAME
copysign, drem, finite, logb, scalb - copysign, remainder,
exponent manipulations
SYNOPSIS
#include <math.h>
double copysign(x,y)
double x,y;
double drem(x,y)
double x,y;
int finite(x)
double x;
double logb(x)
double x;
double scalb(x,n)
double x;
int n;
DESCRIPTION
These functions are required for, or recommended by the IEEE
standard 754 for floating-point arithmetic.
Copysign(x,y) returns x with its sign changed to y's.
Drem(x,y) returns 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 drem(x,0) is
exceptional; see below under DIAGNOSTICS.
Finite(x) = 1 just when -infinity < x < +infinity,
= 0 otherwise (when |x| = infinity or x is NaN or
x is the VAX's reserved operand.)
Logb(x) returns x's exponent n, a signed integer converted
to double-precision floating-point and so chosen that
1 < |x|/2**n < 2 unless x = 0 or (only on machines that
conform to IEEE 754) |x| = infinity or x lies between 0 and
the Underflow Threshold; see below under "BUGS".
Scalb(x,n) = x*(2**n) computed, for integer n, without first
computing 2**n.
DIAGNOSTICS
IEEE 754 defines drem(x,0) and drem(infinity,y) to be
invalid operations that produce a NaN.
Page 1 (last mod. 8/20/87)
IEEE(3M) IEEE(3M)
IEEE 754 defines logb(+infinity) = +infinity and logb(0) =
-infinity, requires the latter to signal Division-by-Zero.
SEE ALSO
floor(3M), math(3M).
AUTHOR
Kwok-Choi Ng
ORIGIN
4.3 BSD
Page 2 (last mod. 8/20/87)