3 int test_I_xgcd (int iterations)
8 for (i = iterations; i > 0; i--) {
9 cl_I a = testrandom_I();
10 cl_I b = testrandom_I();
12 cl_I g = xgcd(a,b,&u,&v);
13 ASSERT3(g == gcd(a,b), a,b,g);
14 ASSERT4(g == u*a+v*b, a,b,u,v);
15 if (a != 0 && b != 0) {
16 if (abs(a) == abs(b)) {
17 ASSERT4((u == signum(a) && v == 0) || (u == 0 && v == signum(b)), a,b,u,v);
19 else if (mod(abs(a),abs(b)) == 0) {
20 ASSERT4(u == 0 && v == signum(b), a,b,u,v);
22 else if (mod(abs(b),abs(a)) == 0) {
23 ASSERT4(u == signum(a) && v == 0, a,b,u,v);
26 ASSERT4(abs(u) <= floor1(abs(b),2*g) && abs(v) <= floor1(abs(a),2*g), a,b,u,v);