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

SCM Repository

[diderot] Diff of /branches/vis15/src/compiler/mid-to-low/ein-to-scalar.sml
ViewVC logotype

Diff of /branches/vis15/src/compiler/mid-to-low/ein-to-scalar.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 40  Line 40 
40            fun gen (mapp, body) = let            fun gen (mapp, body) = let
41                (*********sumexpression ********)                (*********sumexpression ********)
42                  fun tb n =  List.tabulate (n, fn e => e)                  fun tb n =  List.tabulate (n, fn e => e)
43                  fun sumCheck (mapp, (E.V v, lb, ub) :: sumx, e) = let                  fun sumCheck (mapp, (v, lb, ub) :: sumx, e) = let
44                        fun sumloop mapp = gen (mapp, e)                        fun sumloop mapp = gen (mapp, e)
45                        fun sumI1 (left, (v, [i], lb1), [], rest) = let                        fun sumI1 (left, (v, [i], lb1), [], rest) = let
46                              val mapp = IMap.insert (left, v, lb1+i)                              val mapp = IMap.insert (left, v, lb1+i)
# Line 54  Line 54 
54                              in                              in
55                                sumI1 (mapp, (v, es, lb1), [], rest@[vD])                                sumI1 (mapp, (v, es, lb1), [], rest@[vD])
56                              end                              end
57                          | sumI1 (left, (v, [i], lb1), (E.V a, lb2, ub2) ::sx, rest) =                          | sumI1 (left, (v, [i], lb1), (a, lb2, ub2) ::sx, rest) =
58                              sumI1 (IMap.insert (left, v, lb1+i), (a, tb (ub2-lb2+1), lb2), sx, rest)                              sumI1 (IMap.insert (left, v, lb1+i), (a, tb (ub2-lb2+1), lb2), sx, rest)
59                          | sumI1 (left, (v, s::es, lb1), (E.V a, lb2, ub2) ::sx, rest) = let                          | sumI1 (left, (v, s::es, lb1), (a, lb2, ub2) ::sx, rest) = let
60                              val mapp = IMap.insert (left, v, s+lb1)                              val mapp = IMap.insert (left, v, s+lb1)
61                              val xx = tb (ub2-lb2+1)                              val xx = tb (ub2-lb2+1)
62                              val rest' = sumI1 (mapp, (a, xx, lb2), sx, rest)                              val rest' = sumI1 (mapp, (a, xx, lb2), sx, rest)
63                              in                              in
64                                sumI1 (mapp, (v, es, lb1), (E.V a, lb2, ub2) ::sx, rest')                                sumI1 (mapp, (v, es, lb1), (a, lb2, ub2) ::sx, rest')
65                              end                              end
66                          | sumI1 _ = raise Fail "None Variable-index in summation"                          | sumI1 _ = raise Fail "None Variable-index in summation"
67                        in                        in
# Line 89  Line 89 
89                              | E.ArcTangent => Mk.realArcTan (avail, arg)                              | E.ArcTangent => Mk.realArcTan (avail, arg)
90                              | E.Exp => Mk.realExp (avail, arg)                              | E.Exp => Mk.realExp (avail, arg)
91                              | E.PowInt n => Mk.intPow (avail, arg, n)                              | E.PowInt n => Mk.intPow (avail, arg, n)
                             | E.PowReal _ => raise Fail ("FIXME: unimplemented Op1 operator"^ EinPP.expToString body)  
                             | E.PowEmb  _ =>  raise Fail ("FIXME: unimplemented Op1 operator"^ EinPP.expToString body)  
92                            (* end case *)                            (* end case *)
93                          end                          end
94                      | E.Op2(E.Sub, e1, e2) => Mk.realSub (avail, gen (mapp, e1), gen (mapp, e2))                      | E.Op2(E.Sub, e1, e2) => Mk.realSub (avail, gen (mapp, e1), gen (mapp, e2))

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