public static ValueProxy Min(ValueProxy val1, ValueProxy val2) { switch (conv_t[val1.GetValueCode(), val2.GetValueCode()]) { case -1: val1 = val2.Promote(val1); break; case 0: break; case 1: val2 = val1.Promote(val2); break; default: { if (conv_t[val2.GetValueCode(), val1.GetValueCode()] == 1) val1 = val2.Promote(val1); else throw new OperatorMismatchException(Funcs.Gt, val1, val2); } break; } if (val2.IsNaN() || val1.Gt(val2)) return val2; return val1; }
public static bool Gt(ValueProxy val1, ValueProxy val2, out bool res) { res = false; switch (conv_t[val1.GetValueCode(), val2.GetValueCode()]) { case -1: return val2.Promote(val1).TryGt(val2, out res); case 0: return val1.TryGt(val2, out res); case 1: return val1.TryGt(val1.Promote(val2), out res); default: { if (conv_t[val2.GetValueCode(), val1.GetValueCode()] == 1) return val2.Promote(val1).TryGt(val2, out res); return false; } } }
public static Integer op_IntegerDivide(ValueProxy val1, ValueProxy val2) { switch (conv_t[val1.GetValueCode(), val2.GetValueCode()]) { case -1: return val2.Promote(val1).IDiv(val2); case 0: return val1.IDiv(val2); case 1: return val1.IDiv(val1.Promote(val2)); default: { if (conv_t[val2.GetValueCode(), val1.GetValueCode()] == 1) return val2.Promote(val1).IDiv(val2); throw new OperatorMismatchException(Funcs.IDiv, val1, val2); } } }
public static bool Equals(ValueProxy val1, ValueProxy val2) { switch (conv_t[val1.GetValueCode(), val2.GetValueCode()]) { case -1: return val2.Promote(val1).Eq(val2); case 0: return val1.Eq(val2); case 1: return val1.Eq(val1.Promote(val2)); default: { if (conv_t[val2.GetValueCode(), val1.GetValueCode()] == 1) return val2.Promote(val1).Eq(val2); throw new OperatorMismatchException(Funcs.Eq, val1, val2); } } }