1/* Generated from ../../../git/cloog/test/darte.cloog by CLooG 0.14.0-72-gefe2fc2 gmp bits in 0.27s. */
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,k) { hash(1); hash(i); hash(j); hash(k); }
11#define S2(i,j,k) { hash(2); hash(i); hash(j); hash(k); }
12
13void test(int n)
14{
15  /* Scattering iterators. */
16  int t1, t2, t3;
17  /* Original iterators. */
18  int i, j, k;
19  if (n >= 1) {
20    t1 = -n+1 ;
21    t2 = n+1 ;
22    for (t3=n+3;t3<=3*n+1;t3++) {
23      if ((t3+n+1)%2 == 0) {
24        k = (t3-n-1)/2 ;
25        S1(1,n,(t3-n-1)/2) ;
26      }
27    }
28  }
29  if ((n >= 2) && (n <= 2)) {
30    t1 = -n+2 ;
31    for (t2=-n+4;t2<=3*n-2;t2++) {
32      for (t3=t2+2;t3<=t2+2*n;t3++) {
33        if ((t2+n)%2 == 0) {
34          i = (t2-n+2)/2 ;
35          j = (t2+n-2)/2 ;
36          if ((t3+n)%2 == 0) {
37            k = (-t2+t3)/2 ;
38            S1((t2-n+2)/2,(t2+n-2)/2,(-t2+t3)/2) ;
39          }
40        }
41      }
42    }
43    t2 = n+3 ;
44    for (t3=1;t3<=n;t3++) {
45      S2(1,n,t3) ;
46    }
47  }
48  if (n >= 3) {
49    t1 = -n+2 ;
50    for (t2=n;t2<=n+2;t2++) {
51      for (t3=t2+2;t3<=t2+2*n;t3++) {
52        if ((t2+n)%2 == 0) {
53          i = (t2-n+2)/2 ;
54          j = (t2+n-2)/2 ;
55          if ((t3+n)%2 == 0) {
56            k = (-t2+t3)/2 ;
57            S1((t2-n+2)/2,(t2+n-2)/2,(-t2+t3)/2) ;
58          }
59        }
60      }
61    }
62    t2 = n+3 ;
63    for (t3=1;t3<=n;t3++) {
64      S2(1,n,t3) ;
65    }
66  }
67  for (t1=ceild(-2*n+5,2);t1<=min(-n+6,-1);t1++) {
68    for (t2=-t1+2;t2<=-t1+4;t2++) {
69      for (t3=t2+2;t3<=t2+2*n;t3++) {
70        if ((t1+t2)%2 == 0) {
71          i = (t1+t2)/2 ;
72          j = (-t1+t2)/2 ;
73          if ((t1+t3)%2 == 0) {
74            k = (-t2+t3)/2 ;
75            S1((t1+t2)/2,(-t1+t2)/2,(-t2+t3)/2) ;
76          }
77        }
78      }
79    }
80    for (t2=-t1+5;t2<=t1+2*n;t2++) {
81      for (t3=1;t3<=n;t3++) {
82        if ((t1+t2+1)%2 == 0) {
83          i = (t1+t2-3)/2 ;
84          j = (-t1+t2-1)/2 ;
85          S2((t1+t2-3)/2,(-t1+t2-1)/2,t3) ;
86        }
87      }
88      for (t3=t2+2;t3<=t2+2*n;t3++) {
89        if ((t1+t2)%2 == 0) {
90          i = (t1+t2)/2 ;
91          j = (-t1+t2)/2 ;
92          if ((t1+t3)%2 == 0) {
93            k = (-t2+t3)/2 ;
94            S1((t1+t2)/2,(-t1+t2)/2,(-t2+t3)/2) ;
95          }
96        }
97      }
98    }
99    t2 = t1+2*n+1 ;
100    for (t3=1;t3<=n;t3++) {
101      i = t1+n-1 ;
102      S2(t1+n-1,n,t3) ;
103    }
104  }
105  if (n == 2) {
106    for (t3=5;t3<=7;t3++) {
107      if ((t3+1)%2 == 0) {
108        k = (t3-3)/2 ;
109        S1(2,1,(t3-3)/2) ;
110      }
111    }
112    for (t2=4;t2<=6;t2++) {
113      for (t3=1;t3<=2;t3++) {
114        if (t2%2 == 0) {
115          i = (t2-2)/2 ;
116          j = (t2-2)/2 ;
117          S2((t2-2)/2,(t2-2)/2,t3) ;
118        }
119      }
120    }
121  }
122  for (t1=-n+7;t1<=-1;t1++) {
123    for (t2=-t1+2;t2<=-t1+4;t2++) {
124      for (t3=t2+2;t3<=t2+2*n;t3++) {
125        if ((t1+t2)%2 == 0) {
126          i = (t1+t2)/2 ;
127          j = (-t1+t2)/2 ;
128          if ((t1+t3)%2 == 0) {
129            k = (-t2+t3)/2 ;
130            S1((t1+t2)/2,(-t1+t2)/2,(-t2+t3)/2) ;
131          }
132        }
133      }
134    }
135    for (t2=-t1+5;t2<=n-2;t2++) {
136      for (t3=1;t3<=t2+1;t3++) {
137        if ((t1+t2+1)%2 == 0) {
138          i = (t1+t2-3)/2 ;
139          j = (-t1+t2-1)/2 ;
140          S2((t1+t2-3)/2,(-t1+t2-1)/2,t3) ;
141        }
142      }
143      for (t3=t2+2;t3<=n;t3++) {
144        if ((t1+t2+1)%2 == 0) {
145          i = (t1+t2-3)/2 ;
146          j = (-t1+t2-1)/2 ;
147          S2((t1+t2-3)/2,(-t1+t2-1)/2,t3) ;
148        }
149        if ((t1+t2)%2 == 0) {
150          i = (t1+t2)/2 ;
151          j = (-t1+t2)/2 ;
152          if ((t1+t3)%2 == 0) {
153            k = (-t2+t3)/2 ;
154            S1((t1+t2)/2,(-t1+t2)/2,(-t2+t3)/2) ;
155          }
156        }
157      }
158      for (t3=n+1;t3<=t2+2*n;t3++) {
159        if ((t1+t2)%2 == 0) {
160          i = (t1+t2)/2 ;
161          j = (-t1+t2)/2 ;
162          if ((t1+t3)%2 == 0) {
163            k = (-t2+t3)/2 ;
164            S1((t1+t2)/2,(-t1+t2)/2,(-t2+t3)/2) ;
165          }
166        }
167      }
168    }
169    for (t2=n-1;t2<=t1+2*n;t2++) {
170      for (t3=1;t3<=n;t3++) {
171        if ((t1+t2+1)%2 == 0) {
172          i = (t1+t2-3)/2 ;
173          j = (-t1+t2-1)/2 ;
174          S2((t1+t2-3)/2,(-t1+t2-1)/2,t3) ;
175        }
176      }
177      for (t3=t2+2;t3<=t2+2*n;t3++) {
178        if ((t1+t2)%2 == 0) {
179          i = (t1+t2)/2 ;
180          j = (-t1+t2)/2 ;
181          if ((t1+t3)%2 == 0) {
182            k = (-t2+t3)/2 ;
183            S1((t1+t2)/2,(-t1+t2)/2,(-t2+t3)/2) ;
184          }
185        }
186      }
187    }
188    t2 = t1+2*n+1 ;
189    for (t3=1;t3<=n;t3++) {
190      i = t1+n-1 ;
191      S2(t1+n-1,n,t3) ;
192    }
193  }
194  if (n >= 3) {
195    for (t1=0;t1<=min(1,-n+6);t1++) {
196      for (t2=t1+2;t2<=-t1+4;t2++) {
197        for (t3=t2+2;t3<=t2+2*n;t3++) {
198          if ((t1+t2)%2 == 0) {
199            i = (t1+t2)/2 ;
200            j = (-t1+t2)/2 ;
201            if ((t1+t3)%2 == 0) {
202              k = (-t2+t3)/2 ;
203              S1((t1+t2)/2,(-t1+t2)/2,(-t2+t3)/2) ;
204            }
205          }
206        }
207      }
208      for (t2=-t1+5;t2<=-t1+2*n;t2++) {
209        for (t3=1;t3<=n;t3++) {
210          if ((t1+t2+1)%2 == 0) {
211            i = (t1+t2-3)/2 ;
212            j = (-t1+t2-1)/2 ;
213            S2((t1+t2-3)/2,(-t1+t2-1)/2,t3) ;
214          }
215        }
216        for (t3=t2+2;t3<=t2+2*n;t3++) {
217          if ((t1+t2)%2 == 0) {
218            i = (t1+t2)/2 ;
219            j = (-t1+t2)/2 ;
220            if ((t1+t3)%2 == 0) {
221              k = (-t2+t3)/2 ;
222              S1((t1+t2)/2,(-t1+t2)/2,(-t2+t3)/2) ;
223            }
224          }
225        }
226      }
227      for (t2=-t1+2*n+1;t2<=t1+2*n+1;t2++) {
228        for (t3=1;t3<=n;t3++) {
229          if ((t1+t2+1)%2 == 0) {
230            i = (t1+t2-3)/2 ;
231            j = (-t1+t2-1)/2 ;
232            S2((t1+t2-3)/2,(-t1+t2-1)/2,t3) ;
233          }
234        }
235      }
236    }
237  }
238  for (t1=max(-n+7,0);t1<=1;t1++) {
239    for (t2=t1+2;t2<=-t1+4;t2++) {
240      for (t3=t2+2;t3<=t2+2*n;t3++) {
241        if ((t1+t2)%2 == 0) {
242          i = (t1+t2)/2 ;
243          j = (-t1+t2)/2 ;
244          if ((t1+t3)%2 == 0) {
245            k = (-t2+t3)/2 ;
246            S1((t1+t2)/2,(-t1+t2)/2,(-t2+t3)/2) ;
247          }
248        }
249      }
250    }
251    for (t2=-t1+5;t2<=n-2;t2++) {
252      for (t3=1;t3<=t2+1;t3++) {
253        if ((t1+t2+1)%2 == 0) {
254          i = (t1+t2-3)/2 ;
255          j = (-t1+t2-1)/2 ;
256          S2((t1+t2-3)/2,(-t1+t2-1)/2,t3) ;
257        }
258      }
259      for (t3=t2+2;t3<=n;t3++) {
260        if ((t1+t2+1)%2 == 0) {
261          i = (t1+t2-3)/2 ;
262          j = (-t1+t2-1)/2 ;
263          S2((t1+t2-3)/2,(-t1+t2-1)/2,t3) ;
264        }
265        if ((t1+t2)%2 == 0) {
266          i = (t1+t2)/2 ;
267          j = (-t1+t2)/2 ;
268          if ((t1+t3)%2 == 0) {
269            k = (-t2+t3)/2 ;
270            S1((t1+t2)/2,(-t1+t2)/2,(-t2+t3)/2) ;
271          }
272        }
273      }
274      for (t3=n+1;t3<=t2+2*n;t3++) {
275        if ((t1+t2)%2 == 0) {
276          i = (t1+t2)/2 ;
277          j = (-t1+t2)/2 ;
278          if ((t1+t3)%2 == 0) {
279            k = (-t2+t3)/2 ;
280            S1((t1+t2)/2,(-t1+t2)/2,(-t2+t3)/2) ;
281          }
282        }
283      }
284    }
285    for (t2=n-1;t2<=-t1+2*n;t2++) {
286      for (t3=1;t3<=n;t3++) {
287        if ((t1+t2+1)%2 == 0) {
288          i = (t1+t2-3)/2 ;
289          j = (-t1+t2-1)/2 ;
290          S2((t1+t2-3)/2,(-t1+t2-1)/2,t3) ;
291        }
292      }
293      for (t3=t2+2;t3<=t2+2*n;t3++) {
294        if ((t1+t2)%2 == 0) {
295          i = (t1+t2)/2 ;
296          j = (-t1+t2)/2 ;
297          if ((t1+t3)%2 == 0) {
298            k = (-t2+t3)/2 ;
299            S1((t1+t2)/2,(-t1+t2)/2,(-t2+t3)/2) ;
300          }
301        }
302      }
303    }
304    for (t2=-t1+2*n+1;t2<=t1+2*n+1;t2++) {
305      for (t3=1;t3<=n;t3++) {
306        if ((t1+t2+1)%2 == 0) {
307          i = (t1+t2-3)/2 ;
308          j = (-t1+t2-1)/2 ;
309          S2((t1+t2-3)/2,(-t1+t2-1)/2,t3) ;
310        }
311      }
312    }
313  }
314  for (t1=2;t1<=n-5;t1++) {
315    t2 = t1+2 ;
316    for (t3=t1+4;t3<=t1+2*n+2;t3++) {
317      i = t1+1 ;
318      if ((t1+t3)%2 == 0) {
319        k = (-t1+t3-2)/2 ;
320        S1(t1+1,1,(-t1+t3-2)/2) ;
321      }
322    }
323    for (t2=t1+3;t2<=n-2;t2++) {
324      for (t3=1;t3<=t2+1;t3++) {
325        if ((t1+t2+1)%2 == 0) {
326          i = (t1+t2-3)/2 ;
327          j = (-t1+t2-1)/2 ;
328          S2((t1+t2-3)/2,(-t1+t2-1)/2,t3) ;
329        }
330      }
331      for (t3=t2+2;t3<=n;t3++) {
332        if ((t1+t2+1)%2 == 0) {
333          i = (t1+t2-3)/2 ;
334          j = (-t1+t2-1)/2 ;
335          S2((t1+t2-3)/2,(-t1+t2-1)/2,t3) ;
336        }
337        if ((t1+t2)%2 == 0) {
338          i = (t1+t2)/2 ;
339          j = (-t1+t2)/2 ;
340          if ((t1+t3)%2 == 0) {
341            k = (-t2+t3)/2 ;
342            S1((t1+t2)/2,(-t1+t2)/2,(-t2+t3)/2) ;
343          }
344        }
345      }
346      for (t3=n+1;t3<=t2+2*n;t3++) {
347        if ((t1+t2)%2 == 0) {
348          i = (t1+t2)/2 ;
349          j = (-t1+t2)/2 ;
350          if ((t1+t3)%2 == 0) {
351            k = (-t2+t3)/2 ;
352            S1((t1+t2)/2,(-t1+t2)/2,(-t2+t3)/2) ;
353          }
354        }
355      }
356    }
357    for (t2=n-1;t2<=-t1+2*n;t2++) {
358      for (t3=1;t3<=n;t3++) {
359        if ((t1+t2+1)%2 == 0) {
360          i = (t1+t2-3)/2 ;
361          j = (-t1+t2-1)/2 ;
362          S2((t1+t2-3)/2,(-t1+t2-1)/2,t3) ;
363        }
364      }
365      for (t3=t2+2;t3<=t2+2*n;t3++) {
366        if ((t1+t2)%2 == 0) {
367          i = (t1+t2)/2 ;
368          j = (-t1+t2)/2 ;
369          if ((t1+t3)%2 == 0) {
370            k = (-t2+t3)/2 ;
371            S1((t1+t2)/2,(-t1+t2)/2,(-t2+t3)/2) ;
372          }
373        }
374      }
375    }
376    for (t2=-t1+2*n+1;t2<=-t1+2*n+3;t2++) {
377      for (t3=1;t3<=n;t3++) {
378        if ((t1+t2+1)%2 == 0) {
379          i = (t1+t2-3)/2 ;
380          j = (-t1+t2-1)/2 ;
381          S2((t1+t2-3)/2,(-t1+t2-1)/2,t3) ;
382        }
383      }
384    }
385  }
386  for (t1=max(2,n-4);t1<=floord(2*n-3,2);t1++) {
387    t2 = t1+2 ;
388    for (t3=t1+4;t3<=t1+2*n+2;t3++) {
389      i = t1+1 ;
390      if ((t1+t3)%2 == 0) {
391        k = (-t1+t3-2)/2 ;
392        S1(t1+1,1,(-t1+t3-2)/2) ;
393      }
394    }
395    for (t2=t1+3;t2<=-t1+2*n;t2++) {
396      for (t3=1;t3<=n;t3++) {
397        if ((t1+t2+1)%2 == 0) {
398          i = (t1+t2-3)/2 ;
399          j = (-t1+t2-1)/2 ;
400          S2((t1+t2-3)/2,(-t1+t2-1)/2,t3) ;
401        }
402      }
403      for (t3=t2+2;t3<=t2+2*n;t3++) {
404        if ((t1+t2)%2 == 0) {
405          i = (t1+t2)/2 ;
406          j = (-t1+t2)/2 ;
407          if ((t1+t3)%2 == 0) {
408            k = (-t2+t3)/2 ;
409            S1((t1+t2)/2,(-t1+t2)/2,(-t2+t3)/2) ;
410          }
411        }
412      }
413    }
414    for (t2=-t1+2*n+1;t2<=-t1+2*n+3;t2++) {
415      for (t3=1;t3<=n;t3++) {
416        if ((t1+t2+1)%2 == 0) {
417          i = (t1+t2-3)/2 ;
418          j = (-t1+t2-1)/2 ;
419          S2((t1+t2-3)/2,(-t1+t2-1)/2,t3) ;
420        }
421      }
422    }
423  }
424  if (n >= 3) {
425    t1 = n-1 ;
426    t2 = n+1 ;
427    for (t3=n+3;t3<=3*n+1;t3++) {
428      if ((t3+n+1)%2 == 0) {
429        k = (t3-n-1)/2 ;
430        S1(n,1,(t3-n-1)/2) ;
431      }
432    }
433    for (t2=n+2;t2<=n+4;t2++) {
434      for (t3=1;t3<=n;t3++) {
435        if ((t2+n)%2 == 0) {
436          i = (t2+n-4)/2 ;
437          j = (t2-n)/2 ;
438          S2((t2+n-4)/2,(t2-n)/2,t3) ;
439        }
440      }
441    }
442  }
443  if (n >= 1) {
444    t2 = n+3 ;
445    for (t3=1;t3<=n;t3++) {
446      S2(n,1,t3) ;
447    }
448  }
449}
450