diff --git a/AUTHORS b/AUTHORS index 8df842e40a..0fbe5b0230 100644 --- a/AUTHORS +++ b/AUTHORS @@ -239,6 +239,7 @@ Brooks Smith Alex Edgcomb S.Y. Lee Hudsxn <143907857+Hudsxn@users.noreply.github.com> +RandomGamingDev Rich Martinez # Generated by tools/update-authors.js diff --git a/src/function/arithmetic/multiply.js b/src/function/arithmetic/multiply.js index daf14bc46d..19bd3b7eef 100644 --- a/src/function/arithmetic/multiply.js +++ b/src/function/arithmetic/multiply.js @@ -110,11 +110,11 @@ export const createMultiply = /* #__PURE__ */ factory(name, dependencies, ({ typ // a dense const adata = a._data const asize = a._size - const adt = a._datatype + const adt = a._datatype || a.getDataType() // b dense const bdata = b._data const bsize = b._size - const bdt = b._datatype + const bdt = b._datatype || b.getDataType() // rows & columns const alength = asize[0] const bcolumns = bsize[1] @@ -127,7 +127,7 @@ export const createMultiply = /* #__PURE__ */ factory(name, dependencies, ({ typ let mf = multiplyScalar // process data types - if (adt && bdt && adt === bdt && typeof adt === 'string') { + if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') { // datatype dt = adt // find signatures that matches (dt, dt) @@ -154,7 +154,7 @@ export const createMultiply = /* #__PURE__ */ factory(name, dependencies, ({ typ return a.createDenseMatrix({ data: c, size: [bcolumns], - datatype: dt + datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined }) } @@ -198,10 +198,10 @@ export const createMultiply = /* #__PURE__ */ factory(name, dependencies, ({ typ // a dense const adata = a._data const asize = a._size - const adt = a._datatype + const adt = a._datatype || a.getDataType() // b dense const bdata = b._data - const bdt = b._datatype + const bdt = b._datatype || b.getDataType() // rows & columns const arows = asize[0] const acolumns = asize[1] @@ -214,7 +214,7 @@ export const createMultiply = /* #__PURE__ */ factory(name, dependencies, ({ typ let mf = multiplyScalar // process data types - if (adt && bdt && adt === bdt && typeof adt === 'string') { + if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') { // datatype dt = adt // find signatures that matches (dt, dt) @@ -243,7 +243,7 @@ export const createMultiply = /* #__PURE__ */ factory(name, dependencies, ({ typ return a.createDenseMatrix({ data: c, size: [arows], - datatype: dt + datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined }) } @@ -255,15 +255,15 @@ export const createMultiply = /* #__PURE__ */ factory(name, dependencies, ({ typ * * @return {Matrix} DenseMatrix (MxC) */ - function _multiplyDenseMatrixDenseMatrix (a, b) { + function _multiplyDenseMatrixDenseMatrix (a, b) { // getDataType() // a dense const adata = a._data const asize = a._size - const adt = a._datatype + const adt = a._datatype || a.getDataType() // b dense const bdata = b._data const bsize = b._size - const bdt = b._datatype + const bdt = b._datatype || b.getDataType() // rows & columns const arows = asize[0] const acolumns = asize[1] @@ -277,7 +277,7 @@ export const createMultiply = /* #__PURE__ */ factory(name, dependencies, ({ typ let mf = multiplyScalar // process data types - if (adt && bdt && adt === bdt && typeof adt === 'string') { + if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed' && adt !== 'mixed') { // datatype dt = adt // find signatures that matches (dt, dt) @@ -311,7 +311,7 @@ export const createMultiply = /* #__PURE__ */ factory(name, dependencies, ({ typ return a.createDenseMatrix({ data: c, size: [arows, bcolumns], - datatype: dt + datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined }) } @@ -327,13 +327,13 @@ export const createMultiply = /* #__PURE__ */ factory(name, dependencies, ({ typ // a dense const adata = a._data const asize = a._size - const adt = a._datatype + const adt = a._datatype || a.getDataType() // b sparse const bvalues = b._values const bindex = b._index const bptr = b._ptr const bsize = b._size - const bdt = b._datatype + const bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType() // validate b matrix if (!bvalues) { throw new Error('Cannot multiply Dense Matrix times Pattern only Matrix') } // rows & columns @@ -352,7 +352,7 @@ export const createMultiply = /* #__PURE__ */ factory(name, dependencies, ({ typ let zero = 0 // process data types - if (adt && bdt && adt === bdt && typeof adt === 'string') { + if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') { // datatype dt = adt // find signatures that matches (dt, dt) @@ -373,7 +373,7 @@ export const createMultiply = /* #__PURE__ */ factory(name, dependencies, ({ typ index: cindex, ptr: cptr, size: [arows, bcolumns], - datatype: dt + datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined }) // loop b columns @@ -437,12 +437,12 @@ export const createMultiply = /* #__PURE__ */ factory(name, dependencies, ({ typ const avalues = a._values const aindex = a._index const aptr = a._ptr - const adt = a._datatype + const adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType() // validate a matrix if (!avalues) { throw new Error('Cannot multiply Pattern only Matrix times Dense Matrix') } // b dense const bdata = b._data - const bdt = b._datatype + const bdt = b._datatype || b.getDataType() // rows & columns const arows = a._size[0] const brows = b._size[0] @@ -463,7 +463,7 @@ export const createMultiply = /* #__PURE__ */ factory(name, dependencies, ({ typ let zero = 0 // process data types - if (adt && bdt && adt === bdt && typeof adt === 'string') { + if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') { // datatype dt = adt // find signatures that matches (dt, dt) @@ -516,13 +516,13 @@ export const createMultiply = /* #__PURE__ */ factory(name, dependencies, ({ typ // update ptr cptr[1] = cindex.length - // return sparse matrix + // matrix to return return a.createSparseMatrix({ values: cvalues, index: cindex, ptr: cptr, size: [arows, 1], - datatype: dt + datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined }) } @@ -539,12 +539,12 @@ export const createMultiply = /* #__PURE__ */ factory(name, dependencies, ({ typ const avalues = a._values const aindex = a._index const aptr = a._ptr - const adt = a._datatype + const adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType() // validate a matrix if (!avalues) { throw new Error('Cannot multiply Pattern only Matrix times Dense Matrix') } // b dense const bdata = b._data - const bdt = b._datatype + const bdt = b._datatype || b.getDataType() // rows & columns const arows = a._size[0] const brows = b._size[0] @@ -562,7 +562,7 @@ export const createMultiply = /* #__PURE__ */ factory(name, dependencies, ({ typ let zero = 0 // process data types - if (adt && bdt && adt === bdt && typeof adt === 'string') { + if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') { // datatype dt = adt // find signatures that matches (dt, dt) @@ -583,7 +583,7 @@ export const createMultiply = /* #__PURE__ */ factory(name, dependencies, ({ typ index: cindex, ptr: cptr, size: [arows, bcolumns], - datatype: dt + datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined }) // workspace @@ -650,12 +650,12 @@ export const createMultiply = /* #__PURE__ */ factory(name, dependencies, ({ typ const avalues = a._values const aindex = a._index const aptr = a._ptr - const adt = a._datatype + const adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType() // b sparse const bvalues = b._values const bindex = b._index const bptr = b._ptr - const bdt = b._datatype + const bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType() // rows & columns const arows = a._size[0] @@ -671,7 +671,7 @@ export const createMultiply = /* #__PURE__ */ factory(name, dependencies, ({ typ let mf = multiplyScalar // process data types - if (adt && bdt && adt === bdt && typeof adt === 'string') { + if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') { // datatype dt = adt // find signatures that matches (dt, dt) @@ -689,7 +689,7 @@ export const createMultiply = /* #__PURE__ */ factory(name, dependencies, ({ typ index: cindex, ptr: cptr, size: [arows, bcolumns], - datatype: dt + datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined }) // workspace diff --git a/src/function/matrix/dot.js b/src/function/matrix/dot.js index bf47bb8b76..3f69ca575a 100644 --- a/src/function/matrix/dot.js +++ b/src/function/matrix/dot.js @@ -64,10 +64,10 @@ export const createDot = /* #__PURE__ */ factory(name, dependencies, ({ typed, a const N = _validateDim(a, b) const adata = isMatrix(a) ? a._data : a - const adt = isMatrix(a) ? a._datatype : undefined + const adt = isMatrix(a) ? a._datatype || a.getDataType() : undefined const bdata = isMatrix(b) ? b._data : b - const bdt = isMatrix(b) ? b._datatype : undefined + const bdt = isMatrix(b) ? b._datatype || b.getDataType() : undefined // are these 2-dimensional column vectors? (as opposed to 1-dimensional vectors) const aIsColumn = _size(a).length === 2 @@ -77,7 +77,7 @@ export const createDot = /* #__PURE__ */ factory(name, dependencies, ({ typed, a let mul = multiplyScalar // process data types - if (adt && bdt && adt === bdt && typeof adt === 'string') { + if (adt && bdt && adt === bdt && typeof adt === 'string' && adt !== 'mixed') { const dt = adt // find signatures that matches (dt, dt) add = typed.find(addScalar, [dt, dt]) diff --git a/src/type/matrix/utils/matAlgo01xDSid.js b/src/type/matrix/utils/matAlgo01xDSid.js index ba413a2b7e..7efb6b72de 100644 --- a/src/type/matrix/utils/matAlgo01xDSid.js +++ b/src/type/matrix/utils/matAlgo01xDSid.js @@ -28,13 +28,13 @@ export const createMatAlgo01xDSid = /* #__PURE__ */ factory(name, dependencies, // dense matrix arrays const adata = denseMatrix._data const asize = denseMatrix._size - const adt = denseMatrix._datatype + const adt = denseMatrix._datatype || denseMatrix.getDataType() // sparse matrix arrays const bvalues = sparseMatrix._values const bindex = sparseMatrix._index const bptr = sparseMatrix._ptr const bsize = sparseMatrix._size - const bdt = sparseMatrix._datatype + const bdt = sparseMatrix._datatype || sparseMatrix._data === undefined ? sparseMatrix._datatype : sparseMatrix.getDataType() // validate dimensions if (asize.length !== bsize.length) { throw new DimensionError(asize.length, bsize.length) } @@ -50,7 +50,7 @@ export const createMatAlgo01xDSid = /* #__PURE__ */ factory(name, dependencies, const columns = asize[1] // process data types - const dt = typeof adt === 'string' && adt === bdt ? adt : undefined + const dt = typeof adt === 'string' && adt !== 'mixed' && adt === bdt ? adt : undefined // callback function const cf = dt ? typed.find(callback, [dt, dt]) : callback @@ -97,7 +97,7 @@ export const createMatAlgo01xDSid = /* #__PURE__ */ factory(name, dependencies, return denseMatrix.createDenseMatrix({ data: cdata, size: [rows, columns], - datatype: dt + datatype: adt === denseMatrix._datatype && bdt === sparseMatrix._datatype ? dt : undefined }) } }) diff --git a/src/type/matrix/utils/matAlgo02xDS0.js b/src/type/matrix/utils/matAlgo02xDS0.js index f11dad48a7..0c3d5b8f6a 100644 --- a/src/type/matrix/utils/matAlgo02xDS0.js +++ b/src/type/matrix/utils/matAlgo02xDS0.js @@ -28,13 +28,13 @@ export const createMatAlgo02xDS0 = /* #__PURE__ */ factory(name, dependencies, ( // dense matrix arrays const adata = denseMatrix._data const asize = denseMatrix._size - const adt = denseMatrix._datatype + const adt = denseMatrix._datatype || denseMatrix.getDataType() // sparse matrix arrays const bvalues = sparseMatrix._values const bindex = sparseMatrix._index const bptr = sparseMatrix._ptr const bsize = sparseMatrix._size - const bdt = sparseMatrix._datatype + const bdt = sparseMatrix._datatype || sparseMatrix._data === undefined ? sparseMatrix._datatype : sparseMatrix.getDataType() // validate dimensions if (asize.length !== bsize.length) { throw new DimensionError(asize.length, bsize.length) } @@ -59,7 +59,7 @@ export const createMatAlgo02xDS0 = /* #__PURE__ */ factory(name, dependencies, ( let cf = callback // process data types - if (typeof adt === 'string' && adt === bdt) { + if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') { // datatype dt = adt // find signature that matches (dt, dt) @@ -102,7 +102,7 @@ export const createMatAlgo02xDS0 = /* #__PURE__ */ factory(name, dependencies, ( index: cindex, ptr: cptr, size: [rows, columns], - datatype: dt + datatype: adt === denseMatrix._datatype && bdt === sparseMatrix._datatype ? dt : undefined }) } }) diff --git a/src/type/matrix/utils/matAlgo03xDSf.js b/src/type/matrix/utils/matAlgo03xDSf.js index c3d4965270..bed698bf59 100644 --- a/src/type/matrix/utils/matAlgo03xDSf.js +++ b/src/type/matrix/utils/matAlgo03xDSf.js @@ -28,13 +28,13 @@ export const createMatAlgo03xDSf = /* #__PURE__ */ factory(name, dependencies, ( // dense matrix arrays const adata = denseMatrix._data const asize = denseMatrix._size - const adt = denseMatrix._datatype + const adt = denseMatrix._datatype || denseMatrix.getDataType() // sparse matrix arrays const bvalues = sparseMatrix._values const bindex = sparseMatrix._index const bptr = sparseMatrix._ptr const bsize = sparseMatrix._size - const bdt = sparseMatrix._datatype + const bdt = sparseMatrix._datatype || sparseMatrix._data === undefined ? sparseMatrix._datatype : sparseMatrix.getDataType() // validate dimensions if (asize.length !== bsize.length) { throw new DimensionError(asize.length, bsize.length) } @@ -57,7 +57,7 @@ export const createMatAlgo03xDSf = /* #__PURE__ */ factory(name, dependencies, ( let cf = callback // process data types - if (typeof adt === 'string' && adt === bdt) { + if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') { // datatype dt = adt // convert 0 to the same datatype @@ -109,7 +109,7 @@ export const createMatAlgo03xDSf = /* #__PURE__ */ factory(name, dependencies, ( return denseMatrix.createDenseMatrix({ data: cdata, size: [rows, columns], - datatype: dt + datatype: adt === denseMatrix._datatype && bdt === sparseMatrix._datatype ? dt : undefined }) } }) diff --git a/src/type/matrix/utils/matAlgo04xSidSid.js b/src/type/matrix/utils/matAlgo04xSidSid.js index a98e4ba91a..2d377f2e88 100644 --- a/src/type/matrix/utils/matAlgo04xSidSid.js +++ b/src/type/matrix/utils/matAlgo04xSidSid.js @@ -29,13 +29,13 @@ export const createMatAlgo04xSidSid = /* #__PURE__ */ factory(name, dependencies const aindex = a._index const aptr = a._ptr const asize = a._size - const adt = a._datatype + const adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType() // sparse matrix arrays const bvalues = b._values const bindex = b._index const bptr = b._ptr const bsize = b._size - const bdt = b._datatype + const bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType() // validate dimensions if (asize.length !== bsize.length) { throw new DimensionError(asize.length, bsize.length) } @@ -57,7 +57,7 @@ export const createMatAlgo04xSidSid = /* #__PURE__ */ factory(name, dependencies let cf = callback // process data types - if (typeof adt === 'string' && adt === bdt) { + if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') { // datatype dt = adt // find signature that matches (dt, dt) @@ -163,7 +163,7 @@ export const createMatAlgo04xSidSid = /* #__PURE__ */ factory(name, dependencies index: cindex, ptr: cptr, size: [rows, columns], - datatype: dt + datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined }) } }) diff --git a/src/type/matrix/utils/matAlgo05xSfSf.js b/src/type/matrix/utils/matAlgo05xSfSf.js index 26af3300fc..f504de9de1 100644 --- a/src/type/matrix/utils/matAlgo05xSfSf.js +++ b/src/type/matrix/utils/matAlgo05xSfSf.js @@ -29,13 +29,13 @@ export const createMatAlgo05xSfSf = /* #__PURE__ */ factory(name, dependencies, const aindex = a._index const aptr = a._ptr const asize = a._size - const adt = a._datatype + const adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType() // sparse matrix arrays const bvalues = b._values const bindex = b._index const bptr = b._ptr const bsize = b._size - const bdt = b._datatype + const bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType() // validate dimensions if (asize.length !== bsize.length) { throw new DimensionError(asize.length, bsize.length) } @@ -57,7 +57,7 @@ export const createMatAlgo05xSfSf = /* #__PURE__ */ factory(name, dependencies, let cf = callback // process data types - if (typeof adt === 'string' && adt === bdt) { + if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') { // datatype dt = adt // find signature that matches (dt, dt) @@ -155,7 +155,7 @@ export const createMatAlgo05xSfSf = /* #__PURE__ */ factory(name, dependencies, index: cindex, ptr: cptr, size: [rows, columns], - datatype: dt + datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined }) } }) diff --git a/src/type/matrix/utils/matAlgo06xS0S0.js b/src/type/matrix/utils/matAlgo06xS0S0.js index c07613e9fc..c2497e4ed0 100644 --- a/src/type/matrix/utils/matAlgo06xS0S0.js +++ b/src/type/matrix/utils/matAlgo06xS0S0.js @@ -28,11 +28,11 @@ export const createMatAlgo06xS0S0 = /* #__PURE__ */ factory(name, dependencies, // sparse matrix arrays const avalues = a._values const asize = a._size - const adt = a._datatype + const adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType() // sparse matrix arrays const bvalues = b._values const bsize = b._size - const bdt = b._datatype + const bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType() // validate dimensions if (asize.length !== bsize.length) { throw new DimensionError(asize.length, bsize.length) } @@ -54,7 +54,7 @@ export const createMatAlgo06xS0S0 = /* #__PURE__ */ factory(name, dependencies, let cf = callback // process data types - if (typeof adt === 'string' && adt === bdt) { + if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') { // datatype dt = adt // find signature that matches (dt, dt) @@ -141,7 +141,7 @@ export const createMatAlgo06xS0S0 = /* #__PURE__ */ factory(name, dependencies, index: cindex, ptr: cptr, size: [rows, columns], - datatype: dt + datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined }) } }) diff --git a/src/type/matrix/utils/matAlgo07xSSf.js b/src/type/matrix/utils/matAlgo07xSSf.js index a2e588f6eb..2e42cb0c03 100644 --- a/src/type/matrix/utils/matAlgo07xSSf.js +++ b/src/type/matrix/utils/matAlgo07xSSf.js @@ -22,10 +22,10 @@ export const createMatAlgo07xSSf = /* #__PURE__ */ factory(name, dependencies, ( return function matAlgo07xSSf (a, b, callback) { // sparse matrix arrays const asize = a._size - const adt = a._datatype + const adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType() // sparse matrix arrays const bsize = b._size - const bdt = b._datatype + const bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType() // validate dimensions if (asize.length !== bsize.length) { throw new DimensionError(asize.length, bsize.length) } @@ -45,7 +45,7 @@ export const createMatAlgo07xSSf = /* #__PURE__ */ factory(name, dependencies, ( let cf = callback // process data types - if (typeof adt === 'string' && adt === bdt) { + if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') { // datatype dt = adt // convert 0 to the same datatype @@ -91,7 +91,7 @@ export const createMatAlgo07xSSf = /* #__PURE__ */ factory(name, dependencies, ( return new DenseMatrix({ data: cdata, size: [rows, columns], - datatype: dt + datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined }) } diff --git a/src/type/matrix/utils/matAlgo08xS0Sid.js b/src/type/matrix/utils/matAlgo08xS0Sid.js index b42f9bd185..210752e8c5 100644 --- a/src/type/matrix/utils/matAlgo08xS0Sid.js +++ b/src/type/matrix/utils/matAlgo08xS0Sid.js @@ -29,13 +29,13 @@ export const createMatAlgo08xS0Sid = /* #__PURE__ */ factory(name, dependencies, const aindex = a._index const aptr = a._ptr const asize = a._size - const adt = a._datatype + const adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType() // sparse matrix arrays const bvalues = b._values const bindex = b._index const bptr = b._ptr const bsize = b._size - const bdt = b._datatype + const bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType() // validate dimensions if (asize.length !== bsize.length) { throw new DimensionError(asize.length, bsize.length) } @@ -60,7 +60,7 @@ export const createMatAlgo08xS0Sid = /* #__PURE__ */ factory(name, dependencies, let cf = callback // process data types - if (typeof adt === 'string' && adt === bdt) { + if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') { // datatype dt = adt // find signature that matches (dt, dt) @@ -140,7 +140,7 @@ export const createMatAlgo08xS0Sid = /* #__PURE__ */ factory(name, dependencies, index: cindex, ptr: cptr, size: [rows, columns], - datatype: dt + datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined }) } }) diff --git a/src/type/matrix/utils/matAlgo09xS0Sf.js b/src/type/matrix/utils/matAlgo09xS0Sf.js index 1cee1af7ed..643bc32de0 100644 --- a/src/type/matrix/utils/matAlgo09xS0Sf.js +++ b/src/type/matrix/utils/matAlgo09xS0Sf.js @@ -29,13 +29,13 @@ export const createMatAlgo09xS0Sf = /* #__PURE__ */ factory(name, dependencies, const aindex = a._index const aptr = a._ptr const asize = a._size - const adt = a._datatype + const adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType() // sparse matrix arrays const bvalues = b._values const bindex = b._index const bptr = b._ptr const bsize = b._size - const bdt = b._datatype + const bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType() // validate dimensions if (asize.length !== bsize.length) { throw new DimensionError(asize.length, bsize.length) } @@ -57,7 +57,7 @@ export const createMatAlgo09xS0Sf = /* #__PURE__ */ factory(name, dependencies, let cf = callback // process data types - if (typeof adt === 'string' && adt === bdt) { + if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') { // datatype dt = adt // find signature that matches (dt, dt) @@ -130,7 +130,7 @@ export const createMatAlgo09xS0Sf = /* #__PURE__ */ factory(name, dependencies, index: cindex, ptr: cptr, size: [rows, columns], - datatype: dt + datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined }) } })