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)))); }
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); }
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()); }
public void VectorExpression3() { var e = new VectorExpression(new StringLiteral("a")); Assert.IsFalse(e.IsTrivial); Assert.AreEqual("(\"a\")", e.ToString()); AssertExtensions.AreEqualValues(e, e.TryFold()); }
public void VectorExpression1() { var e = new VectorExpression(); Assert.IsFalse(e.IsTrivial); Assert.Throws <InvalidOperationException>(() => e.ToString()); Assert.Throws <InvalidOperationException>(() => e.TryFold()); }
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(); } }
public virtual TReturn Visit(VectorExpression node, TParam param) => throw new NotImplementedException();
public MatrixVectorMultiply(MatrixExpression m, VectorExpression v, double[]?reuse) { M = m; V = v; R = reuse; }
public VectorSub(VectorExpression a, VectorExpression b, double[]?reuse) { A = a; B = b; R = reuse; }
public VectorAddScalar(VectorExpression a, double s) { E = a; S = s; }
public VectorTranspose(VectorExpression a) => E = a;
public VectorScale(VectorExpression a, double s) { E = a; S = s; }
public VectorToMatrix(VectorExpression a) => E = a;
public virtual void VisitVectorExpression(VectorExpression node) => DefaultVisit(node);