Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Annotation of /branches/charisee/src/compiler/einTest/examplesFull.sml
ViewVC logotype

Annotation of /branches/charisee/src/compiler/einTest/examplesFull.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2498 - (view) (download)

1 : cchiw 2498
2 :     (* examples for the rewrite rules *)
3 :    
4 :     structure ExamplesF =struct
5 :    
6 :     local
7 :     structure E = Ein
8 :    
9 :     in
10 :    
11 :     (*Sub*)
12 :     (*Div*)
13 :     (*Neg*)
14 :     (*Add*)
15 :    
16 :    
17 :     val s0= E.Tensor(0,[])
18 :     val s1= E.Tensor(1,[])
19 :     val s2= E.Tensor(2,[])
20 :     val s3= E.Tensor(3,[])
21 :     val s4= E.Tensor(4,[])
22 :     val s5= E.Tensor(5,[])
23 :    
24 :     val p0=E.Partial[E.V 0]
25 :     val p1=E.Partial[E.V 1]
26 :     val p2=E.Partial[E.V 2]
27 :    
28 :     val t41= E.Tensor(4,[E.V 1])
29 :     val t00= E.Tensor(0,[E.V 0])
30 :     val t10=E.Tensor(1,[E.V 0])
31 :     val t11=E.Tensor(1,[E.V 1])
32 :     val t20=E.Tensor(2,[E.V 0])
33 :     val t21=E.Tensor(2,[E.V 1])
34 :     val t30=E.Tensor(3,[E.V 0])
35 :     val t04=E.Tensor(0,[E.V 4])
36 :     val t15=E.Tensor(1,[E.V 5])
37 :     val t02=E.Tensor(0,[E.V 2])
38 :     val t14=E.Tensor(1,[E.V 4])
39 :     val t22=E.Tensor(2,[E.V 2])
40 :     val t33=E.Tensor(3,[E.V 3])
41 :     val t44=E.Tensor(4,[E.V 4])
42 :    
43 :    
44 :     val t40= E.Tensor(4,[E.V 0])
45 :    
46 :    
47 :    
48 :     val f00=E.Field(0,[E.V 0])
49 :     val f10=E.Field(1,[E.V 0])
50 :     val f20=E.Field(2,[E.V 0])
51 :    
52 :     val c01=E.Conv(0,[],1,[])
53 :     val c12=E.Conv(1,[],2,[])
54 :     val c23=E.Conv(2,[],3,[])
55 :     val c34=E.Conv(3,[],4,[])
56 :    
57 :    
58 :     val d10=E.Delta(E.V 1, E.V 0)
59 :     val d12=E.Delta(E.V 1, E.V 2)
60 :     val d34=E.Delta(E.V 3, E.V 4)
61 :     val d14=E.Delta(E.V 1, E.V 4)
62 :     val d23=E.Delta(E.V 2, E.V 3)
63 :    
64 :     val eps1=E.Epsilon(0,1,2)
65 :     val eps2=E.Epsilon(0,3,4)
66 :     val eps3=E.Epsilon(5,6,7)
67 :    
68 :    
69 :    
70 :     (*Add*)
71 :     val a=E.Prod[t00,t10]
72 :    
73 :     val add1=E.EIN{params=[E.TEN,E.TEN,E.TEN,E.TEN], index=[E.IX 3], body=E.Add[s0,s1,t20,E.Add[s3]]}
74 :    
75 :    
76 :     (*Probe*)
77 :     val tmp1=E.Probe(c01,s2)
78 :     val tmp2=E.Probe(c34, s5)
79 :     val probe1=E.EIN{params=[E.FLD(3),E.TEN,E.TEN], index=[E.SX(1,4)],
80 :     body=E.Sum([E.V 0],tmp1)}
81 :     val probe2=E.EIN{params=[E.FLD(3),E.TEN,E.TEN], index=[],
82 :     body=E.Neg(tmp1)}
83 :     val probe3=E.EIN{params=[E.FLD(3),E.TEN,E.TEN,E.FLD(3),E.TEN,E.TEN], index=[],
84 :     body=E.Add[tmp1,tmp2]}
85 :     val probe4=E.EIN{params=[E.FLD(3),E.TEN,E.TEN,E.FLD(3),E.TEN,E.TEN], index=[],
86 :     body=E.Sub(tmp1,tmp2)}
87 :     val probe5=E.EIN{params=[E.FLD(3),E.TEN,E.TEN,E.TEN], index=[],
88 :     body=E.Div(tmp1,s3)}
89 :     val probe6=E.EIN{params=[E.FLD(3),E.TEN,E.TEN,E.TEN], index=[],
90 :     body=E.Prod[tmp1,s3]}
91 :     val probe7=E.EIN{params=[E.FLD(3),E.TEN,E.TEN,E.TEN], index=[],
92 :     body=E.Prod[tmp1,t30]}
93 :     val probe8=E.EIN{params=[E.FLD(3),E.TEN,E.TEN], index=[], body=tmp1}
94 :    
95 :    
96 :    
97 :     (*Prod *)
98 :     val prod2=E.EIN{params=[E.TEN,E.TEN,E.TEN,E.TEN,E.TEN], index=[E.IX 3], body=E.Prod[s1,t30,t21]}
99 :    
100 :     (*SUM*)
101 :     val sum1=E.EIN{params=[E.TEN,E.TEN,E.TEN,E.TEN,E.TEN], index=[E.IX 3], body=E.Sum([E.V 0],E.Prod[s1,s2,t30,t40])}
102 :     val sum2=E.EIN{params=[E.TEN,E.TEN,E.TEN,E.TEN,E.TEN], index=[E.IX 3], body=E.Sum([E.V 0],E.Prod[s1,t30,t21,t40])}
103 :     val sum3=E.EIN{params=[E.TEN,E.TEN,E.TEN,E.TEN,E.TEN], index=[E.IX 3], body=E.Sum([E.V 0],E.Add[t30,E.Prod[s0,t20,t10]])}
104 :     val sum4=E.EIN{params=[E.TEN,E.TEN,E.TEN,E.TEN,E.TEN], index=[E.IX 3], body=E.Sum([E.V 0],E.Sub(t30,E.Prod[s0,t20,t10]))}
105 :     val sum5=E.EIN{params=[E.TEN,E.TEN,E.TEN,E.TEN,E.TEN], index=[E.IX 3], body=E.Sum([E.V 0],E.Div(E.Prod[s0,t20,t10],s3))}
106 :     val sum6=E.EIN{params=[E.TEN,E.TEN,E.TEN,E.TEN,E.TEN],
107 :     index=[E.SX(1,8),E.SX(1,8),E.SX(1,8),E.SX(1,8)],
108 :     body=E.Sum([E.V 0,E.V 1, E.V 2, E.V 3, E.V 4],E.Prod[eps1,eps2,t11,t22,t33,t44])}
109 :     val sum7=E.EIN{params=[E.TEN,E.TEN,E.TEN,E.TEN,E.TEN],
110 :     index=[E.SX(1,8),E.SX(1,8),E.SX(1,8),E.SX(1,8),E.SX(1,8),E.SX(1,8)],
111 :     body=E.Sum([E.V 0,E.V 1, E.V 2],E.Prod[eps1,
112 :     E.Sum([E.V 3, E.V 4],E.Prod[eps2,t11,t22,t33,t44])]) }
113 :     val sum8=E.EIN{params=[E.TEN,E.TEN,E.TEN,E.TEN,E.TEN], index=[E.IX 3,E.SX(1,8)], body=E.Sum([E.V 2],E.Prod[d12,t02,t10])}
114 :     val sum9=E.EIN{params=[E.FLD(3)], index=[E.SX(1,8),E.IX 3], body=E.Sum([E.V 0],E.Prod[d10,f00])}
115 :    
116 :     val sumapply1=E.EIN{params=[E.TEN],
117 :     index=[E.IX 3,E.SX(1,8)], body=E.Sum([E.V 1],E.Apply(p0,s0))}
118 :     val sumapply2=E.EIN{params=[E.FLD(2),E.TEN],
119 :     index=[E.SX(1,8)], body=E.Sum([E.V 0],E.Apply(E.Prod[p0,p0],c01))}
120 :     val sumapply3=E.EIN{params=[E.FLD(2),E.TEN,E.FLD(2),E.TEN],
121 :     index=[E.SX(1,8)], body=E.Sum([E.V 0],E.Apply(E.Prod[p0,p0],E.Add[c01,c23]))}
122 :    
123 :     val sumapply4=E.EIN{params=[E.FLD(2),E.TEN,E.FLD(2),E.TEN],
124 :     index=[E.SX(1,8)], body=E.Sum([E.V 0],E.Apply(E.Prod[p0,p0],E.Sub(c01,c23)))}
125 :     val sumapply5=E.EIN{params=[E.FLD(2),E.TEN,E.TEN],
126 :     index=[E.SX(1,8)], body=E.Sum([E.V 0],E.Apply(E.Prod[p0,p0],E.Div(c01,s2)))}
127 :     val sumapply6=E.EIN{params=[E.FLD(2),E.TEN,E.FLD(2),E.TEN],
128 :     index=[E.IX 2,E.IX 2,E.IX 2], body=E.Sum([E.V 0],E.Apply(E.Prod[p0,p1,p2],E.Apply(p0,E.Sub(c01,c23))))}
129 :     val sumapply7=E.EIN{params=[E.FLD(3)], index=[E.SX(1,8),E.IX 3], body=E.Sum([E.V 0],E.Apply(p0,E.Prod[d10,f00]))}
130 :    
131 :    
132 :     (*
133 :     (*probe *)
134 :     val pos=s1
135 :     val add=E.Add[c0,c1,E.Prod[s0,c2]]
136 :    
137 :     val probe1=E.EIN{params=[E.FLD(3),E.TEN,E.TEN], index=[], body=E.Probe(c0,s2)}
138 :    
139 :    
140 :    
141 :     val probe2=E.Probe(E.Sum([E.V 2],c0),pos)
142 :     val probe3= E.Probe(E.Neg(E.Prod[s0,c0]),pos)
143 :     val probe4= E.Probe(add,pos)
144 :     val probe5= E.Probe(E.Sub( E.Add[c0,c1,E.Prod[s0,c2]], c1),pos)
145 :     val probe6=E.Probe(E.Prod[s0,c1], pos)
146 :     val probe7= E.Probe(E.Prod[s1, E.Apply(p0, E.Prod[s0,c0])],pos )
147 :     val probe8= E.Probe( E.Prod[s1, add],pos)
148 :     val probe9=E.Probe(E.Div(c0,s0), pos)
149 :     val probe10=E.Probe(E.Prod[s0,t0,c0],pos)
150 :     val probe11= E.Probe(E.Apply(p1,E.Conv(0, [E.V 0],1,[])),t0)
151 :     val probe12= E.Probe(E.Apply(E.Partial [E.V 1,E.V 0],E.Conv(0, [E.V 0],1,[])),t0)
152 :     val probe13= E.Probe(E.Apply(E.Prod[E.Partial[E.V 3],E.Partial [E.V 1,E.V 0]],E.Conv(0, [E.V 0],1,[])),t0)
153 :    
154 :    
155 :     (*Sum*)
156 :    
157 :     val sum1=E.EIN{params=[E.FLD(3),E.TEN,E.FLD(3),E.TEN], index=[], body=E.Sum([],E.Add[c0,c2,E.Prod[s1,c2]])}
158 :    
159 :    
160 :     val sum2=E.Sum([E.V 0],E.Prod[t0,E.Add[t1,t1]])
161 :     val sum3=E.Sum([E.V 0],E.Prod[t0,E.Add[t1,t1],t3])
162 :     val sum4=E.Sum([E.V 0],E.Prod[s0, E.Sub(f1,f2)])
163 :     val sum5=E.Sum([E.V 0],E.Prod[t0, E.Sub(t1,t1)])
164 :     val sum6= E.Sum([E.V 0],E.Div(f1,s1))
165 :    
166 :     (*Eps Eps=> Deltas-Deltas*)
167 :     val sum7=E.Sum([E.V 0, E.V 1, E.V 3],E.Prod[eps1,eps2,E.Tensor(0,[E.V 1]),E.Tensor(1,[E.V 3])])
168 :     val sum8=(E.Sum([E.V 0, E.V 1, E.V 2, E.V 3, E.V 4],E.Prod[eps1,eps2,E.Tensor(0,[E.V 3]), t14,E.Tensor(2,[E.V 1]), E.Tensor(3,[E.V 2]) ]))
169 :     val sum9=(E.Sum([E.V 0, E.V 1, E.V 3],E.Prod[eps1,eps2,eps3,E.Tensor(0,[E.V 3]), t14 ]))
170 :     val sum10=(E.Sum([E.V 0, E.V 5, E.V 6],E.Prod[eps1,eps2,eps3,E.Tensor(0,[E.V 3]), t15 ]))
171 :     val sum11=(E.Sum([E.V 0, E.V 5, E.V 6],E.Prod[eps1,eps2,eps3,E.Tensor(0,[E.V 5]), E.Tensor(1,[E.V 6]) ]))
172 :    
173 :     val sumIndex=[E.V 0,E.V 1, E.V 2,E.V 3, E.V 4, E.V 5]
174 :    
175 :    
176 :     (*Dels(i,j) Tensor(i)=> Tensor(j)*)
177 :     val sum12=E.Sum(sumIndex,E.Prod[d1,d2,t0,t1])
178 :     val sum13=E.Sum(sumIndex,E.Prod[d1,d2,t02,t14])
179 :     val sum14=E.Sum(sumIndex,E.Prod[d1,d2,t3,t02])
180 :    
181 :    
182 :    
183 :     (*sum apply*)
184 :     val sum15=E.Sum([E.V 0],E.Apply(p1,s1))
185 :     val sum16=E.Sum([E.V 0],E.Apply(E.Prod[p2,p0],f0))
186 :     val sum17=E.Sum([E.V 0], E.Apply(p1,E.Prod[s0, E.Sub(f1,f2)]))
187 :     val sum18= E.Sum([E.V 0, E.V 1],E.Apply(p0,E.Prod[f1,E.Field(0,[E.V 1]),E.Field(2,[E.V 1])]))
188 :     val sum19= E.Sum([E.V 0, E.V 1],E.Apply(p0,E.Prod[f1,E.Delta(E.V 5, E.V 6),E.Field(0,[E.V 1]),E.Field(2,[E.V 1])]))
189 :     val sum20=E.Sum([E.V 0],E.Apply(p0,E.Sub(E.Field(0,[E.V 1]),E.Field(1,[E.V 2]))))
190 :     val sum21=E.Sum([E.V 0],E.Apply(p0,E.Prod[s0,f0]))
191 :     val sum22=E.Sum([E.V 0],E.Apply(p0,E.Add[E.Field(0,[E.V 1]),E.Field(1,[E.V 2])]))
192 :     val sum23=E.Sum([E.V 0],E.Apply(p0,s0))
193 :    
194 :     (* Partial_i Dels(i, j)=> E.Partial(j)*)
195 :     val sum24=E.Sum([E.V 0, E.V 1],E.Apply(p0,E.Prod[E.Delta(E.V 1,E.V 0),E.Tensor(0,[E.V 1])]))
196 :     val sum25=E.Sum([E.V 0, E.V 1],E.Apply(p0,E.Prod[E.Delta(E.V 1,E.V 0),E.Field(0,[E.V 1])]))
197 :    
198 :     (*Eps_ijk Partial_ij*)
199 :     val sum26=E.Sum([E.V 0, E.V 1, E.V 2],E.Apply(E.Partial([E.V 1, E.V 0]),E.Prod[eps1,E.Tensor(0,[E.V 1])]))
200 :     val sum27=E.Sum([E.V 0, E.V 1, E.V 2],E.Apply(E.Partial([E.V 2, E.V 1]),E.Prod[eps1,E.Tensor(0,[E.V 1])]))
201 :     val sum28=E.Sum([E.V 0, E.V 1, E.V 2],E.Apply(E.Partial([E.V 0, E.V 2]),E.Prod[eps1,E.Tensor(0,[E.V 1])]))
202 :    
203 :    
204 :     val prod1= E.Prod[p2,p1,t0]
205 :     val prod2= E.Prod[E.Partial [E.V 2,E.V 3],p1,t0]
206 :     val prod3=E.Prod[t0,E.Add[t1,t1],E.Add[E.Prod[t0,t1],E.Prod[t0,t1]]]
207 :     val prod4=E.Prod[p0,t0,E.Add[t1,t1]]
208 :     val prod5=E.Prod[t0, E.Sub(t1,t1)]
209 :     val prod6=E.Prod[t0, E.Sub(t1,t1),t3]
210 :     val prod7=E.Prod[s0, E.Sub(f1,f2)]
211 :     val prod8=E.Prod[p0,E.Add[E.Tensor(0,[E.V 1]),E.Tensor(1,[E.V 2])]]
212 :     val prod9=E.Prod[p0,E.Sub(E.Tensor(0,[E.V 1]),E.Tensor(1,[E.V 2]))]
213 :     val prod10=E.Prod[p0,s0]
214 :    
215 :    
216 :     (***** Apply ******)
217 :     val apply1=E.Apply(E.Partial([E.V 2]),E.Prod[E.Tensor(0,[E.V 1,E.V 2]),E.Tensor(2,[E.V 2,E.V 3]) ,E.Tensor(5,[E.V 2,E.V 4])])
218 :     val apply2= E.Apply(E.Prod[p2,p1],f0)
219 :     val apply3= E.Apply(E.Prod[p2,p1], E.Sum([E.V 0],f0))
220 :     val apply4= E.Apply(p1,E.Conv(0, [E.V 0],1,[]))
221 :     val apply5= E.Apply(E.Partial [E.V 1,E.V 0],E.Conv(0, [E.V 0],1,[]))
222 :     val apply6= E.Apply(E.Prod[E.Partial[E.V 3],E.Partial [E.V 1,E.V 0]],E.Conv(0, [E.V 0],1,[]))
223 :     val apply7=E.Apply(p1,E.Prod[s0, E.Sub(f1,f2)])
224 :     val apply8=E.Apply(p0,E.Add[E.Field(0,[E.V 1]),E.Field(1,[E.V 2])])
225 :     val apply9=E.Apply(p0,E.Add[E.Field(0,[E.V 1]),E.Apply(p0,E.Field(1,[E.V 2]))])
226 :     val apply10=E.Apply(p0,E.Sub(E.Field(0,[E.V 1]),E.Field(1,[E.V 2])))
227 :     val apply11=E.Apply(p0,E.Sub(E.Field(0,[E.V 1]),E.Apply(p0,E.Field(1,[E.V 2]))))
228 :     val apply12=E.Apply(p0,s0)
229 :     val apply13=E.Apply(p0,E.Prod[s0,f1])
230 :     val apply14= E.Prod[p0,t1,E.Tensor(0,[E.V 1])]
231 :     val apply15= E.Prod[p0,t0,E.Add[E.Tensor(1,[E.V 1]),E.Tensor(2,[E.V 1])]]
232 :     val apply16= E.Apply(p0,E.Prod[t1,E.Tensor(0,[E.V 1])])
233 :     val apply17= E.Apply(p0,E.Prod[f1,E.Field(0,[E.V 1])])
234 :     val apply18= E.Apply(p0,E.Prod[f1,E.Field(0,[E.V 1]),E.Field(2,[E.V 1])])
235 :    
236 :    
237 :    
238 :     (*apply sum*)
239 :     val applysum1=E.Apply(p1,E.Sum([E.V 0],E.Prod[s0, E.Sub(f1,f2)]))
240 :     val applysum2=E.Apply(p0,E.Sum([E.V 1],E.Add[E.Field(0,[E.V 1]),E.Field(1,[E.V 1])]))
241 :     val applysum3=E.Apply(p0,E.Sum([E.V 0],E.Sub(E.Field(0,[E.V 1]),E.Field(1,[E.V 1]))))
242 :     val applysum4=E.Apply(p0,E.Sum([E.V 0],s0))
243 :     val applysum5=E.Apply(p0,E.Sum([E.V 0],E.Prod[s0,f0]))
244 :     val applysum6= E.Apply(p0,E.Sum([E.V 1],E.Prod[f1,E.Field(0,[E.V 1]),E.Field(2,[E.V 1])]))
245 :     val applysum7= E.Apply(p0,E.Sum([E.V 1],E.Prod[f1,d2,E.Field(0,[E.V 1]),E.Field(2,[E.V 1])]))
246 :    
247 :    
248 :     *)
249 :    
250 :    
251 :     end;
252 :     end

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0