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)
copysign()
returns
x
with its sign changed to
y's.
finite()
returns the value 1 just when
- <
x
< +;
otherwise a
zero is returned
(when
x
= or
x
is ).
ilogb()
returns
x's exponent
n,
in integer format.
ilogb()
returns
INT_MAX
and
ilogb(0)
returns
INT_MIN.
nextafter()
returns the next machine representable number from
x
in direction
y.
remainder()
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
remainder(x, 0)
and
remainder(0)
are invalid operations that produce a .
scalbn()
returns
x*(2**n)
computed by exponent manipulation.