public static Func <int, Symbol> CrossProduct(Func <int, Operator> lhs, Func <int, Symbol> rhs)
 {
     return(VectorUtilities.CrossProduct(lhs, rhs, (x, y) => x - y, (x, y) => x * y));
 }
 public static Symbol ScalarProduct(Func <int, Operator> lhs, Func <int, Symbol> rhs, int size)
 {
     return(VectorUtilities.ScalarProduct(lhs, rhs, size, Symbol.Zero, (x, y) => x + y, (x, y) => x * y));
 }
 public static Func <int, T> CrossProduct <T>(Func <int, T> lhs, Func <int, T> rhs, IOperations <T> operations)
 {
     return(VectorUtilities.CrossProduct(lhs, rhs, (x, y) => operations.Subtract(x, y), (x, y) => operations.Multiply(x, y)));
 }
 public static T ScalarProduct <T>(Func <int, T> lhs, Func <int, T> rhs, int size, IOperations <T> operations)
 {
     return(VectorUtilities.ScalarProduct(lhs, rhs, size, operations.Zero, (x, y) => operations.Add(x, y), (x, y) => operations.Multiply(x, y)));
 }