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

# SCM Repository

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

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

revision 2583, Thu Apr 10 19:50:28 2014 UTC revision 2584, Tue Apr 15 03:22:58 2014 UTC
# Line 281  Line 281
281  (*Apply normalize to each term in product list  (*Apply normalize to each term in product list
282  or Apply normalize to tail of each list*)  or Apply normalize to tail of each list*)
283  fun normalize (Ein.EIN{params, index, body}) = let  fun normalize (Ein.EIN{params, index, body}) = let
284       val f= print"IN NORMALIZE"                  (* val _ = print(String.concat["\n IN NORMALIZE@", P.printbody(body),"@\n"])*)
285        val changed = ref false        val changed = ref false
286        val sumIndex=ref []        val sumIndex=ref []
287
288        fun rewriteBody body = (case body        fun rewriteBody body =
289                (case body
290               of E.Const _=> body               of E.Const _=> body
291                | E.Tensor _ =>body                | E.Tensor _ =>body
292                | E.Field _=> body                | E.Field _=> body
# Line 379  Line 380
380                   end                   end
381              | E.Prod(E.Sum(c1,E.Prod(E.Epsilon e1::es1))::E.Sum(c2,E.Prod(E.Epsilon e2::es2))::es)=>let              | E.Prod(E.Sum(c1,E.Prod(E.Epsilon e1::es1))::E.Sum(c2,E.Prod(E.Epsilon e2::es2))::es)=>let
382                  val ref x=sumIndex                  val ref x=sumIndex
383                  val y=print "in here, intial sum \n "
384
385                  val m= Kt x                  val m= Kt x
386
387                  val c'= [c1@c2]@x                  val c'= [c1@c2]@x
388                  val (i,s',e,rest)=epsToDels(c', E.Prod([E.Epsilon e1, E.Epsilon e2]@es1@es2@es))                  val (i,s',e,rest)=epsToDels(c', E.Prod([E.Epsilon e1, E.Epsilon e2]@es1@es2@es))
val mmmm=print "\n changed to \n "
389                  val gsg=Kt s'                  val gsg=Kt s'
390
391                  val ui=print "\n POst getting index"
392                  in (case (i, e,rest)                  in (case (i, e,rest)
393                      of (1,[e1],_)=> (changed:=true;sumIndex:=s';let                      of (1,[e1],_)=> (changed:=true;sumIndex:=s';let
394                          val ss=List.nth(s',((length s')-2))                          val ss=List.nth(s',((length s')-2))
# Line 461  Line 461
461                | 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)])
462                | 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)])
463                | 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)])
464
465                 | E.Sum(c,E.Prod e)=> let
466                        val e' =rewriteBody(E.Prod e)
467                        (*val _=print (String.concat["\n change \n",P.printbody(body ),"\n ==>\n",P.printbody(E.Sum(c,e')),"\n"])*)
468                        val b'= (case e'
469                            of E.Prod p=>let
470                                val (_,b)=mkProd p
471                                in b end
472                            |_=>e'
473                            (* end case*))
474                        val _ =print(P.printbody( b'))
475                        in E.Sum(c,b')
476                        end
477                | E.Sum(c,e)=>let                | E.Sum(c,e)=>let
478                      val ggg=print "IN SUMM"
479                      val ref x=sumIndex                      val ref x=sumIndex
480                      val c'=[c]@x                      val c'=[c]@x
481                      val AA=print "\n Started"
482                      val A= Kt c'                      val A= Kt c'
483                      val e'=(sumIndex:=c';rewriteBody e)                      val e'=(sumIndex:=c';rewriteBody e)
484                      val ref s=sumIndex                      val ref s=sumIndex
485                      val CC=print "\n After call we got this"
486                      val C= Kt s                      val C= Kt s
487                      val z=hd(s)                      val z=hd(s)
488                      val BB=print "\n ENDED-HEAD"
489                      val B= Kt [z]                      val B= Kt [z]
val DD=print "\n ENDED-TL"
490                      val D=Kt (tl(s))                      val D=Kt (tl(s))
491                  in (sumIndex:=tl(s);E.Sum(z, e')) end                  in (sumIndex:=tl(s);E.Sum(z, e')) end
492
# Line 541  Line 553
553              end              end
554
555      val (b,count) = loop(body,0)      val (b,count) = loop(body,0)
556      val g=print "out of normalize"      val _ = print(String.concat["\n out of normalize \n",P.printbody(b),"\n Final CounterXX:",Int.toString(count),"\n\n"])
val j=(print "Final CounterXX:";print(Int.toString(count));print"\n\n\n")
557      in      in
558                  (Ein.EIN{params=params, index=index, body=b},count)                  (Ein.EIN{params=params, index=index, body=b},count)
559      end      end

Legend:
 Removed from v.2583 changed lines Added in v.2584

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