1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
>>> symbolic n;
>>> I1 := {[k,i] : 1 <= k < i <= n };
>>> I2 := {[k,i,j] : 1 <= k < i,j <= n };
>>> T1 := {[k,i] -> [i,k,1,0]};
>>> T2 := {[k,i,j] -> [i,j,0,k]};
>>> T1(I1);
{[i,k,1,0]: 1 <= k < i <= n}
>>> T2(I2);
{[i,j,0,k]: 1 <= k < i,j <= n}
>>> codegen T1:I1,T2:I2;
for(t1 = 2; t1 <= n; t1++) {
for(t2 = 1; t2 <= n; t2++) {
for(t4 = 1; t4 <= min(t1-1,t2-1); t4++) {
s2(t4,t1,t2);
}
if (t2 <= t1-1) {
s1(t2,t1);
}
}
}
>>> codegen 2 T1:I1,T2:I2;
for(t1 = 2; t1 <= n; t1++) {
s1(1,t1);
for(t2 = 2; t2 <= t1-1; t2++) {
for(t4 = 1; t4 <= t2-1; t4++) {
s2(t4,t1,t2);
}
s1(t2,t1);
}
for(t2 = t1; t2 <= n; t2++) {
for(t4 = 1; t4 <= t1-1; t4++) {
s2(t4,t1,t2);
}
}
}
|