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 2866, Thu Feb 5 22:39:59 2015 UTC revision 2867, Tue Feb 10 06:52:58 2015 UTC
# Line 156  Line 156 
156                                          [assignEin(y, mk.mulFieldss d,xs)]),                                          [assignEin(y, mk.mulFieldss d,xs)]),
157                  (BV.mul_sf,             fn (y, [_,Ty.DIM d, Ty.SHAPE dd], xs) =>                  (BV.mul_sf,             fn (y, [_,Ty.DIM d, Ty.SHAPE dd], xs) =>
158                                              [assignEin(y, mk.mulFieldsf(d,dd),xs)]),                                              [assignEin(y, mk.mulFieldsf(d,dd),xs)]),
159                  (BV.mul_fs,             fn (y, [_,Ty.DIM d, Ty.SHAPE dd], [f,s]) =>                  (BV.mul_fs,             fn (y, [_,Ty.DIM d, Ty.SHAPE dd], [s,f]) =>
160                                          [assignEin(y, mk.mulFieldsf(d,dd),[s,f])]),                                          [assignEin(y, mk.mulFieldsf(d,dd),[f,s])]),
161                  (BV.div_ii,             simpleOp Op.IDiv),                  (BV.div_ii,             simpleOp Op.IDiv),
162                  (BV.div_rr,             fn (y,_,args) => [assignEin(y, mk.divScalar,args)]),                  (BV.div_rr,             fn (y,_,args) => [assignEin(y, mk.divScalar,args)]),
163                  (BV.div_tr,             fn (y, [shp], xs) => let                  (BV.div_tr,             fn (y, [shp], xs) => let
# Line 168  Line 168 
168                                          end),                                          end),
169                  (BV.div_fr,             fn (y, [_,Ty.DIM d, Ty.SHAPE dd], xs) =>                  (BV.div_fr,             fn (y, [_,Ty.DIM d, Ty.SHAPE dd], xs) =>
170                                              [assignEin(y, mk.divideField(d, dd),xs)]),                                              [assignEin(y, mk.divideField(d, dd),xs)]),
171                    (BV.div_fs,             fn (y, [_,_,Ty.DIM d, Ty.SHAPE dd], xs) =>
172                                            [assignEin(y, mk.divFieldfs(d, dd),xs)]),
173                  (BV.div_ss,             fn (y, [_,Ty.DIM d], xs) =>                  (BV.div_ss,             fn (y, [_,Ty.DIM d], xs) =>
174                                              [assignEin(y, mk.divFieldss d,xs)]),                                              [assignEin(y, mk.divFieldss d,xs)]),
175                  (BV.exp_ri,             simpleOp(Op.Power)),                  (BV.exp_ri,             simpleOp(Op.Power)),
# Line 201  Line 203 
203                                              val ty=shapeVarToTensor sv                                              val ty=shapeVarToTensor sv
204                                              in (case shapeVarToTensor sv                                              in (case shapeVarToTensor sv
205                                                  of DstTy.TensorTy[]     => assign(y, Op.Abs DstTy.realTy, xs)                                                  of DstTy.TensorTy[]     => assign(y, Op.Abs DstTy.realTy, xs)
206                                                  | DstTy.TensorTy[_]     => assign(y, Op.Norm ty, xs)                                                  | DstTy.TensorTy [alpha]
207                                                        => [assignEin(y, mk.magnitudeTenVec [alpha],xs@xs)]
208                                                  | DstTy.TensorTy[_,_]   => assign(y, Op.Norm ty, xs)                                                  | DstTy.TensorTy[_,_]   => assign(y, Op.Norm ty, xs)
209    
210                                                  | DstTy.TensorTy[_,_,_] => assign(y, Op.Norm ty, xs)                                                  | DstTy.TensorTy[_,_,_] => assign(y, Op.Norm ty, xs)
211                                                  | _ => raise Fail"unsupported norm of TensorTy"                                                  | _ => raise Fail"unsupported norm of TensorTy"
212                                                  (* end case *))                                                  (* end case *))
213                                              end),                                              end),
214                    (BV.op_normFld,            fn (y, [ _,Ty.DIM d1, Ty.SHAPE dd], xs) => (case dd
215                                                of []
216                                                    => [assignEin(y, mk.magnitudeFldVec(d1, []),xs)]
217                                                    | [i]
218                                                        => [assignEin(y, mk.magnitudeFldVec(d1, [i]),xs@xs)]
219                                                    | _ => raise Fail"unsupported norm of fieldTy"
220                                                (* end case *))),
221                  (BV.op_not,             simpleOp Op.Not),                  (BV.op_not,             simpleOp Op.Not),
222                  (BV.op_cross,            simpleEOp mk.crossProduct),                  (BV.op_cross,            simpleEOp mk.crossProduct),
223                  (BV.op_cross2,            simpleEOp mk.crossProduct2),                  (BV.op_cross2,            simpleEOp mk.crossProduct2),
# Line 223  Line 234 
234                                              [assignEin(y, (mk.innerProduct(dd1,dd2)),xs)]                                              [assignEin(y, (mk.innerProduct(dd1,dd2)),xs)]
235                                          end),                                          end),
236    
237                  (BV.op_innerField,      fn (y,  [_,Ty.SHAPE dd1,Ty.DIM d,Ty.SHAPE dd2,_], xs) =>                  (BV.op_innerField,      fn (y,  [_,_,Ty.SHAPE dd1,Ty.DIM d,Ty.SHAPE dd2,_], xs) =>
238                                              [assignEin(y, mk.innerProductField(dd1,d,dd2),xs)]),                                              [assignEin(y, mk.innerProductField(dd1,d,dd2),xs)]),
239                  (BV.op_colon,           fn (y, [sh1, sh2, _], xs) => let                  (BV.op_colon,           fn (y, [sh1, sh2, _], xs) => let
240                                              val ty1 as DstTy.TensorTy dd1 = shapeVarToTensor sh1                                              val ty1 as DstTy.TensorTy dd1 = shapeVarToTensor sh1

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

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