dotMultiply.js (3622B)
1 import { factory } from '../../utils/factory.js'; 2 import { createAlgorithm02 } from '../../type/matrix/utils/algorithm02.js'; 3 import { createAlgorithm09 } from '../../type/matrix/utils/algorithm09.js'; 4 import { createAlgorithm11 } from '../../type/matrix/utils/algorithm11.js'; 5 import { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js'; 6 import { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js'; 7 var name = 'dotMultiply'; 8 var dependencies = ['typed', 'matrix', 'equalScalar', 'multiplyScalar']; 9 export var createDotMultiply = /* #__PURE__ */factory(name, dependencies, _ref => { 10 var { 11 typed, 12 matrix, 13 equalScalar, 14 multiplyScalar 15 } = _ref; 16 var algorithm02 = createAlgorithm02({ 17 typed, 18 equalScalar 19 }); 20 var algorithm09 = createAlgorithm09({ 21 typed, 22 equalScalar 23 }); 24 var algorithm11 = createAlgorithm11({ 25 typed, 26 equalScalar 27 }); 28 var algorithm13 = createAlgorithm13({ 29 typed 30 }); 31 var algorithm14 = createAlgorithm14({ 32 typed 33 }); 34 /** 35 * Multiply two matrices element wise. The function accepts both matrices and 36 * scalar values. 37 * 38 * Syntax: 39 * 40 * math.dotMultiply(x, y) 41 * 42 * Examples: 43 * 44 * math.dotMultiply(2, 4) // returns 8 45 * 46 * a = [[9, 5], [6, 1]] 47 * b = [[3, 2], [5, 2]] 48 * 49 * math.dotMultiply(a, b) // returns [[27, 10], [30, 2]] 50 * math.multiply(a, b) // returns [[52, 28], [23, 14]] 51 * 52 * See also: 53 * 54 * multiply, divide, dotDivide 55 * 56 * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} x Left hand value 57 * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} y Right hand value 58 * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} Multiplication of `x` and `y` 59 */ 60 61 return typed(name, { 62 'any, any': multiplyScalar, 63 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) { 64 return algorithm09(x, y, multiplyScalar, false); 65 }, 66 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) { 67 return algorithm02(y, x, multiplyScalar, true); 68 }, 69 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) { 70 return algorithm02(x, y, multiplyScalar, false); 71 }, 72 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) { 73 return algorithm13(x, y, multiplyScalar); 74 }, 75 'Array, Array': function ArrayArray(x, y) { 76 // use matrix implementation 77 return this(matrix(x), matrix(y)).valueOf(); 78 }, 79 'Array, Matrix': function ArrayMatrix(x, y) { 80 // use matrix implementation 81 return this(matrix(x), y); 82 }, 83 'Matrix, Array': function MatrixArray(x, y) { 84 // use matrix implementation 85 return this(x, matrix(y)); 86 }, 87 'SparseMatrix, any': function SparseMatrixAny(x, y) { 88 return algorithm11(x, y, multiplyScalar, false); 89 }, 90 'DenseMatrix, any': function DenseMatrixAny(x, y) { 91 return algorithm14(x, y, multiplyScalar, false); 92 }, 93 'any, SparseMatrix': function anySparseMatrix(x, y) { 94 return algorithm11(y, x, multiplyScalar, true); 95 }, 96 'any, DenseMatrix': function anyDenseMatrix(x, y) { 97 return algorithm14(y, x, multiplyScalar, true); 98 }, 99 'Array, any': function ArrayAny(x, y) { 100 // use matrix implementation 101 return algorithm14(matrix(x), y, multiplyScalar, false).valueOf(); 102 }, 103 'any, Array': function anyArray(x, y) { 104 // use matrix implementation 105 return algorithm14(matrix(y), x, multiplyScalar, true).valueOf(); 106 } 107 }); 108 });