Exemple #1
0
 def operate(self, operator, t1, t2):
     """returns the result of an operation performed on two terms"""
     #casts strings to the appropriate type
     if type(t1) == type(''):
         try:
             t1 = float(t1)
         except ValueError:
             try:
                 t1 = complex(eval(t1))
             #I wrote my own method for complex casting because Python's
             #native type cast relies on very specific pre-formatting
             except ValueError:
                 t1 = eqn_helper.make_complex(t1)
     if type(t2) == type(''):
         try:
             t2 = float(t2)
         except ValueError:
             try:
                 t2 = complex(eval(t2))
             except ValueError:
                 t2 = eqn_helper.make_complex(t2)
     try:
     #makes sure that if one term is a vector, both terms become vectors
         if type(t2) == type(Vector()) and type(t1) != type(Vector()):
             t1 = Vector(t1)
         if operator == '+':
             return t1 + t2
         if operator == '-':
             return t1 - t2
         if operator == '*':
             return t1 * t2
         if operator == '/':
             return t1 / t2
         if operator == '**':
             return t1 ** t2
         if operator == '*-':
             return t1 * -t2
         if operator == '/-':
             return t1 / -t2
         if operator == '**-':
             return 1 / t1 ** t2
         if operator == 'e':
             return t1 * 10 ** t2
         if operator == 'e-':
             return t1 * 10 ** -t2
         if operator == 'dot':
             return t1.dot(t2)
         if operator == 'cross':
             return t1.cross(t2)
         if operator == '%':
             return t1 % t2
     except OverflowError:
         print('OverflowError. Value too large.')
         return 0
Exemple #2
0
def evaluate_numbers(phrase):
    """creates an evaluator for a phrase and automatically evaluates it."""
    temp = RawEvaluator(phrase).evaluate()
    if type(temp) != type(''):
        return temp
    else:
        try:
            #FIX THIS
            return eval(temp)
        except (ValueError, TypeError):
            try:
                return complex(temp)
            except (TypeError, ValueError):
                try:
                    return eqn_helper.make_complex(temp)
                except (TypeError, ValueError):
                    return Vector(temp)