The concept of remainder after division is
not uniquely defined, and the two functions `mod`

and `rem`

each
compute a different variation. The `mod`

function
produces a result that is either zero or has the same sign as the
divisor. The `rem`

function produces a result that
is either zero or has the same sign as the dividend.

Another difference is the convention when the divisor is zero.
The `mod`

function follows the convention that `mod(a,0)`

returns `a`

,
whereas the `rem`

function follows the convention
that `rem(a,0)`

returns `NaN`

.

Both variants have their uses. For example, in signal processing,
the `mod`

function is useful in the context of
periodic signals because its output is periodic (with period equal
to the divisor).

The `mod`

function is useful
for congruence relationships: `a`

and `b`

are
congruent (mod m) if and only if `mod(a,m) == mod(b,m)`

.
For example, 23 and 13 are congruent (mod 5).