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

SCM Repository

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

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

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

trunk/src/basis/basis-vars.sml revision 81, Wed May 26 17:28:54 2010 UTC trunk/src/compiler/basis/basis-vars.sml revision 435, Tue Oct 19 13:14:20 2010 UTC
# Line 1  Line 1 
1  (* basis-vars.sml  (* basis-vars.sml
2   *   *
3   * COPYRIGHT (c) 2010 The Diderot Project (http://diderot.cs.uchicago.edu)   * COPYRIGHT (c) 2010 The Diderot Project (http://diderot-language.cs.uchicago.edu)
4   * All rights reserved.   * All rights reserved.
5   *   *
6   * This module defines the AST variables for the built in operators and functions.   * This module defines the AST variables for the built in operators and functions.
# Line 141  Line 141 
141                  [field(k, d, dd), tensor[d]] --> Ty.T_Tensor dd                  [field(k, d, dd), tensor[d]] --> Ty.T_Tensor dd
142                end))                end))
143    
144    (* NOTE: this should be overloaded to allow both v*h and h*v orders *)
145        val op_convolve = polyVar (N.op_convolve, all([DK, NK, SK],
146                fn [Ty.DIFF k, Ty.DIM d, Ty.SHAPE dd] => let
147                    val k = Ty.DiffVar(k, 0)
148                    val d = Ty.DimVar d
149                    val dd = Ty.ShapeVar dd
150                    in
151                      [Ty.T_Image{dim=d, shape=dd}, Ty.T_Kernel k]
152                        --> field(k, d, dd)
153                    end))
154    
155      val op_D = polyVar (N.op_D, all([DK, NK, SK],      val op_D = polyVar (N.op_D, all([DK, NK, SK],
156            fn [Ty.DIFF k, Ty.DIM d, Ty.SHAPE dd] => let            fn [Ty.DIFF k, Ty.DIM d, Ty.SHAPE dd] => let
157                val k0 = Ty.DiffVar(k, 0)                val k0 = Ty.DiffVar(k, 0)
# Line 148  Line 159 
159                val d = Ty.DimVar d                val d = Ty.DimVar d
160                val dd = Ty.ShapeVar dd                val dd = Ty.ShapeVar dd
161                in                in
162                  [field(k0, d, dd), tensor[d]]                  [field(k0, d, dd)]
163                    --> field(km1, d, Ty.ShapeExt(dd, d))                    --> field(km1, d, Ty.ShapeExt(dd, d))
164                end))                end))
165    
# Line 157  Line 168 
168    
169      val op_not = monoVar (N.op_not, [Ty.T_Bool] --> Ty.T_Bool)      val op_not = monoVar (N.op_not, [Ty.T_Bool] --> Ty.T_Bool)
170    
   
171    (* functions *)    (* functions *)
172      val fn_CL = polyVar (N.fn_CL, ty([tensor[N3, N3]] --> Ty.vec3Ty))      val fn_CL = monoVar (N.fn_CL, [tensor[N3, N3]] --> Ty.realTy)
173    
174    (* the following is depreciated in favor of the infix operator *)
175      val fn_convolve = polyVar (N.fn_convolve, all([DK, NK, SK],      val fn_convolve = polyVar (N.fn_convolve, all([DK, NK, SK],
176              fn [Ty.DIFF k, Ty.DIM d, Ty.SHAPE dd] => let              fn [Ty.DIFF k, Ty.DIM d, Ty.SHAPE dd] => let
177                  val k = Ty.DiffVar(k, 0)                  val k = Ty.DiffVar(k, 0)
# Line 171  Line 182 
182                      --> field(k, d, dd)                      --> field(k, d, dd)
183                  end))                  end))
184    
185      val fn_cos = polyVar (N.fn_cos, ty([Ty.realTy] --> Ty.realTy))      val fn_cos = monoVar (N.fn_cos, [Ty.realTy] --> Ty.realTy)
186    
187      val fn_dot = polyVar (N.fn_dot, allNK(fn tv => [tensor[Ty.DimVar tv]] --> tensor[Ty.DimVar tv]))      val fn_dot = polyVar (N.fn_dot, allNK(fn tv => let
188              val t = tensor[Ty.DimVar tv]
189              in
190                [t, t] --> Ty.realTy
191              end))
192    
193      val fn_inside = polyVar (N.fn_inside,       all([DK, NK, SK],      val fn_inside = polyVar (N.fn_inside,       all([DK, NK, SK],
194              fn [Ty.DIFF k, Ty.DIM d, Ty.SHAPE dd] => let              fn [Ty.DIFF k, Ty.DIM d, Ty.SHAPE dd] => let
# Line 193  Line 208 
208                    [Ty.T_String] --> Ty.T_Image{dim=d, shape=dd}                    [Ty.T_String] --> Ty.T_Image{dim=d, shape=dd}
209                  end))                  end))
210    
211      val fn_pow = polyVar (N.fn_pow, ty([Ty.realTy, Ty.realTy] --> Ty.realTy))      val fn_max = monoVar (N.fn_max, [Ty.realTy, Ty.realTy] --> Ty.realTy)
212        val fn_min = monoVar (N.fn_min, [Ty.realTy, Ty.realTy] --> Ty.realTy)
213    
214  (*      val fn_modulate = polyVar (N.fn_modulate, all([NK],
215      val fn_principleEvec = Atom.atom "principleEvec"              fn [Ty.DIM d] => let
216  *)                  val t = Ty.T_Tensor(Ty.Shape[Ty.DimVar d])
217                    in
218                      [t, t] --> t
219                    end))
220    
221        val fn_pow = monoVar (N.fn_pow, [Ty.realTy, Ty.realTy] --> Ty.realTy)
222    
223      val fn_sin = polyVar (N.fn_sin, ty([Ty.realTy] --> Ty.realTy))      val fn_principleEvec = polyVar (N.fn_principleEvec, all([NK],
224                fn [Ty.DIM d] => let
225                    val d = Ty.DimVar d
226                    in
227                      [tensor[d,d]] --> tensor[d]
228                    end))
229    
230        val fn_sin = monoVar (N.fn_sin, [Ty.realTy] --> Ty.realTy)
231    
232    (* kernels *)    (* kernels *)
233      val kn_bspln3 = polyVar (N.kn_bspln3, ty(Ty.T_Kernel(Ty.DiffConst 2)))  (* FIXME: we should really get the continuity info from the kernels themselves *)
234      val kn_tent = polyVar (N.kn_tent, ty(Ty.T_Kernel(Ty.DiffConst 0)))      val kn_bspln3 = monoVar (N.kn_bspln3, Ty.T_Kernel(Ty.DiffConst 2))
235        val kn_bspln5 = monoVar (N.kn_bspln5, Ty.T_Kernel(Ty.DiffConst 4))
236        val kn_ctmr = monoVar (N.kn_ctmr, Ty.T_Kernel(Ty.DiffConst 2))
237        val kn_tent = monoVar (N.kn_tent, Ty.T_Kernel(Ty.DiffConst 0))
238    
239      (* internal variables *)
240        val i2r = monoVar (Atom.atom "$i2r", [Ty.T_Int] --> Ty.realTy)      (* integer to real conversion *)
241    
242      end (* local *)      end (* local *)
243    end    end

Legend:
Removed from v.81  
changed lines
  Added in v.435

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