// call by value - non-member function RationalNumber operator/(const RationalNumber& one, const RationalNumber& two) { if (one.isNaN() || two.isNaN()) { RationalNumber r; return r; } RationalNumber r(one.nomi() * two.deno(), one.deno() * two.nomi()); return r; }
bool RationalNumber::operator==(const RationalNumber& other) const { if (other.isNaN()) return false; signed short int a1 = nomi() * other.deno(); signed short int b1 = deno() * other.deno(); signed short int a2 = other.nomi() * deno(); signed short int b2 = other.deno() * deno(); return (a1 == a2 && b1 == b2); }
bool RationalNumber::operator||(const RationalNumber& other) const { if (other.isNaN()) return nomi() > 0; return nomi() > 0 || other.nomi() > 0; }
bool RationalNumber::operator&&(const RationalNumber& other) const { if (other.isNaN()) return false; return nomi() > 0 && other.nomi() > 0; }
bool RationalNumber::operator>(const RationalNumber& other) const { if (other.isNaN()) return false; return ((nomi() * other.deno()) * (deno() * other.deno())) > ((other.nomi() * deno()) * (other.deno() * deno())); }