public Fraction Reduce() { var gcdOperator = new Gcd(); var gcd = gcdOperator.Execute((ulong)Math.Abs(Numerator), Denominator); var negative = Numerator < 0; Numerator /= (long)gcd; if (negative) { Numerator *= -1; } Denominator /= (ulong)gcd; return(this); }