You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
968 B
45 lines
968 B
<?php
|
|
|
|
/**
|
|
*
|
|
* Function code for the matrix direct sum operation
|
|
*
|
|
* @copyright Copyright (c) 2018 Mark Baker (https://github.com/MarkBaker/PHPMatrix)
|
|
* @license https://opensource.org/licenses/MIT MIT
|
|
*/
|
|
|
|
namespace Matrix;
|
|
|
|
use Matrix\Operators\DirectSum;
|
|
|
|
/**
|
|
* Adds two or more matrices
|
|
*
|
|
* @param array<int, mixed> $matrixValues The matrices to add
|
|
* @return Matrix
|
|
* @throws Exception
|
|
*/
|
|
function directsum(...$matrixValues)
|
|
{
|
|
if (count($matrixValues) < 2) {
|
|
throw new Exception('DirectSum operation requires at least 2 arguments');
|
|
}
|
|
|
|
$matrix = array_shift($matrixValues);
|
|
|
|
if (is_array($matrix)) {
|
|
$matrix = new Matrix($matrix);
|
|
}
|
|
if (!$matrix instanceof Matrix) {
|
|
throw new Exception('DirectSum arguments must be Matrix or array');
|
|
}
|
|
|
|
$result = new DirectSum($matrix);
|
|
|
|
foreach ($matrixValues as $matrix) {
|
|
$result->execute($matrix);
|
|
}
|
|
|
|
return $result->result();
|
|
}
|