@@ 517-552 (lines=36) @@ | ||
514 | * @param array $matrixValues A matrix of values |
|
515 | * @return float |
|
516 | */ |
|
517 | public static function MDETERM($matrixValues) |
|
518 | { |
|
519 | $matrixData = []; |
|
520 | if (!is_array($matrixValues)) { |
|
521 | $matrixValues = [[$matrixValues]]; |
|
522 | } |
|
523 | ||
524 | $row = $maxColumn = 0; |
|
525 | foreach ($matrixValues as $matrixRow) { |
|
526 | if (!is_array($matrixRow)) { |
|
527 | $matrixRow = [$matrixRow]; |
|
528 | } |
|
529 | $column = 0; |
|
530 | foreach ($matrixRow as $matrixCell) { |
|
531 | if ((is_string($matrixCell)) || ($matrixCell === null)) { |
|
532 | return Functions::VALUE(); |
|
533 | } |
|
534 | $matrixData[$column][$row] = $matrixCell; |
|
535 | ++$column; |
|
536 | } |
|
537 | if ($column > $maxColumn) { |
|
538 | $maxColumn = $column; |
|
539 | } |
|
540 | ++$row; |
|
541 | } |
|
542 | if ($row != $maxColumn) { |
|
543 | return Functions::VALUE(); |
|
544 | } |
|
545 | ||
546 | try { |
|
547 | $matrix = new \PhpSpreadsheet\Shared\JAMA\Matrix($matrixData); |
|
548 | ||
549 | return $matrix->det(); |
|
550 | } catch (\PhpSpreadsheet\Exception $ex) { |
|
551 | return Functions::VALUE(); |
|
552 | } |
|
553 | } |
|
554 | ||
555 | /** |
|
@@ 567-604 (lines=38) @@ | ||
564 | * @param array $matrixValues A matrix of values |
|
565 | * @return array |
|
566 | */ |
|
567 | public static function MINVERSE($matrixValues) |
|
568 | { |
|
569 | $matrixData = []; |
|
570 | if (!is_array($matrixValues)) { |
|
571 | $matrixValues = [[$matrixValues]]; |
|
572 | } |
|
573 | ||
574 | $row = $maxColumn = 0; |
|
575 | foreach ($matrixValues as $matrixRow) { |
|
576 | if (!is_array($matrixRow)) { |
|
577 | $matrixRow = [$matrixRow]; |
|
578 | } |
|
579 | $column = 0; |
|
580 | foreach ($matrixRow as $matrixCell) { |
|
581 | if ((is_string($matrixCell)) || ($matrixCell === null)) { |
|
582 | return Functions::VALUE(); |
|
583 | } |
|
584 | $matrixData[$column][$row] = $matrixCell; |
|
585 | ++$column; |
|
586 | } |
|
587 | if ($column > $maxColumn) { |
|
588 | $maxColumn = $column; |
|
589 | } |
|
590 | ++$row; |
|
591 | } |
|
592 | foreach ($matrixValues as $matrixRow) { |
|
593 | if (count($matrixRow) != $maxColumn) { |
|
594 | return Functions::VALUE(); |
|
595 | } |
|
596 | } |
|
597 | ||
598 | try { |
|
599 | $matrix = new \PhpSpreadsheet\Shared\JAMA\Matrix($matrixData); |
|
600 | ||
601 | return $matrix->inverse()->getArray(); |
|
602 | } catch (\PhpSpreadsheet\Exception $ex) { |
|
603 | return Functions::VALUE(); |
|
604 | } |
|
605 | } |
|
606 | ||
607 | /** |