private IElement ConvertToMatrix(IElement E) { if (this.nullCheck && E.AssociatedObjectValue is null) { return(E); } if (E is IMatrix) { return(E); } if (E is IVector V) { return(MatrixDefinition.Encapsulate(V.VectorElements, 1, V.Dimension, this)); } if (E is ISet S) { ICollection <IElement> Elements = S.ChildElements; return(MatrixDefinition.Encapsulate(Elements, 1, Elements.Count, this)); } return(MatrixDefinition.Encapsulate(new IElement[] { E }, 1, 1, this)); }
/// <summary> /// Evaluates the node, using the variables provided in the <paramref name="Variables"/> collection. /// </summary> /// <param name="Variables">Variables collection.</param> /// <returns>Result.</returns> public override IElement Evaluate(Variables Variables) { IElement Operand = this.op.Evaluate(Variables); if (Operand is IMatrix Matrix) { return(Matrix.ConjugateTranspose()); } if (Operand is IVector Vector) { return(MatrixDefinition.Encapsulate(Vector.VectorElements, 1, Vector.Dimension, this).ConjugateTranspose()); } return(Operand); }
/// <summary> /// Evaluates the node, using the variables provided in the <paramref name="Variables"/> collection. /// </summary> /// <param name="Variables">Variables collection.</param> /// <returns>Result.</returns> public override IElement Evaluate(Variables Variables) { IElement E = this.op.Evaluate(Variables); if (E is IMatrix) { return(E); } if (E is IVector V) { return(MatrixDefinition.Encapsulate(V.VectorElements, 1, V.Dimension, this)); } if (E is ISet S) { ICollection <IElement> Elements = S.ChildElements; return(MatrixDefinition.Encapsulate(Elements, 1, Elements.Count, this)); } return(MatrixDefinition.Encapsulate(new IElement[] { E }, 1, 1, this)); }
/// <summary> /// Encapsulates the calculated elements. /// </summary> /// <param name="Elements">Elements</param> /// <returns>Encapsulated elements.</returns> protected override IElement Encapsulate(LinkedList <IElement> Elements) { return(MatrixDefinition.Encapsulate(Elements, this)); }