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

SCM Repository

[diderot] Annotation of /branches/charisee/src/compiler/ein/hash-ein.sml
ViewVC logotype

Annotation of /branches/charisee/src/compiler/ein/hash-ein.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2603 - (view) (download)

1 : cchiw 2498 (*hashs Ein Function after substitution*)
2 :     structure hashEin = struct
3 :     local
4 :     structure E = Ein
5 :     in
6 :    
7 :     (*hash value of the expression *)
8 :     fun hashfn(Ein.EIN{params, index, body})= let
9 :     val changed =ref false
10 : cchiw 2555
11 : cchiw 2498
12 :     fun hash(body)=(case body
13 :     of E.Const _ => 0w3
14 :     | E.Tensor _=> 0w5
15 :     | E.Field _ => 0w7
16 :     | E.Krn _ => 0w11
17 :     | E.Delta _ => 0w13
18 :     | E.Value _ => 0w17
19 :     | E.Epsilon _=> 0w19
20 :     | E.Partial _ => 0w23
21 :     | E.Conv _=> 0w29
22 :     | E.Sum(c,e)=> 0w31+ hash(e)
23 :     | E.Neg e => 0w37+ hash(e)
24 : cchiw 2603 | E.Lift e => 0w71+ hash(e)
25 : cchiw 2498 | E.Add es =>let
26 :     fun addhash([])=0w41
27 :     |addhash(e::es)=hash(e)+addhash(es)
28 :     in addhash(es) end
29 :     | E.Sub(e1,e2) => 0w43+hash(e1)+ hash (e2)
30 :     | E.Div(e1,e2)=> 0w47+ hash(e1)+ hash (e2)
31 :     | E.Apply(e1,e2)=> 0w53+hash(e1)+ hash(e2)
32 :     | E.Probe(e1,e2)=> 0w59+hash(e1)+hash(e2)
33 :     | E.Img (fid,alpha,es) => let
34 :     fun addhash([])=0w61
35 :     |addhash(e::es)=hash(e)+addhash(es)
36 :     in addhash(es) end
37 :     | E.Prod es=> let
38 :     fun addhash([])=0w67
39 :     |addhash(e::es)=hash(e)+addhash(es)
40 :     in addhash(es) end
41 :     (*end case*))
42 :     in hash(body) end
43 :    
44 :     end (* local *)
45 :    
46 :     end

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