# tablepress/3.4/libraries/vendor/PhpSpreadsheet/Calculation/MathTrig/Gcd.php

TablePress – Tables in WordPress made easy, version 3.4. 69 lines.

- Page: https://pluginprobe.com/plugins/tablepress/3.4/code/libraries/vendor/PhpSpreadsheet/Calculation/MathTrig/Gcd.php
- Raw: https://pluginprobe.com/plugins/tablepress/3.4/raw/libraries/vendor/PhpSpreadsheet/Calculation/MathTrig/Gcd.php
- Modified: 2025-04-29T05:06:50+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/tablepress/3.4/code/libraries/vendor/PhpSpreadsheet/Calculation/MathTrig/Gcd.php#L10-L20`.

```php
<?php

namespace TablePress\PhpOffice\PhpSpreadsheet\Calculation\MathTrig;

use TablePress\PhpOffice\PhpSpreadsheet\Calculation\Exception;
use TablePress\PhpOffice\PhpSpreadsheet\Calculation\Functions;
use TablePress\PhpOffice\PhpSpreadsheet\Calculation\Information\ExcelError;

class Gcd
{
	/**
				 * Recursively determine GCD.
				 *
				 * Returns the greatest common divisor of a series of numbers.
				 * The greatest common divisor is the largest integer that divides both
				 *        number1 and number2 without a remainder.
				 *
				 * Excel Function:
				 *        GCD(number1[,number2[, ...]])
				 * @param float|int $a
				 * @param float|int $b
				 * @return float|int
				 */
				private static function evaluateGCD($a, $b)
	{
		return $b ? self::evaluateGCD($b, $a % $b) : $a;
	}

	/**
	 * GCD.
	 *
	 * Returns the greatest common divisor of a series of numbers.
	 * The greatest common divisor is the largest integer that divides both
	 *        number1 and number2 without a remainder.
	 *
	 * Excel Function:
	 *        GCD(number1[,number2[, ...]])
	 *
	 * @param mixed ...$args Data values
	 *
	 * @return float|int|string Greatest Common Divisor, or a string containing an error
	 */
	public static function evaluate(...$args)
	{
		try {
			$arrayArgs = [];
			foreach (Functions::flattenArray($args) as $value1) {
				if ($value1 !== null) {
					$value = Helpers::validateNumericNullSubstitution($value1, 1);
					Helpers::validateNotNegative($value);
					$arrayArgs[] = (int) $value;
				}
			}
		} catch (Exception $e) {
			return $e->getMessage();
		}

		if (count($arrayArgs) <= 0) {
			return ExcelError::VALUE();
		}
		$gcd = (int) array_pop($arrayArgs);
		do {
			$gcd = self::evaluateGCD($gcd, (int) array_pop($arrayArgs));
		} while (!empty($arrayArgs));

		return $gcd;
	}
}

```
