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

SCM Repository

[diderot] Diff of /branches/charisee/src/compiler/translate/translate-basis.sml
ViewVC logotype

Diff of /branches/charisee/src/compiler/translate/translate-basis.sml

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

revision 2510, Thu Nov 14 20:33:18 2013 UTC revision 2628, Wed May 21 04:02:06 2014 UTC
# Line 155  Line 155 
155                                              [assignEin(y, mk.scaleField(d, dd),xs)]),                                              [assignEin(y, mk.scaleField(d, dd),xs)]),
156                  (BV.mul_fr,             fn (y, [_,Ty.DIM d, Ty.SHAPE dd], [f, s]) =>                  (BV.mul_fr,             fn (y, [_,Ty.DIM d, Ty.SHAPE dd], [f, s]) =>
157                                              [assignEin(y, mk.scaleField(d, dd),[s,f])]),                                              [assignEin(y, mk.scaleField(d, dd),[s,f])]),
158    (*MARK-mul_ff*)
159                    (BV.mul_ss,             fn (y, [_,Ty.DIM d], xs) =>
160                                            [assignEin(y, mk.mulFieldss d,xs)]),
161                    (BV.mul_sf,             fn (y, [_,Ty.DIM d, Ty.SHAPE dd], xs) =>
162                                                [assignEin(y, mk.mulFieldsf(d,dd),xs)]),
163                    (BV.mul_fs,             fn (y, [_,Ty.DIM d, Ty.SHAPE dd], [f,s]) =>
164                                            [assignEin(y, mk.mulFieldsf(d,dd),[s,f])]),
165    
166                  (BV.div_ii,             simpleOp Op.IDiv),                  (BV.div_ii,             simpleOp Op.IDiv),
167                  (BV.div_rr,             fn (y,_,args) => [assignEin(y, mk.divScalar,args)]),                  (BV.div_rr,             fn (y,_,args) => [assignEin(y, mk.divScalar,args)]),
168                  (BV.div_tr,             fn (y, [shp], xs) => let                  (BV.div_tr,             fn (y, [shp], xs) => let
# Line 165  Line 173 
173                                          end),                                          end),
174                  (BV.div_fr,             fn (y, [_,Ty.DIM d, Ty.SHAPE dd], xs) =>                  (BV.div_fr,             fn (y, [_,Ty.DIM d, Ty.SHAPE dd], xs) =>
175                                              [assignEin(y, mk.divideField(d, dd),xs)]),                                              [assignEin(y, mk.divideField(d, dd),xs)]),
176                    (BV.div_ss,             fn (y, [_,Ty.DIM d], xs) =>
177                                                [assignEin(y, mk.divFieldss d,xs)]),
178    
179                  (BV.exp_ri,             simpleOp(Op.Power)),                  (BV.exp_ri,             simpleOp(Op.Power)),
180                  (BV.exp_rr,             basisFn MathFuns.pow),                  (BV.exp_rr,             basisFn MathFuns.pow),
181                  (BV.curl2D,              simpleEOp mk.curl2d),                  (BV.curl2D,              simpleEOp mk.curl2d),
# Line 189  Line 200 
200                  (BV.op_Dotimes,         fn (y, [_, Ty.DIM d1, Ty.SHAPE dd, Ty.DIM d2], xs) => let                  (BV.op_Dotimes,         fn (y, [_, Ty.DIM d1, Ty.SHAPE dd, Ty.DIM d2], xs) => let
201                                      val x= print (String.concat[" d1:",Int.toString(d1)," d2:",Int.toString(d2),                                      val x= print (String.concat[" d1:",Int.toString(d1)," d2:",Int.toString(d2),
202                                          " shape:",Int.toString(length(dd)), "\n"])                                          " shape:",Int.toString(length(dd)), "\n"])
203                                            val g=print "*******\n"
204                                            val gg2=print(Int.toString(length(xs)))
205  in  in
206                                      [assignEin(y, mk.hessian(d1, dd@[d2]),xs)] end ),                                      [assignEin(y, mk.dotimes(d1, dd@[d2]),xs)] end ),
207                  (BV.op_Ddot,         fn (y, [_, Ty.DIM d1,  Ty.SHAPE dd, Ty.DIM d2], xs) =>                  (BV.op_Ddot,         fn (y, [_, Ty.DIM d1,  Ty.SHAPE dd, Ty.DIM d2], xs) =>
208                                          [assignEin(y, mk.divergence(d1, dd),xs)]),                                          [assignEin(y, mk.divergence(d1, dd),xs)]),
209    
# Line 201  Line 214 
214                                            (* end case *))),                                            (* end case *))),
215                  (BV.op_not,             simpleOp Op.Not),                  (BV.op_not,             simpleOp Op.Not),
216                  (BV.op_cross,            simpleEOp mk.crossProduct),                  (BV.op_cross,            simpleEOp mk.crossProduct),
217                    (BV.op_crossField,       simpleEOp mk.crossProductField),
218                  (BV.op_outer,           fn (y, [Ty.DIM d1, Ty.DIM d2], xs) =>                  (BV.op_outer,           fn (y, [Ty.DIM d1, Ty.DIM d2], xs) =>
219                                  [assignEin(y, (mk.outerProduct(d1, d2)), xs)]),                                  [assignEin(y, (mk.outerProduct(d1, d2)), xs)]),
220    (* Any Shape fields
221                     (BV.op_outerField,      fn (y, [_, Ty.DIM d1, Ty.SHAPE dd1, Ty.SHAPE dd2], xs)=>
222                                            [assignEin(y, mk.outerField(d1, dd1, dd2),   xs)]),
223    *)
224                    (BV.op_outerField,      fn (y, [_, Ty.DIM d1], xs)=>
225                                                [assignEin(y, mk.outerField(d1),   xs)]),
226    
227    
228                  (BV.op_inner,           fn (y, [sh1, sh2, _], xs) => let                  (BV.op_inner,           fn (y, [sh1, sh2, _], xs) => let
229                                              val ty1 as DstTy.TensorTy dd1 = shapeVarToTensor sh1                                              val ty1 as DstTy.TensorTy dd1 = shapeVarToTensor sh1
230                                              val ty2 as DstTy.TensorTy dd2 = shapeVarToTensor sh2                                              val ty2 as DstTy.TensorTy dd2 = shapeVarToTensor sh2
231                                          in                                          in
232                                              [assignEin(y, (mk.innerProduct(dd1,dd2)),xs)]                                              [assignEin(y, (mk.innerProduct(dd1,dd2)),xs)]
233                                          end),                                          end),
234    
235                    (BV.op_innerField,      fn (y,  [_,Ty.SHAPE dd1,Ty.DIM d,Ty.SHAPE dd2,_], xs) =>
236                                                [assignEin(y, mk.innerProductField(dd1,d,dd2),xs)]),
237                  (BV.op_colon,           fn (y, [sh1, sh2, _], xs) => let                  (BV.op_colon,           fn (y, [sh1, sh2, _], xs) => let
238                                              val ty1 as DstTy.TensorTy dd1 = shapeVarToTensor sh1                                              val ty1 as DstTy.TensorTy dd1 = shapeVarToTensor sh1
239                                              val ty2 as DstTy.TensorTy dd2 = shapeVarToTensor sh2                                              val ty2 as DstTy.TensorTy dd2 = shapeVarToTensor sh2
240                                          in                                          in
241                                              [assignEin(y, (mk.doubleDot(dd1,dd2)),xs)]                                              [assignEin(y, (mk.doubleDot(dd1,dd2)),xs)]
242                                          end),                                          end),
243                    (BV.op_colonField,       fn (y, [_,Ty.SHAPE dd1,_,Ty.SHAPE dd2, _], xs) =>
244                                                [assignEin(y, (mk.doubleDotField(dd1,dd2)),xs)]),
245                  (BV.fn_inside,          fn (y, [_, Ty.DIM d, _], xs) => assign(y, Op.Inside d, xs)),                  (BV.fn_inside,          fn (y, [_, Ty.DIM d, _], xs) => assign(y, Op.Inside d, xs)),
246                  (BV.clamp_rrr,          simpleOp (Op.Clamp DstTy.realTy)),                  (BV.clamp_rrr,          simpleOp (Op.Clamp DstTy.realTy)),
247                  (BV.clamp_vvv,          vectorOp Op.Clamp),                  (BV.clamp_vvv,          vectorOp Op.Clamp),
# Line 243  Line 270 
270                  (BV.fn_principleEvec,   vectorOp Op.PrincipleEvec),                  (BV.fn_principleEvec,   vectorOp Op.PrincipleEvec),
271                  (BV.fn_trace,           fn (y, [Ty.DIM d], xs) =>                  (BV.fn_trace,           fn (y, [Ty.DIM d], xs) =>
272                                            [assignEin(y,(mk.trace d), xs)]),                                            [assignEin(y,(mk.trace d), xs)]),
273                    (BV.fn_traceField,           fn (y, [_,Ty.DIM d,Ty.SHAPE dd], xs) =>
274                            [assignEin(y,mk.traceField(d,dd), xs)]),
275    
276                  (BV.fn_transpose,       fn (y, [Ty.DIM d1, Ty.DIM d2], xs) =>                  (BV.fn_transpose,       fn (y, [Ty.DIM d1, Ty.DIM d2], xs) =>
277                                            [assignEin(y, (mk.transpose [d1,d2]), xs)]),                                            [assignEin(y, (mk.transpose [d1,d2]), xs)]),
278    
279                    (BV.fn_transposeField,  fn (y, [_,Ty.DIM d1, Ty.DIM d2,Ty.DIM d3], xs) =>
280                        [assignEin(y, (mk.transposeField (d1,d2,d3)), xs)]),
281    
282                  (BV.kn_bspln3,          kernel Kernel.bspln3),                  (BV.kn_bspln3,          kernel Kernel.bspln3),
283                  (BV.kn_bspln5,          kernel Kernel.bspln5),                  (BV.kn_bspln5,          kernel Kernel.bspln5),
284                  (BV.kn_ctmr,            kernel Kernel.ctmr),                  (BV.kn_ctmr,            kernel Kernel.ctmr),
# Line 255  Line 289 
289                  (BV.i2r,                simpleOp Op.IntToReal),                  (BV.i2r,                simpleOp Op.IntToReal),
290                  (BV.identity,           fn (y, [Ty.DIM d], xs) =>                  (BV.identity,           fn (y, [Ty.DIM d], xs) =>
291                                            [assignEin(y, (mk.identity d), xs)]),                                            [assignEin(y, (mk.identity d), xs)]),
292               (*   (BV.zero,               fn (y, [sv], []) =>                 (BV.zero,               fn (y, [sv], []) =>
293                                            assign(y, Op.Zero(shapeVarToTensor sv), [])),*)                                            assign(y, Op.Zero(shapeVarToTensor sv), [])),
294                  (BV.subscript,          fn (y, [ty, Ty.DIM d], xs) =>                  (BV.subscript,          fn (y, [ty, Ty.DIM d], xs) =>
295                                            assign (y, Op.SeqSub(DstTy.SeqTy(trType ty, d)), xs))                                            assign (y, Op.SeqSub(DstTy.SeqTy(trType ty, d)), xs))
296  (*,  (*,

Legend:
Removed from v.2510  
changed lines
  Added in v.2628

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