mathjs 12.3.1 → 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 +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
@@ -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
|
});
|
@@ -24,10 +24,10 @@ export var createMatAlgo07xSSf = /* #__PURE__ */factory(name, dependencies, _ref
|
|
24
24
|
return function matAlgo07xSSf(a, b, callback) {
|
25
25
|
// sparse matrix arrays
|
26
26
|
var asize = a._size;
|
27
|
-
var adt = a._datatype;
|
27
|
+
var adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();
|
28
28
|
// sparse matrix arrays
|
29
29
|
var bsize = b._size;
|
30
|
-
var bdt = b._datatype;
|
30
|
+
var bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType();
|
31
31
|
|
32
32
|
// validate dimensions
|
33
33
|
if (asize.length !== bsize.length) {
|
@@ -51,7 +51,7 @@ export var createMatAlgo07xSSf = /* #__PURE__ */factory(name, dependencies, _ref
|
|
51
51
|
var cf = callback;
|
52
52
|
|
53
53
|
// process data types
|
54
|
-
if (typeof adt === 'string' && adt === bdt) {
|
54
|
+
if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') {
|
55
55
|
// datatype
|
56
56
|
dt = adt;
|
57
57
|
// convert 0 to the same datatype
|
@@ -99,7 +99,7 @@ export var createMatAlgo07xSSf = /* #__PURE__ */factory(name, dependencies, _ref
|
|
99
99
|
return new DenseMatrix({
|
100
100
|
data: cdata,
|
101
101
|
size: [rows, columns],
|
102
|
-
datatype: dt
|
102
|
+
datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined
|
103
103
|
});
|
104
104
|
};
|
105
105
|
function _scatter(m, j, w, x, mark) {
|
@@ -31,13 +31,13 @@ export var createMatAlgo08xS0Sid = /* #__PURE__ */factory(name, dependencies, _r
|
|
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) {
|
@@ -68,7 +68,7 @@ export var createMatAlgo08xS0Sid = /* #__PURE__ */factory(name, dependencies, _r
|
|
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
|
// find signature that matches (dt, dt)
|
@@ -148,7 +148,7 @@ export var createMatAlgo08xS0Sid = /* #__PURE__ */factory(name, dependencies, _r
|
|
148
148
|
index: cindex,
|
149
149
|
ptr: cptr,
|
150
150
|
size: [rows, columns],
|
151
|
-
datatype: dt
|
151
|
+
datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined
|
152
152
|
});
|
153
153
|
};
|
154
154
|
});
|
@@ -31,13 +31,13 @@ export var createMatAlgo09xS0Sf = /* #__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 createMatAlgo09xS0Sf = /* #__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)
|
@@ -136,7 +136,7 @@ export var createMatAlgo09xS0Sf = /* #__PURE__ */factory(name, dependencies, _re
|
|
136
136
|
index: cindex,
|
137
137
|
ptr: cptr,
|
138
138
|
size: [rows, columns],
|
139
|
-
datatype: dt
|
139
|
+
datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined
|
140
140
|
});
|
141
141
|
};
|
142
142
|
});
|