>>> Symbolic a,b; >>> >>> IS1 := {[i] : a <= i <= b }; >>> IS2 := {[i] : a+10 <= i <= b+10 }; >>> IS3 := {[i] : a+20 <= i <= b+20 }; >>> >>> T1 := {[i] -> [i,0]}; >>> T2 := {[i] -> [i,1]}; >>> T3 := {[i] -> [i,2]}; >>> >>> codegen T1:IS1,T2:IS2,T3:IS3; for(t1 = a; t1 <= min(b,a+9); t1++) { s1(t1); } for(t1 = a+10; t1 <= min(b,a+19); t1++) { s1(t1); s2(t1); } for(t1 = a+20; t1 <= b; t1++) { s1(t1); s2(t1); s3(t1); } for(t1 = max(a+10,b+1); t1 <= min(b+10,a+19); t1++) { s2(t1); } for(t1 = max(a+20,b+1); t1 <= b+10; t1++) { s2(t1); s3(t1); } for(t1 = max(a+20,b+11); t1 <= b+20; t1++) { s3(t1); } >>> codegen 2 T1:IS1,T2:IS2,T3:IS3; for(t1 = a; t1 <= min(b,a+9); t1++) { s1(t1); } for(t1 = a+10; t1 <= min(b,a+19); t1++) { s1(t1); s2(t1); } for(t1 = a+20; t1 <= b; t1++) { s1(t1); s2(t1); s3(t1); } for(t1 = max(a+10,b+1); t1 <= min(b+10,a+19); t1++) { s2(t1); } for(t1 = max(a+20,b+1); t1 <= b+10; t1++) { s2(t1); s3(t1); } for(t1 = max(a+20,b+11); t1 <= b+20; t1++) { s3(t1); }