mathjs 12.3.1 → 12.4.0
Sign up to get free protection for your applications and to get access to all the features.
- package/HISTORY.md +23 -0
- 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/OperatorNode.js +2 -1
- package/lib/cjs/expression/parse.js +8 -4
- package/lib/cjs/expression/transform/utils/compileInlineExpression.js +5 -4
- 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/utils/map.js +176 -14
- package/lib/cjs/utils/scope.js +4 -10
- package/lib/cjs/version.js +1 -1
- package/lib/esm/entry/pureFunctionsAny.generated.js +1 -0
- package/lib/esm/expression/node/OperatorNode.js +2 -1
- package/lib/esm/expression/parse.js +8 -4
- package/lib/esm/expression/transform/utils/compileInlineExpression.js +5 -4
- 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/utils/map.js +99 -1
- package/lib/esm/utils/scope.js +5 -11
- package/lib/esm/version.js +1 -1
- package/package.json +9 -9
- package/types/index.d.ts +5 -5
@@ -601,6 +601,7 @@ var rightArithShift = exports.rightArithShift = /* #__PURE__ */(0, _factoriesAny
|
|
601
601
|
var round = exports.round = /* #__PURE__ */(0, _factoriesAny.createRound)({
|
602
602
|
BigNumber: BigNumber,
|
603
603
|
DenseMatrix: DenseMatrix,
|
604
|
+
config: _configReadonly.config,
|
604
605
|
equalScalar: equalScalar,
|
605
606
|
matrix: matrix,
|
606
607
|
typed: typed,
|
@@ -13,6 +13,7 @@ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits
|
|
13
13
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
14
14
|
var _is = require("../../utils/is.js");
|
15
15
|
var _array = require("../../utils/array.js");
|
16
|
+
var _scope = require("../../utils/scope.js");
|
16
17
|
var _string = require("../../utils/string.js");
|
17
18
|
var _customs = require("../../utils/customs.js");
|
18
19
|
var _operators = require("../operators.js");
|
@@ -311,7 +312,7 @@ var createOperatorNode = exports.createOperatorNode = /* #__PURE__ */(0, _factor
|
|
311
312
|
// "raw" evaluation
|
312
313
|
var rawArgs = this.args;
|
313
314
|
return function evalOperatorNode(scope, args, context) {
|
314
|
-
return fn(rawArgs, math, scope);
|
315
|
+
return fn(rawArgs, math, (0, _scope.createSubScope)(scope, args));
|
315
316
|
};
|
316
317
|
} else if (evalArgs.length === 1) {
|
317
318
|
var evalArg0 = evalArgs[0];
|
@@ -1416,8 +1416,10 @@ var createParse = exports.createParse = /* #__PURE__ */(0, _factory.factory)(nam
|
|
1416
1416
|
while (state.token === ';') {
|
1417
1417
|
// eslint-disable-line no-unmodified-loop-condition
|
1418
1418
|
getToken(state);
|
1419
|
-
|
1420
|
-
|
1419
|
+
if (state.token !== ']') {
|
1420
|
+
params[rows] = parseRow(state);
|
1421
|
+
rows++;
|
1422
|
+
}
|
1421
1423
|
}
|
1422
1424
|
if (state.token !== ']') {
|
1423
1425
|
throw createSyntaxError(state, 'End of matrix ] expected');
|
@@ -1465,8 +1467,10 @@ var createParse = exports.createParse = /* #__PURE__ */(0, _factory.factory)(nam
|
|
1465
1467
|
getToken(state);
|
1466
1468
|
|
1467
1469
|
// parse expression
|
1468
|
-
|
1469
|
-
|
1470
|
+
if (state.token !== ']' && state.token !== ';') {
|
1471
|
+
params[len] = parseAssignment(state);
|
1472
|
+
len++;
|
1473
|
+
}
|
1470
1474
|
}
|
1471
1475
|
return new ArrayNode(params);
|
1472
1476
|
}
|
@@ -5,12 +5,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
});
|
6
6
|
exports.compileInlineExpression = compileInlineExpression;
|
7
7
|
var _is = require("../../../utils/is.js");
|
8
|
-
var
|
8
|
+
var _map = require("../../../utils/map.js");
|
9
9
|
/**
|
10
10
|
* Compile an inline expression like "x > 0"
|
11
11
|
* @param {Node} expression
|
12
12
|
* @param {Object} math
|
13
|
-
* @param {
|
13
|
+
* @param {Map} scope
|
14
14
|
* @return {function} Returns a function with one argument which fills in the
|
15
15
|
* undefined variable (like "x") and evaluates the expression
|
16
16
|
*/
|
@@ -25,10 +25,11 @@ function compileInlineExpression(expression, math, scope) {
|
|
25
25
|
|
26
26
|
// create a test function for this equation
|
27
27
|
var name = symbol.name; // variable name
|
28
|
-
var
|
28
|
+
var argsScope = new Map();
|
29
|
+
var subScope = new _map.PartitionedMap(scope, argsScope, new Set([name]));
|
29
30
|
var eq = expression.compile();
|
30
31
|
return function inlineExpression(x) {
|
31
|
-
|
32
|
+
argsScope.set(name, x);
|
32
33
|
return eq.evaluate(subScope);
|
33
34
|
};
|
34
35
|
}
|
@@ -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-02-
|
9
|
+
* @version 12.4.0
|
10
|
+
* @date 2024-02-22
|
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
|
});
|