3 int test_I_div (int iterations)
8 for (i = iterations; i > 0; i--) {
9 cl_I a = testrandom_I();
10 cl_I b = testrandom_I();
12 cl_I_div_t qr = floor2(a,b);
13 const cl_I& q = qr.quotient;
14 const cl_I& r = qr.remainder;
15 ASSERT2(a == q*b+r, a,b);
16 ASSERT2(b >= 0 ? (r >= 0 && r < b) : (r <= 0 && r > b), a,b);
20 for (i = iterations; i > 0; i--) {
21 cl_I a = testrandom_I();
22 cl_I b = testrandom_I();
24 cl_I_div_t qr = ceiling2(a,b);
25 const cl_I& q = qr.quotient;
26 const cl_I& r = qr.remainder;
27 ASSERT2(a == q*b+r, a,b);
28 ASSERT2(b >= 0 ? (r <= 0 && r > -b) : (r >= 0 && r < -b), a,b);
32 for (i = iterations; i > 0; i--) {
33 cl_I a = testrandom_I();
34 cl_I b = testrandom_I();
36 cl_I_div_t qr = truncate2(a,b);
37 const cl_I& q = qr.quotient;
38 const cl_I& r = qr.remainder;
39 ASSERT2(a == q*b+r, a,b);
42 { ASSERT2(r >= 0 && r < b, a,b); }
44 { ASSERT2(r <= 0 && r > -b, a,b); }
47 { ASSERT2(r >= 0 && r < -b, a,b); }
49 { ASSERT2(r <= 0 && r > b, a,b); }
53 for (i = iterations; i > 0; i--) {
54 cl_I a = testrandom_I();
55 cl_I b = testrandom_I();
57 cl_I_div_t qr = round2(a,b);
58 const cl_I& q = qr.quotient;
59 const cl_I& r = qr.remainder;
60 ASSERT2(a == q*b+r, a,b);
61 ASSERT2(2*abs(r) <= abs(b), a,b);
62 if (2*abs(r) == abs(b))
63 ASSERT2(evenp(q), a,b);