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

SCM Repository

[diderot] Diff of /branches/ein16/src/compiler/basis/basis-vars.sml
ViewVC logotype

Diff of /branches/ein16/src/compiler/basis/basis-vars.sml

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

revision 3997, Sun Jun 19 15:55:49 2016 UTC revision 3998, Sun Jun 19 17:12:03 2016 UTC
# Line 206  Line 206 
206              in              in
207                  [f,s] --> f                  [f,s] --> f
208              end))              end))
209        val div_ts = polyVar(N.op_div, all([DK,NK,SK],
210                fn [Ty.DIFF k, Ty.DIM d, Ty.SHAPE dd] => let
211                val t = Ty.T_Tensor(Ty.ShapeVar dd)
212                val s = Ty.T_Field{diff = Ty.DiffVar(k, 0), dim = Ty.DimVar d, shape = Ty.Shape []}
213                val f = Ty.T_Field{diff = Ty.DiffVar(k, 0), dim = Ty.DimVar d, shape = Ty.ShapeVar dd}
214                    in
215            [t, s] --> f
216            end))
217    
218    
219    (* exponentiation; we distinguish between integer and real exponents to allow x^2 to be compiled    (* exponentiation; we distinguish between integer and real exponents to allow x^2 to be compiled
220     * as x*x.     * as x*x.
# Line 580  Line 589 
589      val fn_max = monoVar (N.fn_max, [Ty.realTy, Ty.realTy] --> Ty.realTy)      val fn_max = monoVar (N.fn_max, [Ty.realTy, Ty.realTy] --> Ty.realTy)
590      val fn_min = monoVar (N.fn_min, [Ty.realTy, Ty.realTy] --> Ty.realTy)      val fn_min = monoVar (N.fn_min, [Ty.realTy, Ty.realTy] --> Ty.realTy)
591    
592      val fn_modulate = polyVar (N.fn_modulate, all([NK],      val fn_modulate_tt = polyVar (N.fn_modulate, all([SK],
593            fn [Ty.DIM d] => let            fn [Ty.SHAPE dd] => let
594                val t = Ty.T_Tensor(Ty.Shape[Ty.DimVar d])                val t = Ty.T_Tensor(Ty.ShapeVar dd)
595                in                in
596                  [t, t] --> t                  [t, t] --> t
597                end))                end))
598    
599        val fn_modulate_tf = polyVar (N.op_dot, all([DK ,NK, SK],
600            fn [Ty.DIFF k, Ty.DIM d, Ty.SHAPE dd1] => let
601                val k = Ty.DiffVar(k, 0)
602                val d = Ty.DimVar d
603                val t1 = Ty.T_Tensor(Ty.ShapeVar dd1)
604                val t2 = Ty.T_Field{diff = k, dim = d, shape = Ty.ShapeVar dd1}
605            in
606                [t1, t2] --> t2
607            end))
608    
609        val fn_modulate_ft = polyVar (N.op_dot, all([DK, NK, SK],
610            fn [Ty.DIFF k, Ty.DIM d, Ty.SHAPE dd1] => let
611            val k = Ty.DiffVar(k, 0)
612            val d = Ty.DimVar d
613            val t1 = Ty.T_Field{diff = k, dim = d, shape = Ty.ShapeVar dd1}
614            val t2 = Ty.T_Tensor(Ty.ShapeVar dd1)
615            in
616            [t1, t2] --> t1
617            end))
618    
619        val fn_modulate_ff = polyVar (N.fn_modulate, all([DK, NK, SK],
620            fn [Ty.DIFF k, Ty.DIM d, Ty.SHAPE dd1] => let
621                val k0 = Ty.DiffVar(k, 0)
622                val d' = Ty.DimVar d
623                val f1 = Ty.T_Field{diff = k0, dim = d', shape = Ty.ShapeVar dd1}
624                in
625                    [f1,f1] --> f1
626                end))
627    
628          val fn_normalize_t = polyVar (N.fn_normalize, all([SK],          val fn_normalize_t = polyVar (N.fn_normalize, all([SK],
629              fn [Ty.SHAPE dd] => let              fn [Ty.SHAPE dd] => let
630                  val t = Ty.T_Tensor(Ty.ShapeVar dd)                  val t = Ty.T_Tensor(Ty.ShapeVar dd)

Legend:
Removed from v.3997  
changed lines
  Added in v.3998

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