1 define fast_gcd(a, b) {
4 if (a > b) return fast_gcd(a - b, b)
6 return fast_gcd(a, b - a);
9 define void r_reduce(*r[]) {
13 if (length(r[]) != 2) sqrt(-1);
14 if (scale(r[0])) 2^r[0];
15 if (scale(r[1])) 2^r[1];
17 if (r[0] >= 0 && r[1] >= 0) g = fast_gcd(r[0], r[1]);
18 else g = gcd(r[0], r[1]);
29 define void r_init(*r[], a, b) {
35 define void r_initi(*r[], i, a, b) {
48 r_initi(a[], 5, 63, 94);