mathjs 11.5.0 → 11.6.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 (199) hide show
  1. package/HISTORY.md +39 -0
  2. package/NOTICE +1 -1
  3. package/README.md +2 -2
  4. package/bin/cli.js +1 -1
  5. package/lib/browser/math.js +1 -1
  6. package/lib/browser/math.js.LICENSE.txt +3 -3
  7. package/lib/browser/math.js.map +1 -1
  8. package/lib/cjs/entry/dependenciesAny/dependenciesAdd.generated.js +2 -0
  9. package/lib/cjs/entry/dependenciesAny/dependenciesAnd.generated.js +2 -0
  10. package/lib/cjs/entry/dependenciesAny/dependenciesAtan2.generated.js +2 -0
  11. package/lib/cjs/entry/dependenciesAny/dependenciesBitAnd.generated.js +2 -0
  12. package/lib/cjs/entry/dependenciesAny/dependenciesBitOr.generated.js +2 -0
  13. package/lib/cjs/entry/dependenciesAny/dependenciesBitXor.generated.js +2 -0
  14. package/lib/cjs/entry/dependenciesAny/dependenciesCompare.generated.js +2 -0
  15. package/lib/cjs/entry/dependenciesAny/dependenciesCompareText.generated.js +2 -0
  16. package/lib/cjs/entry/dependenciesAny/dependenciesDotDivide.generated.js +2 -0
  17. package/lib/cjs/entry/dependenciesAny/dependenciesDotMultiply.generated.js +2 -0
  18. package/lib/cjs/entry/dependenciesAny/dependenciesDotPow.generated.js +2 -0
  19. package/lib/cjs/entry/dependenciesAny/dependenciesEqual.generated.js +2 -0
  20. package/lib/cjs/entry/dependenciesAny/dependenciesFft.generated.js +10 -0
  21. package/lib/cjs/entry/dependenciesAny/dependenciesGcd.generated.js +2 -0
  22. package/lib/cjs/entry/dependenciesAny/dependenciesLarger.generated.js +2 -0
  23. package/lib/cjs/entry/dependenciesAny/dependenciesLargerEq.generated.js +2 -0
  24. package/lib/cjs/entry/dependenciesAny/dependenciesLcm.generated.js +2 -0
  25. package/lib/cjs/entry/dependenciesAny/dependenciesLeftShift.generated.js +2 -0
  26. package/lib/cjs/entry/dependenciesAny/dependenciesMod.generated.js +2 -0
  27. package/lib/cjs/entry/dependenciesAny/dependenciesNthRoot.generated.js +2 -0
  28. package/lib/cjs/entry/dependenciesAny/dependenciesOr.generated.js +2 -0
  29. package/lib/cjs/entry/dependenciesAny/dependenciesRightArithShift.generated.js +2 -0
  30. package/lib/cjs/entry/dependenciesAny/dependenciesRightLogShift.generated.js +2 -0
  31. package/lib/cjs/entry/dependenciesAny/dependenciesSimplifyConstant.generated.js +0 -2
  32. package/lib/cjs/entry/dependenciesAny/dependenciesSmaller.generated.js +2 -0
  33. package/lib/cjs/entry/dependenciesAny/dependenciesSmallerEq.generated.js +2 -0
  34. package/lib/cjs/entry/dependenciesAny/dependenciesSubtract.generated.js +2 -0
  35. package/lib/cjs/entry/dependenciesAny/dependenciesTo.generated.js +2 -0
  36. package/lib/cjs/entry/dependenciesAny/dependenciesUnequal.generated.js +2 -0
  37. package/lib/cjs/entry/dependenciesAny/dependenciesXor.generated.js +2 -0
  38. package/lib/cjs/entry/dependenciesNumber/dependenciesSimplifyConstant.generated.js +0 -2
  39. package/lib/cjs/entry/impureFunctionsAny.generated.js +102 -103
  40. package/lib/cjs/entry/impureFunctionsNumber.generated.js +41 -42
  41. package/lib/cjs/entry/pureFunctionsAny.generated.js +405 -372
  42. package/lib/cjs/expression/embeddedDocs/function/arithmetic/invmod.js +1 -1
  43. package/lib/cjs/expression/embeddedDocs/function/arithmetic/pow.js +1 -1
  44. package/lib/cjs/expression/embeddedDocs/function/matrix/matrixFromColumns.js +1 -1
  45. package/lib/cjs/expression/embeddedDocs/function/matrix/matrixFromFunction.js +1 -1
  46. package/lib/cjs/expression/embeddedDocs/function/matrix/matrixFromRows.js +1 -1
  47. package/lib/cjs/expression/embeddedDocs/function/matrix/rotate.js +1 -1
  48. package/lib/cjs/expression/embeddedDocs/function/matrix/sort.js +1 -1
  49. package/lib/cjs/expression/embeddedDocs/function/probability/lgamma.js +1 -1
  50. package/lib/cjs/expression/embeddedDocs/function/statistics/max.js +1 -1
  51. package/lib/cjs/expression/embeddedDocs/function/statistics/mean.js +1 -1
  52. package/lib/cjs/expression/embeddedDocs/function/statistics/min.js +1 -1
  53. package/lib/cjs/expression/embeddedDocs/function/statistics/std.js +1 -1
  54. package/lib/cjs/expression/embeddedDocs/function/statistics/sum.js +1 -1
  55. package/lib/cjs/expression/embeddedDocs/function/statistics/variance.js +1 -1
  56. package/lib/cjs/function/algebra/simplifyConstant.js +1 -2
  57. package/lib/cjs/function/arithmetic/add.js +38 -37
  58. package/lib/cjs/function/arithmetic/dotDivide.js +5 -3
  59. package/lib/cjs/function/arithmetic/dotMultiply.js +5 -3
  60. package/lib/cjs/function/arithmetic/dotPow.js +5 -3
  61. package/lib/cjs/function/arithmetic/gcd.js +5 -3
  62. package/lib/cjs/function/arithmetic/lcm.js +5 -3
  63. package/lib/cjs/function/arithmetic/mod.js +5 -3
  64. package/lib/cjs/function/arithmetic/nthRoot.js +5 -3
  65. package/lib/cjs/function/arithmetic/subtract.js +5 -3
  66. package/lib/cjs/function/bitwise/bitAnd.js +5 -3
  67. package/lib/cjs/function/bitwise/bitOr.js +5 -3
  68. package/lib/cjs/function/bitwise/bitXor.js +5 -3
  69. package/lib/cjs/function/bitwise/leftShift.js +5 -3
  70. package/lib/cjs/function/bitwise/rightArithShift.js +5 -3
  71. package/lib/cjs/function/bitwise/rightLogShift.js +5 -3
  72. package/lib/cjs/function/geometry/distance.js +3 -3
  73. package/lib/cjs/function/logical/and.js +5 -3
  74. package/lib/cjs/function/logical/or.js +5 -3
  75. package/lib/cjs/function/logical/xor.js +5 -3
  76. package/lib/cjs/function/matrix/column.js +3 -1
  77. package/lib/cjs/function/matrix/fft.js +43 -4
  78. package/lib/cjs/function/matrix/getMatrixDataType.js +1 -1
  79. package/lib/cjs/function/matrix/row.js +3 -1
  80. package/lib/cjs/function/matrix/subset.js +1 -1
  81. package/lib/cjs/function/relational/compare.js +5 -3
  82. package/lib/cjs/function/relational/compareText.js +5 -3
  83. package/lib/cjs/function/relational/equal.js +5 -3
  84. package/lib/cjs/function/relational/larger.js +5 -3
  85. package/lib/cjs/function/relational/largerEq.js +5 -3
  86. package/lib/cjs/function/relational/smaller.js +5 -3
  87. package/lib/cjs/function/relational/smallerEq.js +5 -3
  88. package/lib/cjs/function/relational/unequal.js +5 -3
  89. package/lib/cjs/function/statistics/max.js +3 -3
  90. package/lib/cjs/function/statistics/mean.js +2 -2
  91. package/lib/cjs/function/statistics/min.js +2 -2
  92. package/lib/cjs/function/statistics/mode.js +1 -1
  93. package/lib/cjs/function/statistics/prod.js +1 -1
  94. package/lib/cjs/function/statistics/quantileSeq.js +5 -4
  95. package/lib/cjs/function/statistics/sum.js +3 -2
  96. package/lib/cjs/function/statistics/variance.js +1 -1
  97. package/lib/cjs/function/trigonometry/atan2.js +5 -3
  98. package/lib/cjs/function/unit/to.js +8 -6
  99. package/lib/cjs/header.js +3 -3
  100. package/lib/cjs/type/matrix/utils/broadcast.js +84 -0
  101. package/lib/cjs/type/matrix/utils/matrixAlgorithmSuite.js +27 -20
  102. package/lib/cjs/version.js +1 -1
  103. package/lib/esm/entry/dependenciesAny/dependenciesAdd.generated.js +2 -0
  104. package/lib/esm/entry/dependenciesAny/dependenciesAnd.generated.js +2 -0
  105. package/lib/esm/entry/dependenciesAny/dependenciesAtan2.generated.js +2 -0
  106. package/lib/esm/entry/dependenciesAny/dependenciesBitAnd.generated.js +2 -0
  107. package/lib/esm/entry/dependenciesAny/dependenciesBitOr.generated.js +2 -0
  108. package/lib/esm/entry/dependenciesAny/dependenciesBitXor.generated.js +2 -0
  109. package/lib/esm/entry/dependenciesAny/dependenciesCompare.generated.js +2 -0
  110. package/lib/esm/entry/dependenciesAny/dependenciesCompareText.generated.js +2 -0
  111. package/lib/esm/entry/dependenciesAny/dependenciesDotDivide.generated.js +2 -0
  112. package/lib/esm/entry/dependenciesAny/dependenciesDotMultiply.generated.js +2 -0
  113. package/lib/esm/entry/dependenciesAny/dependenciesDotPow.generated.js +2 -0
  114. package/lib/esm/entry/dependenciesAny/dependenciesEqual.generated.js +2 -0
  115. package/lib/esm/entry/dependenciesAny/dependenciesFft.generated.js +10 -0
  116. package/lib/esm/entry/dependenciesAny/dependenciesGcd.generated.js +2 -0
  117. package/lib/esm/entry/dependenciesAny/dependenciesLarger.generated.js +2 -0
  118. package/lib/esm/entry/dependenciesAny/dependenciesLargerEq.generated.js +2 -0
  119. package/lib/esm/entry/dependenciesAny/dependenciesLcm.generated.js +2 -0
  120. package/lib/esm/entry/dependenciesAny/dependenciesLeftShift.generated.js +2 -0
  121. package/lib/esm/entry/dependenciesAny/dependenciesMod.generated.js +2 -0
  122. package/lib/esm/entry/dependenciesAny/dependenciesNthRoot.generated.js +2 -0
  123. package/lib/esm/entry/dependenciesAny/dependenciesOr.generated.js +2 -0
  124. package/lib/esm/entry/dependenciesAny/dependenciesRightArithShift.generated.js +2 -0
  125. package/lib/esm/entry/dependenciesAny/dependenciesRightLogShift.generated.js +2 -0
  126. package/lib/esm/entry/dependenciesAny/dependenciesSimplifyConstant.generated.js +0 -2
  127. package/lib/esm/entry/dependenciesAny/dependenciesSmaller.generated.js +2 -0
  128. package/lib/esm/entry/dependenciesAny/dependenciesSmallerEq.generated.js +2 -0
  129. package/lib/esm/entry/dependenciesAny/dependenciesSubtract.generated.js +2 -0
  130. package/lib/esm/entry/dependenciesAny/dependenciesTo.generated.js +2 -0
  131. package/lib/esm/entry/dependenciesAny/dependenciesUnequal.generated.js +2 -0
  132. package/lib/esm/entry/dependenciesAny/dependenciesXor.generated.js +2 -0
  133. package/lib/esm/entry/dependenciesNumber/dependenciesSimplifyConstant.generated.js +0 -2
  134. package/lib/esm/entry/impureFunctionsAny.generated.js +100 -101
  135. package/lib/esm/entry/impureFunctionsNumber.generated.js +38 -39
  136. package/lib/esm/entry/pureFunctionsAny.generated.js +332 -299
  137. package/lib/esm/expression/embeddedDocs/function/arithmetic/invmod.js +1 -1
  138. package/lib/esm/expression/embeddedDocs/function/arithmetic/pow.js +1 -1
  139. package/lib/esm/expression/embeddedDocs/function/matrix/matrixFromColumns.js +1 -1
  140. package/lib/esm/expression/embeddedDocs/function/matrix/matrixFromFunction.js +1 -1
  141. package/lib/esm/expression/embeddedDocs/function/matrix/matrixFromRows.js +1 -1
  142. package/lib/esm/expression/embeddedDocs/function/matrix/rotate.js +1 -1
  143. package/lib/esm/expression/embeddedDocs/function/matrix/sort.js +1 -1
  144. package/lib/esm/expression/embeddedDocs/function/probability/lgamma.js +1 -1
  145. package/lib/esm/expression/embeddedDocs/function/statistics/max.js +1 -1
  146. package/lib/esm/expression/embeddedDocs/function/statistics/mean.js +1 -1
  147. package/lib/esm/expression/embeddedDocs/function/statistics/min.js +1 -1
  148. package/lib/esm/expression/embeddedDocs/function/statistics/std.js +1 -1
  149. package/lib/esm/expression/embeddedDocs/function/statistics/sum.js +1 -1
  150. package/lib/esm/expression/embeddedDocs/function/statistics/variance.js +1 -1
  151. package/lib/esm/function/algebra/simplifyConstant.js +1 -2
  152. package/lib/esm/function/arithmetic/add.js +38 -37
  153. package/lib/esm/function/arithmetic/dotDivide.js +5 -3
  154. package/lib/esm/function/arithmetic/dotMultiply.js +5 -3
  155. package/lib/esm/function/arithmetic/dotPow.js +5 -3
  156. package/lib/esm/function/arithmetic/gcd.js +5 -3
  157. package/lib/esm/function/arithmetic/lcm.js +5 -3
  158. package/lib/esm/function/arithmetic/mod.js +5 -3
  159. package/lib/esm/function/arithmetic/nthRoot.js +5 -3
  160. package/lib/esm/function/arithmetic/subtract.js +5 -3
  161. package/lib/esm/function/bitwise/bitAnd.js +5 -3
  162. package/lib/esm/function/bitwise/bitOr.js +5 -3
  163. package/lib/esm/function/bitwise/bitXor.js +5 -3
  164. package/lib/esm/function/bitwise/leftShift.js +5 -3
  165. package/lib/esm/function/bitwise/rightArithShift.js +5 -3
  166. package/lib/esm/function/bitwise/rightLogShift.js +5 -3
  167. package/lib/esm/function/geometry/distance.js +3 -3
  168. package/lib/esm/function/logical/and.js +5 -3
  169. package/lib/esm/function/logical/or.js +5 -3
  170. package/lib/esm/function/logical/xor.js +5 -3
  171. package/lib/esm/function/matrix/column.js +3 -1
  172. package/lib/esm/function/matrix/fft.js +37 -4
  173. package/lib/esm/function/matrix/getMatrixDataType.js +1 -1
  174. package/lib/esm/function/matrix/row.js +3 -1
  175. package/lib/esm/function/matrix/subset.js +1 -1
  176. package/lib/esm/function/relational/compare.js +5 -3
  177. package/lib/esm/function/relational/compareText.js +5 -3
  178. package/lib/esm/function/relational/equal.js +5 -3
  179. package/lib/esm/function/relational/larger.js +5 -3
  180. package/lib/esm/function/relational/largerEq.js +5 -3
  181. package/lib/esm/function/relational/smaller.js +5 -3
  182. package/lib/esm/function/relational/smallerEq.js +5 -3
  183. package/lib/esm/function/relational/unequal.js +5 -3
  184. package/lib/esm/function/statistics/max.js +3 -3
  185. package/lib/esm/function/statistics/mean.js +2 -2
  186. package/lib/esm/function/statistics/min.js +2 -2
  187. package/lib/esm/function/statistics/mode.js +1 -1
  188. package/lib/esm/function/statistics/prod.js +1 -1
  189. package/lib/esm/function/statistics/quantileSeq.js +5 -4
  190. package/lib/esm/function/statistics/sum.js +3 -2
  191. package/lib/esm/function/statistics/variance.js +1 -1
  192. package/lib/esm/function/trigonometry/atan2.js +5 -3
  193. package/lib/esm/function/unit/to.js +8 -6
  194. package/lib/esm/header.js +1 -1
  195. package/lib/esm/type/matrix/utils/broadcast.js +75 -0
  196. package/lib/esm/type/matrix/utils/matrixAlgorithmSuite.js +25 -20
  197. package/lib/esm/version.js +1 -1
  198. package/package.json +21 -23
  199. package/types/index.d.ts +70 -13
