mathjs 9.4.0 → 9.4.4
Sign up to get free protection for your applications and to get access to all the features.
- 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,
|