def div(self, a, b): if isinstance(a, float): if isinstance(b, float): if b == 0: raise ComputorException('Division by zero') return a / b elif isinstance(b, Complex): return Complex.div(Complex(a), b) elif isinstance(b, Matrix): raise ComputorException('Illegal operation: Rational / Matrix') elif isinstance(a, Complex): if isinstance(b, float): return Complex.div(a, Complex(b)) elif isinstance(b, Complex): return Complex.div(a, b) elif isinstance(b, Matrix): raise ComputorException('Illegal operation: Complex / Matrix') elif isinstance(a, Matrix): if isinstance(b, float): if b == 0: raise ComputorException('Division by zero') return Matrix.scalar_mul(1 / b, a) elif isinstance(b, Complex): raise ComputorException('Illegal operation: Matrix / Complex') elif isinstance(b, Matrix): return Matrix.mat_mul(a, b.get_inverse()) raise ComputorException('Computor.div(): something bad happened 🤷')