code: public Fraction reduce() {
          if (numerator == 0) {
              return equals(ZERO) ? this : ZERO;
          }
          final int gcd = greatestCommonDivisor(Math.abs(numerator), denominator);
          if (gcd == 1) {
              return this;
          }
          return Fraction.getFraction(numerator / gcd, denominator / gcd);
      }
docs: <p>Reduce the fraction to the smallest values for the numerator and
  denominator, returning the result.</p>
  
  <p>For example, if this fraction represents 2/4, then the result
  will be 1/2.</p>
  
  @return a new reduced fraction instance, or this if no simplification possible