     }
     
     static func multiplyWithOverflow(_ lhs: Rational, _ rhs: Rational) -> (Rational, overflow: Bool) {
-        guard lhs.isFinite() && rhs.isFinite() else {
+        if lhs.isInfinite || rhs.isInfinite {
             return (Rational(lhs.numerator * rhs.numerator, 0), false);
         }
 

    }
    
    static func addWithOverflow(_ lhs: Rational, _ rhs: Rational) -> (Rational, overflow: Bool) {
        guard lhs.isFinite() && rhs.isFinite() else {
            return (Rational(lhs.numerator + rhs.numerator, 0), false);
        }
        

    }

    static func * (lhs: Rational, rhs: Rational) -> Rational {
        if lhs.isInfinite || rhs.isInfinite {
            return Rational(lhs.numerator * rhs.numerator, 0);
        }
        
