Пример #1
0
 internal static Vector Vector(VectorExpression expression)
 {
     return(new Vector()
     {
         Elements = expression.Elements.Select(Serialize).ToArray(),
     }.Apply(n => n.TypeHint = expression.TryType().Null(t => TypeRef.Serialize(t))));
 }
Пример #2
0
 public virtual TReturn Visit(VectorExpression node, TParam param)
 {
     node.X.Accept(this, param);
     node.Y.Accept(this, param);
     node.Z.Accept(this, param);
     return(DefaultReturn);
 }
Пример #3
0
        public void VectorExpression7()
        {
            var e = new VectorExpression(new Literal("a"), new Literal("b"), new Literal("c"));

            Assert.IsFalse(e.IsTrivial);
            Assert.AreEqual("(a, b, c)", e.ToString());
            AssertExtensions.AreEqualValues(new Literal("a, b, c"), e.TryFold());
        }
Пример #4
0
        public void VectorExpression3()
        {
            var e = new VectorExpression(new StringLiteral("a"));

            Assert.IsFalse(e.IsTrivial);
            Assert.AreEqual("(\"a\")", e.ToString());
            AssertExtensions.AreEqualValues(e, e.TryFold());
        }
Пример #5
0
        public void VectorExpression1()
        {
            var e = new VectorExpression();

            Assert.IsFalse(e.IsTrivial);
            Assert.Throws <InvalidOperationException>(() => e.ToString());
            Assert.Throws <InvalidOperationException>(() => e.TryFold());
        }
Пример #6
0
 public void Set(VectorExpression ve)
 {
     if (ve is MatrixVectorMultiply m)
     {
         new MatrixVectorMultiply(m.M, m.V, Array).Evaluate().ReuseArray();
     }
     else if (ve is VectorAdd va)
     {
         new VectorAdd(va.A, va.B, Array).Evaluate().ReuseArray();
     }
     else if (ve is VectorSub vs)
     {
         new VectorSub(vs.A, vs.B, Array).Evaluate().ReuseArray();
     }
     else
     {
         throw new NotSupportedException();
     }
 }
Пример #7
0
 public virtual TReturn Visit(VectorExpression node, TParam param) => throw new NotImplementedException();
Пример #8
0
 public MatrixVectorMultiply(MatrixExpression m, VectorExpression v, double[]?reuse)
 {
     M = m;
     V = v;
     R = reuse;
 }
Пример #9
0
 public VectorSub(VectorExpression a, VectorExpression b, double[]?reuse)
 {
     A = a;
     B = b;
     R = reuse;
 }
Пример #10
0
 public VectorAddScalar(VectorExpression a, double s)
 {
     E = a;
     S = s;
 }
Пример #11
0
 public VectorTranspose(VectorExpression a) => E = a;
Пример #12
0
 public VectorScale(VectorExpression a, double s)
 {
     E = a;
     S = s;
 }
Пример #13
0
 public VectorToMatrix(VectorExpression a) => E = a;
Пример #14
0
 public virtual void VisitVectorExpression(VectorExpression node) => DefaultVisit(node);