mathjs 7.2.0 → 7.5.1

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 (159) hide show
  1. package/HISTORY.md +34 -0
  2. package/dist/math.js +3421 -2476
  3. package/dist/math.min.js +5 -5
  4. package/dist/math.min.map +1 -1
  5. package/docs/expressions/syntax.md +30 -4
  6. package/docs/reference/functions/bin.md +38 -0
  7. package/docs/reference/functions/ceil.md +10 -1
  8. package/docs/reference/functions/fix.md +10 -2
  9. package/docs/reference/functions/floor.md +12 -3
  10. package/docs/reference/functions/hex.md +38 -0
  11. package/docs/reference/functions/lsolve.md +2 -1
  12. package/docs/reference/functions/lsolveAll.md +45 -0
  13. package/docs/reference/functions/oct.md +38 -0
  14. package/docs/reference/functions/rotationMatrix.md +51 -0
  15. package/docs/reference/functions/round.md +6 -2
  16. package/docs/reference/functions/usolve.md +2 -1
  17. package/docs/reference/functions/usolveAll.md +45 -0
  18. package/docs/reference/functions.md +8 -2
  19. package/es/entry/dependenciesAny/dependenciesBin.generated.js +10 -0
  20. package/es/entry/dependenciesAny/dependenciesCeil.generated.js +4 -0
  21. package/es/entry/dependenciesAny/dependenciesFix.generated.js +2 -0
  22. package/es/entry/dependenciesAny/dependenciesFloor.generated.js +4 -0
  23. package/es/entry/dependenciesAny/dependenciesHex.generated.js +10 -0
  24. package/es/entry/dependenciesAny/dependenciesLsolveAll.generated.js +22 -0
  25. package/es/entry/dependenciesAny/dependenciesOct.generated.js +10 -0
  26. package/es/entry/dependenciesAny/dependenciesRotationMatrix.generated.js +30 -0
  27. package/es/entry/dependenciesAny/dependenciesUsolveAll.generated.js +22 -0
  28. package/es/entry/dependenciesAny.generated.js +6 -0
  29. package/es/entry/impureFunctionsAny.generated.js +63 -57
  30. package/es/entry/pureFunctionsAny.generated.js +323 -277
  31. package/es/expression/embeddedDocs/embeddedDocs.js +12 -0
  32. package/es/expression/embeddedDocs/function/algebra/lsolve.js +2 -2
  33. package/es/expression/embeddedDocs/function/algebra/lsolveAll.js +8 -0
  34. package/es/expression/embeddedDocs/function/algebra/usolve.js +2 -2
  35. package/es/expression/embeddedDocs/function/algebra/usolveAll.js +8 -0
  36. package/es/expression/embeddedDocs/function/matrix/rotationMatrix.js +8 -0
  37. package/es/expression/embeddedDocs/function/utils/bin.js +8 -0
  38. package/es/expression/embeddedDocs/function/utils/hex.js +8 -0
  39. package/es/expression/embeddedDocs/function/utils/oct.js +8 -0
  40. package/es/expression/parse.js +28 -1
  41. package/es/factoriesAny.js +6 -0
  42. package/es/function/algebra/solver/lsolve.js +42 -69
  43. package/es/function/algebra/solver/lsolveAll.js +213 -0
  44. package/es/function/algebra/solver/lusolve.js +12 -27
  45. package/es/function/algebra/solver/usolve.js +41 -64
  46. package/es/function/algebra/solver/usolveAll.js +213 -0
  47. package/es/function/algebra/solver/utils/solveValidation.js +66 -107
  48. package/es/function/arithmetic/ceil.js +88 -4
  49. package/es/function/arithmetic/fix.js +43 -6
  50. package/es/function/arithmetic/floor.js +90 -6
  51. package/es/function/arithmetic/mod.js +10 -1
  52. package/es/function/arithmetic/round.js +6 -2
  53. package/es/function/matrix/rotationMatrix.js +175 -0
  54. package/es/function/matrix/sqrtm.js +4 -0
  55. package/es/function/probability/pickRandom.js +2 -6
  56. package/es/function/statistics/variance.js +4 -4
  57. package/es/function/string/baseUtils.js +36 -0
  58. package/es/function/string/bin.js +23 -0
  59. package/es/function/string/hex.js +23 -0
  60. package/es/function/string/oct.js +23 -0
  61. package/es/type/bignumber/BigNumber.js +4 -1
  62. package/es/type/number.js +10 -0
  63. package/es/utils/object.js +3 -1
  64. package/es/version.js +1 -1
  65. package/examples/advanced/web_server/math_worker.js +1 -1
  66. package/lib/entry/dependenciesAny/dependenciesBin.generated.js +20 -0
  67. package/lib/entry/dependenciesAny/dependenciesCeil.generated.js +6 -0
  68. package/lib/entry/dependenciesAny/dependenciesFix.generated.js +3 -0
  69. package/lib/entry/dependenciesAny/dependenciesFloor.generated.js +6 -0
  70. package/lib/entry/dependenciesAny/dependenciesHex.generated.js +20 -0
  71. package/lib/entry/dependenciesAny/dependenciesLsolveAll.generated.js +38 -0
  72. package/lib/entry/dependenciesAny/dependenciesOct.generated.js +20 -0
  73. package/lib/entry/dependenciesAny/dependenciesRotationMatrix.generated.js +50 -0
  74. package/lib/entry/dependenciesAny/dependenciesUsolveAll.generated.js +38 -0
  75. package/lib/entry/dependenciesAny.generated.js +48 -0
  76. package/lib/entry/impureFunctionsAny.generated.js +65 -59
  77. package/lib/entry/pureFunctionsAny.generated.js +373 -321
  78. package/lib/expression/embeddedDocs/embeddedDocs.js +18 -0
  79. package/lib/expression/embeddedDocs/function/algebra/lsolve.js +2 -2
  80. package/lib/expression/embeddedDocs/function/algebra/lsolveAll.js +15 -0
  81. package/lib/expression/embeddedDocs/function/algebra/usolve.js +2 -2
  82. package/lib/expression/embeddedDocs/function/algebra/usolveAll.js +15 -0
  83. package/lib/expression/embeddedDocs/function/matrix/rotationMatrix.js +15 -0
  84. package/lib/expression/embeddedDocs/function/utils/bin.js +15 -0
  85. package/lib/expression/embeddedDocs/function/utils/hex.js +15 -0
  86. package/lib/expression/embeddedDocs/function/utils/oct.js +15 -0
  87. package/lib/expression/parse.js +28 -1
  88. package/lib/factoriesAny.js +48 -0
  89. package/lib/function/algebra/solver/lsolve.js +42 -69
  90. package/lib/function/algebra/solver/lsolveAll.js +223 -0
  91. package/lib/function/algebra/solver/lusolve.js +12 -27
  92. package/lib/function/algebra/solver/usolve.js +41 -64
  93. package/lib/function/algebra/solver/usolveAll.js +223 -0
  94. package/lib/function/algebra/solver/utils/solveValidation.js +65 -106
  95. package/lib/function/arithmetic/ceil.js +91 -4
  96. package/lib/function/arithmetic/fix.js +44 -6
  97. package/lib/function/arithmetic/floor.js +93 -6
  98. package/lib/function/arithmetic/mod.js +10 -1
  99. package/lib/function/arithmetic/round.js +6 -2
  100. package/lib/function/matrix/rotationMatrix.js +185 -0
  101. package/lib/function/matrix/sqrtm.js +4 -0
  102. package/lib/function/probability/pickRandom.js +3 -7
  103. package/lib/function/statistics/variance.js +4 -4
  104. package/lib/function/string/baseUtils.js +45 -0
  105. package/lib/function/string/bin.js +31 -0
  106. package/lib/function/string/hex.js +31 -0
  107. package/lib/function/string/oct.js +31 -0
  108. package/lib/header.js +2 -2
  109. package/lib/type/bignumber/BigNumber.js +3 -1
  110. package/lib/type/number.js +10 -0
  111. package/lib/utils/object.js +3 -1
  112. package/lib/version.js +1 -1
  113. package/package.json +12 -12
  114. package/src/entry/dependenciesAny/dependenciesBin.generated.js +11 -0
  115. package/src/entry/dependenciesAny/dependenciesCeil.generated.js +4 -0
  116. package/src/entry/dependenciesAny/dependenciesFix.generated.js +2 -0
  117. package/src/entry/dependenciesAny/dependenciesFloor.generated.js +4 -0
  118. package/src/entry/dependenciesAny/dependenciesHex.generated.js +11 -0
  119. package/src/entry/dependenciesAny/dependenciesLsolveAll.generated.js +23 -0
  120. package/src/entry/dependenciesAny/dependenciesOct.generated.js +11 -0
  121. package/src/entry/dependenciesAny/dependenciesRotationMatrix.generated.js +31 -0
  122. package/src/entry/dependenciesAny/dependenciesUsolveAll.generated.js +23 -0
  123. package/src/entry/dependenciesAny.generated.js +6 -0
  124. package/src/entry/impureFunctionsAny.generated.js +104 -92
  125. package/src/entry/pureFunctionsAny.generated.js +94 -82
  126. package/src/expression/embeddedDocs/embeddedDocs.js +12 -0
  127. package/src/expression/embeddedDocs/function/algebra/lsolve.js +2 -2
  128. package/src/expression/embeddedDocs/function/algebra/lsolveAll.js +17 -0
  129. package/src/expression/embeddedDocs/function/algebra/usolve.js +2 -2
  130. package/src/expression/embeddedDocs/function/algebra/usolveAll.js +15 -0
  131. package/src/expression/embeddedDocs/function/matrix/rotationMatrix.js +19 -0
  132. package/src/expression/embeddedDocs/function/utils/bin.js +12 -0
  133. package/src/expression/embeddedDocs/function/utils/hex.js +12 -0
  134. package/src/expression/embeddedDocs/function/utils/oct.js +12 -0
  135. package/src/expression/parse.js +25 -0
  136. package/src/factoriesAny.js +6 -0
  137. package/src/function/algebra/solver/lsolve.js +52 -58
  138. package/src/function/algebra/solver/lsolveAll.js +197 -0
  139. package/src/function/algebra/solver/lusolve.js +9 -19
  140. package/src/function/algebra/solver/usolve.js +52 -55
  141. package/src/function/algebra/solver/usolveAll.js +199 -0
  142. package/src/function/algebra/solver/utils/solveValidation.js +78 -86
  143. package/src/function/arithmetic/ceil.js +63 -3
  144. package/src/function/arithmetic/fix.js +45 -6
  145. package/src/function/arithmetic/floor.js +65 -5
  146. package/src/function/arithmetic/mod.js +8 -1
  147. package/src/function/arithmetic/round.js +6 -2
  148. package/src/function/matrix/rotationMatrix.js +185 -0
  149. package/src/function/matrix/sqrtm.js +4 -0
  150. package/src/function/probability/pickRandom.js +2 -6
  151. package/src/function/statistics/variance.js +4 -4
  152. package/src/function/string/baseUtils.js +29 -0
  153. package/src/function/string/bin.js +23 -0
  154. package/src/function/string/hex.js +23 -0
  155. package/src/function/string/oct.js +24 -0
  156. package/src/type/bignumber/BigNumber.js +2 -1
  157. package/src/type/number.js +9 -1
  158. package/src/utils/object.js +3 -1
  159. package/src/version.js +1 -1
