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

SCM Repository

[diderot] Diff of /branches/vis15/src/compiler/high-opt/apply.sml
ViewVC logotype

Diff of /branches/vis15/src/compiler/high-opt/apply.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3977, Wed Jun 15 19:06:30 2016 UTC revision 3978, Wed Jun 15 19:07:40 2016 UTC
# Line 52  Line 52 
52                  in                  in
53                    v                    v
54                  end                  end
55            fun mapSum l = List.map (fn (a, b, c) => (mapMu a, b, c)) l            fun mapSum l = List.map (fn (a, b, c) => (mapSingle a, b, c)) l
56            fun mapParam id = mapId2(id, subId, 0)            fun mapParam id = mapId2(id, subId, 0)
57            fun apply e = (case e            fun apply e = (case e
58                   of E.Const _ => e                   of E.Const _ => e
59                    | E.ConstR _ => e                    | E.ConstR _ => e
60                    | E.Tensor(id, mx) => E.Tensor(mapParam id, mapAlpha mx)                    | E.Tensor(id, mx) => E.Tensor(mapParam id, mapAlpha mx)
61                    | E.Delta(i, j) => E.Delta(mapMu i,mapMu j)                    | E.Delta(i, j) => E.Delta(mapSingle i, mapSingle j)
62                    | E.Epsilon(i, j, k) => E.Epsilon(mapSingle i, mapSingle j, mapSingle k)                    | E.Epsilon(i, j, k) => E.Epsilon(mapSingle i, mapSingle j, mapSingle k)
63                    | E.Eps2(i, j) => E.Eps2(mapSingle i, mapSingle j)                    | E.Eps2(i, j) => E.Eps2(mapSingle i, mapSingle j)
64                    | E.Field(id, mx) => E.Field(mapParam id, mapAlpha mx)                    | E.Field(id, mx) => E.Field(mapParam id, mapAlpha mx)
# Line 71  Line 71 
71                    | E.Img _ => raise Fail "expression before expand"                    | E.Img _ => raise Fail "expression before expand"
72                    | E.Krn _ => raise Fail "expression before expand"                    | E.Krn _ => raise Fail "expression before expand"
73                    | E.Sum(c, esum) => E.Sum(mapSum c, apply esum)                    | E.Sum(c, esum) => E.Sum(mapSum c, apply esum)
                   | E.Op1(E.PowEmb(sx, n), e1) => E.Op1(E.PowEmb(mapSum sx, n), apply e1)  
74                    | E.Op1(op1, e1) => E.Op1(op1, apply e1)                    | E.Op1(op1, e1) => E.Op1(op1, apply e1)
75                    | E.Op2(op2, e1, e2) => E.Op2(op2, apply e1, apply e2)                    | E.Op2(op2, e1, e2) => E.Op2(op2, apply e1, apply e2)
76                    | E.Opn(opn, e1) => E.Opn(opn, List.map apply e1)                    | E.Opn(opn, e1) => E.Opn(opn, List.map apply e1)
# Line 119  Line 118 
118                          |  _ => raise Fail "term to be replaced is not a Tensor or Fields"                          |  _ => raise Fail "term to be replaced is not a Tensor or Fields"
119                        (* end case *))                        (* end case *))
120                  end                  end
121            fun sumI e = let val (E.V v,_,_) = List.last e in v end            fun sumI e = let val (v,_,_) = List.last e in v end
122            fun apply b = (case b            fun apply b = (case b
123                   of E.Tensor(id, mx) => rewrite (id, mx, b)                   of E.Tensor(id, mx) => rewrite (id, mx, b)
124                    | E.Field(id, mx) => rewrite (id, mx, b)                    | E.Field(id, mx) => rewrite (id, mx, b)
# Line 134  Line 133 
133  (* QUESTION: should we flag a change here? *)  (* QUESTION: should we flag a change here? *)
134                        sumIndex := sumI c;                        sumIndex := sumI c;
135                        E.Sum(c, apply esum))                        E.Sum(c, apply esum))
                   | E.Op1(E.PowEmb(sx, n), e1) => (  
 (* QUESTION: should we flag a change here? *)  
                       sumIndex := sumI sx;  
                       E.Op1(E.PowEmb(sx, n), apply e1))  
136                    | E.Op1(op1, e1) => E.Op1(op1, apply e1)                    | E.Op1(op1, e1) => E.Op1(op1, apply e1)
137                    | E.Op2(op2, e1, e2) => E.Op2(op2, apply e1, apply e2)                    | E.Op2(op2, e1, e2) => E.Op2(op2, apply e1, apply e2)
138                    | E.Opn(opn, es) => E.Opn(opn, List.map apply es)                    | E.Opn(opn, es) => E.Opn(opn, List.map apply es)

Legend:
Removed from v.3977  
changed lines
  Added in v.3978

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