def reduce_nums(val_1, val_2, val_op):
    """
	Apply arithmetic rules to compute a result

	:param val1: input parameter
	:type val1: int or string
	:param val2: input parameter
	:type val2: int or string
	:param val_op: C operator in *+*, */*, *-*, etc
	:type val_op: string
	:rtype: int
	"""
    try:
        a = 0 + val_1
    except TypeError:
        a = int(val_1)
    try:
        b = 0 + val_2
    except TypeError:
        b = int(val_2)
    d = val_op
    if d == '%':
        c = a % b
    elif d == '+':
        c = a + b
    elif d == '-':
        c = a - b
    elif d == '*':
        c = a * b
    elif d == '/':
        c = a / b
    elif d == '^':
        c = a ^ b
    elif d == '==':
        c = int(a == b)
    elif d == '|' or d == 'bitor':
        c = a | b
    elif d == '||' or d == 'or':
        c = int(a or b)
    elif d == '&' or d == 'bitand':
        c = a & b
    elif d == '&&' or d == 'and':
        c = int(a and b)
    elif d == '!=' or d == 'not_eq':
        c = int(a != b)
    elif d == '^' or d == 'xor':
        c = int(a ^ b)
    elif d == '<=':
        c = int(a <= b)
    elif d == '<':
        c = int(a < b)
    elif d == '>':
        c = int(a > b)
    elif d == '>=':
        c = int(a >= b)
    elif d == '<<':
        c = a << b
    elif d == '>>':
        c = a >> b
    else:
        c = 0
    return c
