protected override MathStatement Mult(Relation other) { return(other switch { EqualsOp eo => EqualsOp.Create(this * eo.Left, this * eo.Right), _ => throw new NotImplementedException() });
public static MathStatement Create(MathStatement left, MathStatement right) => (left, right) switch { (Expr el, Expr er) => Create(el, er), (Expr el, EqualsOp eor) => EqualsOp.Create(Create(el, eor.Left), Create(el, eor.Right)), (EqualsOp eol, EqualsOp eor) => EqualsOp.Create(Create(eol.Left, eor.Left), Create(eol.Right, eor.Right)), (EqualsOp eol, Expr er) => EqualsOp.Create(Create(eol.Left, er), Create(eol.Right, er)), _ => throw new NotImplementedException() };
public static MathStatement Create(MathStatement left, MathStatement right) => (left, right) switch { (Expr el, Expr er) => Create(el, er), (Expr el, EqualsOp eor) => throw new InvalidOperationException($"expression raised to Equality operator."), (EqualsOp eol, EqualsOp eor) => EqualsOp.Create(Create(eol.Left, eor.Left), Create(eol.Right, eor.Right)), (EqualsOp eol, Expr er) => EqualsOp.Create(Create(eol.Left, er), Create(eol.Right, er)), _ => throw new NotImplementedException() };