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.