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-il/derivative-ein.sml
ViewVC logotype

Diff of /branches/charisee_dev/src/compiler/high-il/derivative-ein.sml

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

revision 3352, Wed Oct 28 16:38:14 2015 UTC revision 3353, Wed Oct 28 23:08:21 2015 UTC
# Line 87  Line 87 
87              | E.Sqrt s                  => let              | E.Sqrt s                  => let
88                  val half=E.Div(E.Const 1 ,E.Const 2)                  val half=E.Div(E.Const 1 ,E.Const 2)
89                  val e2=E.Div(E.Apply(p0,s),e)                  val e2=E.Div(E.Apply(p0,s),e)
90              val _ = print "\n\tsqrt rule"  
91                  in (case dn                  in (case dn
92                      of []=>  (1,E.Prod[half, e2])                      of []=>  (1,E.Prod[half, e2])
93                      | _  =>  (1,E.Prod[half,E.Apply(E.Partial dn, e2)])                      | _  =>  (1,E.Prod[half,E.Apply(E.Partial dn, e2)])
# Line 99  Line 99 
99                  in (case post                  in (case post
100                      of []=> (1,E.Const 0)(*no fields in expression*)                      of []=> (1,E.Const 0)(*no fields in expression*)
101                      | _=>let                      | _=>let
102              val _=print"\n\tproduct rule"  
103                          val (_,e2)= mkProd(pre@[prodAppPartial(post,p0)])                          val (_,e2)= mkProd(pre@[prodAppPartial(post,p0)])
104                          in iterDn(e2)                          in iterDn(e2)
105                          end                          end
# Line 110  Line 110 
110                  (case filterField[b]                  (case filterField[b]
111                      of (_,[]) => (1,E.Const 0)                      of (_,[]) => (1,E.Const 0)
112                      | (pre,h) => let                      | (pre,h) => let
113          val _=print"\n\tquotient rule"  
114                              (* Quotient Rule*)                              (* Quotient Rule*)
115                              val h'=E.Apply(p0,flatProd(h))                              val h'=E.Apply(p0,flatProd(h))
116                              val num= E.Prod[E.Const ~1,h']                              val num= E.Prod[E.Const ~1,h']
# Line 123  Line 123 
123                      of (_,[]) => (1,E.Const 0)                      of (_,[]) => (1,E.Const 0)
124                      | (pre,h) => let                      | (pre,h) => let
125                          (* Quotient Rule*)                          (* Quotient Rule*)
126          val _=print"\n\tquotient rule"  
127                          val h'=E.Apply(p0,flatProd(h))                          val h'=E.Apply(p0,flatProd(h))
128                          val num= E.Neg(E.Prod[E.Const c ,h'])                          val num= E.Neg(E.Prod[E.Const c ,h'])
129                          val e2=E.Div(num,E.Prod(pre@h@h))                          val e2=E.Div(num,E.Prod(pre@h@h))
# Line 135  Line 135 
135                      of (_,[]) => (1,E.Div(E.Apply(px,g),b)) (*Division by a real*)                      of (_,[]) => (1,E.Div(E.Apply(px,g),b)) (*Division by a real*)
136                      | (pre,h) => let                      | (pre,h) => let
137                          (* Quotient Rule*)                          (* Quotient Rule*)
138                          val _=print"\n\tquotient rule"  
139                          val g'=E.Apply(p0,g)                          val g'=E.Apply(p0,g)
140                          val h'=E.Apply(p0,flatProd(h))                          val h'=E.Apply(p0,flatProd(h))
141                          val num=E.Sub(E.Prod([g']@h),E.Prod[g,h'])                          val num=E.Sub(E.Prod([g']@h),E.Prod[g,h'])

Legend:
Removed from v.3352  
changed lines
  Added in v.3353

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