aboutsummaryrefslogtreecommitdiffstats
path: root/man/zmod.3
blob: a6cd21d6cb696b3786373663294847b0f1417c01 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
.TH ZMOD 3 libzahl
.SH NAME
zmod - Calculate the modulus of two big integer
.SH SYNOPSIS
.nf
#include <zahl.h>

void zmod(z_t \fIremainder\fP, z_t \fIdividend\fP, z_t \fIdivisor\fP);
.fi
.SH DESCRIPTION
.B zmod
calculates the remainder of a
.I dividend
and a
.IR divisor ,
and stores the result in
.IR remainder .
That is,
.I remainder
gets
.I dividend
Mod
.IR divisor .
.P
The result
.RI ( remainder )
is always non-negative. To be more precise,
a Mod b = |a| Mod |b| for all integers a
and b.
.P
It is safe to call
.B zmod
with non-unique parameters.
.SH RATIONALE
There are many ways to define modulus with
negative integers. You have to select how the
signness is selected, and when to invert
(in respect to modulated addition) the remainder.
The simplest way to implement modulus is to
ignore the sign of the operands. This solution
also makes it very easy for those that which
to write a wrapper that changes the definition.
.SH SEE ALSO
.BR zdivmod (3),
.BR zstr (3),
.BR zadd (3),
.BR zsub (3),
.BR zmul (3),
.BR zdiv (3),
.BR zneg (3),
.BR zabs (3),
.BR zpow (3)