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 2553 - (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 2553 val g=print "Made it to hash function\n\n"
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 :     | E.Add es =>let
25 :     fun addhash([])=0w41
26 :     |addhash(e::es)=hash(e)+addhash(es)
27 :     in addhash(es) end
28 :     | E.Sub(e1,e2) => 0w43+hash(e1)+ hash (e2)
29 :     | E.Div(e1,e2)=> 0w47+ hash(e1)+ hash (e2)
30 :     | E.Apply(e1,e2)=> 0w53+hash(e1)+ hash(e2)
31 :     | E.Probe(e1,e2)=> 0w59+hash(e1)+hash(e2)
32 :     | E.Img (fid,alpha,es) => let
33 :     fun addhash([])=0w61
34 :     |addhash(e::es)=hash(e)+addhash(es)
35 :     in addhash(es) end
36 :     | E.Prod es=> let
37 :     fun addhash([])=0w67
38 :     |addhash(e::es)=hash(e)+addhash(es)
39 :     in addhash(es) end
40 :     (*end case*))
41 :     in hash(body) end
42 :    
43 :     end (* local *)
44 :    
45 :     end

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