add.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import { factory } from '../../utils/factory.js';
  2. import { createMatAlgo01xDSid } from '../../type/matrix/utils/matAlgo01xDSid.js';
  3. import { createMatAlgo04xSidSid } from '../../type/matrix/utils/matAlgo04xSidSid.js';
  4. import { createMatAlgo10xSids } from '../../type/matrix/utils/matAlgo10xSids.js';
  5. import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
  6. var name = 'add';
  7. var dependencies = ['typed', 'matrix', 'addScalar', 'equalScalar', 'DenseMatrix', 'SparseMatrix'];
  8. export var createAdd = /* #__PURE__ */factory(name, dependencies, _ref => {
  9. var {
  10. typed,
  11. matrix,
  12. addScalar,
  13. equalScalar,
  14. DenseMatrix,
  15. SparseMatrix
  16. } = _ref;
  17. var matAlgo01xDSid = createMatAlgo01xDSid({
  18. typed
  19. });
  20. var matAlgo04xSidSid = createMatAlgo04xSidSid({
  21. typed,
  22. equalScalar
  23. });
  24. var matAlgo10xSids = createMatAlgo10xSids({
  25. typed,
  26. DenseMatrix
  27. });
  28. var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
  29. typed,
  30. matrix
  31. });
  32. /**
  33. * Add two or more values, `x + y`.
  34. * For matrices, the function is evaluated element wise.
  35. *
  36. * Syntax:
  37. *
  38. * math.add(x, y)
  39. * math.add(x, y, z, ...)
  40. *
  41. * Examples:
  42. *
  43. * math.add(2, 3) // returns number 5
  44. * math.add(2, 3, 4) // returns number 9
  45. *
  46. * const a = math.complex(2, 3)
  47. * const b = math.complex(-4, 1)
  48. * math.add(a, b) // returns Complex -2 + 4i
  49. *
  50. * math.add([1, 2, 3], 4) // returns Array [5, 6, 7]
  51. *
  52. * const c = math.unit('5 cm')
  53. * const d = math.unit('2.1 mm')
  54. * math.add(c, d) // returns Unit 52.1 mm
  55. *
  56. * math.add("2.3", "4") // returns number 6.3
  57. *
  58. * See also:
  59. *
  60. * subtract, sum
  61. *
  62. * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} x First value to add
  63. * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} y Second value to add
  64. * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} Sum of `x` and `y`
  65. */
  66. return typed(name, {
  67. 'any, any': addScalar,
  68. 'any, any, ...any': typed.referToSelf(self => (x, y, rest) => {
  69. var result = self(x, y);
  70. for (var i = 0; i < rest.length; i++) {
  71. result = self(result, rest[i]);
  72. }
  73. return result;
  74. })
  75. }, matrixAlgorithmSuite({
  76. elop: addScalar,
  77. DS: matAlgo01xDSid,
  78. SS: matAlgo04xSidSid,
  79. Ss: matAlgo10xSids
  80. }));
  81. });