mathjs 12.3.2 → 12.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/HISTORY.md +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
@@ -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,
|
@@ -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
|
}
|
@@ -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
|
});
|
@@ -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
|
});
|