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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
.\" Copyright 2026 Andrew V.Kosteltsev (kx@radix-linux.su)
.\"
.\"
.TH imod 3 "September 14, 2026" "libmpu" "LibMPU Programmer's Manual"
.SH NAME
\fBimod\fP \- unsigned modular reduction
.SH SYNOPSIS
.nf
.B #include <libmpu.h>
.PP
.BI "void imod( mpu_int *" c ", mpu_int *" a ", mpu_int *" b ", int " nb " );"
.fi
.SH DESCRIPTION
The \fBimod()\fP function computes the remainder of unsigned division
.sp
.nf
c = a mod b
.fi
.sp
and places the result at address \fBc\fP. The result satisfies \fB0 <= c < b\fP when
\fBb\fP is nonzero. The memory contents at addresses \fBa\fP and \fBb\fP are not changed,
and the previous contents at address \fBc\fP are lost. The \fBnb\fP parameter determines
the size of all operands, in bytes.
.PP
If \fBb\fP is zero, the value at \fBc\fP is not changed, the \fBV\fP (Invalid operation)
flag is set, and \fB__mpu_integer_error_no\fP is set to \fB__I_ENUMBER__\fP.
.PP
On successful completion the integer flags are cleared and the \fBZ\fP flag is set if the
remainder is zero.
.sp
.SH EXAMPLES
.nf
.sp
#include <libmpu.h>
#include <stdio.h>
int main( void )
{
mpu_int1024_t c, a, b;
int nb = NB_I1024;
__mpu_char8_t s[4096];
__mpu_init();
iatoui( a, "456", nb );
iatoui( b, "89", nb );
imod( c, a, b, nb );
iuitoa( s, c, RADIX_DEC, LOWERCASE, nb );
printf( "c = %s;\\n", s ); /* c = 11; */
__mpu_free_context();
return( 0 );
}
.fi
.sp
.SH SEE ALSO
.BR iadd(3),
.BR isub(3),
.BR iadc(3),
.BR isbb(3),
.BR ineg(3),
.BR inot(3),
.BR iand(3),
.BR itest(3),
.BR icmp(3),
.BR ior(3),
.BR ixor(3),
.BR iinc(3),
.BR idec(3),
.BR ixchg(3),
.BR icpy(3),
.BR icvt(3),
.BR imul(3),
.BR ismul(3),
.BR idiv(3),
.BR isdiv(3),
.BR iatoi(3),
.BR iatoui(3),
.BR iitoa(3),
.BR iuitoa(3),
.BR _int_digs(3),
.BR ibits_len(3),
.BR igcd(3),
.BR ilcm(3),
.BR imul_mod(3),
.BR ipow_mod(3),
.BR ipowm1_mod(3),
.BR shifts(3),
.BR shifts\-n(3),
.BR circular\-shifts(3),
.BR circular\-shifts\-n(3),
.BR integer\-flags(3),
.BR real\-flags(3),
.BR libmpu(7).
|