@@ -0,0 +1,175 @@
1
+ import { isBigNumber } from '../../utils/is';
2
+ import { factory } from '../../utils/factory';
3
+ var name = 'rotationMatrix';
4
+ var dependencies = ['typed', 'config', 'multiplyScalar', 'addScalar', 'unaryMinus', 'norm', 'matrix', 'BigNumber', 'DenseMatrix', 'SparseMatrix', 'cos', 'sin'];
5
+ export var createRotationMatrix = /* #__PURE__ */factory(name, dependencies, function (_ref) {
6
+ var typed = _ref.typed,
7
+ config = _ref.config,
8
+ multiplyScalar = _ref.multiplyScalar,
9
+ addScalar = _ref.addScalar,
10
+ unaryMinus = _ref.unaryMinus,
11
+ norm = _ref.norm,
12
+ BigNumber = _ref.BigNumber,
13
+ matrix = _ref.matrix,
14
+ DenseMatrix = _ref.DenseMatrix,
15
+ SparseMatrix = _ref.SparseMatrix,
16
+ cos = _ref.cos,
17
+ sin = _ref.sin;
18
+
19
+ /**
20
+ * Create a 2-dimensional counter-clockwise rotation matrix (2x2) for a given angle (expressed in radians).
21
+ * Create a 2-dimensional counter-clockwise rotation matrix (3x3) by a given angle (expressed in radians) around a given axis (1x3).
22
+ *
23
+ * Syntax:
24
+ *
25
+ * math.rotationMatrix(theta)
26
+ * math.rotationMatrix(theta, format)
27
+ * math.rotationMatrix(theta, [v])
28
+ * math.rotationMatrix(theta, [v], format)
29
+ *
30
+ * Examples:
31
+ *
32
+ * math.rotationMatrix(math.pi / 2) // returns [[0, -1], [1, 0]]
33
+ * math.rotationMatrix(math.bignumber(45)) // returns [[ bignumber(1 / sqrt(2)), - bignumber(1 / sqrt(2))], [ bignumber(1 / sqrt(2)), bignumber(1 / sqrt(2))]]
34
+ * math.rotationMatrix(math.complex(1 + i)) // returns [[cos(1 + i), -sin(1 + i)], [sin(1 + i), cos(1 + i)]]
35
+ * math.rotationMatrix(math.unit('1rad')) // returns [[cos(1), -sin(1)], [sin(1), cos(1)]]
36
+ *
37
+ * math.rotationMatrix(math.pi / 2, [0, 1, 0]) // returns [[0, 0, 1], [0, 1, 0], [-1, 0, 0]]
38
+ * math.rotationMatrix(math.pi / 2, matrix([0, 1, 0])) // returns matrix([[0, 0, 1], [0, 1, 0], [-1, 0, 0]])
39
+ *
40
+ *
41
+ * See also:
42
+ *
43
+ * matrix, cos, sin
44
+ *
45
+ *
46
+ * @param {number | BigNumber | Complex | Unit} theta Rotation angle
47
+ * @param {Array | Matrix} [v] Rotation axis
48
+ * @param {string} [format] Result Matrix storage format
49
+ * @return {Array | Matrix} Rotation matrix
50
+ */
51
+ return typed(name, {
52
+ '': function _() {
53
+ return config.matrix === 'Matrix' ? matrix([]) : [];
54
+ },
55
+ string: function string(format) {
56
+ return matrix(format);
57
+ },
58
+ 'number | BigNumber | Complex | Unit': function numberBigNumberComplexUnit(theta) {
59
+ return _rotationMatrix2x2(theta, config.matrix === 'Matrix' ? 'dense' : undefined);
60
+ },
61
+ 'number | BigNumber | Complex | Unit, string': function numberBigNumberComplexUnitString(theta, format) {
62
+ return _rotationMatrix2x2(theta, format);
63
+ },
64
+ 'number | BigNumber | Complex | Unit, Array': function numberBigNumberComplexUnitArray(theta, v) {
65
+ var matrixV = matrix(v);
66
+
67
+ _validateVector(matrixV);
68
+
69
+ return _rotationMatrix3x3(theta, matrixV, config.matrix === 'Matrix' ? 'dense' : undefined);
70
+ },
71
+ 'number | BigNumber | Complex | Unit, Matrix': function numberBigNumberComplexUnitMatrix(theta, v) {
72
+ _validateVector(v);
73
+
74
+ return _rotationMatrix3x3(theta, v, config.matrix === 'Matrix' ? 'dense' : undefined);
75
+ },
76
+ 'number | BigNumber | Complex | Unit, Array, string': function numberBigNumberComplexUnitArrayString(theta, v, format) {
77
+ var matrixV = matrix(v);
78
+
79
+ _validateVector(matrixV);
80
+
81
+ return _rotationMatrix3x3(theta, matrixV, format);
82
+ },
83
+ 'number | BigNumber | Complex | Unit, Matrix, string': function numberBigNumberComplexUnitMatrixString(theta, v, format) {
84
+ _validateVector(v);
85
+
86
+ return _rotationMatrix3x3(theta, v, format);
87
+ }
88
+ });
89
+ /**
90
+ * Returns 2x2 matrix of 2D rotation of angle theta
91
+ *
92
+ * @param {number | BigNumber | Complex | Unit} theta The rotation angle
93
+ * @param {string} format The result Matrix storage format
94
+ * @returns {Matrix}
95
+ * @private
96
+ */
97
+
98
+ function _rotationMatrix2x2(theta, format) {
99
+ var Big = isBigNumber(theta);
100
+ var minusOne = Big ? new BigNumber(-1) : -1;
101
+ var cosTheta = cos(theta);
102
+ var sinTheta = sin(theta);
103
+ var data = [[cosTheta, multiplyScalar(minusOne, sinTheta)], [sinTheta, cosTheta]];
104
+ return _convertToFormat(data, format);
105
+ }
106
+
107
+ function _validateVector(v) {
108
+ var size = v.size();
109
+
110
+ if (size.length < 1 || size[0] !== 3) {
111
+ throw new RangeError('Vector must be of dimensions 1x3');
112
+ }
113
+ }
114
+
115
+ function _mul(array) {
116
+ return array.reduce(function (p, curr) {
117
+ return multiplyScalar(p, curr);
118
+ });
119
+ }
120
+
121
+ function _convertToFormat(data, format) {
122
+ if (format) {
123
+ if (format === 'sparse') {
124
+ return new SparseMatrix(data);
125
+ }
126
+
127
+ if (format === 'dense') {
128
+ return new DenseMatrix(data);
129
+ }
130
+
131
+ throw new TypeError("Unknown matrix type \"".concat(format, "\""));
132
+ }
133
+
134
+ return data;
135
+ }
136
+ /**
137
+ * Returns a 3x3 matrix of rotation of angle theta around vector v
138
+ *
139
+ * @param {number | BigNumber | Complex | Unit} theta The rotation angle
140
+ * @param {Matrix} v The rotation axis vector
141
+ * @param {string} format The storage format of the resulting matrix
142
+ * @returns {Matrix}
143
+ * @private
144
+ */
145
+
146
+
147
+ function _rotationMatrix3x3(theta, v, format) {
148
+ var normV = norm(v);
149
+
150
+ if (normV === 0) {
151
+ return _convertToFormat([], format);
152
+ }
153
+
154
+ var Big = isBigNumber(theta) ? BigNumber : null;
155
+ var one = Big ? new Big(1) : 1;
156
+ var minusOne = Big ? new Big(-1) : -1;
157
+ var vx = Big ? new Big(v.get([0]) / normV) : v.get([0]) / normV;
158
+ var vy = Big ? new Big(v.get([1]) / normV) : v.get([1]) / normV;
159
+ var vz = Big ? new Big(v.get([2]) / normV) : v.get([2]) / normV;
160
+ var c = cos(theta);
161
+ var oneMinusC = addScalar(one, unaryMinus(c));
162
+ var s = sin(theta);
163
+ var r11 = addScalar(c, _mul([vx, vx, oneMinusC]));
164
+ var r12 = addScalar(_mul([vx, vy, oneMinusC]), _mul([minusOne, vz, s]));
165
+ var r13 = addScalar(_mul([vx, vz, oneMinusC]), _mul([vy, s]));
166
+ var r21 = addScalar(_mul([vx, vy, oneMinusC]), _mul([vz, s]));
167
+ var r22 = addScalar(c, _mul([vy, vy, oneMinusC]));
168
+ var r23 = addScalar(_mul([vy, vz, oneMinusC]), _mul([minusOne, vx, s]));
169
+ var r31 = addScalar(_mul([vx, vz, oneMinusC]), _mul([minusOne, vy, s]));
170
+ var r32 = addScalar(_mul([vy, vz, oneMinusC]), _mul([vx, s]));
171
+ var r33 = addScalar(c, _mul([vz, vz, oneMinusC]));
172
+ var data = [[r11, r12, r13], [r21, r22, r23], [r31, r32, r33]];
173
+ return _convertToFormat(data, format);
174
+ }
175
+ });
@@ -94,6 +94,10 @@ export var createSqrtm = /* #__PURE__ */factory(name, dependencies, function (_r
94
94
  throw new RangeError('Matrix must be square ' + '(size: ' + format(size) + ')');
95
95
  }
96
96
  }
