mathjs 7.2.0 → 7.5.1

Sign up to get free protection for your applications and to get access to all the features.
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;