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.
Files changed (45) hide show
  1. package/HISTORY.md +23 -0
  2. package/lib/browser/math.js +1 -1
  3. package/lib/browser/math.js.LICENSE.txt +2 -2
  4. package/lib/browser/math.js.map +1 -1
  5. package/lib/cjs/entry/pureFunctionsAny.generated.js +1 -0
  6. package/lib/cjs/expression/node/OperatorNode.js +2 -1
  7. package/lib/cjs/expression/parse.js +8 -4
  8. package/lib/cjs/expression/transform/utils/compileInlineExpression.js +5 -4
  9. package/lib/cjs/function/arithmetic/multiply.js +30 -29
  10. package/lib/cjs/function/arithmetic/round.js +38 -7
  11. package/lib/cjs/function/matrix/dot.js +3 -3
  12. package/lib/cjs/header.js +2 -2
  13. package/lib/cjs/type/matrix/utils/matAlgo01xDSid.js +4 -4
  14. package/lib/cjs/type/matrix/utils/matAlgo02xDS0.js +4 -4
  15. package/lib/cjs/type/matrix/utils/matAlgo03xDSf.js +4 -4
  16. package/lib/cjs/type/matrix/utils/matAlgo04xSidSid.js +4 -4
  17. package/lib/cjs/type/matrix/utils/matAlgo05xSfSf.js +4 -4
  18. package/lib/cjs/type/matrix/utils/matAlgo06xS0S0.js +4 -4
  19. package/lib/cjs/type/matrix/utils/matAlgo07xSSf.js +4 -4
  20. package/lib/cjs/type/matrix/utils/matAlgo08xS0Sid.js +4 -4
  21. package/lib/cjs/type/matrix/utils/matAlgo09xS0Sf.js +4 -4
  22. package/lib/cjs/utils/map.js +176 -14
  23. package/lib/cjs/utils/scope.js +4 -10
  24. package/lib/cjs/version.js +1 -1
  25. package/lib/esm/entry/pureFunctionsAny.generated.js +1 -0
  26. package/lib/esm/expression/node/OperatorNode.js +2 -1
  27. package/lib/esm/expression/parse.js +8 -4
  28. package/lib/esm/expression/transform/utils/compileInlineExpression.js +5 -4
  29. package/lib/esm/function/arithmetic/multiply.js +30 -29
  30. package/lib/esm/function/arithmetic/round.js +38 -7
  31. package/lib/esm/function/matrix/dot.js +3 -3
  32. package/lib/esm/type/matrix/utils/matAlgo01xDSid.js +4 -4
  33. package/lib/esm/type/matrix/utils/matAlgo02xDS0.js +4 -4
  34. package/lib/esm/type/matrix/utils/matAlgo03xDSf.js +4 -4
  35. package/lib/esm/type/matrix/utils/matAlgo04xSidSid.js +4 -4
  36. package/lib/esm/type/matrix/utils/matAlgo05xSfSf.js +4 -4
  37. package/lib/esm/type/matrix/utils/matAlgo06xS0S0.js +4 -4
  38. package/lib/esm/type/matrix/utils/matAlgo07xSSf.js +4 -4
  39. package/lib/esm/type/matrix/utils/matAlgo08xS0Sid.js +4 -4
  40. package/lib/esm/type/matrix/utils/matAlgo09xS0Sf.js +4 -4
  41. package/lib/esm/utils/map.js +99 -1
  42. package/lib/esm/utils/scope.js +5 -11
  43. package/lib/esm/version.js +1 -1
  44. package/package.json +9 -9
  45. 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
- // return sparse matrix
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: roundNumber,
77
- 'number, number': roundNumber,
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 BigNumber(x).toDecimalPlaces(n.toNumber());
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
- return x.toDecimalPlaces(0);
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
- return x.toDecimalPlaces(n.toNumber());
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
  });