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

SCM Repository

[diderot] Diff of /branches/vis15/src/compiler/ein/mk-operators.sml
ViewVC logotype

Diff of /branches/vis15/src/compiler/ein/mk-operators.sml

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

revision 3477, Thu Dec 3 15:08:09 2015 UTC revision 3478, Thu Dec 3 17:26:24 2015 UTC
# Line 22  Line 22 
22      val subRR : Ein.ein      val subRR : Ein.ein
23      val subTT : shape -> Ein.ein      val subTT : shape -> Ein.ein
24      val subTF : dim * shape -> Ein.ein      val subTF : dim * shape -> Ein.ein
25        val subFT : dim * shape -> Ein.ein
26      val subFF : dim * shape -> Ein.ein      val subFF : dim * shape -> Ein.ein
27    
28      val mulRT : shape -> Ein.ein      val mulRT : shape -> Ein.ein
# Line 75  Line 76 
76  (* QUESTION: should these be index_kind? *)  (* QUESTION: should these be index_kind? *)
77      val transposeF : dim * Ein.index_id * Ein.index_id -> Ein.ein      val transposeF : dim * Ein.index_id * Ein.index_id -> Ein.ein
78    
79      val detT2 : Ein.ein      val det2T : Ein.ein
80      val detT3 : Ein.ein      val det3T : Ein.ein
81      val detF2 : Ein.ein      val det2F : Ein.ein
82      val detF3_full : Ein.ein      val det3F_full : Ein.ein
83      val detF3A : Ein.ein      val det3FA : Ein.ein
84      val detF3 : Ein.ein      val det3F : Ein.ein
85    
86      val expF : dim -> Ein.ein      val expF : dim -> Ein.ein
87      val expT : Ein.ein      val expT : Ein.ein
88    
89      val powF  : dim -> Ein.ein      val powF  : dim * int -> Ein.ein
90    
91      val sqrtF : dim -> Ein.ein      val sqrtF : dim -> Ein.ein
92      val cosF  : dim -> Ein.ein      val cosF  : dim -> Ein.ein
93      val acosF : dim -> Ein.ein      val acosF : dim -> Ein.ein
# Line 97  Line 99 
99      val modulate : dim -> Ein.ein      val modulate : dim -> Ein.ein
100    
101      val identity : dim -> Ein.ein      val identity : dim -> Ein.ein
102        val zeros : shape -> Ein.ein
103    
104      val slice : shape * bool list * int list * shape -> Ein.ein      val slice : shape * bool list * int list * shape -> Ein.ein
105    
# Line 650  Line 653 
653    
654    (************************* determinant *************************)    (************************* determinant *************************)
655    
656      val detT2 = E.EIN{      val det2T = E.EIN{
657              params = [E.TEN(0, [2, 2])],              params = [E.TEN(0, [2, 2])],
658              index = [],              index = [],
659              body = E.Op2(E.Sub,              body = E.Op2(E.Sub,
# Line 658  Line 661 
661                E.Opn(E.Prod, [E.Tensor(0, [E.C 0, E.C 1]), E.Tensor(0, [E.C 1, E.C 0])]))                E.Opn(E.Prod, [E.Tensor(0, [E.C 0, E.C 1]), E.Tensor(0, [E.C 1, E.C 0])]))
662            }            }
663    
664      val detT3 = let      val det3T = let
665            val a = E.Tensor(0, [E.C 0, E.C 0])            val a = E.Tensor(0, [E.C 0, E.C 0])
666            val b = E.Tensor(0, [E.C 0, E.C 1])            val b = E.Tensor(0, [E.C 0, E.C 1])
667            val c = E.Tensor(0, [E.C 0, E.C 2])            val c = E.Tensor(0, [E.C 0, E.C 2])
# Line 682  Line 685 
685                }                }
686            end            end
687    
688      val detF2 = E.EIN{      val det2F = E.EIN{
689              params = [E.FLD 2],              params = [E.FLD 2],
690              index = [],              index = [],
691              body = E.Op2(E.Sub,              body = E.Op2(E.Sub,
# Line 690  Line 693 
693                E.Opn(E.Prod, [E.Field(0, [E.C 0, E.C 1]), E.Field(0, [E.C 1, E.C 0])]))                E.Opn(E.Prod, [E.Field(0, [E.C 0, E.C 1]), E.Field(0, [E.C 1, E.C 0])]))
694            }            }
695    
696      val detF3_full = let      val det3F_full = let
697            val a = E.Field(0, [E.C 0, E.C 0])            val a = E.Field(0, [E.C 0, E.C 0])
698            val b = E.Field(0, [E.C 0, E.C 1])            val b = E.Field(0, [E.C 0, E.C 1])
699            val c = E.Field(0, [E.C 0, E.C 2])            val c = E.Field(0, [E.C 0, E.C 2])
# Line 714  Line 717 
717                }                }
718            end            end
719    
720      val detF3A = E.EIN{      val det3FA = E.EIN{
721              params = [E.FLD 3],              params = [E.FLD 3],
722              index = [],              index = [],
723              body = E.Sum([(E.V 0, 0, 2), (E.V 1, 0, 2), (E.V 2, 0, 2)],              body = E.Sum([(E.V 0, 0, 2), (E.V 1, 0, 2), (E.V 2, 0, 2)],
# Line 726  Line 729 
729                  ]))                  ]))
730            }            }
731    
732      val detF3 = E.EIN{      val det3F = E.EIN{
733              params = [E.FLD 3],              params = [E.FLD 3],
734              index = [],              index = [],
735              body = E.Sum([(E.V 0, 0, 2)],              body = E.Sum([(E.V 0, 0, 2)],
# Line 753  Line 756 
756                body = E.Op1(E.Cosine, E.Field(0, []))                body = E.Op1(E.Cosine, E.Field(0, []))
757              }              }
758      in      in
759      val powF = liftFn E.PowInt      fun powF (dim, n) = E.EIN{
760                params = [E.FLD dim],
761                index = [], body = E.Op1(E.PowInt n, E.Field(0, []))
762              }
763      val sqrtF = liftFn E.Sqrt      val sqrtF = liftFn E.Sqrt
764      val cosF = liftFn E.Cosine      val cosF = liftFn E.Cosine
765      val acosF = liftFn E.ArcCosine      val acosF = liftFn E.ArcCosine
# Line 774  Line 780 
780              params = [], index = [dim, dim], body = E.G(E.Delta(E.V(0), E.V(1)))              params = [], index = [dim, dim], body = E.G(E.Delta(E.V(0), E.V(1)))
781            }            }
782    
783        fun zeros shape = E.EIN{
784                params = [], index = shape, body = E.B(E.Const 0)
785              }
786    
787  (* QUESTION: why do we need the const list?  The indices are implicit in the position of  (* QUESTION: why do we need the const list?  The indices are implicit in the position of
788   * of the mask element!  Likewise, the result type can be determined from the argTy and   * of the mask element!  Likewise, the result type can be determined from the argTy and
789   * mask.   * mask.

Legend:
Removed from v.3477  
changed lines
  Added in v.3478

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