summaryrefslogtreecommitdiff
path: root/omegalib/examples/gist.out
blob: 44fa8f7c3ef1b7a4cd30f033471c0d6d3eb801e6 (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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
>>> #
>>> # Test gist function and code generation for modular equations
>>> # 
>>> 
>>> symbolic n;
>>> 
>>> # basic gist function
>>> #
>>> R:={[t1,t2]: exists (aa : 2aa = t1 &&  2 <= t1 && t1 <= 8)};
>>> known := {[t1,t2]: 1 <= t1 <= 9};
>>> gist R given known;
{[t1,t2]: exists ( alpha : 2alpha = t1)}
>>> 
>>> 
>>> # test modulo equations by coprime numbers
>>> #
>>> is := { [i,j] : 1 <= i <= n && i <= j <= n && exists (alpha, beta: i= 1+4*alpha && j = i+3*beta)  };
>>> is;
{[i,j]: exists ( alpha : 3+i = 4j+12alpha && 1 <= i <= j <= n)}
>>> known := { [i,j] : 1 <= i <= n && exists (alpha: i = 1+4*alpha) };
>>> gist is given known;
{[i,j]: exists ( alpha : j = i+3alpha && i <= j <= n)}
>>> 
>>> codegen is;
for(t1 = 1; t1 <= n; t1 += 4) {
  for(t2 = t1; t2 <= n; t2 += 3) {
    s0(t1,t2);
  }
}

>>> 
>>> # test modulo equations by numbers in multiple
>>> #
>>> is := { [i,j] : 1 <= i <= n && i <= j <= n && exists (alpha, beta: i= 1+4*alpha && j = i+8*beta)  };
>>> is;
{[i,j]: exists ( alpha,beta : j = i+8alpha && i = 1+4beta && 1 <= i <= j <= n)}
>>> known := { [i,j] : 1 <= i <= n && exists (alpha: i = 1+4*alpha) };
>>> gist is given known;
{[i,j]: exists ( alpha : j = i+8alpha && i <= j <= n)}
>>> 
>>> codegen is;
for(t1 = 1; t1 <= n; t1 += 4) {
  for(t2 = t1; t2 <= n; t2 += 8) {
    s0(t1,t2);
  }
}

>>> 
>>> is := { [i,j] : 1 <= i <= n && i <= j <= n && exists (alpha, beta: i= 1+256*alpha && j = i+8*beta)  };
>>> is;
{[i,j]: exists ( alpha,beta : j = 1+8alpha && i = 1+256beta && 1 <= i <= j <= n)}
>>> known := { [i,j] : 1 <= i <= n && exists (alpha: i = 1+256*alpha) };
>>> gist is given known;
{[i,j]: exists ( alpha : j = 1+8alpha && i <= j <= n)}
>>> 
>>> codegen is;
for(t1 = 1; t1 <= n; t1 += 256) {
  for(t2 = t1; t2 <= n; t2 += 8) {
    s0(t1,t2);
  }
}

>>> 
>>> # test modulo equations by gcd != 1
>>> #
>>> is := { [i,j] : 1 <= i <= n && i <= j <= n && exists (alpha, beta: i= 1+4*alpha && j = i+1+6*beta)  };
>>> is;
{[i,j]: exists ( alpha,beta : i+2j = 5+12alpha && i = 1+4beta && 1 <= i < j <= n)}
>>> known := { [i,j] : 1 <= i <= n && exists (alpha: i = 1+4*alpha) };
>>> gist is given known;
{[i,j]: exists ( alpha : i+2j = 5+12alpha && i < j <= n)}
>>> codegen is;
for(t1 = 1; t1 <= n-1; t1 += 4) {
  for(t2 = t1+1; t2 <= n; t2 += 6) {
    s0(t1,t2);
  }
}

>>> 
>>> is := { [i,j] : 1 <= i <= n && i <= j <= n && exists (alpha, beta: i= 1+6*alpha && j = i+4*beta)  };
>>> is;
{[i,j]: exists ( alpha,beta : 3j = 2+i+12alpha && i = 1+6beta && 1 <= i <= j <= n)}
>>> known := { [i,j] : 1 <= i <= n && exists (alpha: i = 1+6*alpha) };
>>> gist is given known;
{[i,j]: exists ( alpha : i+j = 2+4alpha && i <= j <= n)}
>>> codegen is;
for(t1 = 1; t1 <= n; t1 += 6) {
  for(t2 = t1; t2 <= n; t2 += 4) {
    s0(t1,t2);
  }
}

>>> 
>>> # gist won't simpilfy to the result we want, but the code generation
>>> # takes care of it
>>> #
>>> is := { [i,j] : 1 <= i <= n && i <= j <= n && exists (alpha, beta: i= 1+12*alpha && j = i+8*beta)  };
>>> is;
{[i,j]: exists ( alpha,beta : 3j = 2+i+24alpha && i = 1+12beta && 1 <= i <= j <= n)}
>>> known := { [i,j] : 1 <= i <= n && exists (alpha: i = 1+12*alpha) };
>>> gist is given known;
{[i,j]: exists ( alpha : 2+i = 3j+8alpha && i <= j <= n)}
>>> codegen is;
for(t1 = 1; t1 <= n; t1 += 12) {
  for(t2 = t1; t2 <= n; t2 += 8) {
    s0(t1,t2);
  }
}

>>>