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

SCM Repository

[diderot] Diff of /branches/ein16/src/compiler/high-il/normalize-ein.sml
ViewVC logotype

Diff of /branches/ein16/src/compiler/high-il/normalize-ein.sml

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

revision 2515, Mon Dec 2 03:42:14 2013 UTC revision 2517, Thu Dec 12 20:35:28 2013 UTC
# Line 266  Line 266 
266    
267    
268                  *)                  *)
269    
270     (*print summation range*)
271                  fun handleIndex e= (case e                  fun handleIndex e= (case e
272                  of E.C(cx)=> String.concat["'",Int.toString(cx),"'"]                  of E.C(cx)=> String.concat["'",Int.toString(cx),"'"]
273                  |  E.V(ix)=> Int.toString(ix)                  |  E.V(ix)=> Int.toString(ix)
274                  )                  )
   
   
   
275  fun handleSumRange (mu,lb,ub)= print(String.concat[(handleIndex mu),"[",Int.toString(lb),"-",Int.toString(ub),"]"])  fun handleSumRange (mu,lb,ub)= print(String.concat[(handleIndex mu),"[",Int.toString(lb),"-",Int.toString(ub),"]"])
   
276                  fun printSx e=(print "\n $";List.map handleSumRange e; print "$")                  fun printSx e=(print "\n $";List.map handleSumRange e; print "$")
277    
   
   
278  (*Apply normalize to each term in product list  (*Apply normalize to each term in product list
279  or Apply normalize to tail of each list*)  or Apply normalize to tail of each list*)
280  fun normalize (Ein.EIN{params, index, body}) = let  fun normalize (Ein.EIN{params, index, body}) = let
# Line 443  Line 439 
439                | E.Sum(c, E.Prod(E.Const e::es))=>(changed:=true;E.Prod[E.Const e,E.Sum(c, E.Prod es)])                | E.Sum(c, E.Prod(E.Const e::es))=>(changed:=true;E.Prod[E.Const e,E.Sum(c, E.Prod es)])
440                | E.Sum(c, E.Prod(E.Value v::es))=>(changed:=true; E.Prod [E.Value v, E.Sum(c, E.Prod es)])                | E.Sum(c, E.Prod(E.Value v::es))=>(changed:=true; E.Prod [E.Value v, E.Sum(c, E.Prod es)])
441                | E.Sum(c, E.Prod(E.Tensor(id,[])::es))=> (changed:=true;E.Prod [E.Tensor(id,[]), E.Sum(c, E.Prod es)])                | E.Sum(c, E.Prod(E.Tensor(id,[])::es))=> (changed:=true;E.Prod [E.Tensor(id,[]), E.Sum(c, E.Prod es)])
             (*  
   
              | E.Sum(c,E.Prod ps')=>let  
                 val e'=rewriteBody(E.Prod ps')  
   
                 in (case e'  
                     of E.Prod ps=> let  
                         val (pre,eps,dels,post)=filter2(ps,[],[],[],[])  
                         in (case eps  
                             of []=> E.Sum(c,rewriteBody (E.Prod ps'))  
                             |_=> let  
                                 val (change, exp)=epsapply(c,eps,dels,post)  
                                 val z=(print "SS=";print(Int.toString(change));print "---")  
                                 in (case change  
                                     of 1 => (changed:=true; print"yyy";exp)  
                                     |_=> (print "P";body)  
                                 (*end case*))  
                                 end)  
                         end  
                     |_=> E.Sum(c, e')  
                     (*end case*))  
                 end  
   
                     *)  
   
442                  | E.Sum(c,e)=>let                  | E.Sum(c,e)=>let
   
443                      val ref x=sumIndex                      val ref x=sumIndex
444                      val c'=[c]@x                      val c'=[c]@x
445                      val e'=(sumIndex:=c';rewriteBody e)                      val e'=(sumIndex:=c';rewriteBody e)
446                      val ref s=sumIndex                      val ref s=sumIndex
   
447                      val z=hd(s)                      val z=hd(s)
   
448                  in (sumIndex:=tl(s);E.Sum(z, e')) end                  in (sumIndex:=tl(s);E.Sum(z, e')) end
449    
450              (*******************Probe*****************)              (*******************Probe*****************)

Legend:
Removed from v.2515  
changed lines
  Added in v.2517

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