mathjs 12.3.2 → 12.4.1
Sign up to get free protection for your applications and to get access to all the features.
- package/HISTORY.md +28 -0
- package/README.md +28 -0
- package/bin/cli.js +1 -1
- package/bin/repl.js +1 -1
- package/lib/browser/math.js +1 -1
- package/lib/browser/math.js.LICENSE.txt +2 -2
- package/lib/browser/math.js.map +1 -1
- package/lib/cjs/entry/pureFunctionsAny.generated.js +1 -0
- package/lib/cjs/expression/node/ConstantNode.js +5 -3
- package/lib/cjs/expression/parse.js +8 -4
- package/lib/cjs/function/algebra/simplifyCore.js +3 -0
- package/lib/cjs/function/algebra/sparse/csAmd.js +4 -2
- package/lib/cjs/function/algebra/sparse/csChol.js +4 -2
- package/lib/cjs/function/algebra/sparse/csCounts.js +4 -2
- package/lib/cjs/function/algebra/sparse/csCumsum.js +4 -2
- package/lib/cjs/function/algebra/sparse/csDfs.js +4 -2
- package/lib/cjs/function/algebra/sparse/csEreach.js +4 -2
- package/lib/cjs/function/algebra/sparse/csEtree.js +4 -2
- package/lib/cjs/function/algebra/sparse/csFkeep.js +4 -2
- package/lib/cjs/function/algebra/sparse/csFlip.js +4 -2
- package/lib/cjs/function/algebra/sparse/csIpvec.js +4 -0
- package/lib/cjs/function/algebra/sparse/csLeaf.js +4 -2
- package/lib/cjs/function/algebra/sparse/csLu.js +4 -2
- package/lib/cjs/function/algebra/sparse/csMark.js +4 -2
- package/lib/cjs/function/algebra/sparse/csMarked.js +4 -2
- package/lib/cjs/function/algebra/sparse/csPermute.js +4 -2
- package/lib/cjs/function/algebra/sparse/csPost.js +4 -2
- package/lib/cjs/function/algebra/sparse/csReach.js +4 -2
- package/lib/cjs/function/algebra/sparse/csSpsolve.js +4 -2
- package/lib/cjs/function/algebra/sparse/csSqr.js +4 -2
- package/lib/cjs/function/algebra/sparse/csSymperm.js +4 -2
- package/lib/cjs/function/algebra/sparse/csTdfs.js +4 -2
- package/lib/cjs/function/algebra/sparse/csUnflip.js +4 -2
- package/lib/cjs/function/arithmetic/multiply.js +30 -29
- package/lib/cjs/function/arithmetic/round.js +38 -7
- package/lib/cjs/function/matrix/dot.js +3 -3
- package/lib/cjs/header.js +2 -2
- package/lib/cjs/type/matrix/utils/matAlgo01xDSid.js +4 -4
- package/lib/cjs/type/matrix/utils/matAlgo02xDS0.js +4 -4
- package/lib/cjs/type/matrix/utils/matAlgo03xDSf.js +4 -4
- package/lib/cjs/type/matrix/utils/matAlgo04xSidSid.js +4 -4
- package/lib/cjs/type/matrix/utils/matAlgo05xSfSf.js +4 -4
- package/lib/cjs/type/matrix/utils/matAlgo06xS0S0.js +4 -4
- package/lib/cjs/type/matrix/utils/matAlgo07xSSf.js +4 -4
- package/lib/cjs/type/matrix/utils/matAlgo08xS0Sid.js +4 -4
- package/lib/cjs/type/matrix/utils/matAlgo09xS0Sf.js +4 -4
- package/lib/cjs/type/unit/Unit.js +6 -2
- package/lib/cjs/utils/map.js +2 -0
- package/lib/cjs/version.js +1 -1
- package/lib/esm/entry/pureFunctionsAny.generated.js +1 -0
- package/lib/esm/expression/node/ConstantNode.js +5 -3
- package/lib/esm/expression/parse.js +8 -4
- package/lib/esm/function/algebra/simplifyCore.js +3 -0
- package/lib/esm/function/algebra/sparse/csAmd.js +3 -2
- package/lib/esm/function/algebra/sparse/csChol.js +3 -2
- package/lib/esm/function/algebra/sparse/csCounts.js +3 -2
- package/lib/esm/function/algebra/sparse/csCumsum.js +4 -2
- package/lib/esm/function/algebra/sparse/csDfs.js +3 -2
- package/lib/esm/function/algebra/sparse/csEreach.js +3 -2
- package/lib/esm/function/algebra/sparse/csEtree.js +4 -2
- package/lib/esm/function/algebra/sparse/csFkeep.js +4 -2
- package/lib/esm/function/algebra/sparse/csFlip.js +4 -2
- package/lib/esm/function/algebra/sparse/csIpvec.js +4 -0
- package/lib/esm/function/algebra/sparse/csLeaf.js +4 -2
- package/lib/esm/function/algebra/sparse/csLu.js +4 -2
- package/lib/esm/function/algebra/sparse/csMark.js +4 -2
- package/lib/esm/function/algebra/sparse/csMarked.js +4 -2
- package/lib/esm/function/algebra/sparse/csPermute.js +4 -2
- package/lib/esm/function/algebra/sparse/csPost.js +3 -2
- package/lib/esm/function/algebra/sparse/csReach.js +4 -2
- package/lib/esm/function/algebra/sparse/csSpsolve.js +3 -2
- package/lib/esm/function/algebra/sparse/csSqr.js +3 -2
- package/lib/esm/function/algebra/sparse/csSymperm.js +3 -2
- package/lib/esm/function/algebra/sparse/csTdfs.js +4 -2
- package/lib/esm/function/algebra/sparse/csUnflip.js +3 -2
- package/lib/esm/function/arithmetic/multiply.js +30 -29
- package/lib/esm/function/arithmetic/round.js +38 -7
- package/lib/esm/function/matrix/dot.js +3 -3
- package/lib/esm/type/matrix/utils/matAlgo01xDSid.js +4 -4
- package/lib/esm/type/matrix/utils/matAlgo02xDS0.js +4 -4
- package/lib/esm/type/matrix/utils/matAlgo03xDSf.js +4 -4
- package/lib/esm/type/matrix/utils/matAlgo04xSidSid.js +4 -4
- package/lib/esm/type/matrix/utils/matAlgo05xSfSf.js +4 -4
- package/lib/esm/type/matrix/utils/matAlgo06xS0S0.js +4 -4
- package/lib/esm/type/matrix/utils/matAlgo07xSSf.js +4 -4
- package/lib/esm/type/matrix/utils/matAlgo08xS0Sid.js +4 -4
- package/lib/esm/type/matrix/utils/matAlgo09xS0Sf.js +4 -4
- package/lib/esm/type/unit/Unit.js +6 -2
- package/lib/esm/utils/map.js +2 -0
- package/lib/esm/version.js +1 -1
- package/package.json +16 -16
- package/types/index.d.ts +5 -5
@@ -119,11 +119,11 @@ var createMultiply = exports.createMultiply = /* #__PURE__ */(0, _factory.factor
|
|
119
119
|
// a dense
|
120
120
|
var adata = a._data;
|
121
121
|
var asize = a._size;
|
122
|
-
var adt = a._datatype;
|
122
|
+
var adt = a._datatype || a.getDataType();
|
123
123
|
// b dense
|
124
124
|
var bdata = b._data;
|
125
125
|
var bsize = b._size;
|
126
|
-
var bdt = b._datatype;
|
126
|
+
var bdt = b._datatype || b.getDataType();
|
127
127
|
// rows & columns
|
128
128
|
var alength = asize[0];
|
129
129
|
var bcolumns = bsize[1];
|
@@ -136,7 +136,7 @@ var createMultiply = exports.createMultiply = /* #__PURE__ */(0, _factory.factor
|
|
136
136
|
var mf = multiplyScalar;
|
137
137
|
|
138
138
|
// process data types
|
139
|
-
if (adt && bdt && adt === bdt && typeof adt === 'string') {
|
139
|
+
if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') {
|
140
140
|
// datatype
|
141
141
|
dt = adt;
|
142
142
|
// find signatures that matches (dt, dt)
|
@@ -163,7 +163,7 @@ var createMultiply = exports.createMultiply = /* #__PURE__ */(0, _factory.factor
|
|
163
163
|
return a.createDenseMatrix({
|
164
164
|
data: c,
|
165
165
|
size: [bcolumns],
|
166
|
-
datatype: dt
|
166
|
+
datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined
|
167
167
|
});
|
168
168
|
}
|
169
169
|
|
@@ -207,10 +207,10 @@ var createMultiply = exports.createMultiply = /* #__PURE__ */(0, _factory.factor
|
|
207
207
|
// a dense
|
208
208
|
var adata = a._data;
|
209
209
|
var asize = a._size;
|
210
|
-
var adt = a._datatype;
|
210
|
+
var adt = a._datatype || a.getDataType();
|
211
211
|
// b dense
|
212
212
|
var bdata = b._data;
|
213
|
-
var bdt = b._datatype;
|
213
|
+
var bdt = b._datatype || b.getDataType();
|
214
214
|
// rows & columns
|
215
215
|
var arows = asize[0];
|
216
216
|
var acolumns = asize[1];
|
@@ -223,7 +223,7 @@ var createMultiply = exports.createMultiply = /* #__PURE__ */(0, _factory.factor
|
|
223
223
|
var mf = multiplyScalar;
|
224
224
|
|
225
225
|
// process data types
|
226
|
-
if (adt && bdt && adt === bdt && typeof adt === 'string') {
|
226
|
+
if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') {
|
227
227
|
// datatype
|
228
228
|
dt = adt;
|
229
229
|
// find signatures that matches (dt, dt)
|
@@ -252,7 +252,7 @@ var createMultiply = exports.createMultiply = /* #__PURE__ */(0, _factory.factor
|
|
252
252
|
return a.createDenseMatrix({
|
253
253
|
data: c,
|
254
254
|
size: [arows],
|
255
|
-
datatype: dt
|
255
|
+
datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined
|
256
256
|
});
|
257
257
|
}
|
258
258
|
|
@@ -265,14 +265,15 @@ var createMultiply = exports.createMultiply = /* #__PURE__ */(0, _factory.factor
|
|
265
265
|
* @return {Matrix} DenseMatrix (MxC)
|
266
266
|
*/
|
267
267
|
function _multiplyDenseMatrixDenseMatrix(a, b) {
|
268
|
+
// getDataType()
|
268
269
|
// a dense
|
269
270
|
var adata = a._data;
|
270
271
|
var asize = a._size;
|
271
|
-
var adt = a._datatype;
|
272
|
+
var adt = a._datatype || a.getDataType();
|
272
273
|
// b dense
|
273
274
|
var bdata = b._data;
|
274
275
|
var bsize = b._size;
|
275
|
-
var bdt = b._datatype;
|
276
|
+
var bdt = b._datatype || b.getDataType();
|
276
277
|
// rows & columns
|
277
278
|
var arows = asize[0];
|
278
279
|
var acolumns = asize[1];
|
@@ -286,7 +287,7 @@ var createMultiply = exports.createMultiply = /* #__PURE__ */(0, _factory.factor
|
|
286
287
|
var mf = multiplyScalar;
|
287
288
|
|
288
289
|
// process data types
|
289
|
-
if (adt && bdt && adt === bdt && typeof adt === 'string') {
|
290
|
+
if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed' && adt !== 'mixed') {
|
290
291
|
// datatype
|
291
292
|
dt = adt;
|
292
293
|
// find signatures that matches (dt, dt)
|
@@ -320,7 +321,7 @@ var createMultiply = exports.createMultiply = /* #__PURE__ */(0, _factory.factor
|
|
320
321
|
return a.createDenseMatrix({
|
321
322
|
data: c,
|
322
323
|
size: [arows, bcolumns],
|
323
|
-
datatype: dt
|
324
|
+
datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined
|
324
325
|
});
|
325
326
|
}
|
326
327
|
|
@@ -336,13 +337,13 @@ var createMultiply = exports.createMultiply = /* #__PURE__ */(0, _factory.factor
|
|
336
337
|
// a dense
|
337
338
|
var adata = a._data;
|
338
339
|
var asize = a._size;
|
339
|
-
var adt = a._datatype;
|
340
|
+
var adt = a._datatype || a.getDataType();
|
340
341
|
// b sparse
|
341
342
|
var bvalues = b._values;
|
342
343
|
var bindex = b._index;
|
343
344
|
var bptr = b._ptr;
|
344
345
|
var bsize = b._size;
|
345
|
-
var bdt = b._datatype;
|
346
|
+
var bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType();
|
346
347
|
// validate b matrix
|
347
348
|
if (!bvalues) {
|
348
349
|
throw new Error('Cannot multiply Dense Matrix times Pattern only Matrix');
|
@@ -363,7 +364,7 @@ var createMultiply = exports.createMultiply = /* #__PURE__ */(0, _factory.factor
|
|
363
364
|
var zero = 0;
|
364
365
|
|
365
366
|
// process data types
|
366
|
-
if (adt && bdt && adt === bdt && typeof adt === 'string') {
|
367
|
+
if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') {
|
367
368
|
// datatype
|
368
369
|
dt = adt;
|
369
370
|
// find signatures that matches (dt, dt)
|
@@ -384,7 +385,7 @@ var createMultiply = exports.createMultiply = /* #__PURE__ */(0, _factory.factor
|
|
384
385
|
index: cindex,
|
385
386
|
ptr: cptr,
|
386
387
|
size: [arows, bcolumns],
|
387
|
-
datatype: dt
|
388
|
+
datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined
|
388
389
|
});
|
389
390
|
|
390
391
|
// loop b columns
|
@@ -448,14 +449,14 @@ var createMultiply = exports.createMultiply = /* #__PURE__ */(0, _factory.factor
|
|
448
449
|
var avalues = a._values;
|
449
450
|
var aindex = a._index;
|
450
451
|
var aptr = a._ptr;
|
451
|
-
var adt = a._datatype;
|
452
|
+
var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();
|
452
453
|
// validate a matrix
|
453
454
|
if (!avalues) {
|
454
455
|
throw new Error('Cannot multiply Pattern only Matrix times Dense Matrix');
|
455
456
|
}
|
456
457
|
// b dense
|
457
458
|
var bdata = b._data;
|
458
|
-
var bdt = b._datatype;
|
459
|
+
var bdt = b._datatype || b.getDataType();
|
459
460
|
// rows & columns
|
460
461
|
var arows = a._size[0];
|
461
462
|
var brows = b._size[0];
|
@@ -476,7 +477,7 @@ var createMultiply = exports.createMultiply = /* #__PURE__ */(0, _factory.factor
|
|
476
477
|
var zero = 0;
|
477
478
|
|
478
479
|
// process data types
|
479
|
-
if (adt && bdt && adt === bdt && typeof adt === 'string') {
|
480
|
+
if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') {
|
480
481
|
// datatype
|
481
482
|
dt = adt;
|
482
483
|
// find signatures that matches (dt, dt)
|
@@ -529,13 +530,13 @@ var createMultiply = exports.createMultiply = /* #__PURE__ */(0, _factory.factor
|
|
529
530
|
// update ptr
|
530
531
|
cptr[1] = cindex.length;
|
531
532
|
|
532
|
-
//
|
533
|
+
// matrix to return
|
533
534
|
return a.createSparseMatrix({
|
534
535
|
values: cvalues,
|
535
536
|
index: cindex,
|
536
537
|
ptr: cptr,
|
537
538
|
size: [arows, 1],
|
538
|
-
datatype: dt
|
539
|
+
datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined
|
539
540
|
});
|
540
541
|
}
|
541
542
|
|
@@ -552,14 +553,14 @@ var createMultiply = exports.createMultiply = /* #__PURE__ */(0, _factory.factor
|
|
552
553
|
var avalues = a._values;
|
553
554
|
var aindex = a._index;
|
554
555
|
var aptr = a._ptr;
|
555
|
-
var adt = a._datatype;
|
556
|
+
var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();
|
556
557
|
// validate a matrix
|
557
558
|
if (!avalues) {
|
558
559
|
throw new Error('Cannot multiply Pattern only Matrix times Dense Matrix');
|
559
560
|
}
|
560
561
|
// b dense
|
561
562
|
var bdata = b._data;
|
562
|
-
var bdt = b._datatype;
|
563
|
+
var bdt = b._datatype || b.getDataType();
|
563
564
|
// rows & columns
|
564
565
|
var arows = a._size[0];
|
565
566
|
var brows = b._size[0];
|
@@ -577,7 +578,7 @@ var createMultiply = exports.createMultiply = /* #__PURE__ */(0, _factory.factor
|
|
577
578
|
var zero = 0;
|
578
579
|
|
579
580
|
// process data types
|
580
|
-
if (adt && bdt && adt === bdt && typeof adt === 'string') {
|
581
|
+
if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') {
|
581
582
|
// datatype
|
582
583
|
dt = adt;
|
583
584
|
// find signatures that matches (dt, dt)
|
@@ -598,7 +599,7 @@ var createMultiply = exports.createMultiply = /* #__PURE__ */(0, _factory.factor
|
|
598
599
|
index: cindex,
|
599
600
|
ptr: cptr,
|
600
601
|
size: [arows, bcolumns],
|
601
|
-
datatype: dt
|
602
|
+
datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined
|
602
603
|
});
|
603
604
|
|
604
605
|
// workspace
|
@@ -665,12 +666,12 @@ var createMultiply = exports.createMultiply = /* #__PURE__ */(0, _factory.factor
|
|
665
666
|
var avalues = a._values;
|
666
667
|
var aindex = a._index;
|
667
668
|
var aptr = a._ptr;
|
668
|
-
var adt = a._datatype;
|
669
|
+
var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();
|
669
670
|
// b sparse
|
670
671
|
var bvalues = b._values;
|
671
672
|
var bindex = b._index;
|
672
673
|
var bptr = b._ptr;
|
673
|
-
var bdt = b._datatype;
|
674
|
+
var bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType();
|
674
675
|
|
675
676
|
// rows & columns
|
676
677
|
var arows = a._size[0];
|
@@ -686,7 +687,7 @@ var createMultiply = exports.createMultiply = /* #__PURE__ */(0, _factory.factor
|
|
686
687
|
var mf = multiplyScalar;
|
687
688
|
|
688
689
|
// process data types
|
689
|
-
if (adt && bdt && adt === bdt && typeof adt === 'string') {
|
690
|
+
if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') {
|
690
691
|
// datatype
|
691
692
|
dt = adt;
|
692
693
|
// find signatures that matches (dt, dt)
|
@@ -704,7 +705,7 @@ var createMultiply = exports.createMultiply = /* #__PURE__ */(0, _factory.factor
|
|
704
705
|
index: cindex,
|
705
706
|
ptr: cptr,
|
706
707
|
size: [arows, bcolumns],
|
707
|
-
datatype: dt
|
708
|
+
datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined
|
708
709
|
});
|
709
710
|
|
710
711
|
// workspace
|
@@ -6,19 +6,22 @@ Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
exports.createRound = void 0;
|
7
7
|
var _factory = require("../../utils/factory.js");
|
8
8
|
var _collection = require("../../utils/collection.js");
|
9
|
+
var _number = require("../../utils/number.js");
|
10
|
+
var _nearlyEqual = require("../../utils/bignumber/nearlyEqual.js");
|
9
11
|
var _matAlgo11xS0s = require("../../type/matrix/utils/matAlgo11xS0s.js");
|
10
12
|
var _matAlgo12xSfs = require("../../type/matrix/utils/matAlgo12xSfs.js");
|
11
13
|
var _matAlgo14xDs = require("../../type/matrix/utils/matAlgo14xDs.js");
|
12
14
|
var _index = require("../../plain/number/index.js");
|
13
15
|
var NO_INT = 'Number of decimals in function round must be an integer';
|
14
16
|
var name = 'round';
|
15
|
-
var dependencies = ['typed', 'matrix', 'equalScalar', 'zeros', 'BigNumber', 'DenseMatrix'];
|
17
|
+
var dependencies = ['typed', 'config', 'matrix', 'equalScalar', 'zeros', 'BigNumber', 'DenseMatrix'];
|
16
18
|
var createRound = exports.createRound = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
17
19
|
var typed = _ref.typed,
|
20
|
+
config = _ref.config,
|
18
21
|
matrix = _ref.matrix,
|
19
22
|
equalScalar = _ref.equalScalar,
|
20
23
|
zeros = _ref.zeros,
|
21
|
-
|
24
|
+
_BigNumber = _ref.BigNumber,
|
22
25
|
DenseMatrix = _ref.DenseMatrix;
|
23
26
|
var matAlgo11xS0s = (0, _matAlgo11xS0s.createMatAlgo11xS0s)({
|
24
27
|
typed: typed,
|
@@ -31,6 +34,9 @@ var createRound = exports.createRound = /* #__PURE__ */(0, _factory.factory)(nam
|
|
31
34
|
var matAlgo14xDs = (0, _matAlgo14xDs.createMatAlgo14xDs)({
|
32
35
|
typed: typed
|
33
36
|
});
|
37
|
+
function toExponent(epsilon) {
|
38
|
+
return Math.abs((0, _number.splitNumber)(epsilon).exponent);
|
39
|
+
}
|
34
40
|
|
35
41
|
/**
|
36
42
|
* Round a value towards the nearest rounded value.
|
@@ -77,13 +83,27 @@ var createRound = exports.createRound = /* #__PURE__ */(0, _factory.factory)(nam
|
|
77
83
|
* @return {number | BigNumber | Fraction | Complex | Array | Matrix} Rounded value
|
78
84
|
*/
|
79
85
|
return typed(name, {
|
80
|
-
number:
|
81
|
-
|
86
|
+
number: function number(x) {
|
87
|
+
// Handle round off errors by first rounding to epsilon precision
|
88
|
+
var xEpsilon = (0, _index.roundNumber)(x, toExponent(config.epsilon));
|
89
|
+
var xSelected = (0, _number.nearlyEqual)(x, xEpsilon, config.epsilon) ? xEpsilon : x;
|
90
|
+
return (0, _index.roundNumber)(xSelected);
|
91
|
+
},
|
92
|
+
'number, number': function numberNumber(x, n) {
|
93
|
+
// Same as number: unless user specifies more decimals than epsilon
|
94
|
+
var epsilonExponent = toExponent(config.epsilon);
|
95
|
+
if (n >= epsilonExponent) {
|
96
|
+
return (0, _index.roundNumber)(x, n);
|
97
|
+
}
|
98
|
+
var xEpsilon = (0, _index.roundNumber)(x, epsilonExponent);
|
99
|
+
var xSelected = (0, _number.nearlyEqual)(x, xEpsilon, config.epsilon) ? xEpsilon : x;
|
100
|
+
return (0, _index.roundNumber)(xSelected, n);
|
101
|
+
},
|
82
102
|
'number, BigNumber': function numberBigNumber(x, n) {
|
83
103
|
if (!n.isInteger()) {
|
84
104
|
throw new TypeError(NO_INT);
|
85
105
|
}
|
86
|
-
return new
|
106
|
+
return new _BigNumber(x).toDecimalPlaces(n.toNumber());
|
87
107
|
},
|
88
108
|
Complex: function Complex(x) {
|
89
109
|
return x.round();
|
@@ -102,13 +122,24 @@ var createRound = exports.createRound = /* #__PURE__ */(0, _factory.factory)(nam
|
|
102
122
|
return x.round(_n);
|
103
123
|
},
|
104
124
|
BigNumber: function BigNumber(x) {
|
105
|
-
|
125
|
+
// Handle round off errors by first rounding to epsilon precision
|
126
|
+
var xEpsilon = new _BigNumber(x).toDecimalPlaces(toExponent(config.epsilon));
|
127
|
+
var xSelected = (0, _nearlyEqual.nearlyEqual)(x, xEpsilon, config.epsilon) ? xEpsilon : x;
|
128
|
+
return xSelected.toDecimalPlaces(0);
|
106
129
|
},
|
107
130
|
'BigNumber, BigNumber': function BigNumberBigNumber(x, n) {
|
108
131
|
if (!n.isInteger()) {
|
109
132
|
throw new TypeError(NO_INT);
|
110
133
|
}
|
111
|
-
|
134
|
+
|
135
|
+
// Same as BigNumber: unless user specifies more decimals than epsilon
|
136
|
+
var epsilonExponent = toExponent(config.epsilon);
|
137
|
+
if (n >= epsilonExponent) {
|
138
|
+
return x.toDecimalPlaces(n.toNumber());
|
139
|
+
}
|
140
|
+
var xEpsilon = x.toDecimalPlaces(epsilonExponent);
|
141
|
+
var xSelected = (0, _nearlyEqual.nearlyEqual)(x, xEpsilon, config.epsilon) ? xEpsilon : x;
|
142
|
+
return xSelected.toDecimalPlaces(n.toNumber());
|
112
143
|
},
|
113
144
|
Fraction: function Fraction(x) {
|
114
145
|
return x.round();
|
@@ -66,9 +66,9 @@ var createDot = exports.createDot = /* #__PURE__ */(0, _factory.factory)(name, d
|
|
66
66
|
function _denseDot(a, b) {
|
67
67
|
var N = _validateDim(a, b);
|
68
68
|
var adata = (0, _is.isMatrix)(a) ? a._data : a;
|
69
|
-
var adt = (0, _is.isMatrix)(a) ? a._datatype : undefined;
|
69
|
+
var adt = (0, _is.isMatrix)(a) ? a._datatype || a.getDataType() : undefined;
|
70
70
|
var bdata = (0, _is.isMatrix)(b) ? b._data : b;
|
71
|
-
var bdt = (0, _is.isMatrix)(b) ? b._datatype : undefined;
|
71
|
+
var bdt = (0, _is.isMatrix)(b) ? b._datatype || b.getDataType() : undefined;
|
72
72
|
|
73
73
|
// are these 2-dimensional column vectors? (as opposed to 1-dimensional vectors)
|
74
74
|
var aIsColumn = _size(a).length === 2;
|
@@ -77,7 +77,7 @@ var createDot = exports.createDot = /* #__PURE__ */(0, _factory.factory)(name, d
|
|
77
77
|
var mul = multiplyScalar;
|
78
78
|
|
79
79
|
// process data types
|
80
|
-
if (adt && bdt && adt === bdt && typeof adt === 'string') {
|
80
|
+
if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') {
|
81
81
|
var dt = adt;
|
82
82
|
// find signatures that matches (dt, dt)
|
83
83
|
add = typed.find(addScalar, [dt, dt]);
|
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 12.
|
10
|
-
* @date 2024-
|
9
|
+
* @version 12.4.1
|
10
|
+
* @date 2024-03-13
|
11
11
|
*
|
12
12
|
* @license
|
13
13
|
* Copyright (C) 2013-2024 Jos de Jong <wjosdejong@gmail.com>
|
@@ -33,13 +33,13 @@ var createMatAlgo01xDSid = exports.createMatAlgo01xDSid = /* #__PURE__ */(0, _fa
|
|
33
33
|
// dense matrix arrays
|
34
34
|
var adata = denseMatrix._data;
|
35
35
|
var asize = denseMatrix._size;
|
36
|
-
var adt = denseMatrix._datatype;
|
36
|
+
var adt = denseMatrix._datatype || denseMatrix.getDataType();
|
37
37
|
// sparse matrix arrays
|
38
38
|
var bvalues = sparseMatrix._values;
|
39
39
|
var bindex = sparseMatrix._index;
|
40
40
|
var bptr = sparseMatrix._ptr;
|
41
41
|
var bsize = sparseMatrix._size;
|
42
|
-
var bdt = sparseMatrix._datatype;
|
42
|
+
var bdt = sparseMatrix._datatype || sparseMatrix._data === undefined ? sparseMatrix._datatype : sparseMatrix.getDataType();
|
43
43
|
|
44
44
|
// validate dimensions
|
45
45
|
if (asize.length !== bsize.length) {
|
@@ -61,7 +61,7 @@ var createMatAlgo01xDSid = exports.createMatAlgo01xDSid = /* #__PURE__ */(0, _fa
|
|
61
61
|
var columns = asize[1];
|
62
62
|
|
63
63
|
// process data types
|
64
|
-
var dt = typeof adt === 'string' && adt === bdt ? adt : undefined;
|
64
|
+
var dt = typeof adt === 'string' && adt !== 'mixed' && adt === bdt ? adt : undefined;
|
65
65
|
// callback function
|
66
66
|
var cf = dt ? typed.find(callback, [dt, dt]) : callback;
|
67
67
|
|
@@ -110,7 +110,7 @@ var createMatAlgo01xDSid = exports.createMatAlgo01xDSid = /* #__PURE__ */(0, _fa
|
|
110
110
|
return denseMatrix.createDenseMatrix({
|
111
111
|
data: cdata,
|
112
112
|
size: [rows, columns],
|
113
|
-
datatype: dt
|
113
|
+
datatype: adt === denseMatrix._datatype && bdt === sparseMatrix._datatype ? dt : undefined
|
114
114
|
});
|
115
115
|
};
|
116
116
|
});
|
@@ -34,13 +34,13 @@ var createMatAlgo02xDS0 = exports.createMatAlgo02xDS0 = /* #__PURE__ */(0, _fact
|
|
34
34
|
// dense matrix arrays
|
35
35
|
var adata = denseMatrix._data;
|
36
36
|
var asize = denseMatrix._size;
|
37
|
-
var adt = denseMatrix._datatype;
|
37
|
+
var adt = denseMatrix._datatype || denseMatrix.getDataType();
|
38
38
|
// sparse matrix arrays
|
39
39
|
var bvalues = sparseMatrix._values;
|
40
40
|
var bindex = sparseMatrix._index;
|
41
41
|
var bptr = sparseMatrix._ptr;
|
42
42
|
var bsize = sparseMatrix._size;
|
43
|
-
var bdt = sparseMatrix._datatype;
|
43
|
+
var bdt = sparseMatrix._datatype || sparseMatrix._data === undefined ? sparseMatrix._datatype : sparseMatrix.getDataType();
|
44
44
|
|
45
45
|
// validate dimensions
|
46
46
|
if (asize.length !== bsize.length) {
|
@@ -71,7 +71,7 @@ var createMatAlgo02xDS0 = exports.createMatAlgo02xDS0 = /* #__PURE__ */(0, _fact
|
|
71
71
|
var cf = callback;
|
72
72
|
|
73
73
|
// process data types
|
74
|
-
if (typeof adt === 'string' && adt === bdt) {
|
74
|
+
if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') {
|
75
75
|
// datatype
|
76
76
|
dt = adt;
|
77
77
|
// find signature that matches (dt, dt)
|
@@ -114,7 +114,7 @@ var createMatAlgo02xDS0 = exports.createMatAlgo02xDS0 = /* #__PURE__ */(0, _fact
|
|
114
114
|
index: cindex,
|
115
115
|
ptr: cptr,
|
116
116
|
size: [rows, columns],
|
117
|
-
datatype: dt
|
117
|
+
datatype: adt === denseMatrix._datatype && bdt === sparseMatrix._datatype ? dt : undefined
|
118
118
|
});
|
119
119
|
};
|
120
120
|
});
|
@@ -33,13 +33,13 @@ var createMatAlgo03xDSf = exports.createMatAlgo03xDSf = /* #__PURE__ */(0, _fact
|
|
33
33
|
// dense matrix arrays
|
34
34
|
var adata = denseMatrix._data;
|
35
35
|
var asize = denseMatrix._size;
|
36
|
-
var adt = denseMatrix._datatype;
|
36
|
+
var adt = denseMatrix._datatype || denseMatrix.getDataType();
|
37
37
|
// sparse matrix arrays
|
38
38
|
var bvalues = sparseMatrix._values;
|
39
39
|
var bindex = sparseMatrix._index;
|
40
40
|
var bptr = sparseMatrix._ptr;
|
41
41
|
var bsize = sparseMatrix._size;
|
42
|
-
var bdt = sparseMatrix._datatype;
|
42
|
+
var bdt = sparseMatrix._datatype || sparseMatrix._data === undefined ? sparseMatrix._datatype : sparseMatrix.getDataType();
|
43
43
|
|
44
44
|
// validate dimensions
|
45
45
|
if (asize.length !== bsize.length) {
|
@@ -68,7 +68,7 @@ var createMatAlgo03xDSf = exports.createMatAlgo03xDSf = /* #__PURE__ */(0, _fact
|
|
68
68
|
var cf = callback;
|
69
69
|
|
70
70
|
// process data types
|
71
|
-
if (typeof adt === 'string' && adt === bdt) {
|
71
|
+
if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') {
|
72
72
|
// datatype
|
73
73
|
dt = adt;
|
74
74
|
// convert 0 to the same datatype
|
@@ -120,7 +120,7 @@ var createMatAlgo03xDSf = exports.createMatAlgo03xDSf = /* #__PURE__ */(0, _fact
|
|
120
120
|
return denseMatrix.createDenseMatrix({
|
121
121
|
data: cdata,
|
122
122
|
size: [rows, columns],
|
123
|
-
datatype: dt
|
123
|
+
datatype: adt === denseMatrix._datatype && bdt === sparseMatrix._datatype ? dt : undefined
|
124
124
|
});
|
125
125
|
};
|
126
126
|
});
|
@@ -35,13 +35,13 @@ var createMatAlgo04xSidSid = exports.createMatAlgo04xSidSid = /* #__PURE__ */(0,
|
|
35
35
|
var aindex = a._index;
|
36
36
|
var aptr = a._ptr;
|
37
37
|
var asize = a._size;
|
38
|
-
var adt = a._datatype;
|
38
|
+
var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();
|
39
39
|
// sparse matrix arrays
|
40
40
|
var bvalues = b._values;
|
41
41
|
var bindex = b._index;
|
42
42
|
var bptr = b._ptr;
|
43
43
|
var bsize = b._size;
|
44
|
-
var bdt = b._datatype;
|
44
|
+
var bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType();
|
45
45
|
|
46
46
|
// validate dimensions
|
47
47
|
if (asize.length !== bsize.length) {
|
@@ -67,7 +67,7 @@ var createMatAlgo04xSidSid = exports.createMatAlgo04xSidSid = /* #__PURE__ */(0,
|
|
67
67
|
var cf = callback;
|
68
68
|
|
69
69
|
// process data types
|
70
|
-
if (typeof adt === 'string' && adt === bdt) {
|
70
|
+
if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') {
|
71
71
|
// datatype
|
72
72
|
dt = adt;
|
73
73
|
// find signature that matches (dt, dt)
|
@@ -177,7 +177,7 @@ var createMatAlgo04xSidSid = exports.createMatAlgo04xSidSid = /* #__PURE__ */(0,
|
|
177
177
|
index: cindex,
|
178
178
|
ptr: cptr,
|
179
179
|
size: [rows, columns],
|
180
|
-
datatype: dt
|
180
|
+
datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined
|
181
181
|
});
|
182
182
|
};
|
183
183
|
});
|
@@ -35,13 +35,13 @@ var createMatAlgo05xSfSf = exports.createMatAlgo05xSfSf = /* #__PURE__ */(0, _fa
|
|
35
35
|
var aindex = a._index;
|
36
36
|
var aptr = a._ptr;
|
37
37
|
var asize = a._size;
|
38
|
-
var adt = a._datatype;
|
38
|
+
var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();
|
39
39
|
// sparse matrix arrays
|
40
40
|
var bvalues = b._values;
|
41
41
|
var bindex = b._index;
|
42
42
|
var bptr = b._ptr;
|
43
43
|
var bsize = b._size;
|
44
|
-
var bdt = b._datatype;
|
44
|
+
var bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType();
|
45
45
|
|
46
46
|
// validate dimensions
|
47
47
|
if (asize.length !== bsize.length) {
|
@@ -67,7 +67,7 @@ var createMatAlgo05xSfSf = exports.createMatAlgo05xSfSf = /* #__PURE__ */(0, _fa
|
|
67
67
|
var cf = callback;
|
68
68
|
|
69
69
|
// process data types
|
70
|
-
if (typeof adt === 'string' && adt === bdt) {
|
70
|
+
if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') {
|
71
71
|
// datatype
|
72
72
|
dt = adt;
|
73
73
|
// find signature that matches (dt, dt)
|
@@ -169,7 +169,7 @@ var createMatAlgo05xSfSf = exports.createMatAlgo05xSfSf = /* #__PURE__ */(0, _fa
|
|
169
169
|
index: cindex,
|
170
170
|
ptr: cptr,
|
171
171
|
size: [rows, columns],
|
172
|
-
datatype: dt
|
172
|
+
datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined
|
173
173
|
});
|
174
174
|
};
|
175
175
|
});
|
@@ -34,11 +34,11 @@ var createMatAlgo06xS0S0 = exports.createMatAlgo06xS0S0 = /* #__PURE__ */(0, _fa
|
|
34
34
|
// sparse matrix arrays
|
35
35
|
var avalues = a._values;
|
36
36
|
var asize = a._size;
|
37
|
-
var adt = a._datatype;
|
37
|
+
var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();
|
38
38
|
// sparse matrix arrays
|
39
39
|
var bvalues = b._values;
|
40
40
|
var bsize = b._size;
|
41
|
-
var bdt = b._datatype;
|
41
|
+
var bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType();
|
42
42
|
|
43
43
|
// validate dimensions
|
44
44
|
if (asize.length !== bsize.length) {
|
@@ -64,7 +64,7 @@ var createMatAlgo06xS0S0 = exports.createMatAlgo06xS0S0 = /* #__PURE__ */(0, _fa
|
|
64
64
|
var cf = callback;
|
65
65
|
|
66
66
|
// process data types
|
67
|
-
if (typeof adt === 'string' && adt === bdt) {
|
67
|
+
if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') {
|
68
68
|
// datatype
|
69
69
|
dt = adt;
|
70
70
|
// find signature that matches (dt, dt)
|
@@ -151,7 +151,7 @@ var createMatAlgo06xS0S0 = exports.createMatAlgo06xS0S0 = /* #__PURE__ */(0, _fa
|
|
151
151
|
index: cindex,
|
152
152
|
ptr: cptr,
|
153
153
|
size: [rows, columns],
|
154
|
-
datatype: dt
|
154
|
+
datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined
|
155
155
|
});
|
156
156
|
};
|
157
157
|
});
|
@@ -28,10 +28,10 @@ var createMatAlgo07xSSf = exports.createMatAlgo07xSSf = /* #__PURE__ */(0, _fact
|
|
28
28
|
return function matAlgo07xSSf(a, b, callback) {
|
29
29
|
// sparse matrix arrays
|
30
30
|
var asize = a._size;
|
31
|
-
var adt = a._datatype;
|
31
|
+
var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();
|
32
32
|
// sparse matrix arrays
|
33
33
|
var bsize = b._size;
|
34
|
-
var bdt = b._datatype;
|
34
|
+
var bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType();
|
35
35
|
|
36
36
|
// validate dimensions
|
37
37
|
if (asize.length !== bsize.length) {
|
@@ -55,7 +55,7 @@ var createMatAlgo07xSSf = exports.createMatAlgo07xSSf = /* #__PURE__ */(0, _fact
|
|
55
55
|
var cf = callback;
|
56
56
|
|
57
57
|
// process data types
|
58
|
-
if (typeof adt === 'string' && adt === bdt) {
|
58
|
+
if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') {
|
59
59
|
// datatype
|
60
60
|
dt = adt;
|
61
61
|
// convert 0 to the same datatype
|
@@ -103,7 +103,7 @@ var createMatAlgo07xSSf = exports.createMatAlgo07xSSf = /* #__PURE__ */(0, _fact
|
|
103
103
|
return new DenseMatrix({
|
104
104
|
data: cdata,
|
105
105
|
size: [rows, columns],
|
106
|
-
datatype: dt
|
106
|
+
datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined
|
107
107
|
});
|
108
108
|
};
|
109
109
|
function _scatter(m, j, w, x, mark) {
|
@@ -35,13 +35,13 @@ var createMatAlgo08xS0Sid = exports.createMatAlgo08xS0Sid = /* #__PURE__ */(0, _
|
|
35
35
|
var aindex = a._index;
|
36
36
|
var aptr = a._ptr;
|
37
37
|
var asize = a._size;
|
38
|
-
var adt = a._datatype;
|
38
|
+
var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();
|
39
39
|
// sparse matrix arrays
|
40
40
|
var bvalues = b._values;
|
41
41
|
var bindex = b._index;
|
42
42
|
var bptr = b._ptr;
|
43
43
|
var bsize = b._size;
|
44
|
-
var bdt = b._datatype;
|
44
|
+
var bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType();
|
45
45
|
|
46
46
|
// validate dimensions
|
47
47
|
if (asize.length !== bsize.length) {
|
@@ -72,7 +72,7 @@ var createMatAlgo08xS0Sid = exports.createMatAlgo08xS0Sid = /* #__PURE__ */(0, _
|
|
72
72
|
var cf = callback;
|
73
73
|
|
74
74
|
// process data types
|
75
|
-
if (typeof adt === 'string' && adt === bdt) {
|
75
|
+
if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') {
|
76
76
|
// datatype
|
77
77
|
dt = adt;
|
78
78
|
// find signature that matches (dt, dt)
|
@@ -152,7 +152,7 @@ var createMatAlgo08xS0Sid = exports.createMatAlgo08xS0Sid = /* #__PURE__ */(0, _
|
|
152
152
|
index: cindex,
|
153
153
|
ptr: cptr,
|
154
154
|
size: [rows, columns],
|
155
|
-
datatype: dt
|
155
|
+
datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined
|
156
156
|
});
|
157
157
|
};
|
158
158
|
});
|
@@ -35,13 +35,13 @@ var createMatAlgo09xS0Sf = exports.createMatAlgo09xS0Sf = /* #__PURE__ */(0, _fa
|
|
35
35
|
var aindex = a._index;
|
36
36
|
var aptr = a._ptr;
|
37
37
|
var asize = a._size;
|
38
|
-
var adt = a._datatype;
|
38
|
+
var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();
|
39
39
|
// sparse matrix arrays
|
40
40
|
var bvalues = b._values;
|
41
41
|
var bindex = b._index;
|
42
42
|
var bptr = b._ptr;
|
43
43
|
var bsize = b._size;
|
44
|
-
var bdt = b._datatype;
|
44
|
+
var bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType();
|
45
45
|
|
46
46
|
// validate dimensions
|
47
47
|
if (asize.length !== bsize.length) {
|
@@ -67,7 +67,7 @@ var createMatAlgo09xS0Sf = exports.createMatAlgo09xS0Sf = /* #__PURE__ */(0, _fa
|
|
67
67
|
var cf = callback;
|
68
68
|
|
69
69
|
// process data types
|
70
|
-
if (typeof adt === 'string' && adt === bdt) {
|
70
|
+
if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') {
|
71
71
|
// datatype
|
72
72
|
dt = adt;
|
73
73
|
// find signature that matches (dt, dt)
|
@@ -140,7 +140,7 @@ var createMatAlgo09xS0Sf = exports.createMatAlgo09xS0Sf = /* #__PURE__ */(0, _fa
|
|
140
140
|
index: cindex,
|
141
141
|
ptr: cptr,
|
142
142
|
size: [rows, columns],
|
143
|
-
datatype: dt
|
143
|
+
datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined
|
144
144
|
});
|
145
145
|
};
|
146
146
|
});
|