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 2498 - (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 :    
11 :     fun hash(body)=(case body
12 :     of E.Const _ => 0w3
13 :     | E.Tensor _=> 0w5
14 :     | E.Field _ => 0w7
15 :     | E.Krn _ => 0w11
16 :     | E.Delta _ => 0w13
17 :     | E.Value _ => 0w17
18 :     | E.Epsilon _=> 0w19
19 :     | E.Partial _ => 0w23
20 :     | E.Conv _=> 0w29
21 :     | E.Sum(c,e)=> 0w31+ hash(e)
22 :     | E.Neg e => 0w37+ hash(e)
23 :     | E.Add es =>let
24 :     fun addhash([])=0w41
25 :     |addhash(e::es)=hash(e)+addhash(es)
26 :     in addhash(es) end
27 :     | E.Sub(e1,e2) => 0w43+hash(e1)+ hash (e2)
28 :     | E.Div(e1,e2)=> 0w47+ hash(e1)+ hash (e2)
29 :     | E.Apply(e1,e2)=> 0w53+hash(e1)+ hash(e2)
30 :     | E.Probe(e1,e2)=> 0w59+hash(e1)+hash(e2)
31 :     | E.Img (fid,alpha,es) => let
32 :     fun addhash([])=0w61
33 :     |addhash(e::es)=hash(e)+addhash(es)
34 :     in addhash(es) end
35 :     | E.Prod es=> let
36 :     fun addhash([])=0w67
37 :     |addhash(e::es)=hash(e)+addhash(es)
38 :     in addhash(es) end
39 :     (*end case*))
40 :     in hash(body) end
41 :    
42 :     end (* local *)
43 :    
44 :     end

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