/** * MINVERSE * * Returns the inverse matrix for the matrix stored in an array. * * Excel Function: * MINVERSE(array) * * @access public * @category Mathematical and Trigonometric Functions * @param array $matrixValues A matrix of values * @return array */ public static function MINVERSE($matrixValues) { $matrixData = array(); if (!is_array($matrixValues)) { $matrixValues = array(array($matrixValues)); } $row = $maxColumn = 0; foreach ($matrixValues as $matrixRow) { if (!is_array($matrixRow)) { $matrixRow = array($matrixRow); } $column = 0; foreach ($matrixRow as $matrixCell) { if (is_string($matrixCell) || $matrixCell === null) { return PHPExcel_Calculation_Functions::VALUE(); } $matrixData[$column][$row] = $matrixCell; ++$column; } if ($column > $maxColumn) { $maxColumn = $column; } ++$row; } if ($row != $maxColumn) { return PHPExcel_Calculation_Functions::VALUE(); } try { $matrix = new PHPExcel_Shared_JAMA_Matrix($matrixData); return $matrix->inverse()->getArray(); } catch (PHPExcel_Exception $ex) { return PHPExcel_Calculation_Functions::VALUE(); } }