February 25, 1994 IEEE 3

### NAME

copysign, copysignf, finite, finitef, ilogb, ilogbf, nextafter, nextafterf, remainder, remainderf, scalbn, scalbnf - functions for IEEE arithmetic

### LIBRARY

Math Library (libm, -lm)

### SYNOPSIS

```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 Std 754-1985 .

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.

### SEE ALSO

math(3)

### STANDARDS

IEEE Std 754-1985

### HISTORY

The ieee functions appeared in 4.3BSD.