mathjs 9.4.0 → 9.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/HISTORY.md +39 -0
- package/README.md +1 -3
- package/docs/expressions/expression_trees.md +2 -1
- package/docs/expressions/parsing.md +1 -1
- package/docs/reference/functions/intersect.md +1 -1
- package/examples/advanced/custom_datatype.js +7 -4
- package/lib/browser/math.js +7 -7
- package/lib/browser/math.js.map +1 -1
- package/lib/cjs/entry/dependenciesAny/dependenciesEigs.generated.js +6 -9
- package/lib/cjs/entry/dependenciesAny/dependenciesIntersect.generated.js +3 -0
- package/lib/cjs/entry/impureFunctionsAny.generated.js +41 -41
- package/lib/cjs/entry/pureFunctionsAny.generated.js +128 -128
- package/lib/cjs/expression/node/ArrayNode.js +15 -15
- package/lib/cjs/expression/parse.js +1 -0
- package/lib/cjs/function/geometry/intersect.js +93 -58
- package/lib/cjs/function/matrix/eigs/complexEigs.js +168 -18
- package/lib/cjs/function/matrix/eigs.js +7 -9
- package/lib/cjs/header.js +2 -2
- package/lib/cjs/type/bignumber/BigNumber.js +3 -3
- package/lib/cjs/utils/is.js +13 -1
- package/lib/cjs/version.js +1 -1
- package/lib/esm/entry/dependenciesAny/dependenciesEigs.generated.js +4 -6
- package/lib/esm/entry/dependenciesAny/dependenciesIntersect.generated.js +2 -0
- package/lib/esm/entry/impureFunctionsAny.generated.js +38 -38
- package/lib/esm/entry/pureFunctionsAny.generated.js +107 -107
- package/lib/esm/expression/node/ArrayNode.js +16 -16
- package/lib/esm/expression/parse.js +1 -0
- package/lib/esm/function/geometry/intersect.js +91 -58
- package/lib/esm/function/matrix/eigs/complexEigs.js +152 -18
- package/lib/esm/function/matrix/eigs.js +7 -9
- package/lib/esm/type/bignumber/BigNumber.js +2 -3
- package/lib/esm/utils/is.js +13 -1
- package/lib/esm/version.js +1 -1
- package/package.json +22 -20
- package/types/index.d.ts +4772 -0
- package/types/index.ts +597 -0
- package/types/tsconfig.json +18 -0
- package/types/tslint.json +6 -0
@@ -10,7 +10,7 @@ var _is = require("../../utils/is.js");
|
|
10
10
|
var _factory = require("../../utils/factory.js");
|
11
11
|
|
12
12
|
var name = 'intersect';
|
13
|
-
var dependencies = ['typed', 'config', 'abs', 'add', 'addScalar', 'matrix', 'multiply', 'multiplyScalar', 'divideScalar', 'subtract', 'smaller', 'equalScalar'];
|
13
|
+
var dependencies = ['typed', 'config', 'abs', 'add', 'addScalar', 'matrix', 'multiply', 'multiplyScalar', 'divideScalar', 'subtract', 'smaller', 'equalScalar', 'flatten'];
|
14
14
|
var createIntersect = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
15
15
|
var typed = _ref.typed,
|
16
16
|
config = _ref.config,
|
@@ -23,7 +23,8 @@ var createIntersect = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
|
|
23
23
|
divideScalar = _ref.divideScalar,
|
24
24
|
subtract = _ref.subtract,
|
25
25
|
smaller = _ref.smaller,
|
26
|
-
equalScalar = _ref.equalScalar
|
26
|
+
equalScalar = _ref.equalScalar,
|
27
|
+
flatten = _ref.flatten;
|
27
28
|
|
28
29
|
/**
|
29
30
|
* Calculates the point of intersection of two lines in two or three dimensions
|
@@ -49,74 +50,106 @@ var createIntersect = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
|
|
49
50
|
* @param {Array | Matrix} y Co-ordinates of first end-point of second line
|
50
51
|
* OR Co-efficients of the plane's equation
|
51
52
|
* @param {Array | Matrix} z Co-ordinates of second end-point of second line
|
52
|
-
* OR
|
53
|
+
* OR undefined if the calculation is for line and plane
|
53
54
|
* @return {Array} Returns the point of intersection of lines/lines-planes
|
54
55
|
*/
|
55
56
|
return typed('intersect', {
|
56
|
-
'Array, Array, Array':
|
57
|
-
|
57
|
+
'Array, Array, Array': _AAA,
|
58
|
+
'Array, Array, Array, Array': _AAAA,
|
59
|
+
'Matrix, Matrix, Matrix': function MatrixMatrixMatrix(x, y, plane) {
|
60
|
+
var arr = _AAA(x.valueOf(), y.valueOf(), plane.valueOf());
|
61
|
+
|
62
|
+
return arr === null ? null : matrix(arr);
|
63
|
+
},
|
64
|
+
'Matrix, Matrix, Matrix, Matrix': function MatrixMatrixMatrixMatrix(w, x, y, z) {
|
65
|
+
// TODO: output matrix type should match input matrix type
|
66
|
+
var arr = _AAAA(w.valueOf(), x.valueOf(), y.valueOf(), z.valueOf());
|
67
|
+
|
68
|
+
return arr === null ? null : matrix(arr);
|
69
|
+
}
|
70
|
+
});
|
71
|
+
|
72
|
+
function _AAA(x, y, plane) {
|
73
|
+
x = _coerceArr(x);
|
74
|
+
y = _coerceArr(y);
|
75
|
+
plane = _coerceArr(plane);
|
76
|
+
|
77
|
+
if (!_3d(x)) {
|
78
|
+
throw new TypeError('Array with 3 numbers or BigNumbers expected for first argument');
|
79
|
+
}
|
80
|
+
|
81
|
+
if (!_3d(y)) {
|
82
|
+
throw new TypeError('Array with 3 numbers or BigNumbers expected for second argument');
|
83
|
+
}
|
84
|
+
|
85
|
+
if (!_4d(plane)) {
|
86
|
+
throw new TypeError('Array with 4 numbers expected as third argument');
|
87
|
+
}
|
88
|
+
|
89
|
+
return _intersectLinePlane(x[0], x[1], x[2], y[0], y[1], y[2], plane[0], plane[1], plane[2], plane[3]);
|
90
|
+
}
|
91
|
+
|
92
|
+
function _AAAA(w, x, y, z) {
|
93
|
+
w = _coerceArr(w);
|
94
|
+
x = _coerceArr(x);
|
95
|
+
y = _coerceArr(y);
|
96
|
+
z = _coerceArr(z);
|
97
|
+
|
98
|
+
if (w.length === 2) {
|
99
|
+
if (!_2d(w)) {
|
100
|
+
throw new TypeError('Array with 2 numbers or BigNumbers expected for first argument');
|
101
|
+
}
|
102
|
+
|
103
|
+
if (!_2d(x)) {
|
104
|
+
throw new TypeError('Array with 2 numbers or BigNumbers expected for second argument');
|
105
|
+
}
|
106
|
+
|
107
|
+
if (!_2d(y)) {
|
108
|
+
throw new TypeError('Array with 2 numbers or BigNumbers expected for third argument');
|
109
|
+
}
|
110
|
+
|
111
|
+
if (!_2d(z)) {
|
112
|
+
throw new TypeError('Array with 2 numbers or BigNumbers expected for fourth argument');
|
113
|
+
}
|
114
|
+
|
115
|
+
return _intersect2d(w, x, y, z);
|
116
|
+
} else if (w.length === 3) {
|
117
|
+
if (!_3d(w)) {
|
58
118
|
throw new TypeError('Array with 3 numbers or BigNumbers expected for first argument');
|
59
119
|
}
|
60
120
|
|
61
|
-
if (!_3d(
|
121
|
+
if (!_3d(x)) {
|
62
122
|
throw new TypeError('Array with 3 numbers or BigNumbers expected for second argument');
|
63
123
|
}
|
64
124
|
|
65
|
-
if (!
|
66
|
-
throw new TypeError('Array with
|
125
|
+
if (!_3d(y)) {
|
126
|
+
throw new TypeError('Array with 3 numbers or BigNumbers expected for third argument');
|
67
127
|
}
|
68
128
|
|
69
|
-
|
70
|
-
|
71
|
-
'Array, Array, Array, Array': function ArrayArrayArrayArray(w, x, y, z) {
|
72
|
-
if (w.length === 2) {
|
73
|
-
if (!_2d(w)) {
|
74
|
-
throw new TypeError('Array with 2 numbers or BigNumbers expected for first argument');
|
75
|
-
}
|
76
|
-
|
77
|
-
if (!_2d(x)) {
|
78
|
-
throw new TypeError('Array with 2 numbers or BigNumbers expected for second argument');
|
79
|
-
}
|
80
|
-
|
81
|
-
if (!_2d(y)) {
|
82
|
-
throw new TypeError('Array with 2 numbers or BigNumbers expected for third argument');
|
83
|
-
}
|
84
|
-
|
85
|
-
if (!_2d(z)) {
|
86
|
-
throw new TypeError('Array with 2 numbers or BigNumbers expected for fourth argument');
|
87
|
-
}
|
88
|
-
|
89
|
-
return _intersect2d(w, x, y, z);
|
90
|
-
} else if (w.length === 3) {
|
91
|
-
if (!_3d(w)) {
|
92
|
-
throw new TypeError('Array with 3 numbers or BigNumbers expected for first argument');
|
93
|
-
}
|
94
|
-
|
95
|
-
if (!_3d(x)) {
|
96
|
-
throw new TypeError('Array with 3 numbers or BigNumbers expected for second argument');
|
97
|
-
}
|
98
|
-
|
99
|
-
if (!_3d(y)) {
|
100
|
-
throw new TypeError('Array with 3 numbers or BigNumbers expected for third argument');
|
101
|
-
}
|
102
|
-
|
103
|
-
if (!_3d(z)) {
|
104
|
-
throw new TypeError('Array with 3 numbers or BigNumbers expected for fourth argument');
|
105
|
-
}
|
106
|
-
|
107
|
-
return _intersect3d(w[0], w[1], w[2], x[0], x[1], x[2], y[0], y[1], y[2], z[0], z[1], z[2]);
|
108
|
-
} else {
|
109
|
-
throw new TypeError('Arrays with two or thee dimensional points expected');
|
129
|
+
if (!_3d(z)) {
|
130
|
+
throw new TypeError('Array with 3 numbers or BigNumbers expected for fourth argument');
|
110
131
|
}
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
'Matrix, Matrix, Matrix, Matrix': function MatrixMatrixMatrixMatrix(w, x, y, z) {
|
116
|
-
// TODO: output matrix type should match input matrix type
|
117
|
-
return matrix(this(w.valueOf(), x.valueOf(), y.valueOf(), z.valueOf()));
|
132
|
+
|
133
|
+
return _intersect3d(w[0], w[1], w[2], x[0], x[1], x[2], y[0], y[1], y[2], z[0], z[1], z[2]);
|
134
|
+
} else {
|
135
|
+
throw new TypeError('Arrays with two or thee dimensional points expected');
|
118
136
|
}
|
119
|
-
}
|
137
|
+
}
|
138
|
+
/** Coerce row and column 2-dim arrays to 1-dim array */
|
139
|
+
|
140
|
+
|
141
|
+
function _coerceArr(arr) {
|
142
|
+
// row matrix
|
143
|
+
if (arr.length === 1) return arr[0]; // column matrix
|
144
|
+
|
145
|
+
if (arr.length > 1 && Array.isArray(arr[0])) {
|
146
|
+
if (arr.every(function (el) {
|
147
|
+
return Array.isArray(el) && el.length === 1;
|
148
|
+
})) return flatten(arr);
|
149
|
+
}
|
150
|
+
|
151
|
+
return arr;
|
152
|
+
}
|
120
153
|
|
121
154
|
function _isNumeric(a) {
|
122
155
|
// intersect supports numbers and bignumbers
|
@@ -196,7 +229,9 @@ var createIntersect = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
|
|
196
229
|
var y2y = multiplyScalar(y2, y);
|
197
230
|
var z1z = multiplyScalar(z1, z);
|
198
231
|
var z2z = multiplyScalar(z2, z);
|
199
|
-
var
|
232
|
+
var numerator = subtract(subtract(subtract(c, x1x), y1y), z1z);
|
233
|
+
var denominator = subtract(subtract(subtract(addScalar(addScalar(x2x, y2y), z2z), x1x), y1y), z1z);
|
234
|
+
var t = divideScalar(numerator, denominator);
|
200
235
|
var px = addScalar(x1, multiplyScalar(t, subtract(x2, x1)));
|
201
236
|
var py = addScalar(y1, multiplyScalar(t, subtract(y2, y1)));
|
202
237
|
var pz = addScalar(z1, multiplyScalar(t, subtract(z2, z1)));
|
@@ -30,15 +30,14 @@ function createComplexEigs(_ref) {
|
|
30
30
|
diag = _ref.diag,
|
31
31
|
inv = _ref.inv,
|
32
32
|
qr = _ref.qr,
|
33
|
+
usolve = _ref.usolve,
|
33
34
|
usolveAll = _ref.usolveAll,
|
34
35
|
equal = _ref.equal,
|
35
36
|
complex = _ref.complex,
|
36
37
|
larger = _ref.larger,
|
37
38
|
smaller = _ref.smaller,
|
38
|
-
|
39
|
-
|
40
|
-
transpose = _ref.transpose,
|
41
|
-
matrixFromColumns = _ref.matrixFromColumns;
|
39
|
+
matrixFromColumns = _ref.matrixFromColumns,
|
40
|
+
dot = _ref.dot;
|
42
41
|
|
43
42
|
/**
|
44
43
|
* @param {number[][]} arr the matrix to find eigenvalues of
|
@@ -80,7 +79,7 @@ function createComplexEigs(_ref) {
|
|
80
79
|
var vectors;
|
81
80
|
|
82
81
|
if (findVectors) {
|
83
|
-
vectors = findEigenvectors(arr, N, C, values, prec);
|
82
|
+
vectors = findEigenvectors(arr, N, C, values, prec, type);
|
84
83
|
vectors = matrixFromColumns.apply(void 0, (0, _toConsumableArray2["default"])(vectors));
|
85
84
|
}
|
86
85
|
|
@@ -415,13 +414,18 @@ function createComplexEigs(_ref) {
|
|
415
414
|
* @param {number} N size of A
|
416
415
|
* @param {Matrix} C column transformation matrix that turns A into upper triangular
|
417
416
|
* @param {number[]} values array of eigenvalues of A
|
417
|
+
* @param {'number'|'BigNumber'|'Complex'} type
|
418
418
|
* @returns {number[][]} eigenvalues
|
419
419
|
*/
|
420
420
|
|
421
421
|
|
422
|
-
function findEigenvectors(A, N, C, values, prec) {
|
422
|
+
function findEigenvectors(A, N, C, values, prec, type) {
|
423
423
|
var Cinv = inv(C);
|
424
|
-
var U = multiply(Cinv, A, C);
|
424
|
+
var U = multiply(Cinv, A, C);
|
425
|
+
var big = type === 'BigNumber';
|
426
|
+
var cplx = type === 'Complex';
|
427
|
+
var zero = big ? bignumber(0) : cplx ? complex(0) : 0;
|
428
|
+
var one = big ? bignumber(1) : cplx ? complex(1) : 1; // turn values into a kind of "multiset"
|
425
429
|
// this way it is easier to find eigenvectors
|
426
430
|
|
427
431
|
var uniqueValues = [];
|
@@ -437,11 +441,7 @@ function createComplexEigs(_ref) {
|
|
437
441
|
var _i4 = indexOf(uniqueValues, _λ, equal);
|
438
442
|
|
439
443
|
if (_i4 === -1) {
|
440
|
-
|
441
|
-
// TODO with iterative algorithm this can be removed
|
442
|
-
// Note: the round around log10 is needed to prevent rounding off errors in IE
|
443
|
-
var rounded = round(_λ, subtract(-1, round(log10(prec))));
|
444
|
-
uniqueValues.push(rounded);
|
444
|
+
uniqueValues.push(_λ);
|
445
445
|
multiplicities.push(1);
|
446
446
|
} else {
|
447
447
|
multiplicities[_i4] += 1;
|
@@ -458,22 +458,34 @@ function createComplexEigs(_ref) {
|
|
458
458
|
|
459
459
|
var vectors = [];
|
460
460
|
var len = uniqueValues.length;
|
461
|
-
var b = Array(N).fill(
|
462
|
-
var E = diag(Array(N).fill(
|
461
|
+
var b = Array(N).fill(zero);
|
462
|
+
var E = diag(Array(N).fill(one)); // eigenvalues for which usolve failed (due to numerical error)
|
463
463
|
|
464
464
|
var failedLambdas = [];
|
465
465
|
|
466
466
|
for (var i = 0; i < len; i++) {
|
467
467
|
var λ = uniqueValues[i];
|
468
|
-
|
468
|
+
|
469
|
+
var _A = subtract(U, multiply(λ, E)); // the characteristic matrix
|
470
|
+
|
471
|
+
|
472
|
+
var solutions = usolveAll(_A, b);
|
469
473
|
solutions = solutions.map(function (v) {
|
470
474
|
return multiply(C, v);
|
471
475
|
});
|
472
476
|
solutions.shift(); // ignore the null vector
|
473
|
-
// looks like we missed something
|
477
|
+
// looks like we missed something, try inverse iteration
|
478
|
+
|
479
|
+
while (solutions.length < multiplicities[i]) {
|
480
|
+
var approxVec = inverseIterate(_A, N, solutions, prec, type);
|
474
481
|
|
475
|
-
|
476
|
-
|
482
|
+
if (approxVec == null) {
|
483
|
+
// no more vectors were found
|
484
|
+
failedLambdas.push(λ);
|
485
|
+
break;
|
486
|
+
}
|
487
|
+
|
488
|
+
solutions.push(approxVec);
|
477
489
|
}
|
478
490
|
|
479
491
|
vectors.push.apply(vectors, (0, _toConsumableArray2["default"])(solutions.map(function (v) {
|
@@ -626,6 +638,144 @@ function createComplexEigs(_ref) {
|
|
626
638
|
|
627
639
|
return -1;
|
628
640
|
}
|
641
|
+
/**
|
642
|
+
* Provided a near-singular upper-triangular matrix A and a list of vectors,
|
643
|
+
* finds an eigenvector of A with the smallest eigenvalue, which is orthogonal
|
644
|
+
* to each vector in the list
|
645
|
+
* @template T
|
646
|
+
* @param {T[][]} A near-singular square matrix
|
647
|
+
* @param {number} N dimension
|
648
|
+
* @param {T[][]} orthog list of vectors
|
649
|
+
* @param {number} prec epsilon
|
650
|
+
* @param {'number'|'BigNumber'|'Complex'} type
|
651
|
+
* @return {T[] | null} eigenvector
|
652
|
+
*
|
653
|
+
* @see Numerical Recipes for Fortran 77 – 11.7 Eigenvalues or Eigenvectors by Inverse Iteration
|
654
|
+
*/
|
655
|
+
|
656
|
+
|
657
|
+
function inverseIterate(A, N, orthog, prec, type) {
|
658
|
+
var largeNum = type === 'BigNumber' ? bignumber(1000) : 1000;
|
659
|
+
var b; // the vector
|
660
|
+
// you better choose a random vector before I count to five
|
661
|
+
|
662
|
+
var i = 0;
|
663
|
+
|
664
|
+
while (true) {
|
665
|
+
b = randomOrthogonalVector(N, orthog, type);
|
666
|
+
b = usolve(A, b);
|
667
|
+
|
668
|
+
if (larger(norm(b), largeNum)) {
|
669
|
+
break;
|
670
|
+
}
|
671
|
+
|
672
|
+
if (++i >= 5) {
|
673
|
+
return null;
|
674
|
+
}
|
675
|
+
} // you better converge before I count to ten
|
676
|
+
|
677
|
+
|
678
|
+
i = 0;
|
679
|
+
|
680
|
+
while (true) {
|
681
|
+
var c = usolve(A, b);
|
682
|
+
|
683
|
+
if (smaller(norm(orthogonalComplement(b, [c])), prec)) {
|
684
|
+
break;
|
685
|
+
}
|
686
|
+
|
687
|
+
if (++i >= 10) {
|
688
|
+
return null;
|
689
|
+
}
|
690
|
+
|
691
|
+
b = normalize(c);
|
692
|
+
}
|
693
|
+
|
694
|
+
return b;
|
695
|
+
}
|
696
|
+
/**
|
697
|
+
* Generates a random unit vector of dimension N, orthogonal to each vector in the list
|
698
|
+
* @template T
|
699
|
+
* @param {number} N dimension
|
700
|
+
* @param {T[][]} orthog list of vectors
|
701
|
+
* @param {'number'|'BigNumber'|'Complex'} type
|
702
|
+
* @returns {T[]} random vector
|
703
|
+
*/
|
704
|
+
|
705
|
+
|
706
|
+
function randomOrthogonalVector(N, orthog, type) {
|
707
|
+
var big = type === 'BigNumber';
|
708
|
+
var cplx = type === 'Complex'; // generate random vector with the correct type
|
709
|
+
|
710
|
+
var v = Array(N).fill(0).map(function (_) {
|
711
|
+
return 2 * Math.random() - 1;
|
712
|
+
});
|
713
|
+
|
714
|
+
if (big) {
|
715
|
+
v = v.map(function (n) {
|
716
|
+
return bignumber(n);
|
717
|
+
});
|
718
|
+
}
|
719
|
+
|
720
|
+
if (cplx) {
|
721
|
+
v = v.map(function (n) {
|
722
|
+
return complex(n);
|
723
|
+
});
|
724
|
+
} // project to orthogonal complement
|
725
|
+
|
726
|
+
|
727
|
+
v = orthogonalComplement(v, orthog); // normalize
|
728
|
+
|
729
|
+
return normalize(v, type);
|
730
|
+
}
|
731
|
+
/**
|
732
|
+
* Project vector v to the orthogonal complement of an array of vectors
|
733
|
+
*/
|
734
|
+
|
735
|
+
|
736
|
+
function orthogonalComplement(v, orthog) {
|
737
|
+
var _iterator3 = _createForOfIteratorHelper(orthog),
|
738
|
+
_step3;
|
739
|
+
|
740
|
+
try {
|
741
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
742
|
+
var w = _step3.value;
|
743
|
+
// v := v − (w, v)/∥w∥² w
|
744
|
+
v = subtract(v, multiply(divideScalar(dot(w, v), dot(w, w)), w));
|
745
|
+
}
|
746
|
+
} catch (err) {
|
747
|
+
_iterator3.e(err);
|
748
|
+
} finally {
|
749
|
+
_iterator3.f();
|
750
|
+
}
|
751
|
+
|
752
|
+
return v;
|
753
|
+
}
|
754
|
+
/**
|
755
|
+
* Calculate the norm of a vector.
|
756
|
+
* We can't use math.norm because factory can't handle circular dependency.
|
757
|
+
* Seriously, I'm really fed up with factory.
|
758
|
+
*/
|
759
|
+
|
760
|
+
|
761
|
+
function norm(v) {
|
762
|
+
return abs(sqrt(dot(v, v)));
|
763
|
+
}
|
764
|
+
/**
|
765
|
+
* Normalize a vector
|
766
|
+
* @template T
|
767
|
+
* @param {T[]} v
|
768
|
+
* @param {'number'|'BigNumber'|'Complex'} type
|
769
|
+
* @returns {T[]} normalized vec
|
770
|
+
*/
|
771
|
+
|
772
|
+
|
773
|
+
function normalize(v, type) {
|
774
|
+
var big = type === 'BigNumber';
|
775
|
+
var cplx = type === 'Complex';
|
776
|
+
var one = big ? bignumber(1) : cplx ? complex(1) : 1;
|
777
|
+
return multiply(divideScalar(one, norm(v)), v);
|
778
|
+
}
|
629
779
|
|
630
780
|
return complexEigs;
|
631
781
|
}
|
@@ -17,7 +17,7 @@ var _is = require("../../utils/is.js");
|
|
17
17
|
|
18
18
|
var name = 'eigs'; // The absolute state of math.js's dependency system:
|
19
19
|
|
20
|
-
var dependencies = ['config', 'typed', 'matrix', 'addScalar', 'equal', 'subtract', 'abs', 'atan', 'cos', 'sin', 'multiplyScalar', 'divideScalar', 'inv', 'bignumber', 'multiply', 'add', 'larger', 'column', 'flatten', 'number', 'complex', 'sqrt', 'diag', 'qr', 'usolveAll', 'im', 're', 'smaller', '
|
20
|
+
var dependencies = ['config', 'typed', 'matrix', 'addScalar', 'equal', 'subtract', 'abs', 'atan', 'cos', 'sin', 'multiplyScalar', 'divideScalar', 'inv', 'bignumber', 'multiply', 'add', 'larger', 'column', 'flatten', 'number', 'complex', 'sqrt', 'diag', 'qr', 'usolve', 'usolveAll', 'im', 're', 'smaller', 'matrixFromColumns', 'dot'];
|
21
21
|
var createEigs = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
22
22
|
var config = _ref.config,
|
23
23
|
typed = _ref.typed,
|
@@ -43,14 +43,13 @@ var createEigs = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
|
|
43
43
|
sqrt = _ref.sqrt,
|
44
44
|
diag = _ref.diag,
|
45
45
|
qr = _ref.qr,
|
46
|
+
usolve = _ref.usolve,
|
46
47
|
usolveAll = _ref.usolveAll,
|
47
48
|
im = _ref.im,
|
48
49
|
re = _ref.re,
|
49
50
|
smaller = _ref.smaller,
|
50
|
-
|
51
|
-
|
52
|
-
transpose = _ref.transpose,
|
53
|
-
matrixFromColumns = _ref.matrixFromColumns;
|
51
|
+
matrixFromColumns = _ref.matrixFromColumns,
|
52
|
+
dot = _ref.dot;
|
54
53
|
var doRealSymetric = (0, _realSymetric.createRealSymmetric)({
|
55
54
|
config: config,
|
56
55
|
addScalar: addScalar,
|
@@ -83,15 +82,14 @@ var createEigs = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
|
|
83
82
|
diag: diag,
|
84
83
|
qr: qr,
|
85
84
|
inv: inv,
|
85
|
+
usolve: usolve,
|
86
86
|
usolveAll: usolveAll,
|
87
87
|
equal: equal,
|
88
88
|
complex: complex,
|
89
89
|
larger: larger,
|
90
90
|
smaller: smaller,
|
91
|
-
|
92
|
-
|
93
|
-
transpose: transpose,
|
94
|
-
matrixFromColumns: matrixFromColumns
|
91
|
+
matrixFromColumns: matrixFromColumns,
|
92
|
+
dot: dot
|
95
93
|
});
|
96
94
|
/**
|
97
95
|
* Compute eigenvalues and eigenvectors of a matrix. The eigenvalues are sorted by their absolute value, ascending.
|
package/lib/cjs/header.js
CHANGED
@@ -6,8 +6,8 @@
|
|
6
6
|
* It features real and complex numbers, units, matrices, a large set of
|
7
7
|
* mathematical functions, and a flexible expression parser.
|
8
8
|
*
|
9
|
-
* @version 9.4.
|
10
|
-
* @date 2021-
|
9
|
+
* @version 9.4.4
|
10
|
+
* @date 2021-07-07
|
11
11
|
*
|
12
12
|
* @license
|
13
13
|
* Copyright (C) 2013-2021 Jos de Jong <wjosdejong@gmail.com>
|
@@ -16,17 +16,17 @@ var dependencies = ['?on', 'config'];
|
|
16
16
|
var createBigNumberClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
17
17
|
var on = _ref.on,
|
18
18
|
config = _ref.config;
|
19
|
-
var EUCLID = 9; // Use euclidian division for mod calculation
|
20
19
|
|
21
20
|
var BigNumber = _decimal["default"].clone({
|
22
21
|
precision: config.precision,
|
23
|
-
modulo: EUCLID
|
22
|
+
modulo: _decimal["default"].EUCLID
|
24
23
|
});
|
24
|
+
|
25
|
+
BigNumber.prototype = Object.create(BigNumber.prototype);
|
25
26
|
/**
|
26
27
|
* Attach type information
|
27
28
|
*/
|
28
29
|
|
29
|
-
|
30
30
|
BigNumber.prototype.type = 'BigNumber';
|
31
31
|
BigNumber.prototype.isBigNumber = true;
|
32
32
|
/**
|
package/lib/cjs/utils/is.js
CHANGED
@@ -65,7 +65,19 @@ function isNumber(x) {
|
|
65
65
|
}
|
66
66
|
|
67
67
|
function isBigNumber(x) {
|
68
|
-
|
68
|
+
if (!x || (0, _typeof2["default"])(x) !== 'object' || typeof x.constructor !== 'function') {
|
69
|
+
return false;
|
70
|
+
}
|
71
|
+
|
72
|
+
if (x.isBigNumber === true && (0, _typeof2["default"])(x.constructor.prototype) === 'object' && x.constructor.prototype.isBigNumber === true) {
|
73
|
+
return true;
|
74
|
+
}
|
75
|
+
|
76
|
+
if (typeof x.constructor.isDecimal === 'function' && x.constructor.isDecimal(x) === true) {
|
77
|
+
return true;
|
78
|
+
}
|
79
|
+
|
80
|
+
return false;
|
69
81
|
}
|
70
82
|
|
71
83
|
function isComplex(x) {
|
package/lib/cjs/version.js
CHANGED
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.version = void 0;
|
7
|
-
var version = '9.4.
|
7
|
+
var version = '9.4.4'; // Note: This file is automatically generated when building math.js.
|
8
8
|
// Changes made in this file will be overwritten.
|
9
9
|
|
10
10
|
exports.version = version;
|
@@ -12,12 +12,12 @@ import { complexDependencies } from './dependenciesComplex.generated.js';
|
|
12
12
|
import { cosDependencies } from './dependenciesCos.generated.js';
|
13
13
|
import { diagDependencies } from './dependenciesDiag.generated.js';
|
14
14
|
import { divideScalarDependencies } from './dependenciesDivideScalar.generated.js';
|
15
|
+
import { dotDependencies } from './dependenciesDot.generated.js';
|
15
16
|
import { equalDependencies } from './dependenciesEqual.generated.js';
|
16
17
|
import { flattenDependencies } from './dependenciesFlatten.generated.js';
|
17
18
|
import { imDependencies } from './dependenciesIm.generated.js';
|
18
19
|
import { invDependencies } from './dependenciesInv.generated.js';
|
19
20
|
import { largerDependencies } from './dependenciesLarger.generated.js';
|
20
|
-
import { log10Dependencies } from './dependenciesLog10.generated.js';
|
21
21
|
import { matrixDependencies } from './dependenciesMatrix.generated.js';
|
22
22
|
import { matrixFromColumnsDependencies } from './dependenciesMatrixFromColumns.generated.js';
|
23
23
|
import { multiplyDependencies } from './dependenciesMultiply.generated.js';
|
@@ -25,13 +25,12 @@ import { multiplyScalarDependencies } from './dependenciesMultiplyScalar.generat
|
|
25
25
|
import { numberDependencies } from './dependenciesNumber.generated.js';
|
26
26
|
import { qrDependencies } from './dependenciesQr.generated.js';
|
27
27
|
import { reDependencies } from './dependenciesRe.generated.js';
|
28
|
-
import { roundDependencies } from './dependenciesRound.generated.js';
|
29
28
|
import { sinDependencies } from './dependenciesSin.generated.js';
|
30
29
|
import { smallerDependencies } from './dependenciesSmaller.generated.js';
|
31
30
|
import { sqrtDependencies } from './dependenciesSqrt.generated.js';
|
32
31
|
import { subtractDependencies } from './dependenciesSubtract.generated.js';
|
33
|
-
import { transposeDependencies } from './dependenciesTranspose.generated.js';
|
34
32
|
import { typedDependencies } from './dependenciesTyped.generated.js';
|
33
|
+
import { usolveDependencies } from './dependenciesUsolve.generated.js';
|
35
34
|
import { usolveAllDependencies } from './dependenciesUsolveAll.generated.js';
|
36
35
|
import { createEigs } from '../../factoriesAny.js';
|
37
36
|
export var eigsDependencies = {
|
@@ -45,12 +44,12 @@ export var eigsDependencies = {
|
|
45
44
|
cosDependencies,
|
46
45
|
diagDependencies,
|
47
46
|
divideScalarDependencies,
|
47
|
+
dotDependencies,
|
48
48
|
equalDependencies,
|
49
49
|
flattenDependencies,
|
50
50
|
imDependencies,
|
51
51
|
invDependencies,
|
52
52
|
largerDependencies,
|
53
|
-
log10Dependencies,
|
54
53
|
matrixDependencies,
|
55
54
|
matrixFromColumnsDependencies,
|
56
55
|
multiplyDependencies,
|
@@ -58,13 +57,12 @@ export var eigsDependencies = {
|
|
58
57
|
numberDependencies,
|
59
58
|
qrDependencies,
|
60
59
|
reDependencies,
|
61
|
-
roundDependencies,
|
62
60
|
sinDependencies,
|
63
61
|
smallerDependencies,
|
64
62
|
sqrtDependencies,
|
65
63
|
subtractDependencies,
|
66
|
-
transposeDependencies,
|
67
64
|
typedDependencies,
|
65
|
+
usolveDependencies,
|
68
66
|
usolveAllDependencies,
|
69
67
|
createEigs
|
70
68
|
};
|
@@ -7,6 +7,7 @@ import { addDependencies } from './dependenciesAdd.generated.js';
|
|
7
7
|
import { addScalarDependencies } from './dependenciesAddScalar.generated.js';
|
8
8
|
import { divideScalarDependencies } from './dependenciesDivideScalar.generated.js';
|
9
9
|
import { equalScalarDependencies } from './dependenciesEqualScalar.generated.js';
|
10
|
+
import { flattenDependencies } from './dependenciesFlatten.generated.js';
|
10
11
|
import { matrixDependencies } from './dependenciesMatrix.generated.js';
|
11
12
|
import { multiplyDependencies } from './dependenciesMultiply.generated.js';
|
12
13
|
import { multiplyScalarDependencies } from './dependenciesMultiplyScalar.generated.js';
|
@@ -20,6 +21,7 @@ export var intersectDependencies = {
|
|
20
21
|
addScalarDependencies,
|
21
22
|
divideScalarDependencies,
|
22
23
|
equalScalarDependencies,
|
24
|
+
flattenDependencies,
|
23
25
|
matrixDependencies,
|
24
26
|
multiplyDependencies,
|
25
27
|
multiplyScalarDependencies,
|