1/* Generated from ../../../git/cloog/test/thomasset.cloog by CLooG 0.14.0-72-gefe2fc2 gmp bits in 0.10s. */
2extern void hash(int);
3
4/* Useful macros. */
5#define floord(n,d) (((n)<0) ? -((-(n)+(d)-1)/(d)) : (n)/(d))
6#define ceild(n,d)  (((n)<0) ? -((-(n))/(d)) : ((n)+(d)-1)/(d))
7#define max(x,y)    ((x) > (y) ? (x) : (y))
8#define min(x,y)    ((x) < (y) ? (x) : (y))
9
10#define S1(i,j) { hash(1); hash(i); hash(j); }
11#define S2(i,j,k,p,q) { hash(2); hash(i); hash(j); hash(k); hash(p); hash(q); }
12
13void test(int n)
14{
15  /* Scattering iterators. */
16  int c1, c2;
17  /* Original iterators. */
18  int i, j, k, p, q;
19  for (c1=0;c1<=floord(n-5,3);c1++) {
20    for (i=max(3*c1+1,1);i<=3*c1+3;i++) {
21      S1(i,c1) ;
22    }
23  }
24  if (n == 1) {
25    S1(1,0) ;
26    for (k=0;k<=min(0,0);k++) {
27      for (p=max(0,ceild(-3*k-1,3));p<=min(floord(-3*k+1,3),0);p++) {
28        q = -k-p ;
29        S2(1,1,k,p,-k-p) ;
30      }
31    }
32  }
33  if (n >= 2) {
34    for (c1=max(0,ceild(n-4,3));c1<=0;c1++) {
35      S1(1,c1) ;
36      for (j=1;j<=min(n,3*c1-n+5);j++) {
37        for (k=0;k<=floord(3*c1-j-n+4,3);k++) {
38          for (p=ceild(n-2,3);p<=floord(3*c1-j-3*k+2,3);p++) {
39            q = c1-k-p ;
40            S2(1,j,k,p,c1-k-p) ;
41          }
42        }
43      }
44      for (i=2;i<=min(n,3*c1+3);i++) {
45        S1(i,c1) ;
46      }
47      for (c2=1;c2<=n-1;c2++) {
48        i = c2+1 ;
49        for (j=1;j<=min(3*c1-n+5,n);j++) {
50          for (k=0;k<=floord(3*c1-j-n+4,3);k++) {
51            for (p=ceild(n-2,3);p<=floord(3*c1-j-3*k+2,3);p++) {
52              q = c1-k-p ;
53              S2(c2+1,j,k,p,c1-k-p) ;
54            }
55          }
56        }
57      }
58    }
59  }
60  for (c1=max(1,ceild(n-4,3));c1<=floord(n-1,3);c1++) {
61    for (j=1;j<=3*c1-n+5;j++) {
62      for (k=0;k<=min(floord(3*c1-j-n+4,3),0);k++) {
63        for (p=max(ceild(n-2,3),ceild(3*c1-j-3*k,3));p<=min(floord(3*c1-j-3*k+2,3),floord(n,3));p++) {
64          q = c1-k-p ;
65          S2(1,j,k,p,c1-k-p) ;
66        }
67      }
68    }
69    for (i=3*c1+1;i<=min(n,3*c1+3);i++) {
70      S1(i,c1) ;
71    }
72    for (c2=1;c2<=n-1;c2++) {
73      i = c2+1 ;
74      for (j=1;j<=3*c1-n+5;j++) {
75        for (k=0;k<=min(floord(3*c1-j-n+4,3),0);k++) {
76          for (p=max(ceild(n-2,3),ceild(3*c1-j-3*k,3));p<=min(floord(3*c1-j-3*k+2,3),floord(n,3));p++) {
77            q = c1-k-p ;
78            S2(c2+1,j,k,p,c1-k-p) ;
79          }
80        }
81      }
82    }
83  }
84  if (n >= 1) {
85    for (c1=ceild(n,3);c1<=floord(2*n+1,3);c1++) {
86      for (c2=0;c2<=n-1;c2++) {
87        i = c2+1 ;
88        for (j=max(1,3*c1-n-1);j<=min(n,3*c1-n+5);j++) {
89          for (k=max(ceild(3*c1-j-n,3),0);k<=min(floord(3*c1-j-n+4,3),0);k++) {
90            for (p=max(ceild(n-2,3),ceild(3*c1-j-3*k,3));p<=min(floord(3*c1-j-3*k+2,3),floord(n,3));p++) {
91              q = c1-k-p ;
92              S2(c2+1,j,k,p,c1-k-p) ;
93            }
94          }
95        }
96      }
97    }
98  }
99}
100