97
+
98
+ default:
99
+ // Multi dimensional array
100
+ throw new RangeError('Matrix must be at most two dimensional ' + '(size: ' + format(size) + ')');
97
101
  }
98
102
  }
99
103
  });
@@ -1,7 +1,7 @@
1
1
  import { factory } from '../../utils/factory';
2
2
  import { isNumber } from '../../utils/is';
3
- import { arraySize } from '../../utils/array';
4
3
  import { createRng } from './util/seededRNG';
4
+ import { flatten } from '../../utils/array';
5
5
  var name = 'pickRandom';
6
6
  var dependencies = ['typed', 'config', '?on'];
7
7
  export var createPickRandom = /* #__PURE__ */factory(name, dependencies, function (_ref) {
@@ -75,16 +75,12 @@ export var createPickRandom = /* #__PURE__ */factory(name, dependencies, functio
75
75
  number = 1;
76
76
  }
77
77
 
78
- possibles = possibles.valueOf(); // get Array
78
+ possibles = flatten(possibles.valueOf()).valueOf(); // get Array
79
79
 
80
80
  if (weights) {
81
81
  weights = weights.valueOf(); // get Array
82
82
  }
83
83
 
84
- if (arraySize(possibles).length > 1) {
85
- throw new Error('Only one dimensional vectors supported');
86
- }
87
-
88
84
  var totalWeights = 0;
89
85
 
90
86
  if (typeof weights !== 'undefined') {
@@ -98,7 +98,7 @@ export var createVariance = /* #__PURE__ */factory(name, dependencies, function
98
98
  */
99
99
 
100
100
  function _var(array, normalization) {
101
- var sum = 0;
101
+ var sum;
102
102
  var num = 0;
103
103
 
104
104
  if (array.length === 0) {
@@ -108,7 +108,7 @@ export var createVariance = /* #__PURE__ */factory(name, dependencies, function
108
108
 
109
109
  deepForEach(array, function (value) {
110
110
  try {
111
- sum = add(sum, value);
111
+ sum = sum === undefined ? value : add(sum, value);
112
112
  num++;
113
113
  } catch (err) {
114
114
  throw improveErrorMessage(err, 'variance', value);
@@ -117,10 +117,10 @@ export var createVariance = /* #__PURE__ */factory(name, dependencies, function
117
117
  if (num === 0) throw new Error('Cannot calculate variance of an empty array');
118
118
  var mean = divide(sum, num); // calculate the variance
119
119
 
120
- sum = 0;
120
+ sum = undefined;
121
121
  deepForEach(array, function (value) {
122
122
  var diff = subtract(value, mean);
123
- sum = add(sum, multiply(diff, diff));
123
+ sum = sum === undefined ? multiply(diff, diff) : add(sum, multiply(diff, diff));
124
124
  });
125
125
 
126
126
  if (isNaN(sum)) {
@@ -0,0 +1,36 @@
1
+ import { factory } from '../../utils/factory';
2
+ import { isInteger } from '../../utils/number';
3
+
4
+ function baseFormatter(base) {
5
+ var prefixes = {
6
+ 2: '0b',
7
+ 8: '0o',
8
+ 16: '0x'
9
+ };
10
+ var prefix = prefixes[base];
11
+ return function (n) {
12
+ if (n > Math.pow(2, 31) - 1 || n < -Math.pow(2, 31)) {
13
+ throw new Error('Value must be in range [-2^31, 2^31-1]');
14
+ }
15
+
16
+ if (!isInteger(n)) {
17
+ throw new Error('Value must be an integer');
18
+ }
19
+
20
+ if (n < 0) {
21
+ n = n + Math.pow(2, 32);
22
+ }
23
+
24
+ return "".concat(prefix).concat(n.toString(base));
25
+ };
26
+ }
27
+
28
+ var dependencies = ['typed'];
29
+ export function createBaseFormatterFactory(name, base) {
30
+ return factory(name, dependencies, function (_ref) {
31
+ var typed = _ref.typed;
32
+ return typed(name, {
33
+ number: baseFormatter(base)
34
+ });
35
+ });
36
+ }
@@ -0,0 +1,23 @@
1
+ import { createBaseFormatterFactory } from './baseUtils';
2
+ /**
3
+ * Format a number as binary.
4
+ *
5
+ * Syntax:
6
+ *
7
+ * math.bin(value)
8
+ *
9
+ * Examples:
10
+ *
11
+ * //the following outputs "0b10"
12
+ * math.bin(2)
13
+ *
14
+ * See also:
15
+ *
16
+ * oct
17
+ * hex
18
+ *
19
+ * @param {number} value Value to be stringified
20
+ * @return {string} The formatted value
21
+ */
22
+
23
+ export var createBin = createBaseFormatterFactory('bin', 2);
@@ -0,0 +1,23 @@
1
+ import { createBaseFormatterFactory } from './baseUtils';
2
+ /**
3
+ * Format a number as hexadecimal.
4
+ *
5
+ * Syntax:
6
+ *
7
+ * math.hex(value)
8
+ *
9
+ * Examples:
10
+ *
11
+ * //the following outputs "0xF0"
12
+ * math.hex(240)
13
+ *
14
+ * See also:
15
+ *
16
+ * oct
17
+ * bin
18
+ *
19
+ * @param {number} value Value to be stringified
20
+ * @return {string} The formatted value
21
+ */
22
+
23
+ export var createHex = createBaseFormatterFactory('hex', 16);
@@ -0,0 +1,23 @@
1
+ import { createBaseFormatterFactory } from './baseUtils';
2
+ /**
3
+ * Format a number as octal.
4
+ *
5
+ * Syntax:
6
+ *
7
+ * math.oct(value)
8
+ *
9
+ * Examples:
10
+ *
11
+ * //the following outputs "0o70"
12
+ * math.oct(56)
13
+ *
14
+ * See also:
15
+ *
16
+ * bin
17
+ * hex
18
+ *
19
+ * @param {number} value Value to be stringified
20
+ * @return {string} The formatted value
21
+ */
22
+
23
+ export var createOct = createBaseFormatterFactory('oct', 8);
@@ -5,8 +5,11 @@ var dependencies = ['?on', 'config'];
5
5
  export var createBigNumberClass = /* #__PURE__ */factory(name, dependencies, function (_ref) {
6
6
  var on = _ref.on,
7
7
  config = _ref.config;
8
+ var EUCLID = 9; // Use euclidian division for mod calculation
9
+
8
10
  var BigNumber = Decimal.clone({
9
- precision: config.precision
11
+ precision: config.precision,
12
+ modulo: EUCLID
10
13
  });
11
14
  /**
12
15
  * Attach type information
package/es/type/number.js CHANGED
@@ -45,6 +45,16 @@ export var createNumber = /* #__PURE__ */factory(name, dependencies, function (_
45
45
  throw new SyntaxError('String "' + x + '" is no valid number');
46
46
  }
47
47
 
48
+ if (['0b', '0o', '0x'].includes(x.substring(0, 2))) {
49
+ if (num > Math.pow(2, 32) - 1) {
50
+ throw new SyntaxError("String \"".concat(x, "\" is out of range"));
51
+ }
52
+
53
+ if (num & 0x80000000) {
54
+ num = -1 * ~(num - 1);
55
+ }
56
+ }
57
+
48
58
  return num;
49
59
  },
50
60
  BigNumber: function BigNumber(x) {
@@ -89,7 +89,9 @@ export function deepExtend(a, b) {
89
89
  }
90
90
 
91
91
  for (var prop in b) {
92
- if (hasOwnProperty(b, prop)) {
92
+ // We check against prop not being in Object.prototype or Function.prototype
93
+ // to prevent polluting for example Object.__proto__.
94
+ if (hasOwnProperty(b, prop) && !(prop in Object.prototype) && !(prop in Function.prototype)) {
93
95
  if (b[prop] && b[prop].constructor === Object) {
94
96
  if (a[prop] === undefined) {
95
97
  a[prop] = {};
package/es/version.js CHANGED
@@ -1,2 +1,2 @@
1
- export var version = '7.2.0'; // Note: This file is automatically generated when building math.js.
1
+ export var version = '7.5.1'; // Note: This file is automatically generated when building math.js.
2
2
  // Changes made in this file will be overwritten.
@@ -1,4 +1,4 @@
1
- const { create, all } = require('../../../index')
1
+ const { create, all } = require('../../..')
2
2
  const workerpool = require('workerpool')
3
3
  const math = create(all)
4
4
 
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.binDependencies = void 0;
7
+
8
+ var _dependenciesTyped = require("./dependenciesTyped.generated");
9
+
10
+ var _factoriesAny = require("../../factoriesAny.js");
11
+
12
+ /**
13
+ * THIS FILE IS AUTO-GENERATED
14
+ * DON'T MAKE CHANGES HERE
15
+ */
16
+ var binDependencies = {
17
+ typedDependencies: _dependenciesTyped.typedDependencies,
18
+ createBin: _factoriesAny.createBin
19
+ };
20
+ exports.binDependencies = binDependencies;
@@ -5,6 +5,10 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.ceilDependencies = void 0;
7
7
 
8
+ var _dependenciesEqualScalar = require("./dependenciesEqualScalar.generated");
9
+
10
+ var _dependenciesMatrix = require("./dependenciesMatrix.generated");
11
+
8
12
  var _dependenciesRound = require("./dependenciesRound.generated");
9
13
 
10
14
  var _dependenciesTyped = require("./dependenciesTyped.generated");
@@ -16,6 +20,8 @@ var _factoriesAny = require("../../factoriesAny.js");
16
20
  * DON'T MAKE CHANGES HERE
17
21
  */
18
22
  var ceilDependencies = {
23
+ equalScalarDependencies: _dependenciesEqualScalar.equalScalarDependencies,
24
+ matrixDependencies: _dependenciesMatrix.matrixDependencies,
19
25
  roundDependencies: _dependenciesRound.roundDependencies,
20
26
  typedDependencies: _dependenciesTyped.typedDependencies,
21
27
  createCeil: _factoriesAny.createCeil
@@ -11,6 +11,8 @@ var _dependenciesCeil = require("./dependenciesCeil.generated");
11
11
 
12
12
  var _dependenciesFloor = require("./dependenciesFloor.generated");
13
13
 
14
+ var _dependenciesMatrix = require("./dependenciesMatrix.generated");
15
+
14
16
  var _dependenciesTyped = require("./dependenciesTyped.generated");
15
17
 
16
18
  var _factoriesAny = require("../../factoriesAny.js");
@@ -23,6 +25,7 @@ var fixDependencies = {
23
25
  ComplexDependencies: _dependenciesComplexClass.ComplexDependencies,
24
26
  ceilDependencies: _dependenciesCeil.ceilDependencies,
25
27
  floorDependencies: _dependenciesFloor.floorDependencies,
28
+ matrixDependencies: _dependenciesMatrix.matrixDependencies,
26
29
  typedDependencies: _dependenciesTyped.typedDependencies,
27
30
  createFix: _factoriesAny.createFix
28
31
  };
@@ -5,6 +5,10 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.floorDependencies = void 0;
7
7
 
8
+ var _dependenciesEqualScalar = require("./dependenciesEqualScalar.generated");
9
+
10
+ var _dependenciesMatrix = require("./dependenciesMatrix.generated");
11
+
8
12
  var _dependenciesRound = require("./dependenciesRound.generated");
9
13
 
10
14
  var _dependenciesTyped = require("./dependenciesTyped.generated");
@@ -16,6 +20,8 @@ var _factoriesAny = require("../../factoriesAny.js");
16
20
  * DON'T MAKE CHANGES HERE
17
21
  */
18
22
  var floorDependencies = {
23
+ equalScalarDependencies: _dependenciesEqualScalar.equalScalarDependencies,
24
+ matrixDependencies: _dependenciesMatrix.matrixDependencies,
19
25
  roundDependencies: _dependenciesRound.roundDependencies,
20
26
  typedDependencies: _dependenciesTyped.typedDependencies,
21
27
  createFloor: _factoriesAny.createFloor
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.hexDependencies = void 0;
7
+
8
+ var _dependenciesTyped = require("./dependenciesTyped.generated");
9
+
10
+ var _factoriesAny = require("../../factoriesAny.js");
11
+
12
+ /**
13
+ * THIS FILE IS AUTO-GENERATED
14
+ * DON'T MAKE CHANGES HERE
15
+ */
16
+ var hexDependencies = {
17
+ typedDependencies: _dependenciesTyped.typedDependencies,
18
+ createHex: _factoriesAny.createHex
19
+ };
20
+ exports.hexDependencies = hexDependencies;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.lsolveAllDependencies = void 0;
7
+
8
+ var _dependenciesDenseMatrixClass = require("./dependenciesDenseMatrixClass.generated");
9
+
10
+ var _dependenciesDivideScalar = require("./dependenciesDivideScalar.generated");
11
+
12
+ var _dependenciesEqualScalar = require("./dependenciesEqualScalar.generated");
13
+
14
+ var _dependenciesMatrix = require("./dependenciesMatrix.generated");
15
+
16
+ var _dependenciesMultiplyScalar = require("./dependenciesMultiplyScalar.generated");
17
+
18
+ var _dependenciesSubtract = require("./dependenciesSubtract.generated");
19
+
20
+ var _dependenciesTyped = require("./dependenciesTyped.generated");
21
+
22
+ var _factoriesAny = require("../../factoriesAny.js");
23
+
24
+ /**
25
+ * THIS FILE IS AUTO-GENERATED
26
+ * DON'T MAKE CHANGES HERE
27
+ */
28
+ var lsolveAllDependencies = {
29
+ DenseMatrixDependencies: _dependenciesDenseMatrixClass.DenseMatrixDependencies,
30
+ divideScalarDependencies: _dependenciesDivideScalar.divideScalarDependencies,
31
+ equalScalarDependencies: _dependenciesEqualScalar.equalScalarDependencies,
32
+ matrixDependencies: _dependenciesMatrix.matrixDependencies,
33
+ multiplyScalarDependencies: _dependenciesMultiplyScalar.multiplyScalarDependencies,
34
+ subtractDependencies: _dependenciesSubtract.subtractDependencies,
35
+ typedDependencies: _dependenciesTyped.typedDependencies,
36
+ createLsolveAll: _factoriesAny.createLsolveAll
37
+ };
38
+ exports.lsolveAllDependencies = lsolveAllDependencies;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.octDependencies = void 0;
7
+
8
+ var _dependenciesTyped = require("./dependenciesTyped.generated");
9
+
10
+ var _factoriesAny = require("../../factoriesAny.js");
11
+
12
+ /**
13
+ * THIS FILE IS AUTO-GENERATED
14
+ * DON'T MAKE CHANGES HERE
15
+ */
16
+ var octDependencies = {
17
+ typedDependencies: _dependenciesTyped.typedDependencies,
18
+ createOct: _factoriesAny.createOct
19
+ };
20
+ exports.octDependencies = octDependencies;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.rotationMatrixDependencies = void 0;
7
+
8
+ var _dependenciesBigNumberClass = require("./dependenciesBigNumberClass.generated");
9
+
10
+ var _dependenciesDenseMatrixClass = require("./dependenciesDenseMatrixClass.generated");
11
+
12
+ var _dependenciesSparseMatrixClass = require("./dependenciesSparseMatrixClass.generated");
13
+
14
+ var _dependenciesAddScalar = require("./dependenciesAddScalar.generated");
15
+
16
+ var _dependenciesCos = require("./dependenciesCos.generated");
17
+
18
+ var _dependenciesMatrix = require("./dependenciesMatrix.generated");
19
+
20
+ var _dependenciesMultiplyScalar = require("./dependenciesMultiplyScalar.generated");
21
+
22
+ var _dependenciesNorm = require("./dependenciesNorm.generated");
23
+
24
+ var _dependenciesSin = require("./dependenciesSin.generated");
25
+
26
+ var _dependenciesTyped = require("./dependenciesTyped.generated");
27
+
28
+ var _dependenciesUnaryMinus = require("./dependenciesUnaryMinus.generated");
29
+
30
+ var _factoriesAny = require("../../factoriesAny.js");
31
+
32
+ /**
33
+ * THIS FILE IS AUTO-GENERATED
34
+ * DON'T MAKE CHANGES HERE
35
+ */
36
+ var rotationMatrixDependencies = {
37
+ BigNumberDependencies: _dependenciesBigNumberClass.BigNumberDependencies,
38
+ DenseMatrixDependencies: _dependenciesDenseMatrixClass.DenseMatrixDependencies,
39
+ SparseMatrixDependencies: _dependenciesSparseMatrixClass.SparseMatrixDependencies,
40
+ addScalarDependencies: _dependenciesAddScalar.addScalarDependencies,
41
+ cosDependencies: _dependenciesCos.cosDependencies,
42
+ matrixDependencies: _dependenciesMatrix.matrixDependencies,
43
+ multiplyScalarDependencies: _dependenciesMultiplyScalar.multiplyScalarDependencies,
44
+ normDependencies: _dependenciesNorm.normDependencies,
45
+ sinDependencies: _dependenciesSin.sinDependencies,
46
+ typedDependencies: _dependenciesTyped.typedDependencies,
47
+ unaryMinusDependencies: _dependenciesUnaryMinus.unaryMinusDependencies,
48
+ createRotationMatrix: _factoriesAny.createRotationMatrix
49
+ };
50
+ exports.rotationMatrixDependencies = rotationMatrixDependencies;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.usolveAllDependencies = void 0;
7
+
8
+ var _dependenciesDenseMatrixClass = require("./dependenciesDenseMatrixClass.generated");
9
+
10
+ var _dependenciesDivideScalar = require("./dependenciesDivideScalar.generated");
11
+
12
+ var _dependenciesEqualScalar = require("./dependenciesEqualScalar.generated");
13
+
14
+ var _dependenciesMatrix = require("./dependenciesMatrix.generated");
15
+
16
+ var _dependenciesMultiplyScalar = require("./dependenciesMultiplyScalar.generated");
17
+
18
+ var _dependenciesSubtract = require("./dependenciesSubtract.generated");
19
+
20
+ var _dependenciesTyped = require("./dependenciesTyped.generated");
21
+
22
+ var _factoriesAny = require("../../factoriesAny.js");
23
+
24
+ /**
25
+ * THIS FILE IS AUTO-GENERATED
26
+ * DON'T MAKE CHANGES HERE
27
+ */
28
+ var usolveAllDependencies = {
29
+ DenseMatrixDependencies: _dependenciesDenseMatrixClass.DenseMatrixDependencies,
30
+ divideScalarDependencies: _dependenciesDivideScalar.divideScalarDependencies,
31
+ equalScalarDependencies: _dependenciesEqualScalar.equalScalarDependencies,
32
+ matrixDependencies: _dependenciesMatrix.matrixDependencies,
33
+ multiplyScalarDependencies: _dependenciesMultiplyScalar.multiplyScalarDependencies,
34
+ subtractDependencies: _dependenciesSubtract.subtractDependencies,
35
+ typedDependencies: _dependenciesTyped.typedDependencies,
36
+ createUsolveAll: _factoriesAny.createUsolveAll
37
+ };
38
+ exports.usolveAllDependencies = usolveAllDependencies;