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

SCM Repository

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

Diff of /trunk/src/compiler/translate/translate-basis.sml

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

revision 1922, Sat Jun 23 11:25:39 2012 UTC revision 1923, Sat Jun 23 12:02:18 2012 UTC
# Line 84  Line 84 
84    (* build a table that maps Basis variables to their translation functions *)    (* build a table that maps Basis variables to their translation functions *)
85      val tbl : ((IL.var * Ty.meta_var list * IL.var list) -> IL.assignment list) VTbl.hash_table = let      val tbl : ((IL.var * Ty.meta_var list * IL.var list) -> IL.assignment list) VTbl.hash_table = let
86            val tbl = VTbl.mkTable (128, Fail "Translate table")            val tbl = VTbl.mkTable (128, Fail "Translate table")
87              val insert = VTbl.insert tbl
88            in            in
89              List.app (VTbl.insert tbl) [              List.app insert [
90                  (BV.lt_ii,              simpleOp(Op.LT DstTy.IntTy)),                  (BV.lt_ii,              simpleOp(Op.LT DstTy.IntTy)),
91                  (BV.lt_rr,              simpleOp(Op.LT DstTy.realTy)),                  (BV.lt_rr,              simpleOp(Op.LT DstTy.realTy)),
92                  (BV.lte_ii,             simpleOp(Op.LTE DstTy.IntTy)),                  (BV.lte_ii,             simpleOp(Op.LTE DstTy.IntTy)),
# Line 133  Line 134 
134                                              IL.ASSGN(y, IL.OP(Op.ScaleField, [s', f]))                                              IL.ASSGN(y, IL.OP(Op.ScaleField, [s', f]))
135                                            ] end),                                            ] end),
136                  (BV.exp_ri,             simpleOp(Op.Power)),                  (BV.exp_ri,             simpleOp(Op.Power)),
137                  (BV.exp_rr,             basisFn ILBasis.pow),                  (BV.exp_rr,             basisFn MathFuns.pow),
138                  (BV.convolve_vk,        fn (y, [_, dv, _], xs) =>                  (BV.convolve_vk,        fn (y, [_, dv, _], xs) =>
139                                            assign(y, Op.Field(pruneDim(MV.toDim dv)), xs)),                                            assign(y, Op.Field(pruneDim(MV.toDim dv)), xs)),
140                  (BV.convolve_kv,        fn (y, [_, dv, _], [k, v]) =>                  (BV.convolve_kv,        fn (y, [_, dv, _], [k, v]) =>
# Line 141  Line 142 
142                  (BV.neg_i,              simpleOp(Op.Neg DstTy.IntTy)),                  (BV.neg_i,              simpleOp(Op.Neg DstTy.IntTy)),
143                  (BV.neg_t,              tensorOp Op.Neg),                  (BV.neg_t,              tensorOp Op.Neg),
144                  (BV.neg_f,              fn (y, _, xs) => assign(y, Op.NegField, xs)),                  (BV.neg_f,              fn (y, _, xs) => assign(y, Op.NegField, xs)),
145                  (BV.op_at,              fn (y, [_, dv, sv], xs) =>                  (BV.op_probe,           fn (y, [_, dv, sv], xs) =>
146                                            assign(y, Op.Probe(dimVarToTensor dv, shapeVarToTensor sv), xs)),                                            assign(y, Op.Probe(dimVarToTensor dv, shapeVarToTensor sv), xs)),
147                  (BV.op_D,               fn (y, _, xs) => assign(y, Op.DiffField, xs)),                  (BV.op_D,               fn (y, _, xs) => assign(y, Op.DiffField, xs)),
148                  (BV.op_Dotimes,         fn (y, _, xs) => assign(y, Op.DiffField, xs)),                  (BV.op_Dotimes,         fn (y, _, xs) => assign(y, Op.DiffField, xs)),
# Line 150  Line 151 
151                                              | ty => assign(y, Op.Norm ty, xs)                                              | ty => assign(y, Op.Norm ty, xs)
152                                            (* end case *))),                                            (* end case *))),
153                  (BV.op_not,             simpleOp Op.Not),                  (BV.op_not,             simpleOp Op.Not),
                 (BV.fn_atan2,           basisFn ILBasis.atan2),  
                 (BV.fn_cos,             basisFn ILBasis.cos),  
154                  (BV.op_cross,           simpleOp Op.Cross),                  (BV.op_cross,           simpleOp Op.Cross),
155                  (BV.op_outer,           fn (y, [dv1, dv2], xs) => let                  (BV.op_outer,           fn (y, [dv1, dv2], xs) => let
156                                            val d1 = pruneDim(MV.toDim dv1)                                            val d1 = pruneDim(MV.toDim dv1)
# Line 191  Line 190 
190                  (BV.evals3x3,           eigenVal (Op.Eigen3x3, 3)),                  (BV.evals3x3,           eigenVal (Op.Eigen3x3, 3)),
191                  (BV.evecs2x2,           eigenVec (Op.Eigen2x2, 2)),                  (BV.evecs2x2,           eigenVec (Op.Eigen2x2, 2)),
192                  (BV.evecs3x3,           eigenVec (Op.Eigen3x3, 3)),                  (BV.evecs3x3,           eigenVec (Op.Eigen3x3, 3)),
                 (BV.fn_fmod,            basisFn ILBasis.fmod),  
                 (BV.fn_log10,           basisFn ILBasis.log10),  
                 (BV.fn_ln,              basisFn ILBasis.ln),  
193                  (BV.fn_max,             simpleOp Op.Max),                  (BV.fn_max,             simpleOp Op.Max),
194                  (BV.fn_min,             simpleOp Op.Min),                  (BV.fn_min,             simpleOp Op.Min),
195                  (BV.fn_modulate,        vectorOp Op.Mul),                  (BV.fn_modulate,        vectorOp Op.Mul),
196                  (BV.fn_normalize,       vectorOp Op.Normalize),                  (BV.fn_normalize,       vectorOp Op.Normalize),
197                  (BV.fn_principleEvec,   vectorOp Op.PrincipleEvec),                  (BV.fn_principleEvec,   vectorOp Op.PrincipleEvec),
                 (BV.fn_sin,             basisFn ILBasis.sin),  
                 (BV.fn_sqrt,            basisFn ILBasis.sqrt),  
                 (BV.fn_tan,             basisFn ILBasis.tan),  
198                  (BV.fn_trace,           fn (y, [dv], xs) => assign(y, Op.Trace(dimVarToMatrix dv), xs)),                  (BV.fn_trace,           fn (y, [dv], xs) => assign(y, Op.Trace(dimVarToMatrix dv), xs)),
199                  (BV.kn_bspln3,          kernel Kernel.bspln3),                  (BV.kn_bspln3,          kernel Kernel.bspln3),
200                  (BV.kn_bspln5,          kernel Kernel.bspln5),                  (BV.kn_bspln5,          kernel Kernel.bspln5),
# Line 219  Line 212 
212                                              Op.SeqSub(DstTy.SeqTy(pruneTy(MV.toType tv), pruneDim(MV.toDim dv))),                                              Op.SeqSub(DstTy.SeqTy(pruneTy(MV.toType tv), pruneDim(MV.toDim dv))),
213                                              args))                                              args))
214                ];                ];
215              (* add C math functions *)
216                List.app (fn (n, x) => insert(x, basisFn n)) BV.mathFns;
217              tbl              tbl
218            end            end
219    

Legend:
Removed from v.1922  
changed lines
  Added in v.1923

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