mathjs 12.3.2 → 12.4.0
Sign up to get free protection for your applications and to get access to all the features.
- package/HISTORY.md +15 -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/parse.js +8 -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 +2 -0
- package/lib/cjs/version.js +1 -1
- package/lib/esm/entry/pureFunctionsAny.generated.js +1 -0
- package/lib/esm/expression/parse.js +8 -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 +2 -0
- package/lib/esm/version.js +1 -1
- package/package.json +7 -7
- package/types/index.d.ts +5 -5
@@ -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
|
});
|
package/lib/cjs/utils/map.js
CHANGED
@@ -30,6 +30,7 @@ var ObjectWrappingMap = exports.ObjectWrappingMap = /*#__PURE__*/function () {
|
|
30
30
|
function ObjectWrappingMap(object) {
|
31
31
|
(0, _classCallCheck2["default"])(this, ObjectWrappingMap);
|
32
32
|
this.wrappedObject = object;
|
33
|
+
this[Symbol.iterator] = this.entries;
|
33
34
|
}
|
34
35
|
(0, _createClass2["default"])(ObjectWrappingMap, [{
|
35
36
|
key: "keys",
|
@@ -130,6 +131,7 @@ var PartitionedMap = exports.PartitionedMap = /*#__PURE__*/function () {
|
|
130
131
|
this.a = a;
|
131
132
|
this.b = b;
|
132
133
|
this.bKeys = bKeys;
|
134
|
+
this[Symbol.iterator] = this.entries;
|
133
135
|
}
|
134
136
|
(0, _createClass2["default"])(PartitionedMap, [{
|
135
137
|
key: "get",
|
package/lib/cjs/version.js
CHANGED
@@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.version = void 0;
|
7
|
-
var version = exports.version = '12.
|
7
|
+
var version = exports.version = '12.4.0';
|
8
8
|
// Note: This file is automatically generated when building math.js.
|
9
9
|
// Changes made in this file will be overwritten.
|
@@ -1409,8 +1409,10 @@ export var createParse = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
1409
1409
|
while (state.token === ';') {
|
1410
1410
|
// eslint-disable-line no-unmodified-loop-condition
|
1411
1411
|
getToken(state);
|
1412
|
-
|
1413
|
-
|
1412
|
+
if (state.token !== ']') {
|
1413
|
+
params[rows] = parseRow(state);
|
1414
|
+
rows++;
|
1415
|
+
}
|
1414
1416
|
}
|
1415
1417
|
if (state.token !== ']') {
|
1416
1418
|
throw createSyntaxError(state, 'End of matrix ] expected');
|
@@ -1458,8 +1460,10 @@ export var createParse = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
1458
1460
|
getToken(state);
|
1459
1461
|
|
1460
1462
|
// parse expression
|
1461
|
-
|
1462
|
-
|
1463
|
+
if (state.token !== ']' && state.token !== ';') {
|
1464
|
+
params[len] = parseAssignment(state);
|
1465
|
+
len++;
|
1466
|
+
}
|
1463
1467
|
}
|
1464
1468
|
return new ArrayNode(params);
|
1465
1469
|
}
|
@@ -115,11 +115,11 @@ export var createMultiply = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
115
115
|
// a dense
|
116
116
|
var adata = a._data;
|
117
117
|
var asize = a._size;
|
118
|
-
var adt = a._datatype;
|
118
|
+
var adt = a._datatype || a.getDataType();
|
119
119
|
// b dense
|
120
120
|
var bdata = b._data;
|
121
121
|
var bsize = b._size;
|
122
|
-
var bdt = b._datatype;
|
122
|
+
var bdt = b._datatype || b.getDataType();
|
123
123
|
// rows & columns
|
124
124
|
var alength = asize[0];
|
125
125
|
var bcolumns = bsize[1];
|
@@ -132,7 +132,7 @@ export var createMultiply = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
132
132
|
var mf = multiplyScalar;
|
133
133
|
|
134
134
|
// process data types
|
135
|
-
if (adt && bdt && adt === bdt && typeof adt === 'string') {
|
135
|
+
if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') {
|
136
136
|
// datatype
|
137
137
|
dt = adt;
|
138
138
|
// find signatures that matches (dt, dt)
|
@@ -159,7 +159,7 @@ export var createMultiply = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
159
159
|
return a.createDenseMatrix({
|
160
160
|
data: c,
|
161
161
|
size: [bcolumns],
|
162
|
-
datatype: dt
|
162
|
+
datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined
|
163
163
|
});
|
164
164
|
}
|
165
165
|
|
@@ -203,10 +203,10 @@ export var createMultiply = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
203
203
|
// a dense
|
204
204
|
var adata = a._data;
|
205
205
|
var asize = a._size;
|
206
|
-
var adt = a._datatype;
|
206
|
+
var adt = a._datatype || a.getDataType();
|
207
207
|
// b dense
|
208
208
|
var bdata = b._data;
|
209
|
-
var bdt = b._datatype;
|
209
|
+
var bdt = b._datatype || b.getDataType();
|
210
210
|
// rows & columns
|
211
211
|
var arows = asize[0];
|
212
212
|
var acolumns = asize[1];
|
@@ -219,7 +219,7 @@ export var createMultiply = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
219
219
|
var mf = multiplyScalar;
|
220
220
|
|
221
221
|
// process data types
|
222
|
-
if (adt && bdt && adt === bdt && typeof adt === 'string') {
|
222
|
+
if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') {
|
223
223
|
// datatype
|
224
224
|
dt = adt;
|
225
225
|
// find signatures that matches (dt, dt)
|
@@ -248,7 +248,7 @@ export var createMultiply = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
248
248
|
return a.createDenseMatrix({
|
249
249
|
data: c,
|
250
250
|
size: [arows],
|
251
|
-
datatype: dt
|
251
|
+
datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined
|
252
252
|
});
|
253
253
|
}
|
254
254
|
|
@@ -261,14 +261,15 @@ export var createMultiply = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
261
261
|
* @return {Matrix} DenseMatrix (MxC)
|
262
262
|
*/
|
263
263
|
function _multiplyDenseMatrixDenseMatrix(a, b) {
|
264
|
+
// getDataType()
|
264
265
|
// a dense
|
265
266
|
var adata = a._data;
|
266
267
|
var asize = a._size;
|
267
|
-
var adt = a._datatype;
|
268
|
+
var adt = a._datatype || a.getDataType();
|
268
269
|
// b dense
|
269
270
|
var bdata = b._data;
|
270
271
|
var bsize = b._size;
|
271
|
-
var bdt = b._datatype;
|
272
|
+
var bdt = b._datatype || b.getDataType();
|
272
273
|
// rows & columns
|
273
274
|
var arows = asize[0];
|
274
275
|
var acolumns = asize[1];
|
@@ -282,7 +283,7 @@ export var createMultiply = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
282
283
|
var mf = multiplyScalar;
|
283
284
|
|
284
285
|
// process data types
|
285
|
-
if (adt && bdt && adt === bdt && typeof adt === 'string') {
|
286
|
+
if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed' && adt !== 'mixed') {
|
286
287
|
// datatype
|
287
288
|
dt = adt;
|
288
289
|
// find signatures that matches (dt, dt)
|
@@ -316,7 +317,7 @@ export var createMultiply = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
316
317
|
return a.createDenseMatrix({
|
317
318
|
data: c,
|
318
319
|
size: [arows, bcolumns],
|
319
|
-
datatype: dt
|
320
|
+
datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined
|
320
321
|
});
|
321
322
|
}
|
322
323
|
|
@@ -332,13 +333,13 @@ export var createMultiply = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
332
333
|
// a dense
|
333
334
|
var adata = a._data;
|
334
335
|
var asize = a._size;
|
335
|
-
var adt = a._datatype;
|
336
|
+
var adt = a._datatype || a.getDataType();
|
336
337
|
// b sparse
|
337
338
|
var bvalues = b._values;
|
338
339
|
var bindex = b._index;
|
339
340
|
var bptr = b._ptr;
|
340
341
|
var bsize = b._size;
|
341
|
-
var bdt = b._datatype;
|
342
|
+
var bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType();
|
342
343
|
// validate b matrix
|
343
344
|
if (!bvalues) {
|
344
345
|
throw new Error('Cannot multiply Dense Matrix times Pattern only Matrix');
|
@@ -359,7 +360,7 @@ export var createMultiply = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
359
360
|
var zero = 0;
|
360
361
|
|
361
362
|
// process data types
|
362
|
-
if (adt && bdt && adt === bdt && typeof adt === 'string') {
|
363
|
+
if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') {
|
363
364
|
// datatype
|
364
365
|
dt = adt;
|
365
366
|
// find signatures that matches (dt, dt)
|
@@ -380,7 +381,7 @@ export var createMultiply = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
380
381
|
index: cindex,
|
381
382
|
ptr: cptr,
|
382
383
|
size: [arows, bcolumns],
|
383
|
-
datatype: dt
|
384
|
+
datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined
|
384
385
|
});
|
385
386
|
|
386
387
|
// loop b columns
|
@@ -444,14 +445,14 @@ export var createMultiply = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
444
445
|
var avalues = a._values;
|
445
446
|
var aindex = a._index;
|
446
447
|
var aptr = a._ptr;
|
447
|
-
var adt = a._datatype;
|
448
|
+
var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();
|
448
449
|
// validate a matrix
|
449
450
|
if (!avalues) {
|
450
451
|
throw new Error('Cannot multiply Pattern only Matrix times Dense Matrix');
|
451
452
|
}
|
452
453
|
// b dense
|
453
454
|
var bdata = b._data;
|
454
|
-
var bdt = b._datatype;
|
455
|
+
var bdt = b._datatype || b.getDataType();
|
455
456
|
// rows & columns
|
456
457
|
var arows = a._size[0];
|
457
458
|
var brows = b._size[0];
|
@@ -472,7 +473,7 @@ export var createMultiply = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
472
473
|
var zero = 0;
|
473
474
|
|
474
475
|
// process data types
|
475
|
-
if (adt && bdt && adt === bdt && typeof adt === 'string') {
|
476
|
+
if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') {
|
476
477
|
// datatype
|
477
478
|
dt = adt;
|
478
479
|
// find signatures that matches (dt, dt)
|
@@ -525,13 +526,13 @@ export var createMultiply = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
525
526
|
// update ptr
|
526
527
|
cptr[1] = cindex.length;
|
527
528
|
|
528
|
-
//
|
529
|
+
// matrix to return
|
529
530
|
return a.createSparseMatrix({
|
530
531
|
values: cvalues,
|
531
532
|
index: cindex,
|
532
533
|
ptr: cptr,
|
533
534
|
size: [arows, 1],
|
534
|
-
datatype: dt
|
535
|
+
datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined
|
535
536
|
});
|
536
537
|
}
|
537
538
|
|
@@ -548,14 +549,14 @@ export var createMultiply = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
548
549
|
var avalues = a._values;
|
549
550
|
var aindex = a._index;
|
550
551
|
var aptr = a._ptr;
|
551
|
-
var adt = a._datatype;
|
552
|
+
var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();
|
552
553
|
// validate a matrix
|
553
554
|
if (!avalues) {
|
554
555
|
throw new Error('Cannot multiply Pattern only Matrix times Dense Matrix');
|
555
556
|
}
|
556
557
|
// b dense
|
557
558
|
var bdata = b._data;
|
558
|
-
var bdt = b._datatype;
|
559
|
+
var bdt = b._datatype || b.getDataType();
|
559
560
|
// rows & columns
|
560
561
|
var arows = a._size[0];
|
561
562
|
var brows = b._size[0];
|
@@ -573,7 +574,7 @@ export var createMultiply = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
573
574
|
var zero = 0;
|
574
575
|
|
575
576
|
// process data types
|
576
|
-
if (adt && bdt && adt === bdt && typeof adt === 'string') {
|
577
|
+
if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') {
|
577
578
|
// datatype
|
578
579
|
dt = adt;
|
579
580
|
// find signatures that matches (dt, dt)
|
@@ -594,7 +595,7 @@ export var createMultiply = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
594
595
|
index: cindex,
|
595
596
|
ptr: cptr,
|
596
597
|
size: [arows, bcolumns],
|
597
|
-
datatype: dt
|
598
|
+
datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined
|
598
599
|
});
|
599
600
|
|
600
601
|
// workspace
|
@@ -661,12 +662,12 @@ export var createMultiply = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
661
662
|
var avalues = a._values;
|
662
663
|
var aindex = a._index;
|
663
664
|
var aptr = a._ptr;
|
664
|
-
var adt = a._datatype;
|
665
|
+
var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();
|
665
666
|
// b sparse
|
666
667
|
var bvalues = b._values;
|
667
668
|
var bindex = b._index;
|
668
669
|
var bptr = b._ptr;
|
669
|
-
var bdt = b._datatype;
|
670
|
+
var bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType();
|
670
671
|
|
671
672
|
// rows & columns
|
672
673
|
var arows = a._size[0];
|
@@ -682,7 +683,7 @@ export var createMultiply = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
682
683
|
var mf = multiplyScalar;
|
683
684
|
|
684
685
|
// process data types
|
685
|
-
if (adt && bdt && adt === bdt && typeof adt === 'string') {
|
686
|
+
if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') {
|
686
687
|
// datatype
|
687
688
|
dt = adt;
|
688
689
|
// find signatures that matches (dt, dt)
|
@@ -700,7 +701,7 @@ export var createMultiply = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
700
701
|
index: cindex,
|
701
702
|
ptr: cptr,
|
702
703
|
size: [arows, bcolumns],
|
703
|
-
datatype: dt
|
704
|
+
datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined
|
704
705
|
});
|
705
706
|
|
706
707
|
// workspace
|
@@ -1,19 +1,22 @@
|
|
1
1
|
import { factory } from '../../utils/factory.js';
|
2
2
|
import { deepMap } from '../../utils/collection.js';
|
3
|
+
import { nearlyEqual, splitNumber } from '../../utils/number.js';
|
4
|
+
import { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';
|
3
5
|
import { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';
|
4
6
|
import { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';
|
5
7
|
import { createMatAlgo14xDs } from '../../type/matrix/utils/matAlgo14xDs.js';
|
6
8
|
import { roundNumber } from '../../plain/number/index.js';
|
7
9
|
var NO_INT = 'Number of decimals in function round must be an integer';
|
8
10
|
var name = 'round';
|
9
|
-
var dependencies = ['typed', 'matrix', 'equalScalar', 'zeros', 'BigNumber', 'DenseMatrix'];
|
11
|
+
var dependencies = ['typed', 'config', 'matrix', 'equalScalar', 'zeros', 'BigNumber', 'DenseMatrix'];
|
10
12
|
export var createRound = /* #__PURE__ */factory(name, dependencies, _ref => {
|
11
13
|
var {
|
12
14
|
typed,
|
15
|
+
config,
|
13
16
|
matrix,
|
14
17
|
equalScalar,
|
15
18
|
zeros,
|
16
|
-
BigNumber,
|
19
|
+
BigNumber: _BigNumber,
|
17
20
|
DenseMatrix
|
18
21
|
} = _ref;
|
19
22
|
var matAlgo11xS0s = createMatAlgo11xS0s({
|
@@ -27,6 +30,9 @@ export var createRound = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
27
30
|
var matAlgo14xDs = createMatAlgo14xDs({
|
28
31
|
typed
|
29
32
|
});
|
33
|
+
function toExponent(epsilon) {
|
34
|
+
return Math.abs(splitNumber(epsilon).exponent);
|
35
|
+
}
|
30
36
|
|
31
37
|
/**
|
32
38
|
* Round a value towards the nearest rounded value.
|
@@ -73,13 +79,27 @@ export var createRound = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
73
79
|
* @return {number | BigNumber | Fraction | Complex | Array | Matrix} Rounded value
|
74
80
|
*/
|
75
81
|
return typed(name, {
|
76
|
-
number:
|
77
|
-
|
82
|
+
number: function number(x) {
|
83
|
+
// Handle round off errors by first rounding to epsilon precision
|
84
|
+
var xEpsilon = roundNumber(x, toExponent(config.epsilon));
|
85
|
+
var xSelected = nearlyEqual(x, xEpsilon, config.epsilon) ? xEpsilon : x;
|
86
|
+
return roundNumber(xSelected);
|
87
|
+
},
|
88
|
+
'number, number': function numberNumber(x, n) {
|
89
|
+
// Same as number: unless user specifies more decimals than epsilon
|
90
|
+
var epsilonExponent = toExponent(config.epsilon);
|
91
|
+
if (n >= epsilonExponent) {
|
92
|
+
return roundNumber(x, n);
|
93
|
+
}
|
94
|
+
var xEpsilon = roundNumber(x, epsilonExponent);
|
95
|
+
var xSelected = nearlyEqual(x, xEpsilon, config.epsilon) ? xEpsilon : x;
|
96
|
+
return roundNumber(xSelected, n);
|
97
|
+
},
|
78
98
|
'number, BigNumber': function numberBigNumber(x, n) {
|
79
99
|
if (!n.isInteger()) {
|
80
100
|
throw new TypeError(NO_INT);
|
81
101
|
}
|
82
|
-
return new
|
102
|
+
return new _BigNumber(x).toDecimalPlaces(n.toNumber());
|
83
103
|
},
|
84
104
|
Complex: function Complex(x) {
|
85
105
|
return x.round();
|
@@ -98,13 +118,24 @@ export var createRound = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
98
118
|
return x.round(_n);
|
99
119
|
},
|
100
120
|
BigNumber: function BigNumber(x) {
|
101
|
-
|
121
|
+
// Handle round off errors by first rounding to epsilon precision
|
122
|
+
var xEpsilon = new _BigNumber(x).toDecimalPlaces(toExponent(config.epsilon));
|
123
|
+
var xSelected = bigNearlyEqual(x, xEpsilon, config.epsilon) ? xEpsilon : x;
|
124
|
+
return xSelected.toDecimalPlaces(0);
|
102
125
|
},
|
103
126
|
'BigNumber, BigNumber': function BigNumberBigNumber(x, n) {
|
104
127
|
if (!n.isInteger()) {
|
105
128
|
throw new TypeError(NO_INT);
|
106
129
|
}
|
107
|
-
|
130
|
+
|
131
|
+
// Same as BigNumber: unless user specifies more decimals than epsilon
|
132
|
+
var epsilonExponent = toExponent(config.epsilon);
|
133
|
+
if (n >= epsilonExponent) {
|
134
|
+
return x.toDecimalPlaces(n.toNumber());
|
135
|
+
}
|
136
|
+
var xEpsilon = x.toDecimalPlaces(epsilonExponent);
|
137
|
+
var xSelected = bigNearlyEqual(x, xEpsilon, config.epsilon) ? xEpsilon : x;
|
138
|
+
return xSelected.toDecimalPlaces(n.toNumber());
|
108
139
|
},
|
109
140
|
Fraction: function Fraction(x) {
|
110
141
|
return x.round();
|
@@ -62,9 +62,9 @@ export var createDot = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
62
62
|
function _denseDot(a, b) {
|
63
63
|
var N = _validateDim(a, b);
|
64
64
|
var adata = isMatrix(a) ? a._data : a;
|
65
|
-
var adt = isMatrix(a) ? a._datatype : undefined;
|
65
|
+
var adt = isMatrix(a) ? a._datatype || a.getDataType() : undefined;
|
66
66
|
var bdata = isMatrix(b) ? b._data : b;
|
67
|
-
var bdt = isMatrix(b) ? b._datatype : undefined;
|
67
|
+
var bdt = isMatrix(b) ? b._datatype || b.getDataType() : undefined;
|
68
68
|
|
69
69
|
// are these 2-dimensional column vectors? (as opposed to 1-dimensional vectors)
|
70
70
|
var aIsColumn = _size(a).length === 2;
|
@@ -73,7 +73,7 @@ export var createDot = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
73
73
|
var mul = multiplyScalar;
|
74
74
|
|
75
75
|
// process data types
|
76
|
-
if (adt && bdt && adt === bdt && typeof adt === 'string') {
|
76
|
+
if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') {
|
77
77
|
var dt = adt;
|
78
78
|
// find signatures that matches (dt, dt)
|
79
79
|
add = typed.find(addScalar, [dt, dt]);
|
@@ -29,13 +29,13 @@ export var createMatAlgo01xDSid = /* #__PURE__ */factory(name, dependencies, _re
|
|
29
29
|
// dense matrix arrays
|
30
30
|
var adata = denseMatrix._data;
|
31
31
|
var asize = denseMatrix._size;
|
32
|
-
var adt = denseMatrix._datatype;
|
32
|
+
var adt = denseMatrix._datatype || denseMatrix.getDataType();
|
33
33
|
// sparse matrix arrays
|
34
34
|
var bvalues = sparseMatrix._values;
|
35
35
|
var bindex = sparseMatrix._index;
|
36
36
|
var bptr = sparseMatrix._ptr;
|
37
37
|
var bsize = sparseMatrix._size;
|
38
|
-
var bdt = sparseMatrix._datatype;
|
38
|
+
var bdt = sparseMatrix._datatype || sparseMatrix._data === undefined ? sparseMatrix._datatype : sparseMatrix.getDataType();
|
39
39
|
|
40
40
|
// validate dimensions
|
41
41
|
if (asize.length !== bsize.length) {
|
@@ -57,7 +57,7 @@ export var createMatAlgo01xDSid = /* #__PURE__ */factory(name, dependencies, _re
|
|
57
57
|
var columns = asize[1];
|
58
58
|
|
59
59
|
// process data types
|
60
|
-
var dt = typeof adt === 'string' && adt === bdt ? adt : undefined;
|
60
|
+
var dt = typeof adt === 'string' && adt !== 'mixed' && adt === bdt ? adt : undefined;
|
61
61
|
// callback function
|
62
62
|
var cf = dt ? typed.find(callback, [dt, dt]) : callback;
|
63
63
|
|
@@ -106,7 +106,7 @@ export var createMatAlgo01xDSid = /* #__PURE__ */factory(name, dependencies, _re
|
|
106
106
|
return denseMatrix.createDenseMatrix({
|
107
107
|
data: cdata,
|
108
108
|
size: [rows, columns],
|
109
|
-
datatype: dt
|
109
|
+
datatype: adt === denseMatrix._datatype && bdt === sparseMatrix._datatype ? dt : undefined
|
110
110
|
});
|
111
111
|
};
|
112
112
|
});
|
@@ -30,13 +30,13 @@ export var createMatAlgo02xDS0 = /* #__PURE__ */factory(name, dependencies, _ref
|
|
30
30
|
// dense matrix arrays
|
31
31
|
var adata = denseMatrix._data;
|
32
32
|
var asize = denseMatrix._size;
|
33
|
-
var adt = denseMatrix._datatype;
|
33
|
+
var adt = denseMatrix._datatype || denseMatrix.getDataType();
|
34
34
|
// sparse matrix arrays
|
35
35
|
var bvalues = sparseMatrix._values;
|
36
36
|
var bindex = sparseMatrix._index;
|
37
37
|
var bptr = sparseMatrix._ptr;
|
38
38
|
var bsize = sparseMatrix._size;
|
39
|
-
var bdt = sparseMatrix._datatype;
|
39
|
+
var bdt = sparseMatrix._datatype || sparseMatrix._data === undefined ? sparseMatrix._datatype : sparseMatrix.getDataType();
|
40
40
|
|
41
41
|
// validate dimensions
|
42
42
|
if (asize.length !== bsize.length) {
|
@@ -67,7 +67,7 @@ export var createMatAlgo02xDS0 = /* #__PURE__ */factory(name, dependencies, _ref
|
|
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)
|
@@ -110,7 +110,7 @@ export var createMatAlgo02xDS0 = /* #__PURE__ */factory(name, dependencies, _ref
|
|
110
110
|
index: cindex,
|
111
111
|
ptr: cptr,
|
112
112
|
size: [rows, columns],
|
113
|
-
datatype: dt
|
113
|
+
datatype: adt === denseMatrix._datatype && bdt === sparseMatrix._datatype ? dt : undefined
|
114
114
|
});
|
115
115
|
};
|
116
116
|
});
|
@@ -29,13 +29,13 @@ export var createMatAlgo03xDSf = /* #__PURE__ */factory(name, dependencies, _ref
|
|
29
29
|
// dense matrix arrays
|
30
30
|
var adata = denseMatrix._data;
|
31
31
|
var asize = denseMatrix._size;
|
32
|
-
var adt = denseMatrix._datatype;
|
32
|
+
var adt = denseMatrix._datatype || denseMatrix.getDataType();
|
33
33
|
// sparse matrix arrays
|
34
34
|
var bvalues = sparseMatrix._values;
|
35
35
|
var bindex = sparseMatrix._index;
|
36
36
|
var bptr = sparseMatrix._ptr;
|
37
37
|
var bsize = sparseMatrix._size;
|
38
|
-
var bdt = sparseMatrix._datatype;
|
38
|
+
var bdt = sparseMatrix._datatype || sparseMatrix._data === undefined ? sparseMatrix._datatype : sparseMatrix.getDataType();
|
39
39
|
|
40
40
|
// validate dimensions
|
41
41
|
if (asize.length !== bsize.length) {
|
@@ -64,7 +64,7 @@ export var createMatAlgo03xDSf = /* #__PURE__ */factory(name, dependencies, _ref
|
|
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
|
// convert 0 to the same datatype
|
@@ -116,7 +116,7 @@ export var createMatAlgo03xDSf = /* #__PURE__ */factory(name, dependencies, _ref
|
|
116
116
|
return denseMatrix.createDenseMatrix({
|
117
117
|
data: cdata,
|
118
118
|
size: [rows, columns],
|
119
|
-
datatype: dt
|
119
|
+
datatype: adt === denseMatrix._datatype && bdt === sparseMatrix._datatype ? dt : undefined
|
120
120
|
});
|
121
121
|
};
|
122
122
|
});
|
@@ -31,13 +31,13 @@ export var createMatAlgo04xSidSid = /* #__PURE__ */factory(name, dependencies, _
|
|
31
31
|
var aindex = a._index;
|
32
32
|
var aptr = a._ptr;
|
33
33
|
var asize = a._size;
|
34
|
-
var adt = a._datatype;
|
34
|
+
var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();
|
35
35
|
// sparse matrix arrays
|
36
36
|
var bvalues = b._values;
|
37
37
|
var bindex = b._index;
|
38
38
|
var bptr = b._ptr;
|
39
39
|
var bsize = b._size;
|
40
|
-
var bdt = b._datatype;
|
40
|
+
var bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType();
|
41
41
|
|
42
42
|
// validate dimensions
|
43
43
|
if (asize.length !== bsize.length) {
|
@@ -63,7 +63,7 @@ export var createMatAlgo04xSidSid = /* #__PURE__ */factory(name, dependencies, _
|
|
63
63
|
var cf = callback;
|
64
64
|
|
65
65
|
// process data types
|
66
|
-
if (typeof adt === 'string' && adt === bdt) {
|
66
|
+
if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') {
|
67
67
|
// datatype
|
68
68
|
dt = adt;
|
69
69
|
// find signature that matches (dt, dt)
|
@@ -173,7 +173,7 @@ export var createMatAlgo04xSidSid = /* #__PURE__ */factory(name, dependencies, _
|
|
173
173
|
index: cindex,
|
174
174
|
ptr: cptr,
|
175
175
|
size: [rows, columns],
|
176
|
-
datatype: dt
|
176
|
+
datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined
|
177
177
|
});
|
178
178
|
};
|
179
179
|
});
|
@@ -31,13 +31,13 @@ export var createMatAlgo05xSfSf = /* #__PURE__ */factory(name, dependencies, _re
|
|
31
31
|
var aindex = a._index;
|
32
32
|
var aptr = a._ptr;
|
33
33
|
var asize = a._size;
|
34
|
-
var adt = a._datatype;
|
34
|
+
var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();
|
35
35
|
// sparse matrix arrays
|
36
36
|
var bvalues = b._values;
|
37
37
|
var bindex = b._index;
|
38
38
|
var bptr = b._ptr;
|
39
39
|
var bsize = b._size;
|
40
|
-
var bdt = b._datatype;
|
40
|
+
var bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType();
|
41
41
|
|
42
42
|
// validate dimensions
|
43
43
|
if (asize.length !== bsize.length) {
|
@@ -63,7 +63,7 @@ export var createMatAlgo05xSfSf = /* #__PURE__ */factory(name, dependencies, _re
|
|
63
63
|
var cf = callback;
|
64
64
|
|
65
65
|
// process data types
|
66
|
-
if (typeof adt === 'string' && adt === bdt) {
|
66
|
+
if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') {
|
67
67
|
// datatype
|
68
68
|
dt = adt;
|
69
69
|
// find signature that matches (dt, dt)
|
@@ -165,7 +165,7 @@ export var createMatAlgo05xSfSf = /* #__PURE__ */factory(name, dependencies, _re
|
|
165
165
|
index: cindex,
|
166
166
|
ptr: cptr,
|
167
167
|
size: [rows, columns],
|
168
|
-
datatype: dt
|
168
|
+
datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined
|
169
169
|
});
|
170
170
|
};
|
171
171
|
});
|
@@ -30,11 +30,11 @@ export var createMatAlgo06xS0S0 = /* #__PURE__ */factory(name, dependencies, _re
|
|
30
30
|
// sparse matrix arrays
|
31
31
|
var avalues = a._values;
|
32
32
|
var asize = a._size;
|
33
|
-
var adt = a._datatype;
|
33
|
+
var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();
|
34
34
|
// sparse matrix arrays
|
35
35
|
var bvalues = b._values;
|
36
36
|
var bsize = b._size;
|
37
|
-
var bdt = b._datatype;
|
37
|
+
var bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType();
|
38
38
|
|
39
39
|
// validate dimensions
|
40
40
|
if (asize.length !== bsize.length) {
|
@@ -60,7 +60,7 @@ export var createMatAlgo06xS0S0 = /* #__PURE__ */factory(name, dependencies, _re
|
|
60
60
|
var cf = callback;
|
61
61
|
|
62
62
|
// process data types
|
63
|
-
if (typeof adt === 'string' && adt === bdt) {
|
63
|
+
if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') {
|
64
64
|
// datatype
|
65
65
|
dt = adt;
|
66
66
|
// find signature that matches (dt, dt)
|
@@ -147,7 +147,7 @@ export var createMatAlgo06xS0S0 = /* #__PURE__ */factory(name, dependencies, _re
|
|
147
147
|
index: cindex,
|
148
148
|
ptr: cptr,
|
149
149
|
size: [rows, columns],
|
150
|
-
datatype: dt
|
150
|
+
datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined
|
151
151
|
});
|
152
152
|
};
|
153
153
|
});
|