```Search                        Top                                  Index
```
```HELP REM                                Revised by A.Sloman March 1987

<number> rem <number> -> <number>

REM is an infix operator (precedence 2) which returns the remainder when
one number divides another, e.g.

10 rem 3 =>
** 1

10 rem -3 =>
** 1

The result can be negative:

-10 rem 3 =>
** -1

It could be defined thus:

define 2 x rem y;
lvars x,y;
x // y ->
enddefine;

Since "//" has been generalised to cope with non-integers, "rem" is also
no longer restricted to integers, e.g.

99.5 rem 33.2 =>
** 33.1

35_/8 rem 4 =>
** 3_/8

10_+:1 rem 3 =>
** 1_+:1

REM used to be synonymous with MOD, but the latter has been redefined.
REM is guaranteed to produce a result with the same sign as its first
argument, MOD with the same sign as its second argument. So MOD and REM
can give different results for negative arguments:
See HELP * MOD for details.

REM has to check the types of its arguments. If you know that the
arguments will be integers you can use the fast_integer version: FI_REM
instead. For further details see HELP * EFFICIENCY and REF * FASTPROCS.

REF * NUMBERS - for details of numbers and mathematical operations
available in POP-11.
HELP * DIV  - division operator
HELP * MOD  - modulus operator
HELP * MATH - for a summary of mathematical operations in POP-11