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

SCM Repository

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

Diff of /branches/charisee/src/compiler/high-to-mid/handleEin.sml

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

revision 2867, Tue Feb 10 06:52:58 2015 UTC revision 2870, Wed Feb 25 21:47:43 2015 UTC
# Line 49  Line 49 
49              of E.Tensor _         => 0              of E.Tensor _         => 0
50              | E.Add e             => iterList e              | E.Add e             => iterList e
51              | E.Sub(e1,e2)         => iterList [e1,e2]              | E.Sub(e1,e2)         => iterList [e1,e2]
52              | E.Div(e1,e2)         => isZero e1              | E.Div(e1,e2)         => iterProdList [e1,e2]
53              | E.Sum(_ ,e)          => isZero e              | E.Sum(_ ,e)          => isZero e
54              | E.Prod e             => iterProdList e              | E.Prod e             => iterProdList e
55              | E.Neg e              => isZero e              | E.Neg e              => isZero e
# Line 61  Line 61 
61              | E.Apply _            => 1              | E.Apply _            => 1
62              | E.Lift _             => 1              | E.Lift _             => 1
63              | E.Conv _             => 1              | E.Conv _             => 1
64                | E.PowInt(e ,_)            => isZero e
65                | E.PowReal(e,_)             => isZero e
66              | _                    => 0              | _                    => 0
67              (*end case*))              (*end case*))
68          val _=testp["\n Is it Zero",P.printbody e,"--", iTos z]          val _=testp["\n Is it Zero",P.printbody e,"--", iTos z]
# Line 68  Line 70 
70              z              z
71          end          end
72    
     (*isZero: var* einapp params*index list*mid-il vars  
         When the operation is zero then we return a real.  
         *)  
     fun zeroSweep(y,einapp as DstIL.EINAPP(ein,_))=let  
             val _ =testp["\n Starting is zero for var-",DstV.name y]  
             in (case (isZero(E.body ein))  
                 of 1=>  setEinZero y  
                 | _ =>(y,einapp)  
                 (*end case*))  
             end  
   
73    
74        fun sweep e= (case e
75            of E.Tensor _           => e
76            | E.Add es             => E.Add(List.map sweep es)
77            | E.Sub(e1,e2)         => E.Sub(sweep e1,sweep e2)
78            | E.Div(e1,e2)         => E.Div(sweep e1,sweep e2)
79            | E.Sum(c ,e)          => E.Sum(c, sweep e)
80            | E.Prod es             => E.Prod(List.map sweep es)
81            | E.Neg e              => E.Neg(sweep e)
82            | E.Probe(E.Conv _,_)  => e
83            | E.Sqrt e             => E.Sqrt(sweep e)
84            | E.Const _            => e
85            | E.ConstR _           => e
86            | E.Delta _               => e
87            | E.Epsilon _             => e
88            | E.Eps2 _                => e
89            | E.Field _            => E.Const 0
90            | E.Partial _          => E.Const 0
91            | E.Apply _            => E.Const 0
92            | E.Lift _             => E.Const 0
93            | E.Conv _             => E.Const 0
94            | E.PowInt(e ,n)       => E.PowInt(sweep e ,n)
95            | E.PowReal(e,n)       => E.PowReal(sweep e ,n)
96            | E.Probe _            =>
97    raise Fail (String.concat["\n Incorrect probe, substition was not made. Is the Field in an if statement? :",P.printbody e])
98        (*end case*))
99    end; (* local *)    end; (* local *)
100    
101  end (* local *)  end (* local *)

Legend:
Removed from v.2867  
changed lines
  Added in v.2870

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