Esempio n. 1
0
        /// <inheritdoc/>
        public override ExpNode Execute(VectorProjOperNode node)
        {
            if (node.LeftChild.AreEqualSizeVectors(node.RightChild, out TensorNode a, out TensorNode b))
            {
                VectorProductOperNode adotb = QuickOpers.DotProduct(a, (TensorNode)b.Clone());
                BOperNode             bdotb = QuickOpers.DotProduct((TensorNode)b.Clone(), (TensorNode)b.Clone());

                return(QuickOpers.Multiply(b, adotb, QuickOpers.Reciprical(bdotb)).Execute(this));
            }

            return(HandleError(new CannotVectorProject(this, node)));
        }
Esempio n. 2
0
 /// <summary>
 /// Executes operation on a <see cref="BOperNode"/>.
 /// </summary>
 /// <param name="node">The <see cref="BOperNode"/> to execute operation on.</param>
 /// <returns>The result of the operation on a <see cref="BOperNode"/>.</returns>
 public virtual ExpNode Execute(BOperNode node) => Execute((OperNode)node);
Esempio n. 3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="BinaryFuncParser"/> class.
 /// </summary>
 /// <param name="node">The node to create.</param>
 public BinaryFuncParser(BOperNode node)
 {
     _state = State.OPENING;
     _node = node;
     _childParser = new DefaultParser();
 }
Esempio n. 4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="BOperNodeAlreadyHasChildrenException"/> class.
 /// </summary>
 /// <param name="node">The <see cref="BOperNode"/> throwing.</param>
 public BOperNodeAlreadyHasChildrenException(BOperNode node)
     : base(node, MESSAGE)
 {
 }
Esempio n. 5
0
 /// <summary>
 /// Prints a <see cref="BOperNode"/>.
 /// </summary>
 /// <param name="node">The <see cref="BOperNode"/> to print.</param>
 /// <returns>The <see cref="BOperNode"/> printed to a string.</returns>
 public virtual string Print(BOperNode node) => Print((OperNode)node);