public static Expression Power(Expression a, Expression b) { // TODO: automatic simplification TypeInference type = new TypeInference(a, b); List <Expression> expressions = type.CastToMaxNumericList(); return(Expression.Power(expressions[0], expressions[1])); }
public static Expression Divide(Expression a, Expression b) { if(Elementary.IsConstantZero(a)) { return Arithmeric.Zero(); } if(Elementary.IsConstantOne(b)) { return a; } TypeInference type = new TypeInference(a, b); List<Expression> expressions = type.CastToMaxNumericList(); return Expression.Divide(expressions[0], expressions[1]); }
public static Expression Subtract(Expression a, Expression b) { if (Elementary.IsConstantZero(a)) { return(Negate(b)); } if (Elementary.IsConstantZero(b)) { return(a); } TypeInference type = new TypeInference(a, b); List <Expression> expressions = type.CastToMaxNumericList(); return(Expression.Subtract(expressions[0], expressions[1])); }
public static Expression Divide(Expression a, Expression b) { if (Elementary.IsConstantZero(a)) { return(Arithmeric.Zero()); } if (Elementary.IsConstantOne(b)) { return(a); } TypeInference type = new TypeInference(a, b); List <Expression> expressions = type.CastToMaxNumericList(); return(Expression.Divide(expressions[0], expressions[1])); }
public static Expression Subtract(Expression a, Expression b) { if(Elementary.IsConstantZero(a)) { return Negate(b); } if(Elementary.IsConstantZero(b)) { return a; } TypeInference type = new TypeInference(a, b); List<Expression> expressions = type.CastToMaxNumericList(); return Expression.Subtract(expressions[0], expressions[1]); }
public static Expression Power(Expression a, Expression b) { // TODO: automatic simplification TypeInference type = new TypeInference(a, b); List<Expression> expressions = type.CastToMaxNumericList(); return Expression.Power(expressions[0], expressions[1]); }