Matrix (#790)
* Refactor Excel Matrix functions to use external Matrix library rather than JAMA
This commit is contained in:
parent
b6a73aec56
commit
a5eb64c77f
|
@ -1,10 +1,11 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
$finder = PhpCsFixer\Finder::create()
|
$finder = PhpCsFixer\Finder::create()
|
||||||
->exclude('vendor')
|
->exclude(['vendor', 'tests/data/Calculation'])
|
||||||
->in('samples')
|
->in('samples')
|
||||||
->in('src')
|
->in('src')
|
||||||
->in('tests');
|
->in('tests/PhpSpreadsheetTests')
|
||||||
|
;
|
||||||
|
|
||||||
return PhpCsFixer\Config::create()
|
return PhpCsFixer\Config::create()
|
||||||
->setRiskyAllowed(true)
|
->setRiskyAllowed(true)
|
||||||
|
|
|
@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org).
|
||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Refactored Matrix Functions to use external Matrix library
|
||||||
|
|
||||||
|
|
||||||
## [1.5.2] - 2018-11-25
|
## [1.5.2] - 2018-11-25
|
||||||
|
|
||||||
### Security
|
### Security
|
||||||
|
|
|
@ -53,11 +53,13 @@
|
||||||
"ext-zip": "*",
|
"ext-zip": "*",
|
||||||
"ext-zlib": "*",
|
"ext-zlib": "*",
|
||||||
"psr/simple-cache": "^1.0",
|
"psr/simple-cache": "^1.0",
|
||||||
"markbaker/complex": "^1.4.1"
|
"markbaker/complex": "^1.4",
|
||||||
|
"markbaker/matrix": "^1.1"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"tecnickcom/tcpdf": "^6.2",
|
"tecnickcom/tcpdf": "^6.2",
|
||||||
"phpunit/phpunit": "^5.7",
|
"phpunit/phpunit": "^5.7",
|
||||||
|
"doctrine/instantiator": "^1.0.0",
|
||||||
"dompdf/dompdf": "^0.8.0",
|
"dompdf/dompdf": "^0.8.0",
|
||||||
"mpdf/mpdf": "^7.0.0",
|
"mpdf/mpdf": "^7.0.0",
|
||||||
"jpgraph/jpgraph": "^4.0",
|
"jpgraph/jpgraph": "^4.0",
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "329d0c155c094a31156a653423fdfd94",
|
"content-hash": "5e66d1016f24ad7d6495ed4d7a04234d",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "markbaker/complex",
|
"name": "markbaker/complex",
|
||||||
|
@ -101,6 +101,76 @@
|
||||||
],
|
],
|
||||||
"time": "2018-10-13T23:28:42+00:00"
|
"time": "2018-10-13T23:28:42+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "markbaker/matrix",
|
||||||
|
"version": "1.1.4",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/MarkBaker/PHPMatrix.git",
|
||||||
|
"reference": "6ea97472b5baf12119b4f31f802835b820dd6d64"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/MarkBaker/PHPMatrix/zipball/6ea97472b5baf12119b4f31f802835b820dd6d64",
|
||||||
|
"reference": "6ea97472b5baf12119b4f31f802835b820dd6d64",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "^5.6.0|^7.0.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"dealerdirect/phpcodesniffer-composer-installer": "^0.4.3",
|
||||||
|
"phpcompatibility/php-compatibility": "^8.0",
|
||||||
|
"phpdocumentor/phpdocumentor": "2.*",
|
||||||
|
"phploc/phploc": "2.*",
|
||||||
|
"phpmd/phpmd": "2.*",
|
||||||
|
"phpunit/phpunit": "^4.8.35|^5.4.0",
|
||||||
|
"sebastian/phpcpd": "2.*",
|
||||||
|
"squizlabs/php_codesniffer": "^3.3.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Matrix\\": "classes/src/"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"classes/src/functions/adjoint.php",
|
||||||
|
"classes/src/functions/antidiagonal.php",
|
||||||
|
"classes/src/functions/cofactors.php",
|
||||||
|
"classes/src/functions/determinant.php",
|
||||||
|
"classes/src/functions/diagonal.php",
|
||||||
|
"classes/src/functions/identity.php",
|
||||||
|
"classes/src/functions/inverse.php",
|
||||||
|
"classes/src/functions/minors.php",
|
||||||
|
"classes/src/functions/trace.php",
|
||||||
|
"classes/src/functions/transpose.php",
|
||||||
|
"classes/src/operations/add.php",
|
||||||
|
"classes/src/operations/directsum.php",
|
||||||
|
"classes/src/operations/subtract.php",
|
||||||
|
"classes/src/operations/multiply.php",
|
||||||
|
"classes/src/operations/divideby.php",
|
||||||
|
"classes/src/operations/divideinto.php"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Mark Baker",
|
||||||
|
"email": "mark@lange.demon.co.uk"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "PHP Class for working with matrices",
|
||||||
|
"homepage": "https://github.com/MarkBaker/PHPMatrix",
|
||||||
|
"keywords": [
|
||||||
|
"mathematics",
|
||||||
|
"matrix",
|
||||||
|
"vector"
|
||||||
|
],
|
||||||
|
"time": "2018-11-04T22:12:12+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "psr/simple-cache",
|
"name": "psr/simple-cache",
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
|
@ -3137,4 +3207,4 @@
|
||||||
"ext-zlib": "*"
|
"ext-zlib": "*"
|
||||||
},
|
},
|
||||||
"platform-dev": []
|
"platform-dev": []
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,6 +37,7 @@ DATE | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DATE
|
||||||
DATEDIF | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DATEDIF
|
DATEDIF | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DATEDIF
|
||||||
DATEVALUE | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DATEVALUE
|
DATEVALUE | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DATEVALUE
|
||||||
DAY | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DAYOFMONTH
|
DAY | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DAYOFMONTH
|
||||||
|
DAYS | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DAYS
|
||||||
DAYS360 | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DAYS360
|
DAYS360 | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DAYS360
|
||||||
EDATE | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::EDATE
|
EDATE | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::EDATE
|
||||||
EOMONTH | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::EOMONTH
|
EOMONTH | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::EOMONTH
|
||||||
|
@ -45,6 +46,7 @@ ISOWEEKNUM | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::ISOWEEKNUM
|
||||||
MINUTE | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::MINUTE
|
MINUTE | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::MINUTE
|
||||||
MONTH | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::MONTHOFYEAR
|
MONTH | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::MONTHOFYEAR
|
||||||
NETWORKDAYS | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::NETWORKDAYS
|
NETWORKDAYS | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::NETWORKDAYS
|
||||||
|
NETWORKDAYS.INTL | **Not yet Implemented**
|
||||||
NOW | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DATETIMENOW
|
NOW | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DATETIMENOW
|
||||||
SECOND | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::SECOND
|
SECOND | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::SECOND
|
||||||
TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::TIME
|
TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::TIME
|
||||||
|
@ -53,6 +55,7 @@ TODAY | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DATENOW
|
||||||
WEEKDAY | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::WEEKDAY
|
WEEKDAY | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::WEEKDAY
|
||||||
WEEKNUM | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::WEEKNUM
|
WEEKNUM | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::WEEKNUM
|
||||||
WORKDAY | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::WORKDAY
|
WORKDAY | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::WORKDAY
|
||||||
|
WORKDAY.INTL | **Not yet Implemented**
|
||||||
YEAR | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::YEAR
|
YEAR | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::YEAR
|
||||||
YEARFRAC | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::YEARFRAC
|
YEARFRAC | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::YEARFRAC
|
||||||
|
|
||||||
|
@ -66,7 +69,12 @@ BESSELK | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BESSELK
|
||||||
BESSELY | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BESSELY
|
BESSELY | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BESSELY
|
||||||
BIN2DEC | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BINTODEC
|
BIN2DEC | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BINTODEC
|
||||||
BIN2HEX | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BINTOHEX
|
BIN2HEX | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BINTOHEX
|
||||||
BIN2OCT | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BINTOOCT
|
BIN2OCT | \PhpOffice\PhpSpreadsheet\Calculation\Engineeri
|
||||||
|
BITAND | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BITAND
|
||||||
|
BITLSHIFT | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BITLSHIFT
|
||||||
|
BITOR | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BITOR
|
||||||
|
BITRSHIFT | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BITRSHIFT
|
||||||
|
BITXOR | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BITXOR
|
||||||
COMPLEX | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::COMPLEX
|
COMPLEX | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::COMPLEX
|
||||||
CONVERT | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::CONVERTUOM
|
CONVERT | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::CONVERTUOM
|
||||||
DEC2BIN | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::DECTOBIN
|
DEC2BIN | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::DECTOBIN
|
||||||
|
|
|
@ -43,6 +43,11 @@ BIN2DEC | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet
|
||||||
BIN2HEX | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BINTOHEX
|
BIN2HEX | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BINTOHEX
|
||||||
BIN2OCT | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BINTOOCT
|
BIN2OCT | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BINTOOCT
|
||||||
BINOMDIST | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::BINOMDIST
|
BINOMDIST | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::BINOMDIST
|
||||||
|
BITAND | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BITAND
|
||||||
|
BITLSHIFT | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BITLSHIFT
|
||||||
|
BITOR | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BITOR
|
||||||
|
BITRSHIFT | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BITRSHIFT
|
||||||
|
BITXOR | CATEGORY_ENGINEERING | \PhpOffice\PhpSpreadsheet\Calculation\Engineering::BITXOR
|
||||||
|
|
||||||
## C
|
## C
|
||||||
|
|
||||||
|
@ -104,6 +109,7 @@ DATEDIF | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet
|
||||||
DATEVALUE | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DATEVALUE
|
DATEVALUE | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DATEVALUE
|
||||||
DAVERAGE | CATEGORY_DATABASE | \PhpOffice\PhpSpreadsheet\Calculation\Database::DAVERAGE
|
DAVERAGE | CATEGORY_DATABASE | \PhpOffice\PhpSpreadsheet\Calculation\Database::DAVERAGE
|
||||||
DAY | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DAYOFMONTH
|
DAY | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DAYOFMONTH
|
||||||
|
DAYS | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DAYS
|
||||||
DAYS360 | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DAYS360
|
DAYS360 | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::DAYS360
|
||||||
DB | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::DB
|
DB | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::DB
|
||||||
DCOUNT | CATEGORY_DATABASE | \PhpOffice\PhpSpreadsheet\Calculation\Database::DCOUNT
|
DCOUNT | CATEGORY_DATABASE | \PhpOffice\PhpSpreadsheet\Calculation\Database::DCOUNT
|
||||||
|
@ -317,6 +323,7 @@ N | CATEGORY_INFORMATION | \PhpOffice\PhpSpreadsheet
|
||||||
NA | CATEGORY_INFORMATION | \PhpOffice\PhpSpreadsheet\Calculation\Functions::NA
|
NA | CATEGORY_INFORMATION | \PhpOffice\PhpSpreadsheet\Calculation\Functions::NA
|
||||||
NEGBINOMDIST | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::NEGBINOMDIST
|
NEGBINOMDIST | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::NEGBINOMDIST
|
||||||
NETWORKDAYS | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::NETWORKDAYS
|
NETWORKDAYS | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::NETWORKDAYS
|
||||||
|
NETWORKDAYS.INTL | CATEGORY_DATE_AND_TIME | **Not yet Implemented**
|
||||||
NOMINAL | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::NOMINAL
|
NOMINAL | CATEGORY_FINANCIAL | \PhpOffice\PhpSpreadsheet\Calculation\Financial::NOMINAL
|
||||||
NORMDIST | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::NORMDIST
|
NORMDIST | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::NORMDIST
|
||||||
NORMINV | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::NORMINV
|
NORMINV | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::NORMINV
|
||||||
|
@ -494,6 +501,7 @@ WEEKDAY | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet
|
||||||
WEEKNUM | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::WEEKNUM
|
WEEKNUM | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::WEEKNUM
|
||||||
WEIBULL | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::WEIBULL
|
WEIBULL | CATEGORY_STATISTICAL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::WEIBULL
|
||||||
WORKDAY | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::WORKDAY
|
WORKDAY | CATEGORY_DATE_AND_TIME | \PhpOffice\PhpSpreadsheet\Calculation\DateTime::WORKDAY
|
||||||
|
WORKDAY.INTL | CATEGORY_DATE_AND_TIME | **Not yet Implemented**
|
||||||
|
|
||||||
## X
|
## X
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
namespace PhpOffice\PhpSpreadsheet\Calculation;
|
namespace PhpOffice\PhpSpreadsheet\Calculation;
|
||||||
|
|
||||||
use PhpOffice\PhpSpreadsheet\Exception as PhpSpreadsheetException;
|
use Matrix\Exception as MatrixException;
|
||||||
use PhpOffice\PhpSpreadsheet\Shared\JAMA\Matrix;
|
use Matrix\Matrix;
|
||||||
|
|
||||||
class MathTrig
|
class MathTrig
|
||||||
{
|
{
|
||||||
|
@ -498,7 +498,7 @@ class MathTrig
|
||||||
if ((is_string($matrixCell)) || ($matrixCell === null)) {
|
if ((is_string($matrixCell)) || ($matrixCell === null)) {
|
||||||
return Functions::VALUE();
|
return Functions::VALUE();
|
||||||
}
|
}
|
||||||
$matrixData[$column][$row] = $matrixCell;
|
$matrixData[$row][$column] = $matrixCell;
|
||||||
++$column;
|
++$column;
|
||||||
}
|
}
|
||||||
if ($column > $maxColumn) {
|
if ($column > $maxColumn) {
|
||||||
|
@ -506,15 +506,15 @@ class MathTrig
|
||||||
}
|
}
|
||||||
++$row;
|
++$row;
|
||||||
}
|
}
|
||||||
if ($row != $maxColumn) {
|
|
||||||
|
$matrix = new Matrix($matrixData);
|
||||||
|
if (!$matrix->isSquare()) {
|
||||||
return Functions::VALUE();
|
return Functions::VALUE();
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$matrix = new Matrix($matrixData);
|
return $matrix->determinant();
|
||||||
|
} catch (MatrixException $ex) {
|
||||||
return $matrix->det();
|
|
||||||
} catch (PhpSpreadsheetException $ex) {
|
|
||||||
return Functions::VALUE();
|
return Functions::VALUE();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -550,7 +550,7 @@ class MathTrig
|
||||||
if ((is_string($matrixCell)) || ($matrixCell === null)) {
|
if ((is_string($matrixCell)) || ($matrixCell === null)) {
|
||||||
return Functions::VALUE();
|
return Functions::VALUE();
|
||||||
}
|
}
|
||||||
$matrixData[$column][$row] = $matrixCell;
|
$matrixData[$row][$column] = $matrixCell;
|
||||||
++$column;
|
++$column;
|
||||||
}
|
}
|
||||||
if ($column > $maxColumn) {
|
if ($column > $maxColumn) {
|
||||||
|
@ -558,17 +558,19 @@ class MathTrig
|
||||||
}
|
}
|
||||||
++$row;
|
++$row;
|
||||||
}
|
}
|
||||||
foreach ($matrixValues as $matrixRow) {
|
|
||||||
if (count($matrixRow) != $maxColumn) {
|
$matrix = new Matrix($matrixData);
|
||||||
return Functions::VALUE();
|
if (!$matrix->isSquare()) {
|
||||||
}
|
return Functions::VALUE();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($matrix->determinant() == 0.0) {
|
||||||
|
return Functions::NAN();
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$matrix = new Matrix($matrixData);
|
return $matrix->inverse()->toArray();
|
||||||
|
} catch (MatrixException $ex) {
|
||||||
return $matrix->inverse()->getArray();
|
|
||||||
} catch (PhpSpreadsheetException $ex) {
|
|
||||||
return Functions::VALUE();
|
return Functions::VALUE();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -629,8 +631,8 @@ class MathTrig
|
||||||
return Functions::VALUE();
|
return Functions::VALUE();
|
||||||
}
|
}
|
||||||
|
|
||||||
return $matrixA->times($matrixB)->getArray();
|
return $matrixA->multiply($matrixB)->toArray();
|
||||||
} catch (PhpSpreadsheetException $ex) {
|
} catch (MatrixException $ex) {
|
||||||
return Functions::VALUE();
|
return Functions::VALUE();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -281,10 +281,8 @@ class MathTrigTest extends TestCase
|
||||||
*/
|
*/
|
||||||
public function testMINVERSE($expectedResult, ...$args)
|
public function testMINVERSE($expectedResult, ...$args)
|
||||||
{
|
{
|
||||||
$this->markTestIncomplete('TODO: This test should be fixed');
|
|
||||||
|
|
||||||
$result = MathTrig::MINVERSE(...$args);
|
$result = MathTrig::MINVERSE(...$args);
|
||||||
self::assertEquals($expectedResult, $result, null, 1E-12);
|
self::assertEquals($expectedResult, $result, null, 1E-8);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function providerMINVERSE()
|
public function providerMINVERSE()
|
||||||
|
@ -299,10 +297,8 @@ class MathTrigTest extends TestCase
|
||||||
*/
|
*/
|
||||||
public function testMMULT($expectedResult, ...$args)
|
public function testMMULT($expectedResult, ...$args)
|
||||||
{
|
{
|
||||||
$this->markTestIncomplete('TODO: This test should be fixed');
|
|
||||||
|
|
||||||
$result = MathTrig::MMULT(...$args);
|
$result = MathTrig::MMULT(...$args);
|
||||||
self::assertEquals($expectedResult, $result, null, 1E-12);
|
self::assertEquals($expectedResult, $result, null, 1E-8);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function providerMMULT()
|
public function providerMMULT()
|
||||||
|
|
|
@ -4,259 +4,109 @@ return [
|
||||||
[
|
[
|
||||||
0,
|
0,
|
||||||
[
|
[
|
||||||
[
|
[ 1, 2, 3 ],
|
||||||
1,
|
[ 4, 5, 6 ],
|
||||||
2,
|
[ 7, 8, 9 ],
|
||||||
3,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
4,
|
|
||||||
5,
|
|
||||||
6,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
7,
|
|
||||||
8,
|
|
||||||
9,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
0,
|
0,
|
||||||
[
|
[
|
||||||
[
|
[ 1.1, 2.2, 3.3 ],
|
||||||
1.1,
|
[ 4.4, 5.5, 6.6 ],
|
||||||
2.2,
|
[ 7.7, 8.8, 9.9 ],
|
||||||
3.3,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
4.4,
|
|
||||||
5.5,
|
|
||||||
6.6,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
7.7,
|
|
||||||
8.8,
|
|
||||||
9.9,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
0,
|
0,
|
||||||
[
|
[
|
||||||
[
|
[ 10, 20, 30 ],
|
||||||
10,
|
[ 40, 50, 60 ],
|
||||||
20,
|
[ 70, 80, 90 ],
|
||||||
30,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
40,
|
|
||||||
50,
|
|
||||||
60,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
70,
|
|
||||||
80,
|
|
||||||
90,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
-360.0,
|
-360.0,
|
||||||
[
|
[
|
||||||
[
|
[ 8, 1, 6 ],
|
||||||
8,
|
[ 3, 5, 7 ],
|
||||||
1,
|
[ 4, 9, 2 ],
|
||||||
6,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
3,
|
|
||||||
5,
|
|
||||||
7,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
4,
|
|
||||||
9,
|
|
||||||
2,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
-9,
|
-9,
|
||||||
[
|
[
|
||||||
[
|
[ 5, 2 ],
|
||||||
5,
|
[ 7, 1 ],
|
||||||
2,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
7,
|
|
||||||
1,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
40,
|
40,
|
||||||
[
|
[
|
||||||
[
|
[ 6, 4, 2 ],
|
||||||
6,
|
[ 3, 5, 3 ],
|
||||||
4,
|
[ 2, 3, 4 ],
|
||||||
2,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
3,
|
|
||||||
5,
|
|
||||||
3,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
2,
|
|
||||||
3,
|
|
||||||
4,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1.81,
|
1.81,
|
||||||
[
|
[
|
||||||
[
|
[ 0.20, 1.0 ],
|
||||||
0.2,
|
[ 0.35, 10.8 ],
|
||||||
1,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0.35,
|
|
||||||
10.8,
|
|
||||||
],
|
|
||||||
],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'#VALUE!',
|
|
||||||
[
|
|
||||||
[
|
|
||||||
0.2,
|
|
||||||
1,
|
|
||||||
-0.9,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0.35,
|
|
||||||
10.8,
|
|
||||||
4,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
-3.15,
|
|
||||||
5,
|
|
||||||
null,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
-2,
|
-2,
|
||||||
[
|
[
|
||||||
[
|
[ 1, 2 ],
|
||||||
1,
|
[ 3, 4 ],
|
||||||
2,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
3,
|
|
||||||
4,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
-3,
|
-3,
|
||||||
[
|
[
|
||||||
[
|
[ 1, 2, 1 ],
|
||||||
1,
|
[ 3, 4, 2 ],
|
||||||
2,
|
[ 1, 1, 2 ],
|
||||||
1,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
3,
|
|
||||||
4,
|
|
||||||
2,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
1,
|
|
||||||
1,
|
|
||||||
2,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
88,
|
88,
|
||||||
[
|
[
|
||||||
[
|
[ 1, 3, 8, 5 ],
|
||||||
1,
|
[ 1, 3, 6, 1 ],
|
||||||
3,
|
[ 1, 1, 1, 0 ],
|
||||||
8,
|
[ 7, 3, 10, 2 ],
|
||||||
5,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
1,
|
|
||||||
3,
|
|
||||||
6,
|
|
||||||
1,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
1,
|
|
||||||
1,
|
|
||||||
1,
|
|
||||||
0,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
7,
|
|
||||||
3,
|
|
||||||
10,
|
|
||||||
2,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1,
|
1,
|
||||||
[
|
[
|
||||||
[
|
[ 3, 6, 1 ],
|
||||||
3,
|
[ 1, 1, 0 ],
|
||||||
6,
|
[ 3, 10, 2 ],
|
||||||
1,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
1,
|
|
||||||
1,
|
|
||||||
0,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
3,
|
|
||||||
10,
|
|
||||||
2,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
-3,
|
-3,
|
||||||
[
|
[
|
||||||
[
|
[ 3, 6 ],
|
||||||
3,
|
[ 1, 1 ],
|
||||||
6,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
1,
|
|
||||||
1,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'#VALUE!',
|
'#VALUE!',
|
||||||
[
|
[
|
||||||
[
|
[ 0.20, 1.00, -0.90 ],
|
||||||
1,
|
[ 0.35, 10.80, 4.00 ],
|
||||||
3,
|
[ -3.15, 5.00, null ],
|
||||||
8,
|
],
|
||||||
5,
|
],
|
||||||
],
|
[
|
||||||
[
|
'#VALUE!',
|
||||||
1,
|
[
|
||||||
3,
|
[ 1, 3, 8, 5 ],
|
||||||
6,
|
[ 1, 3, 6, 1 ],
|
||||||
1,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
|
@ -3,409 +3,112 @@
|
||||||
return [
|
return [
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
[
|
[ 0.147222222222222, -0.14444444444444399, 0.063888888888888898 ],
|
||||||
1,
|
[ -0.061111111111111102, 0.022222222222222199, 0.105555555555556 ],
|
||||||
2,
|
[ -0.0194444444444444, 0.18888888888888899, -0.102777777777778 ],
|
||||||
3,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
4,
|
|
||||||
5,
|
|
||||||
6,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
7,
|
|
||||||
8,
|
|
||||||
9,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
[
|
[ 8, 1, 6 ],
|
||||||
-4503599627370500.0,
|
[ 3, 5, 7 ],
|
||||||
9007199254740990.0,
|
[ 4, 9, 2 ],
|
||||||
-4503599627370500.0,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
9007199254741000.0,
|
|
||||||
-18014398509482000.0,
|
|
||||||
9007199254740990.0,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
-4503599627370500.0,
|
|
||||||
9007199254740990.0,
|
|
||||||
-4503599627370500.0,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
[
|
[ 4, -1 ],
|
||||||
10,
|
[ 2, 0 ],
|
||||||
20,
|
|
||||||
30,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
40,
|
|
||||||
50,
|
|
||||||
60,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
70,
|
|
||||||
80,
|
|
||||||
90,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
[
|
[ 0.0, 0.5 ],
|
||||||
70368744177663.898,
|
[ -1.0, 2.0 ],
|
||||||
-140737488355328.0,
|
|
||||||
70368744177664.0,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
-140737488355328.0,
|
|
||||||
281474976710656.0,
|
|
||||||
-140737488355328.0,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
70368744177664.094,
|
|
||||||
-140737488355328.0,
|
|
||||||
70368744177664.0,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
[
|
[ 1, 2, 1 ],
|
||||||
8,
|
[ 3, 4, -1 ],
|
||||||
1,
|
[ 0, 2, 0 ],
|
||||||
6,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
3,
|
|
||||||
5,
|
|
||||||
7,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
4,
|
|
||||||
9,
|
|
||||||
2,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
[
|
[ 0.25, 0.25, -0.75 ],
|
||||||
0.147222222222222,
|
[ 0.00, 0.00, 0.50 ],
|
||||||
-0.14444444444444399,
|
[ 0.75, -0.25, -0.25 ],
|
||||||
0.063888888888888898,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
-0.061111111111111102,
|
|
||||||
0.022222222222222199,
|
|
||||||
0.105555555555556,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
-0.0194444444444444,
|
|
||||||
0.18888888888888899,
|
|
||||||
-0.102777777777778,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
[
|
[ -0.4545454545455, 1.8181818181818, 0.2727272727273, -0.4545454545455 ],
|
||||||
4,
|
[ -0.4545454545455, 1.8181818181818, -0.7272727272727, -0.4545454545455 ],
|
||||||
-1,
|
[ 0.9090909090909, 1.3636363636364, 0.4545454545455, 0.9090909090909 ],
|
||||||
],
|
[ 2.2727272727273, 0.9090909090909, 5.6363636363636, 3.2727272727273 ],
|
||||||
[
|
|
||||||
2,
|
|
||||||
0,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
[
|
[ 3.2, -4.8, 2.8, -1.0 ],
|
||||||
0,
|
[ 0.2, 0.2, 0.2, 0.0 ],
|
||||||
0.5,
|
[ 1.0, -1.0, 0.0, 0.0 ],
|
||||||
],
|
[ -4.0, 5.0, -2.0, 1.0 ],
|
||||||
[
|
|
||||||
-1,
|
|
||||||
2,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
[
|
[ 1, 2 ],
|
||||||
1,
|
[ 3, 4 ],
|
||||||
2,
|
|
||||||
1,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
3,
|
|
||||||
4,
|
|
||||||
-1,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
2,
|
|
||||||
0,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
[
|
[ -2.0, 1.0 ],
|
||||||
0.25,
|
[ 1.5, -0.5 ],
|
||||||
0.25,
|
|
||||||
-0.75,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0.5,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0.75,
|
|
||||||
-0.25,
|
|
||||||
-0.25,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
[
|
[ 1, 2, 1 ],
|
||||||
1,
|
[ 3, 4, 2 ],
|
||||||
4,
|
[ 1, 1, 2 ],
|
||||||
1,
|
|
||||||
1,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
1,
|
|
||||||
4,
|
|
||||||
0,
|
|
||||||
1,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
2,
|
|
||||||
3,
|
|
||||||
1,
|
|
||||||
2,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
3,
|
|
||||||
2,
|
|
||||||
6,
|
|
||||||
4,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
[
|
[ -2, 1, 0 ],
|
||||||
3.2000000000000002,
|
[ 1.3333333333333299, -0.33333333333332998, -0.33333333333332998 ],
|
||||||
-4.7999999999999998,
|
[ 0.33333333333332998, -0.33333333333332998, 0.66666666666666996 ],
|
||||||
2.7999999999999998,
|
|
||||||
-1,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0.20000000000000001,
|
|
||||||
0.20000000000000001,
|
|
||||||
0.20000000000000001,
|
|
||||||
0,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
1,
|
|
||||||
-1,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
-4,
|
|
||||||
5,
|
|
||||||
-2,
|
|
||||||
1,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
[
|
[ 2, 3 ],
|
||||||
0.20000000000000001,
|
[ 4, 5 ],
|
||||||
1,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0.34999999999999998,
|
|
||||||
10.800000000000001,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
[
|
[ -2.5, 1.5 ],
|
||||||
5.9668508287292799,
|
[ 2.0, -1.0 ],
|
||||||
-0.55248618784530001,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
-0.19337016574586,
|
|
||||||
0.11049723756906001,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
[
|
[ 5, 8 ],
|
||||||
0.20000000000000001,
|
[ 7, 9 ],
|
||||||
1,
|
|
||||||
-0.90000000000000002,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0.34999999999999998,
|
|
||||||
10.800000000000001,
|
|
||||||
4,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
-3.1499999999999999,
|
|
||||||
5,
|
|
||||||
],
|
|
||||||
],
|
|
||||||
'#VALUE!',
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
[
|
|
||||||
1,
|
|
||||||
2,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
3,
|
|
||||||
4,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
[
|
[ -0.81818181818181801, 0.72727272727272696 ],
|
||||||
-2,
|
[ 0.63636363636363602, -0.45454545454545497 ],
|
||||||
1,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
1.5,
|
|
||||||
-0.5,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
[
|
[ 45, 78 ],
|
||||||
1,
|
[ 17, 50 ],
|
||||||
2,
|
|
||||||
1,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
3,
|
|
||||||
4,
|
|
||||||
2,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
1,
|
|
||||||
1,
|
|
||||||
2,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
[
|
[ 0.054112554112554001, -0.084415584415584 ],
|
||||||
-2,
|
[ -0.018398268398268001, 0.048701298701299002 ],
|
||||||
1,
|
|
||||||
0,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
1.3333333333333299,
|
|
||||||
-0.33333333333332998,
|
|
||||||
-0.33333333333332998,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0.33333333333332998,
|
|
||||||
-0.33333333333332998,
|
|
||||||
0.66666666666666996,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
[
|
[ 2, 2 ],
|
||||||
2,
|
[ 2, 1 ],
|
||||||
3,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
4,
|
|
||||||
5,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
[
|
[ -0.5, 1.0 ],
|
||||||
-2.5,
|
[ 1.0, -1.0 ],
|
||||||
1.5,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
2,
|
|
||||||
-1,
|
|
||||||
],
|
|
||||||
],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
[
|
|
||||||
5,
|
|
||||||
8,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
7,
|
|
||||||
9,
|
|
||||||
],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
-0.81818181818181801,
|
|
||||||
0.72727272727272696,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0.63636363636363602,
|
|
||||||
-0.45454545454545497,
|
|
||||||
],
|
|
||||||
],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
[
|
|
||||||
45,
|
|
||||||
78,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
17,
|
|
||||||
50,
|
|
||||||
],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
0.054112554112554001,
|
|
||||||
-0.084415584415584,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
-0.018398268398268001,
|
|
||||||
0.048701298701299002,
|
|
||||||
],
|
|
||||||
],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
[
|
|
||||||
2,
|
|
||||||
2,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
2,
|
|
||||||
1,
|
|
||||||
],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
-0.5,
|
|
||||||
1.0,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
1,
|
|
||||||
-1,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
|
@ -3,303 +3,113 @@
|
||||||
return [
|
return [
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
[
|
[ 7, 10 ],
|
||||||
1,
|
[ 15, 22 ],
|
||||||
2,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
3,
|
|
||||||
4,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
[
|
[ 1, 2 ],
|
||||||
1,
|
[ 3, 4 ],
|
||||||
2,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
3,
|
|
||||||
4,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
[
|
[ 1, 2 ],
|
||||||
7,
|
[ 3, 4 ],
|
||||||
10,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
15,
|
|
||||||
22,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
[
|
[ 30, 36, 42 ],
|
||||||
1,
|
[ 66, 81, 96 ],
|
||||||
2,
|
[ 102, 126, 150 ],
|
||||||
3,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
4,
|
|
||||||
5,
|
|
||||||
6,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
7,
|
|
||||||
8,
|
|
||||||
9,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
[
|
[ 1, 2, 3 ],
|
||||||
1,
|
[ 4, 5, 6 ],
|
||||||
2,
|
[ 7, 8, 9 ],
|
||||||
3,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
4,
|
|
||||||
5,
|
|
||||||
6,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
7,
|
|
||||||
8,
|
|
||||||
9,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
[
|
[ 1, 2, 3 ],
|
||||||
30,
|
[ 4, 5, 6 ],
|
||||||
36,
|
[ 7, 8, 9 ],
|
||||||
42,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
66,
|
|
||||||
81,
|
|
||||||
96,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
102,
|
|
||||||
126,
|
|
||||||
150,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
// Mismatched dimensions
|
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
[
|
[ 10.08, 14.40 ],
|
||||||
1,
|
[ 21.60, 31.68 ],
|
||||||
2,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
3,
|
|
||||||
4,
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
2,
|
[
|
||||||
|
[ 1.2, 2.4 ],
|
||||||
|
[ 3.6, 4.8 ],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[ 1.2, 2.4 ],
|
||||||
|
[ 3.6, 4.8 ],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[ 20.48, 30.60 ],
|
||||||
|
[ 50.40, 79.88 ],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[ 1.2, 3.4 ],
|
||||||
|
[ 5.6, 7.8 ],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[ 1.2, 3.4 ],
|
||||||
|
[ 5.6, 7.8 ],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[ 62.00, 49.46 ],
|
||||||
|
[ 176.40, 144.50 ],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[ 1.2, 2.3, 3.4, 4.5 ],
|
||||||
|
[ 5.6, 6.7, 7.8, 8.9 ],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[ 9.8, 8.7 ],
|
||||||
|
[ 7.6, 6.5 ],
|
||||||
|
[ 5.4, 4.3 ],
|
||||||
|
[ 3.2, 2.1 ],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[ 17 ],
|
||||||
|
[ 39 ],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[ 1, 2 ],
|
||||||
|
[ 3, 4 ],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[ 5 ],
|
||||||
|
[ 6 ],
|
||||||
|
]
|
||||||
|
],
|
||||||
|
// Mismatched dimensions (2x2) and (1x1)
|
||||||
|
[
|
||||||
'#VALUE!',
|
'#VALUE!',
|
||||||
],
|
|
||||||
// Mismatched dimensions
|
|
||||||
[
|
|
||||||
[
|
[
|
||||||
[
|
[ 1, 2 ],
|
||||||
1,
|
[ 3, 4 ],
|
||||||
2,
|
],
|
||||||
],
|
[
|
||||||
[
|
[ 2 ]
|
||||||
3,
|
],
|
||||||
4,
|
],
|
||||||
],
|
// Mismatched dimensions (2x2) and individual cell
|
||||||
|
[
|
||||||
|
'#VALUE!',
|
||||||
|
[
|
||||||
|
[ 1, 2 ],
|
||||||
|
[ 3, 4 ],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
2,
|
2,
|
||||||
],
|
],
|
||||||
'#VALUE!',
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
1.2,
|
|
||||||
2.3999999999999999,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
3.6000000000000001,
|
|
||||||
4.5,
|
|
||||||
],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
14.43,
|
|
||||||
14.43,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
14.43,
|
|
||||||
14.43,
|
|
||||||
],
|
|
||||||
],
|
|
||||||
],
|
|
||||||
// Mismatched dimensions
|
|
||||||
[
|
|
||||||
2,
|
|
||||||
[
|
|
||||||
[
|
|
||||||
1,
|
|
||||||
2,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
3,
|
|
||||||
4,
|
|
||||||
],
|
|
||||||
],
|
|
||||||
'#VALUE!',
|
|
||||||
],
|
|
||||||
// Mismatched dimensions
|
|
||||||
[
|
|
||||||
[
|
|
||||||
2,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
1,
|
|
||||||
2,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
3,
|
|
||||||
4,
|
|
||||||
],
|
|
||||||
],
|
|
||||||
'#VALUE!',
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
[
|
|
||||||
1,
|
|
||||||
2,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
3,
|
|
||||||
4,
|
|
||||||
],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
2,
|
|
||||||
4,
|
|
||||||
],
|
|
||||||
],
|
|
||||||
'#VALUE!',
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
[
|
|
||||||
1,
|
|
||||||
2,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
3,
|
|
||||||
4,
|
|
||||||
],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
2,
|
|
||||||
4,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
10,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
22,
|
|
||||||
],
|
|
||||||
],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
[
|
|
||||||
2,
|
|
||||||
4,
|
|
||||||
],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
1,
|
|
||||||
2,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
3,
|
|
||||||
4,
|
|
||||||
],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
14,
|
|
||||||
20,
|
|
||||||
],
|
|
||||||
],
|
|
||||||
],
|
|
||||||
// Mismatched dimensions
|
|
||||||
[
|
|
||||||
[
|
|
||||||
2,
|
|
||||||
4,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
1,
|
|
||||||
2,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
3,
|
|
||||||
4,
|
|
||||||
],
|
|
||||||
],
|
|
||||||
'#VALUE!',
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
[
|
|
||||||
1,
|
|
||||||
2,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
3,
|
|
||||||
4,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
5,
|
|
||||||
6,
|
|
||||||
],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
1,
|
|
||||||
2,
|
|
||||||
3,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
4,
|
|
||||||
5,
|
|
||||||
6,
|
|
||||||
],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
9,
|
|
||||||
12,
|
|
||||||
15,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
19,
|
|
||||||
26,
|
|
||||||
33,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
29,
|
|
||||||
40,
|
|
||||||
51,
|
|
||||||
],
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
Loading…
Reference in New Issue