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

SCM Repository

[diderot] Diff of /branches/charisee_dev/src/compiler/high-to-mid/split.sml
ViewVC logotype

Diff of /branches/charisee_dev/src/compiler/high-to-mid/split.sml

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

revision 3033, Tue Mar 10 15:17:25 2015 UTC revision 3138, Thu Mar 26 16:27:35 2015 UTC
# Line 39  Line 39 
39      fun cleanParams e =cleanP.cleanParams e      fun cleanParams e =cleanP.cleanParams e
40      fun cleanIndex e =cleanI.cleanIndex e      fun cleanIndex e =cleanI.cleanIndex e
41      fun printEINAPP e=MidToString.printEINAPP e      fun printEINAPP e=MidToString.printEINAPP e
   
   
   
42      fun itos i =Int.toString i      fun itos i =Int.toString i
43      fun filterSca e=Filter.filterSca e      fun filterSca e=Filter.filterSca e
44      fun err str=raise Fail str      fun err str=raise Fail str
# Line 88  Line 85 
85          | E.Lift _    => 0          | E.Lift _    => 0
86          | E.Neg _     => 1          | E.Neg _     => 1
87          | E.Sqrt _    => 1          | E.Sqrt _    => 1
88            | E.Cosine _      => 1
89            | E.ArcCosine _   => 1
90            | E.Sine _        => 1
91            | E.ArcSine _        => 1
92          | E.PowInt _    => 1          | E.PowInt _    => 1
93          | E.PowReal _    => 1          | E.PowReal _    => 1
94          | E.Add _     => 1          | E.Add _     => 1
# Line 159  Line 160 
160      end      end
161    
162    
163        (* handleCosine:var*ein_exp *params*index*args-> (var*einap)*code
164        * calls rewriteOp() lift  on ein_exp
165        *)
166        fun handleCosine(y,e1,params,index,args)=let
167            val (e1',params',args',code)=  rewriteOp("cosine", e1,params,index,[],args)
168            val body =E.Cosine e1'
169            val einapp= rewriteOrig(y,body,params',index,[],args')
170            in
171                (einapp,code)
172        end
173    
174        (* handleArcCosine:var*ein_exp *params*index*args-> (var*einap)*code
175        * calls rewriteOp() lift  on ein_exp
176        *)
177        fun handleArcCosine(y,e1,params,index,args)=let
178            val (e1',params',args',code)=  rewriteOp("ArcCosine", e1,params,index,[],args)
179            val body =E.ArcCosine e1'
180            val einapp= rewriteOrig(y,body,params',index,[],args')
181            in
182                (einapp,code)
183        end
184    
185        (* handleSine:var*ein_exp *params*index*args-> (var*einap)*code
186        * calls rewriteOp() lift  on ein_exp
187        *)
188        fun handleSine(y,e1,params,index,args)=let
189            val (e1',params',args',code)=  rewriteOp("sine", e1,params,index,[],args)
190            val body =E.Sine e1'
191            val einapp= rewriteOrig(y,body,params',index,[],args')
192            in
193                (einapp,code)
194        end
195    
196        (* handleSine:var*ein_exp *params*index*args-> (var*einap)*code
197        * calls rewriteOp() lift  on ein_exp
198        *)
199        fun handleArcSine(y,e1,params,index,args)=let
200        val (e1',params',args',code)=  rewriteOp("ArcSine", e1,params,index,[],args)
201        val body =E.ArcSine e1'
202        val einapp= rewriteOrig(y,body,params',index,[],args')
203        in
204        (einapp,code)
205        end
206    
207    
208      (* handlePowInt:var*ein_exp *params*index*args-> (var*einap)*code      (* handlePowInt:var*ein_exp *params*index*args-> (var*einap)*code
209      * calls rewriteOp() lift  on ein_exp      * calls rewriteOp() lift  on ein_exp
210      *)      *)
# Line 267  Line 313 
313              | E.ConstR _              => default              | E.ConstR _              => default
314              | E.Neg e1                => handleNeg(y,e1,params,index,args)              | E.Neg e1                => handleNeg(y,e1,params,index,args)
315              | E.Sqrt e1               => handleSqrt(y,e1,params,index,args)              | E.Sqrt e1               => handleSqrt(y,e1,params,index,args)
316                | E.Cosine e1             => handleCosine(y,e1,params,index,args)
317                | E.ArcCosine e1          => handleArcCosine(y,e1,params,index,args)
318                | E.Sine e1               => handleSine(y,e1,params,index,args)
319                | E.ArcSine e1            => handleArcSine(y,e1,params,index,args)
320              | E.PowInt e1             => handlePowInt(y,e1,params,index,args)              | E.PowInt e1             => handlePowInt(y,e1,params,index,args)
321              | E.PowReal e1            => handlePowReal(y,e1,params,index,args)              | E.PowReal e1            => handlePowReal(y,e1,params,index,args)
322              | E.Sub (e1,e2)           => handleSub(y,e1,e2,params,index,args)              | E.Sub (e1,e2)           => handleSub(y,e1,e2,params,index,args)
# Line 275  Line 325 
325              | E.Sum(_,E.Prod[E.Epsilon _, E.Probe(E.Conv _,_)  ])      => default              | E.Sum(_,E.Prod[E.Epsilon _, E.Probe(E.Conv _,_)  ])      => default
326              | E.Sum(_,E.Probe(E.Conv _,_))    => default              | E.Sum(_,E.Probe(E.Conv _,_))    => default
327              | E.Sum(sx,E.Prod e1)     => handleSumProd(y,e1,params,index,sx,args)              | E.Sum(sx,E.Prod e1)     => handleSumProd(y,e1,params,index,sx,args)
328              | E.Sum(sx,E.Add [a0,a1,a2])             => err(" \n summation not distributed:add3\n found:\n\t"^P.printbody a0^"\nin \n"^str)              | E.Sum(sx,E.Delta d)     => handleSumProd(y,[E.Delta d],params,index,sx,args)
   
             | E.Sum(sx,E.Add n)             => err(" \n summation not distributed:add\n"^Int.toString(length n)^"found:\n\t"^P.printbody b^"\nin \n"^str)  
             | E.Sum(sx,E.Sub _)             => err(" summation not distributed:sub"^str)  
             | E.Sum(sx,E.Sqrt _)             => err(" summation not distributed:sqrt"^str)  
             | E.Sum(sx,E.Neg _)             => err(" summation not distributed:neg"^str)  
329              | E.Sum(sx,_)             => err(" summation not distributed:"^str)              | E.Sum(sx,_)             => err(" summation not distributed:"^str)
330              | E.Add e1                => handleAdd(y,e1,params,index,args)              | E.Add e1                => handleAdd(y,e1,params,index,args)
331              | E.Prod e1               => handleProd(y,e1,params,index,args)              | E.Prod e1               => handleProd(y,e1,params,index,args)

Legend:
Removed from v.3033  
changed lines
  Added in v.3138

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