add.js 2.4 KB

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