summaryrefslogtreecommitdiff
path: root/omegalib/examples/old_test/saman.oc-rt
blob: d75d4df0f4e92506ff41c4de0726ba8c9b464d1e (plain)
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
# Omega Calculator v1.2 (based on Omega Library 1.2, August, 2000):
# # Passing array sections through array reshaping
# # procedure foo()
# # real a(1:5,1:64,1:64,1:5)
# # for i = 1 to 64 do
# #   for j = 1 to 64 do
# #     bar(a(1,i,j,1))
# # ...
# # procedure bar(x(*))
# # x(1:5) = ...
# #
# # Question which element of a are effected by the call to bar?
# #
# symbolic i,j;
# 
# R := {[i1,i2,i3,i4] -> [o1] :
# 		(i1-1) + (i2-i)*5 + (i3-j)*5*64 + (i4-1)*5*64*64
# 		= o1-1
# 	&& 1 <= i1,i4 <= 5
# 	&& 1 <= i,j,i2,i3 <= 64};
# 
# R;

{[i1,i2,i3,i4] -> [i1-320j-5i+5i2+320i3+20480i4-20480] : 1 <= j <= 64 && 1 <= i <= 64 && 1 <= i1 <= 5 && 1 <= i2 <= 64 && 1 <= i3 <= 64 && 1 <= i4 <= 5}

# 
# (inverse R)({[1:5]});

{[i1,i,j,1]: 1 <= i <= 64 && 1 <= j <= 64 && 1 <= i1 <= 5}

#