/** * Reduce all fractions in this collection with a same denominator * * @return FractionCollection */ public function simplify() { $simple_fractions = []; $denominators = []; // Simplify each fraction before foreach ($this->fractions as $fraction) { $new_fraction = $fraction->simplify(); $simple_fractions[] = $new_fraction; $denominators[] = $new_fraction->denominator; } // Find lcm denominator $denominator = Utils::lcmArray($denominators); $buffer = new self(); foreach ($simple_fractions as $fraction) { // Set the fraction with found $denominator $new_fraction = new Fraction($fraction->numerator * $denominator / $fraction->denominator, $denominator); $buffer->addFraction($new_fraction); } return $buffer; }