@@ -1,15 +1,17 @@
1
1
  import { factory } from '../../utils/factory.js';
2
2
  import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
3
3
  var name = 'to';
4
- var dependencies = ['typed', 'matrix'];
4
+ var dependencies = ['typed', 'matrix', 'concat'];
5
5
  export var createTo = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed,
8
- matrix
8
+ matrix,
9
+ concat
9
10
  } = _ref;
10
11
  var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
11
12
  typed,
12
- matrix
13
+ matrix,
14
+ concat
13
15
  });
14
16
 
15
17
  /**
@@ -23,9 +25,9 @@ export var createTo = /* #__PURE__ */factory(name, dependencies, _ref => {
23
25
  *
24
26
  * Examples:
25
27
  *
26
- * math.to(math.unit('2 inch'), 'cm') // returns Unit 5.08 cm
27
- * math.to(math.unit('2 inch'), math.unit(null, 'cm')) // returns Unit 5.08 cm
28
- * math.to(math.unit(16, 'bytes'), 'bits') // returns Unit 128 bits
28
+ * math.to(math.unit('2 inch'), 'cm') // returns Unit 5.08 cm
29
+ * math.to(math.unit('2 inch'), math.unit('cm')) // returns Unit 5.08 cm
30
+ * math.to(math.unit(16, 'bytes'), 'bits') // returns Unit 128 bits
29
31
  *
30
32
  * See also:
31
33
  *
package/lib/esm/header.js CHANGED
@@ -10,7 +10,7 @@
10
10
  * @date @@date
11
11
  *
12
12
  * @license
13
- * Copyright (C) 2013-2022 Jos de Jong <wjosdejong@gmail.com>
13
+ * Copyright (C) 2013-2023 Jos de Jong <wjosdejong@gmail.com>
14
14
  *
15
15
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
16
16
  * use this file except in compliance with the License. You may obtain a copy
@@ -0,0 +1,75 @@
1
+ import { factory } from '../../../utils/factory.js';
2
+ var name = 'broadcast';
3
+ var dependancies = ['concat'];
4
+ export var createBroadcast = /* #__PURE__ */factory(name, dependancies, _ref => {
5
+ var {
6
+ concat
7
+ } = _ref;
8
+ /**
9
+ * Broadcasts two matrices, and return both in an array
10
+ * It checks if it's possible with broadcasting rules
11
+ *
12
+ * @param {Matrix} A First Matrix
13
+ * @param {Matrix} B Second Matrix
14
+ *
15
+ * @return {Matrix[]} [ broadcastedA, broadcastedB ]
16
+ */
17
+ return function (A, B) {
18
+ var N = Math.max(A._size.length, B._size.length); // max number of dims
19
+ if (A._size.length === B._size.length) {
20
+ if (A._size.every((dim, i) => dim === B._size[i])) {
21
+ // If matrices have the same size return them
22
+ return [A, B];
23
+ }
24
+ }
25
+ var sizeA = _padLeft(A._size, N, 0); // pad to the left to align dimensions to the right
26
+ var sizeB = _padLeft(B._size, N, 0); // pad to the left to align dimensions to the right
27
+
28
+ // calculate the max dimensions
29
+ var sizeMax = [];
30
+ for (var dim = 0; dim < N; dim++) {
31
+ sizeMax[dim] = Math.max(sizeA[dim], sizeB[dim]);
32
+ }
33
+
34
+ // check if the broadcasting rules applyes for both matrices
35
+ for (var _dim = 0; _dim < N; _dim++) {
36
+ _checkRules(sizeA, sizeMax, _dim);
37
+ _checkRules(sizeB, sizeMax, _dim);
38
+ }
39
+
40
+ // reshape A or B if needed to make them ready for concat
41
+ var AA = A.clone();
42
+ var BB = B.clone();
43
+ if (AA._size.length < N) {
44
+ AA.reshape(_padLeft(AA._size, N, 1));
45
+ } else if (BB._size.length < N) {
46
+ BB.reshape(_padLeft(BB._size, N, 1));
47
+ }
48
+
49
+ // stretches the matrices on each dimension to make them the same size
50
+ for (var _dim2 = 0; _dim2 < N; _dim2++) {
51
+ if (AA._size[_dim2] < sizeMax[_dim2]) {
52
+ AA = _stretch(AA, sizeMax[_dim2], _dim2);
53
+ }
54
+ if (BB._size[_dim2] < sizeMax[_dim2]) {
55
+ BB = _stretch(BB, sizeMax[_dim2], _dim2);
56
+ }
57
+ }
58
+
59
+ // return the array with the two broadcasted matrices
60
+ return [AA, BB];
61
+ };
62
+ function _padLeft(shape, N, filler) {
63
+ // pads an array of dimensions with numbers to the left, unitl the number of dimensions is N
64
+ return [...Array(N - shape.length).fill(filler), ...shape];
65
+ }
66
+ function _stretch(arrayToStretch, sizeToStretch, dimToStretch) {
67
+ // stretches a matrix up to a certain size in a certain dimension
68
+ return concat(...Array(sizeToStretch).fill(arrayToStretch), dimToStretch);
69
+ }
70
+ function _checkRules(shape, sizeMax, dim) {
71
+ if (shape[dim] < sizeMax[dim] & shape[dim] > 1) {
72
+ throw new Error("shape missmatch: missmatch is found in arg with shape (".concat(shape, ") not possible to broadcast dimension ").concat(dim, " with size ").concat(shape[dim], " to size ").concat(sizeMax[dim]));
73
+ }
74
+ }
75
+ });
@@ -2,12 +2,14 @@ import { factory } from '../../../utils/factory.js';
2
2
  import { extend } from '../../../utils/object.js';
3
3
  import { createMatAlgo13xDD } from './matAlgo13xDD.js';
4
4
  import { createMatAlgo14xDs } from './matAlgo14xDs.js';
5
+ import { createBroadcast } from './broadcast.js';
5
6
  var name = 'matrixAlgorithmSuite';
6
- var dependencies = ['typed', 'matrix'];
7
+ var dependencies = ['typed', 'matrix', 'concat'];
7
8
  export var createMatrixAlgorithmSuite = /* #__PURE__ */factory(name, dependencies, _ref => {
8
9
  var {
9
10
  typed,
10
- matrix
11
+ matrix,
12
+ concat
11
13
  } = _ref;
12
14
  var matAlgo13xDD = createMatAlgo13xDD({
13
15
  typed
@@ -15,6 +17,9 @@ export var createMatrixAlgorithmSuite = /* #__PURE__ */factory(name, dependencie
15
17
  var matAlgo14xDs = createMatAlgo14xDs({
16
18
  typed
17
19
  });
20
+ var broadcast = createBroadcast({
21
+ concat
22
+ });
18
23
 
19
24
  /**
20
25
  * Return a signatures object with the usual boilerplate of
@@ -40,60 +45,60 @@ export var createMatrixAlgorithmSuite = /* #__PURE__ */factory(name, dependencie
40
45
  if (elop) {
41
46
  // First the dense ones
42
47
  matrixSignatures = {
43
- 'DenseMatrix, DenseMatrix': (x, y) => matAlgo13xDD(x, y, elop),
44
- 'Array, Array': (x, y) => matAlgo13xDD(matrix(x), matrix(y), elop).valueOf(),
45
- 'Array, DenseMatrix': (x, y) => matAlgo13xDD(matrix(x), y, elop),
46
- 'DenseMatrix, Array': (x, y) => matAlgo13xDD(x, matrix(y), elop)
48
+ 'DenseMatrix, DenseMatrix': (x, y) => matAlgo13xDD(...broadcast(x, y), elop),
49
+ 'Array, Array': (x, y) => matAlgo13xDD(...broadcast(matrix(x), matrix(y)), elop).valueOf(),
50
+ 'Array, DenseMatrix': (x, y) => matAlgo13xDD(...broadcast(matrix(x), y), elop),
51
+ 'DenseMatrix, Array': (x, y) => matAlgo13xDD(...broadcast(x, matrix(y)), elop)
47
52
  };
48
53
  // Now incorporate sparse matrices
49
54
  if (options.SS) {
50
- matrixSignatures['SparseMatrix, SparseMatrix'] = (x, y) => options.SS(x, y, elop, false);
55
+ matrixSignatures['SparseMatrix, SparseMatrix'] = (x, y) => options.SS(...broadcast(x, y), elop, false);
51
56
  }
52
57
  if (options.DS) {
53
- matrixSignatures['DenseMatrix, SparseMatrix'] = (x, y) => options.DS(x, y, elop, false);
54
- matrixSignatures['Array, SparseMatrix'] = (x, y) => options.DS(matrix(x), y, elop, false);
58
+ matrixSignatures['DenseMatrix, SparseMatrix'] = (x, y) => options.DS(...broadcast(x, y), elop, false);
59
+ matrixSignatures['Array, SparseMatrix'] = (x, y) => options.DS(...broadcast(matrix(x), y), elop, false);
55
60
  }
56
61
  if (SD) {
57
- matrixSignatures['SparseMatrix, DenseMatrix'] = (x, y) => SD(y, x, elop, true);
58
- matrixSignatures['SparseMatrix, Array'] = (x, y) => SD(matrix(y), x, elop, true);
62
+ matrixSignatures['SparseMatrix, DenseMatrix'] = (x, y) => SD(...broadcast(y, x), elop, true);
63
+ matrixSignatures['SparseMatrix, Array'] = (x, y) => SD(...broadcast(matrix(y), x), elop, true);
59
64
  }
60
65
  } else {
61
66
  // No elop, use this
62
67
  // First the dense ones
63
68
  matrixSignatures = {
64
69
  'DenseMatrix, DenseMatrix': typed.referToSelf(self => (x, y) => {
65
- return matAlgo13xDD(x, y, self);
70
+ return matAlgo13xDD(...broadcast(x, y), self);
66
71
  }),
67
72
  'Array, Array': typed.referToSelf(self => (x, y) => {
68
- return matAlgo13xDD(matrix(x), matrix(y), self).valueOf();
73
+ return matAlgo13xDD(...broadcast(matrix(x), matrix(y)), self).valueOf();
69
74
  }),
70
75
  'Array, DenseMatrix': typed.referToSelf(self => (x, y) => {
71
- return matAlgo13xDD(matrix(x), y, self);
76
+ return matAlgo13xDD(...broadcast(matrix(x), y), self);
72
77
  }),
73
78
  'DenseMatrix, Array': typed.referToSelf(self => (x, y) => {
74
- return matAlgo13xDD(x, matrix(y), self);
79
+ return matAlgo13xDD(...broadcast(x, matrix(y)), self);
75
80
  })
76
81
  };
77
82
  // Now incorporate sparse matrices
78
83
  if (options.SS) {
79
84
  matrixSignatures['SparseMatrix, SparseMatrix'] = typed.referToSelf(self => (x, y) => {
80
- return options.SS(x, y, self, false);
85
+ return options.SS(...broadcast(x, y), self, false);
81
86
  });
82
87
  }
83
88
  if (options.DS) {
84
89
  matrixSignatures['DenseMatrix, SparseMatrix'] = typed.referToSelf(self => (x, y) => {
85
- return options.DS(x, y, self, false);
90
+ return options.DS(...broadcast(x, y), self, false);
86
91
  });
87
92
  matrixSignatures['Array, SparseMatrix'] = typed.referToSelf(self => (x, y) => {
88
- return options.DS(matrix(x), y, self, false);
93
+ return options.DS(...broadcast(matrix(x), y), self, false);
89
94
  });
90
95
  }
91
96
  if (SD) {
92
97
  matrixSignatures['SparseMatrix, DenseMatrix'] = typed.referToSelf(self => (x, y) => {
93
- return SD(y, x, self, true);
98
+ return SD(...broadcast(y, x), self, true);
94
99
  });
95
100
  matrixSignatures['SparseMatrix, Array'] = typed.referToSelf(self => (x, y) => {
96
- return SD(matrix(y), x, self, true);
101
+ return SD(...broadcast(matrix(y), x), self, true);
97
102
  });
98
103
  }
99
104
  }
@@ -1,3 +1,3 @@
1
- export var version = '11.5.0';
1
+ export var version = '11.6.0';
2
2
  // Note: This file is automatically generated when building math.js.
3
3
  // Changes made in this file will be overwritten.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mathjs",
3
- "version": "11.5.0",
3
+ "version": "11.6.0",
4
4
  "description": "Math.js is an extensive math library for JavaScript and Node.js. It features a flexible expression parser with support for symbolic computation, comes with a large set of built-in functions and constants, and offers an integrated solution to work with different data types like numbers, big numbers, complex numbers, fractions, units, and matrices.",
5
5
  "author": "Jos de Jong <wjosdejong@gmail.com> (https://github.com/josdejong)",
6
6
  "homepage": "https://mathjs.org",
@@ -25,7 +25,7 @@
25
25
  "unit"
26
26
  ],
27
27
  "dependencies": {
28
- "@babel/runtime": "^7.20.6",
28
+ "@babel/runtime": "^7.21.0",
29
29
  "complex.js": "^2.1.1",
30
30
  "decimal.js": "^10.4.3",
31
31
  "escape-latex": "^1.2.0",
@@ -36,48 +36,47 @@
36
36
  "typed-function": "^4.1.0"
37
37
  },
38
38
  "devDependencies": {
39
- "@babel/core": "7.20.5",
39
+ "@babel/core": "7.21.0",
40
40
  "@babel/plugin-transform-object-assign": "7.18.6",
41
- "@babel/plugin-transform-runtime": "7.19.6",
41
+ "@babel/plugin-transform-runtime": "7.21.0",
42
42
  "@babel/preset-env": "7.20.2",
43
- "@babel/register": "7.18.9",
43
+ "@babel/register": "7.21.0",
44
44
  "@types/assert": "1.5.6",
45
45
  "@types/mocha": "10.0.1",
46
- "@typescript-eslint/eslint-plugin": "5.45.0",
47
- "@typescript-eslint/parser": "5.45.0",
46
+ "@typescript-eslint/eslint-plugin": "5.53.0",
47
+ "@typescript-eslint/parser": "5.53.0",
48
48
  "assert": "2.0.0",
49
- "babel-loader": "9.1.0",
49
+ "babel-loader": "9.1.2",
50
50
  "benchmark": "2.1.4",
51
+ "c8": "7.13.0",
51
52
  "codecov": "3.8.3",
52
- "core-js": "3.26.1",
53
+ "core-js": "3.28.0",
53
54
  "del": "6.1.1",
54
55
  "dtslint": "4.2.1",
55
- "eslint": "8.29.0",
56
- "eslint-config-prettier": "8.5.0",
56
+ "eslint": "8.34.0",
57
+ "eslint-config-prettier": "8.6.0",
57
58
  "eslint-config-standard": "17.0.0",
58
- "eslint-plugin-import": "2.26.0",
59
+ "eslint-plugin-import": "2.27.5",
59
60
  "eslint-plugin-mocha": "10.1.0",
60
- "eslint-plugin-n": "15.6.0",
61
+ "eslint-plugin-n": "15.6.1",
61
62
  "eslint-plugin-prettier": "4.2.1",
62
63
  "eslint-plugin-promise": "6.1.1",
63
64
  "expect-type": "0.15.0",
64
65
  "expr-eval": "2.0.2",
65
66
  "fancy-log": "2.0.0",
66
- "glob": "8.0.3",
67
+ "glob": "8.1.0",
67
68
  "gulp": "4.0.2",
68
69
  "gulp-babel": "8.0.0",
69
70
  "handlebars": "4.7.7",
70
- "istanbul": "0.4.5",
71
- "jsep": "1.3.7",
71
+ "jsep": "1.3.8",
72
72
  "karma": "6.4.1",
73
73
  "karma-browserstack-launcher": "1.6.0",
74
74
  "karma-firefox-launcher": "2.1.2",
75
75
  "karma-mocha": "2.0.1",
76
76
  "karma-mocha-reporter": "2.2.5",
77
77
  "karma-webpack": "5.0.0",
78
- "math-expression-evaluator": "1.4.0",
79
- "mkdirp": "1.0.4",
80
- "mocha": "10.1.0",
78
+ "mkdirp": "2.1.3",
79
+ "mocha": "10.2.0",
81
80
  "mocha-junit-reporter": "2.2.0",
82
81
  "ndarray": "1.0.19",
83
82
  "ndarray-determinant": "1.0.0",
@@ -85,13 +84,12 @@
85
84
  "ndarray-ops": "1.2.2",
86
85
  "ndarray-pack": "1.2.1",
87
86
  "numericjs": "1.2.6",
88
- "nyc": "15.1.0",
89
87
  "pad-right": "0.2.2",
90
- "prettier": "2.8.0",
88
+ "prettier": "2.8.4",
91
89
  "process": "0.11.10",
92
90
  "sylvester": "0.0.21",
93
91
  "ts-node": "10.9.1",
94
- "typescript": "4.9.3",
92
+ "typescript": "4.9.5",
95
93
  "webpack": "5.75.0",
96
94
  "zeros": "1.0.0"
97
95
  },
@@ -163,7 +161,7 @@
163
161
  "test:browser": "karma start test/browser-test-config/local-karma.js",
164
162
  "test:browserstack": "karma start test/browser-test-config/browserstack-karma.js",
165
163
  "test:types": " tsc -p ./tsconfig.json && node --loader ts-node/esm ./test/typescript-tests/testTypes.ts",
166
- "coverage": "nyc --reporter=lcov --reporter=text-summary mocha test/unit-tests && echo \"\nDetailed coverage report is available at ./coverage/lcov-report/index.html\"",
164
+ "coverage": "c8 --reporter=lcov --reporter=text-summary mocha test/unit-tests && echo \"\nDetailed coverage report is available at ./coverage/lcov-report/index.html\"",
167
165
  "prepublishOnly": "npm run test:all && npm run lint",
168
166
  "update-authors": "node ./tools/update-authors.js"
169
167
  },
package/types/index.d.ts CHANGED
@@ -622,7 +622,7 @@ declare namespace math {
622
622
  * complex number
623
623
  * @returns Returns a complex value
624
624
  */
625
- complex(arg?: Complex | string | PolarCoordinates): Complex
625
+ complex(arg?: MathNumericType | string | PolarCoordinates): Complex
626
626
  complex(arg?: MathCollection): MathCollection
627
627
  /**
628
628
  * @param re Argument specifying the real part of the complex number
@@ -776,7 +776,7 @@ declare namespace math {
776
776
  * @param unit The unit to be created
777
777
  * @returns The created unit
778
778
  */
779
- unit(value: number | BigNumber, unit: string): Unit
779
+ unit(value: number | BigNumber | Fraction | Complex, unit: string): Unit
780
780
  unit(value: MathCollection, unit: string): Unit[]
781
781
 
782
782
  /*************************************************************************
@@ -899,6 +899,8 @@ declare namespace math {
899
899
  threshold?: number
900
900
  ): MathArray
901
901
 
902
+ lusolve(A: LUDecomposition, b: Matrix | MathArray): Matrix
903
+
902
904
  /* Finds the roots of a polynomial of degree three or less. Coefficients are given constant first
903
905
  * followed by linear and higher powers in order; coefficients beyond the degree of the polynomial
904
906
  * need not be specified.
@@ -1147,7 +1149,11 @@ declare namespace math {
1147
1149
  * @param y Denominator
1148
1150
  * @returns Quotient, x ./ y
1149
1151
  */
1150
- dotDivide(x: MathType, y: MathType): MathType
1152
+ dotDivide<T extends MathCollection>(x: T, y: MathType): T
1153
+ dotDivide<T extends MathCollection>(x: MathType, y: T): T
1154
+ dotDivide(x: Unit, y: MathType): Unit
1155
+ dotDivide(x: MathType, y: Unit): Unit
1156
+ dotDivide(x: MathNumericType, y: MathNumericType): MathNumericType
1151
1157
 
1152
1158
  /**
1153
1159
  * Multiply two matrices element wise. The function accepts both
@@ -1156,7 +1162,11 @@ declare namespace math {
1156
1162
  * @param y Right hand value
1157
1163
  * @returns Multiplication of x and y
1158
1164
  */
1159
- dotMultiply(x: MathType, y: MathType): MathType
1165
+ dotMultiply<T extends MathCollection>(x: T, y: MathType): T
1166
+ dotMultiply<T extends MathCollection>(x: MathType, y: T): T
1167
+ dotMultiply(x: Unit, y: MathType): Unit
1168
+ dotMultiply(x: MathType, y: Unit): Unit
1169
+ dotMultiply(x: MathNumericType, y: MathNumericType): MathNumericType
1160
1170
 
1161
1171
  /**
1162
1172
  * Calculates the power of x to y element wise.
@@ -1164,7 +1174,7 @@ declare namespace math {
1164
1174
  * @param y The exponent
1165
1175
  * @returns The value of x to the power y
1166
1176
  */
1167
- dotPow(x: MathType, y: MathType): MathType
1177
+ dotPow<T extends MathType>(x: T, y: MathType): T
1168
1178
 
1169
1179
  /**
1170
1180
  * Calculate the exponent of a value. For matrices, the function is
@@ -1666,7 +1676,7 @@ declare namespace math {
1666
1676
  w: MathCollection,
1667
1677
  x: MathCollection,
1668
1678
  y: MathCollection,
1669
- z: MathCollection
1679
+ z?: MathCollection
1670
1680
  ): MathArray
1671
1681
 
1672
1682
  /*************************************************************************
@@ -2072,6 +2082,19 @@ declare namespace math {
2072
2082
  defaultValue?: number | string
2073
2083
  ): T
2074
2084
 
2085
+ /**
2086
+ * Return a Rotation Matrix for a given angle in radians
2087
+ * @param {number | BigNumber | Complex | Unit} theta Rotation angle
2088
+ * @param {Array | Matrix} [v] Rotation axis
2089
+ * @param {string} [format] Result Matrix storage format. Default value: 'dense'.
2090
+ * @return {Matrix} Rotation Matrix
2091
+ */
2092
+ rotationMatrix<T extends MathCollection>(
2093
+ theta?: number | BigNumber | Complex | Unit,
2094
+ axis?: T,
2095
+ format?: 'sparse' | 'dense'
2096
+ ): T
2097
+
2075
2098
  /**
2076
2099
  * Return a row from a Matrix.
2077
2100
  * @param value An array or matrix
@@ -3771,12 +3794,12 @@ declare namespace math {
3771
3794
  size(): number[]
3772
3795
  map(
3773
3796
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
3774
- callback: (a: any, b: number, c: Matrix) => any,
3797
+ callback: (a: any, b: number[], c: Matrix) => any,
3775
3798
  skipZeros?: boolean
3776
3799
  ): Matrix
3777
3800
  forEach(
3778
3801
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
3779
- callback: (a: any, b: number, c: Matrix) => void,
3802
+ callback: (a: any, b: number[], c: Matrix) => void,
3780
3803
  skipZeros?: boolean
3781
3804
  ): void
3782
3805
  toArray(): MathArray
@@ -4374,7 +4397,7 @@ declare namespace math {
4374
4397
  unit(this: MathJsChain<string>, unit?: string): MathJsChain<Unit>
4375
4398
  unit(this: MathJsChain<Unit>, unit?: string): MathJsChain<Unit>
4376
4399
  unit(
4377
- this: MathJsChain<number | BigNumber>,
4400
+ this: MathJsChain<number | BigNumber | Fraction | Complex>,
4378
4401
  unit?: string
4379
4402
  ): MathJsChain<Unit>
4380
4403
  unit(this: MathJsChain<MathCollection>, unit?: string): MathJsChain<Unit[]>
@@ -4504,6 +4527,11 @@ declare namespace math {
4504
4527
  threshold?: number
4505
4528
  ): MathJsChain<MathArray>
4506
4529
 
4530
+ lusolve(
4531
+ this: MathJsChain<LUDecomposition>,
4532
+ b: Matrix | MathArray
4533
+ ): MathJsChain<Matrix>
4534
+
4507
4535
  /**
4508
4536
  * Calculate the Matrix QR decomposition. Matrix A is decomposed in two
4509
4537
  * matrices (Q, R) where Q is an orthogonal matrix and R is an upper
@@ -4724,20 +4752,49 @@ declare namespace math {
4724
4752
  * and scalar values.
4725
4753
  * @param y Denominator
4726
4754
  */
4727
- dotDivide(this: MathJsChain<MathType>, y: MathType): MathJsChain<MathType>
4755
+ dotDivide<T extends MathCollection>(
4756
+ this: MathJsChain<T>,
4757
+ y: MathType
4758
+ ): MathJsChain<T>
4759
+ dotDivide<T extends MathCollection>(
4760
+ this: MathJsChain<MathType>,
4761
+ y: T
4762
+ ): MathJsChain<T>
4763
+ dotDivide(this: MathJsChain<Unit>, y: MathType): MathJsChain<Unit>
4764
+ dotDivide(this: MathJsChain<MathType>, y: Unit): MathJsChain<Unit>
4765
+ dotDivide(
4766
+ this: MathJsChain<MathNumericType>,
4767
+ y: MathNumericType
4768
+ ): MathJsChain<MathNumericType>
4728
4769
 
4729
4770
  /**
4730
4771
  * Multiply two matrices element wise. The function accepts both
4731
4772
  * matrices and scalar values.
4732
4773
  * @param y Right hand value
4733
4774
  */
4734
- dotMultiply(this: MathJsChain<MathType>, y: MathType): MathJsChain<MathType>
4775
+ dotMultiply<T extends MathCollection>(
4776
+ this: MathJsChain<T>,
4777
+ y: MathType
4778
+ ): MathJsChain<T>
4779
+ dotMultiply<T extends MathCollection>(
4780
+ this: MathJsChain<MathType>,
4781
+ y: T
4782
+ ): MathJsChain<T>
4783
+ dotMultiply(this: MathJsChain<Unit>, y: MathType): MathJsChain<Unit>
4784
+ dotMultiply(this: MathJsChain<MathType>, y: Unit): MathJsChain<Unit>
4785
+ dotMultiply(
4786
+ this: MathJsChain<MathNumericType>,
4787
+ y: MathNumericType
4788
+ ): MathJsChain<MathNumericType>
4735
4789
 
4736
4790
  /**
4737
4791
  * Calculates the power of x to y element wise.
4738
4792
  * @param y The exponent
4739
4793
  */
4740
- dotPow(this: MathJsChain<MathType>, y: MathType): MathJsChain<MathType>
4794
+ dotPow<T extends MathType>(
4795
+ this: MathJsChain<T>,
4796
+ y: MathType
4797
+ ): MathJsChain<T>
4741
4798
 
4742
4799
  /**
4743
4800
  * Calculate the exponent of a value. For matrices, the function is
@@ -5213,7 +5270,7 @@ declare namespace math {
5213
5270
  this: MathJsChain<MathCollection>,
5214
5271
  x: MathCollection,
5215
5272
  y: MathCollection,
5216
- z: MathCollection
5273
+ z?: MathCollection
5217
5274
  ): MathJsChain<MathArray>
5218
5275
 
5219
5276
  /*************************************************************************