mathjs 9.5.2 → 10.1.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 (101) hide show
  1. package/HISTORY.md +43 -1
  2. package/NOTICE +1 -1
  3. package/README.md +10 -2
  4. package/bin/cli.js +1 -1
  5. package/docs/expressions/syntax.md +1 -1
  6. package/docs/reference/constants.md +1 -1
  7. package/docs/reference/functions/invmod.md +41 -0
  8. package/docs/reference/functions.md +1 -0
  9. package/examples/expressions.js +1 -1
  10. package/lib/browser/math.js +7 -7
  11. package/lib/browser/math.js.map +1 -1
  12. package/lib/cjs/constants.js +1 -1
  13. package/lib/cjs/core/function/config.js +1 -1
  14. package/lib/cjs/core/function/import.js +2 -1
  15. package/lib/cjs/entry/dependenciesAny/dependenciesIntersect.generated.js +6 -0
  16. package/lib/cjs/entry/dependenciesAny/dependenciesInvmod.generated.js +41 -0
  17. package/lib/cjs/entry/dependenciesAny/dependenciesRationalize.generated.js +15 -0
  18. package/lib/cjs/entry/dependenciesAny/dependenciesSimplify.generated.js +15 -0
  19. package/lib/cjs/entry/dependenciesAny.generated.js +1002 -994
  20. package/lib/cjs/entry/dependenciesNumber/dependenciesRationalize.generated.js +15 -0
  21. package/lib/cjs/entry/dependenciesNumber/dependenciesSimplify.generated.js +15 -0
  22. package/lib/cjs/entry/dependenciesNumber.generated.js +581 -581
  23. package/lib/cjs/entry/impureFunctionsAny.generated.js +325 -313
  24. package/lib/cjs/entry/impureFunctionsNumber.generated.js +233 -222
  25. package/lib/cjs/entry/mainAny.js +8 -8
  26. package/lib/cjs/entry/mainNumber.js +8 -8
  27. package/lib/cjs/entry/pureFunctionsAny.generated.js +1111 -1097
  28. package/lib/cjs/entry/pureFunctionsNumber.generated.js +375 -375
  29. package/lib/cjs/entry/typeChecks.js +12 -12
  30. package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +6 -1
  31. package/lib/cjs/expression/embeddedDocs/function/arithmetic/invmod.js +15 -0
  32. package/lib/cjs/expression/embeddedDocs/function/matrix/forEach.js +1 -1
  33. package/lib/cjs/expression/operators.js +1 -1
  34. package/lib/cjs/factoriesAny.js +668 -660
  35. package/lib/cjs/factoriesNumber.js +268 -237
  36. package/lib/cjs/function/algebra/rationalize.js +18 -4
  37. package/lib/cjs/function/algebra/simplify/simplifyConstant.js +223 -29
  38. package/lib/cjs/function/algebra/simplify/simplifyCore.js +34 -6
  39. package/lib/cjs/function/algebra/simplify.js +73 -22
  40. package/lib/cjs/function/arithmetic/invmod.js +73 -0
  41. package/lib/cjs/function/arithmetic/round.js +2 -2
  42. package/lib/cjs/function/geometry/intersect.js +12 -13
  43. package/lib/cjs/function/probability/gamma.js +28 -30
  44. package/lib/cjs/header.js +3 -3
  45. package/lib/cjs/plain/bignumber/arithmetic.js +2 -2
  46. package/lib/cjs/plain/number/arithmetic.js +10 -10
  47. package/lib/cjs/plain/number/constants.js +1 -1
  48. package/lib/cjs/plain/number/logical.js +1 -1
  49. package/lib/cjs/plain/number/probability.js +2 -1
  50. package/lib/cjs/plain/number/trigonometry.js +1 -1
  51. package/lib/cjs/plain/number/utils.js +1 -1
  52. package/lib/cjs/type/matrix/SparseMatrix.js +19 -15
  53. package/lib/cjs/type/unit/Unit.js +2 -2
  54. package/lib/cjs/type/unit/physicalConstants.js +1 -1
  55. package/lib/cjs/utils/array.js +14 -14
  56. package/lib/cjs/utils/bignumber/bitwise.js +1 -1
  57. package/lib/cjs/utils/customs.js +5 -5
  58. package/lib/cjs/utils/factory.js +3 -3
  59. package/lib/cjs/utils/function.js +1 -1
  60. package/lib/cjs/utils/is.js +23 -23
  61. package/lib/cjs/utils/latex.js +2 -1
  62. package/lib/cjs/utils/map.js +3 -3
  63. package/lib/cjs/utils/noop.js +1 -1
  64. package/lib/cjs/utils/number.js +11 -7
  65. package/lib/cjs/utils/object.js +8 -8
  66. package/lib/cjs/utils/snapshot.js +3 -3
  67. package/lib/cjs/utils/string.js +2 -2
  68. package/lib/cjs/version.js +1 -1
  69. package/lib/esm/core/function/import.js +2 -1
  70. package/lib/esm/entry/dependenciesAny/dependenciesIntersect.generated.js +4 -0
  71. package/lib/esm/entry/dependenciesAny/dependenciesInvmod.generated.js +24 -0
  72. package/lib/esm/entry/dependenciesAny/dependenciesRationalize.generated.js +10 -0
  73. package/lib/esm/entry/dependenciesAny/dependenciesSimplify.generated.js +10 -0
  74. package/lib/esm/entry/dependenciesAny.generated.js +271 -270
  75. package/lib/esm/entry/dependenciesNumber/dependenciesRationalize.generated.js +10 -0
  76. package/lib/esm/entry/dependenciesNumber/dependenciesSimplify.generated.js +10 -0
  77. package/lib/esm/entry/dependenciesNumber.generated.js +163 -163
  78. package/lib/esm/entry/impureFunctionsAny.generated.js +312 -301
  79. package/lib/esm/entry/impureFunctionsNumber.generated.js +221 -211
  80. package/lib/esm/entry/pureFunctionsAny.generated.js +827 -814
  81. package/lib/esm/entry/pureFunctionsNumber.generated.js +234 -234
  82. package/lib/esm/expression/embeddedDocs/embeddedDocs.js +4 -1
  83. package/lib/esm/expression/embeddedDocs/function/arithmetic/invmod.js +8 -0
  84. package/lib/esm/expression/embeddedDocs/function/matrix/forEach.js +1 -1
  85. package/lib/esm/factoriesAny.js +1 -0
  86. package/lib/esm/function/algebra/rationalize.js +18 -4
  87. package/lib/esm/function/algebra/simplify/simplifyConstant.js +197 -29
  88. package/lib/esm/function/algebra/simplify/simplifyCore.js +35 -7
  89. package/lib/esm/function/algebra/simplify.js +73 -22
  90. package/lib/esm/function/arithmetic/invmod.js +57 -0
  91. package/lib/esm/function/arithmetic/round.js +2 -2
  92. package/lib/esm/function/geometry/intersect.js +12 -12
  93. package/lib/esm/function/probability/gamma.js +28 -30
  94. package/lib/esm/header.js +1 -1
  95. package/lib/esm/type/matrix/SparseMatrix.js +19 -15
  96. package/lib/esm/type/unit/Unit.js +2 -2
  97. package/lib/esm/utils/number.js +1 -1
  98. package/lib/esm/utils/snapshot.js +2 -2
  99. package/lib/esm/version.js +1 -1
  100. package/package.json +18 -17
  101. package/types/index.d.ts +250 -71
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.createInvmod = void 0;
9
+
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+
12
+ var _factory = require("../../utils/factory.js");
13
+
14
+ var name = 'invmod';
15
+ var dependencies = ['typed', 'config', 'BigNumber', 'xgcd', 'equal', 'smaller', 'mod', 'add', 'isInteger'];
16
+ var createInvmod = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
17
+ var typed = _ref.typed,
18
+ config = _ref.config,
19
+ BigNumber = _ref.BigNumber,
20
+ xgcd = _ref.xgcd,
21
+ equal = _ref.equal,
22
+ smaller = _ref.smaller,
23
+ mod = _ref.mod,
24
+ add = _ref.add,
25
+ isInteger = _ref.isInteger;
26
+
27
+ /**
28
+ * Calculate the (modular) multiplicative inverse of a modulo b. Solution to the equation `ax ≣ 1 (mod b)`
29
+ * See https://en.wikipedia.org/wiki/Modular_multiplicative_inverse.
30
+ *
31
+ * Syntax:
32
+ *
33
+ * math.invmod(a, b)
34
+ *
35
+ * Examples:
36
+ *
37
+ * math.invmod(8, 12) // returns NaN
38
+ * math.invmod(7, 13) // return 2
39
+ * math.invmod(15151, 15122) // returns 10429
40
+ *
41
+ * See also:
42
+ *
43
+ * gcd, xgcd
44
+ *
45
+ * @param {number | BigNumber} a An integer number
46
+ * @param {number | BigNumber} b An integer number
47
+ * @return {number | BigNumber } Returns an integer number
48
+ * where `invmod(a,b)*a ≣ 1 (mod b)`
49
+ */
50
+ return typed(name, {
51
+ 'number, number': invmod,
52
+ 'BigNumber, BigNumber': invmod
53
+ });
54
+
55
+ function invmod(a, b) {
56
+ if (!isInteger(a) || !isInteger(b)) throw new Error('Parameters in function invmod must be integer numbers');
57
+ a = mod(a, b);
58
+ if (equal(b, 0)) throw new Error('Divisor must be non zero');
59
+ var res = xgcd(a, b);
60
+ res = res.valueOf();
61
+
62
+ var _res = res,
63
+ _res2 = (0, _slicedToArray2["default"])(_res, 2),
64
+ gcd = _res2[0],
65
+ inv = _res2[1];
66
+
67
+ if (!equal(gcd, BigNumber(1))) return NaN;
68
+ inv = mod(inv, b);
69
+ if (smaller(inv, BigNumber(0))) inv = add(inv, b);
70
+ return inv;
71
+ }
72
+ });
73
+ exports.createInvmod = createInvmod;
@@ -23,9 +23,9 @@ var _algorithm3 = require("../../type/matrix/utils/algorithm14.js");
23
23
 
24
24
  var _index = require("../../plain/number/index.js");
25
25
 
26
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
26
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
27
27
 
28
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
28
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
29
29
 
30
30
  var NO_INT = 'Number of decimals in function round must be an integer';
31
31
  var name = 'round';
@@ -5,12 +5,10 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.createIntersect = void 0;
7
7
 
8
- var _is = require("../../utils/is.js");
9
-
10
8
  var _factory = require("../../utils/factory.js");
11
9
 
12
10
  var name = 'intersect';
13
- var dependencies = ['typed', 'config', 'abs', 'add', 'addScalar', 'matrix', 'multiply', 'multiplyScalar', 'divideScalar', 'subtract', 'smaller', 'equalScalar', 'flatten'];
11
+ var dependencies = ['typed', 'config', 'abs', 'add', 'addScalar', 'matrix', 'multiply', 'multiplyScalar', 'divideScalar', 'subtract', 'smaller', 'equalScalar', 'flatten', 'isZero', 'isNumeric'];
14
12
  var createIntersect = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
15
13
  var typed = _ref.typed,
16
14
  config = _ref.config,
@@ -24,7 +22,9 @@ var createIntersect = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
24
22
  subtract = _ref.subtract,
25
23
  smaller = _ref.smaller,
26
24
  equalScalar = _ref.equalScalar,
27
- flatten = _ref.flatten;
25
+ flatten = _ref.flatten,
26
+ isZero = _ref.isZero,
27
+ isNumeric = _ref.isNumeric;
28
28
 
29
29
  /**
30
30
  * Calculates the point of intersection of two lines in two or three dimensions
@@ -151,21 +151,16 @@ var createIntersect = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
151
151
  return arr;
152
152
  }
153
153
 
154
- function _isNumeric(a) {
155
- // intersect supports numbers and bignumbers
156
- return typeof a === 'number' || (0, _is.isBigNumber)(a);
157
- }
158
-
159
154
  function _2d(x) {
160
- return x.length === 2 && _isNumeric(x[0]) && _isNumeric(x[1]);
155
+ return x.length === 2 && isNumeric(x[0]) && isNumeric(x[1]);
161
156
  }
162
157
 
163
158
  function _3d(x) {
164
- return x.length === 3 && _isNumeric(x[0]) && _isNumeric(x[1]) && _isNumeric(x[2]);
159
+ return x.length === 3 && isNumeric(x[0]) && isNumeric(x[1]) && isNumeric(x[2]);
165
160
  }
166
161
 
167
162
  function _4d(x) {
168
- return x.length === 4 && _isNumeric(x[0]) && _isNumeric(x[1]) && _isNumeric(x[2]) && _isNumeric(x[3]);
163
+ return x.length === 4 && isNumeric(x[0]) && isNumeric(x[1]) && isNumeric(x[2]) && isNumeric(x[3]);
169
164
  }
170
165
 
171
166
  function _intersect2d(p1a, p1b, p2a, p2b) {
@@ -174,6 +169,7 @@ var createIntersect = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
174
169
  var d1 = subtract(o1, p1b);
175
170
  var d2 = subtract(o2, p2b);
176
171
  var det = subtract(multiplyScalar(d1[0], d2[1]), multiplyScalar(d2[0], d1[1]));
172
+ if (isZero(det)) return null;
177
173
 
178
174
  if (smaller(abs(det), config.epsilon)) {
179
175
  return null;
@@ -206,7 +202,10 @@ var createIntersect = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
206
202
 
207
203
  var d2121 = _intersect3dHelper(x2, x1, x2, x1, y2, y1, y2, y1, z2, z1, z2, z1);
208
204
 
209
- var ta = divideScalar(subtract(multiplyScalar(d1343, d4321), multiplyScalar(d1321, d4343)), subtract(multiplyScalar(d2121, d4343), multiplyScalar(d4321, d4321)));
205
+ var numerator = subtract(multiplyScalar(d1343, d4321), multiplyScalar(d1321, d4343));
206
+ var denominator = subtract(multiplyScalar(d2121, d4343), multiplyScalar(d4321, d4321));
207
+ if (isZero(denominator)) return null;
208
+ var ta = divideScalar(numerator, denominator);
210
209
  var tb = divideScalar(addScalar(d1343, multiplyScalar(ta, d4321)), d4343);
211
210
  var pax = addScalar(x1, multiplyScalar(ta, subtract(x2, x1)));
212
211
  var pay = addScalar(y1, multiplyScalar(ta, subtract(y2, y1)));
@@ -49,44 +49,42 @@ var createGamma = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
49
49
  Complex: function Complex(n) {
50
50
  if (n.im === 0) {
51
51
  return this(n.re);
52
- }
52
+ } // Lanczos approximation doesn't work well with real part lower than 0.5
53
+ // So reflection formula is required
54
+
55
+
56
+ if (n.re < 0.5) {
57
+ // Euler's reflection formula
58
+ // gamma(1-z) * gamma(z) = PI / sin(PI * z)
59
+ // real part of Z should not be integer [sin(PI) == 0 -> 1/0 - undefined]
60
+ // thanks to imperfect sin implementation sin(PI * n) != 0
61
+ // we can safely use it anyway
62
+ var _t = new _Complex(1 - n.re, -n.im);
63
+
64
+ var r = new _Complex(Math.PI * n.re, Math.PI * n.im);
65
+ return new _Complex(Math.PI).div(r.sin()).div(this(_t));
66
+ } // Lanczos approximation
67
+ // z -= 1
68
+
53
69
 
54
- n = new _Complex(n.re - 1, n.im);
55
- var x = new _Complex(_index.gammaP[0], 0);
70
+ n = new _Complex(n.re - 1, n.im); // x = gammaPval[0]
71
+
72
+ var x = new _Complex(_index.gammaP[0], 0); // for (i, gammaPval) in enumerate(gammaP):
56
73
 
57
74
  for (var i = 1; i < _index.gammaP.length; ++i) {
58
- var real = n.re + i; // x += p[i]/(n+i)
75
+ // x += gammaPval / (z + i)
76
+ var gammaPval = new _Complex(_index.gammaP[i], 0);
77
+ x = x.add(gammaPval.div(n.add(i)));
78
+ } // t = z + gammaG + 0.5
59
79
 
60
- var den = real * real + n.im * n.im;
61
80
 
62
- if (den !== 0) {
63
- x.re += _index.gammaP[i] * real / den;
64
- x.im += -(_index.gammaP[i] * n.im) / den;
65
- } else {
66
- x.re = _index.gammaP[i] < 0 ? -Infinity : Infinity;
67
- }
68
- }
81
+ var t = new _Complex(n.re + _index.gammaG + 0.5, n.im); // y = sqrt(2 * pi) * t ** (z + 0.5) * exp(-t) * x
69
82
 
70
- var t = new _Complex(n.re + _index.gammaG + 0.5, n.im);
71
83
  var twoPiSqrt = Math.sqrt(2 * Math.PI);
72
- n.re += 0.5;
73
- var result = pow(t, n);
74
-
75
- if (result.im === 0) {
76
- // sqrt(2*PI)*result
77
- result.re *= twoPiSqrt;
78
- } else if (result.re === 0) {
79
- result.im *= twoPiSqrt;
80
- } else {
81
- result.re *= twoPiSqrt;
82
- result.im *= twoPiSqrt;
83
- }
84
-
85
- var r = Math.exp(-t.re); // exp(-t)
84
+ var tpow = t.pow(n.add(0.5));
85
+ var expt = t.neg().exp(); // y = [x] * [sqrt(2 * pi)] * [t ** (z + 0.5)] * [exp(-t)]
86
86
 
87
- t.re = r * Math.cos(-t.im);
88
- t.im = r * Math.sin(-t.im);
89
- return multiplyScalar(multiplyScalar(result, t), x);
87
+ return x.mul(twoPiSqrt).mul(tpow).mul(expt);
90
88
  },
91
89
  BigNumber: function BigNumber(n) {
92
90
  if (n.isInteger()) {
package/lib/cjs/header.js CHANGED
@@ -6,11 +6,11 @@
6
6
  * It features real and complex numbers, units, matrices, a large set of
7
7
  * mathematical functions, and a flexible expression parser.
8
8
  *
9
- * @version 9.5.2
10
- * @date 2021-11-03
9
+ * @version 10.1.0
10
+ * @date 2022-01-15
11
11
  *
12
12
  * @license
13
- * Copyright (C) 2013-2021 Jos de Jong <wjosdejong@gmail.com>
13
+ * Copyright (C) 2013-2022 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
@@ -5,9 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.absBigNumber = absBigNumber;
7
7
  exports.addBigNumber = addBigNumber;
8
- exports.subtractBigNumber = subtractBigNumber;
9
- exports.multiplyBigNumber = multiplyBigNumber;
10
8
  exports.divideBigNumber = divideBigNumber;
9
+ exports.multiplyBigNumber = multiplyBigNumber;
10
+ exports.subtractBigNumber = subtractBigNumber;
11
11
  var signature1 = 'BigNumber';
12
12
  var signature2 = 'BigNumber, BigNumber';
13
13
 
@@ -5,33 +5,33 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.absNumber = absNumber;
7
7
  exports.addNumber = addNumber;
8
- exports.subtractNumber = subtractNumber;
9
- exports.multiplyNumber = multiplyNumber;
10
- exports.divideNumber = divideNumber;
11
- exports.unaryMinusNumber = unaryMinusNumber;
12
- exports.unaryPlusNumber = unaryPlusNumber;
13
8
  exports.cbrtNumber = cbrtNumber;
14
9
  exports.ceilNumber = ceilNumber;
15
10
  exports.cubeNumber = cubeNumber;
11
+ exports.divideNumber = divideNumber;
16
12
  exports.expNumber = expNumber;
17
13
  exports.expm1Number = expm1Number;
18
14
  exports.fixNumber = fixNumber;
19
15
  exports.floorNumber = floorNumber;
20
16
  exports.gcdNumber = gcdNumber;
21
17
  exports.lcmNumber = lcmNumber;
22
- exports.logNumber = logNumber;
23
18
  exports.log10Number = log10Number;
24
- exports.log2Number = log2Number;
25
19
  exports.log1pNumber = log1pNumber;
20
+ exports.log2Number = log2Number;
21
+ exports.logNumber = logNumber;
26
22
  exports.modNumber = modNumber;
23
+ exports.multiplyNumber = multiplyNumber;
24
+ exports.normNumber = normNumber;
27
25
  exports.nthRootNumber = nthRootNumber;
26
+ exports.powNumber = powNumber;
27
+ exports.roundNumber = roundNumber;
28
28
  exports.signNumber = signNumber;
29
29
  exports.sqrtNumber = sqrtNumber;
30
30
  exports.squareNumber = squareNumber;
31
+ exports.subtractNumber = subtractNumber;
32
+ exports.unaryMinusNumber = unaryMinusNumber;
33
+ exports.unaryPlusNumber = unaryPlusNumber;
31
34
  exports.xgcdNumber = xgcdNumber;
32
- exports.powNumber = powNumber;
33
- exports.roundNumber = roundNumber;
34
- exports.normNumber = normNumber;
35
35
 
36
36
  var _number = require("../../utils/number.js");
37
37
 
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.phi = exports.e = exports.tau = exports.pi = void 0;
6
+ exports.tau = exports.pi = exports.phi = exports.e = void 0;
7
7
  var pi = Math.PI;
8
8
  exports.pi = pi;
9
9
  var tau = 2 * Math.PI;
@@ -3,10 +3,10 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.andNumber = andNumber;
6
7
  exports.notNumber = notNumber;
7
8
  exports.orNumber = orNumber;
8
9
  exports.xorNumber = xorNumber;
9
- exports.andNumber = andNumber;
10
10
  var n1 = 'number';
11
11
  var n2 = 'number, number';
12
12
 
@@ -3,8 +3,9 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.gammaG = void 0;
6
7
  exports.gammaNumber = gammaNumber;
7
- exports.gammaP = exports.gammaG = void 0;
8
+ exports.gammaP = void 0;
8
9
 
9
10
  var _number = require("../../utils/number.js");
10
11
 
@@ -13,8 +13,8 @@ exports.asecNumber = asecNumber;
13
13
  exports.asechNumber = asechNumber;
14
14
  exports.asinNumber = asinNumber;
15
15
  exports.asinhNumber = asinhNumber;
16
- exports.atanNumber = atanNumber;
17
16
  exports.atan2Number = atan2Number;
17
+ exports.atanNumber = atanNumber;
18
18
  exports.atanhNumber = atanhNumber;
19
19
  exports.cosNumber = cosNumber;
20
20
  exports.coshNumber = coshNumber;
@@ -4,10 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.isIntegerNumber = isIntegerNumber;
7
+ exports.isNaNNumber = isNaNNumber;
7
8
  exports.isNegativeNumber = isNegativeNumber;
8
9
  exports.isPositiveNumber = isPositiveNumber;
9
10
  exports.isZeroNumber = isZeroNumber;
10
- exports.isNaNNumber = isNaNNumber;
11
11
 
12
12
  var _number = require("../../utils/number.js");
13
13
 
@@ -433,23 +433,27 @@ var createSparseMatrixClass = /* #__PURE__ */(0, _factory.factory)(name, depende
433
433
 
434
434
  if (!(0, _object.deepStrictEqual)(iSize, sSize)) {
435
435
  throw new _DimensionError.DimensionError(iSize, sSize, '>');
436
- } // offsets
436
+ } // insert the sub matrix
437
437
 
438
438
 
439
- var x0 = index.min()[0];
440
- var y0 = index.min()[1]; // submatrix rows and columns
441
-
442
- var m = sSize[0];
443
- var n = sSize[1]; // loop submatrix
444
-
445
- for (var x = 0; x < m; x++) {
446
- // loop columns
447
- for (var y = 0; y < n; y++) {
448
- // value at i, j
449
- var v = submatrix[x][y]; // invoke set (zero value will remove entry from matrix)
450
-
451
- matrix.set([x + x0, y + y0], v, defaultValue);
452
- }
439
+ if (iSize.length === 1) {
440
+ // if the replacement index only has 1 dimension, go trough each one and set its value
441
+ var range = index.dimension(0);
442
+ range.forEach(function (dataIndex, subIndex) {
443
+ (0, _array.validateIndex)(dataIndex);
444
+ matrix.set([dataIndex, 0], submatrix[subIndex[0]], defaultValue);
445
+ });
446
+ } else {
447
+ // if the replacement index has 2 dimensions, go through each one and set the value in the correct index
448
+ var firstDimensionRange = index.dimension(0);
449
+ var secondDimensionRange = index.dimension(1);
450
+ firstDimensionRange.forEach(function (firstDataIndex, firstSubIndex) {
451
+ (0, _array.validateIndex)(firstDataIndex);
452
+ secondDimensionRange.forEach(function (secondDataIndex, secondSubIndex) {
453
+ (0, _array.validateIndex)(secondDataIndex);
454
+ matrix.set([firstDataIndex, secondDataIndex], submatrix[firstSubIndex[0]][secondSubIndex[0]], defaultValue);
455
+ });
456
+ });
453
457
  }
454
458
  }
455
459
 
@@ -25,9 +25,9 @@ var _object = require("../../utils/object.js");
25
25
 
26
26
  var _constants = require("../../utils/bignumber/constants.js");
27
27
 
28
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
28
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
29
29
 
30
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
30
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
31
31
 
32
32
  var name = 'Unit';
33
33
  var dependencies = ['?on', 'config', 'addScalar', 'subtract', 'multiplyScalar', 'divideScalar', 'pow', 'abs', 'fix', 'round', 'equal', 'isNumeric', 'format', 'number', 'Complex', 'BigNumber', 'Fraction'];
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.createPlanckTemperature = exports.createPlanckCharge = exports.createPlanckTime = exports.createPlanckMass = exports.createPlanckLength = exports.createGravity = exports.createMolarMassC12 = exports.createMolarMass = exports.createWienDisplacement = exports.createStefanBoltzmann = exports.createSecondRadiation = exports.createSackurTetrode = exports.createMolarVolume = exports.createMolarPlanckConstant = exports.createGasConstant = exports.createLoschmidt = exports.createFirstRadiation = exports.createFaraday = exports.createBoltzmann = exports.createAvogadro = exports.createAtomicMass = exports.createEfimovFactor = exports.createWeakMixingAngle = exports.createThomsonCrossSection = exports.createRydberg = exports.createQuantumOfCirculation = exports.createNeutronMass = exports.createDeuteronMass = exports.createProtonMass = exports.createHartreeEnergy = exports.createFineStructure = exports.createFermiCoupling = exports.createElectronMass = exports.createClassicalElectronRadius = exports.createBohrRadius = exports.createJosephson = exports.createKlitzing = exports.createNuclearMagneton = exports.createMagneticFluxQuantum = exports.createInverseConductanceQuantum = exports.createConductanceQuantum = exports.createBohrMagneton = exports.createElementaryCharge = exports.createCoulomb = exports.createVacuumImpedance = exports.createElectricConstant = exports.createMagneticConstant = exports.createReducedPlanckConstant = exports.createPlanckConstant = exports.createGravitationConstant = exports.createSpeedOfLight = void 0;
6
+ exports.createWienDisplacement = exports.createWeakMixingAngle = exports.createVacuumImpedance = exports.createThomsonCrossSection = exports.createStefanBoltzmann = exports.createSpeedOfLight = exports.createSecondRadiation = exports.createSackurTetrode = exports.createRydberg = exports.createReducedPlanckConstant = exports.createQuantumOfCirculation = exports.createProtonMass = exports.createPlanckTime = exports.createPlanckTemperature = exports.createPlanckMass = exports.createPlanckLength = exports.createPlanckConstant = exports.createPlanckCharge = exports.createNuclearMagneton = exports.createNeutronMass = exports.createMolarVolume = exports.createMolarPlanckConstant = exports.createMolarMassC12 = exports.createMolarMass = exports.createMagneticFluxQuantum = exports.createMagneticConstant = exports.createLoschmidt = exports.createKlitzing = exports.createJosephson = exports.createInverseConductanceQuantum = exports.createHartreeEnergy = exports.createGravity = exports.createGravitationConstant = exports.createGasConstant = exports.createFirstRadiation = exports.createFineStructure = exports.createFermiCoupling = exports.createFaraday = exports.createElementaryCharge = exports.createElectronMass = exports.createElectricConstant = exports.createEfimovFactor = exports.createDeuteronMass = exports.createCoulomb = exports.createConductanceQuantum = exports.createClassicalElectronRadius = exports.createBoltzmann = exports.createBohrRadius = exports.createBohrMagneton = exports.createAvogadro = exports.createAtomicMass = void 0;
7
7
 
8
8
  var _factory = require("../../utils/factory.js");
9
9
 
@@ -4,25 +4,25 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.arraySize = arraySize;
7
- exports.validate = validate;
8
- exports.validateIndex = validateIndex;
9
- exports.resize = resize;
10
- exports.reshape = reshape;
11
- exports.processSizesWildcard = processSizesWildcard;
12
- exports.squeeze = squeeze;
13
- exports.unsqueeze = unsqueeze;
14
- exports.flatten = flatten;
15
- exports.map = map;
16
- exports.forEach = forEach;
7
+ exports.contains = contains;
17
8
  exports.filter = filter;
18
9
  exports.filterRegExp = filterRegExp;
19
- exports.join = join;
20
- exports.identify = identify;
10
+ exports.flatten = flatten;
11
+ exports.forEach = forEach;
21
12
  exports.generalize = generalize;
22
13
  exports.getArrayDataType = getArrayDataType;
23
- exports.last = last;
14
+ exports.identify = identify;
24
15
  exports.initial = initial;
25
- exports.contains = contains;
16
+ exports.join = join;
17
+ exports.last = last;
18
+ exports.map = map;
19
+ exports.processSizesWildcard = processSizesWildcard;
20
+ exports.reshape = reshape;
21
+ exports.resize = resize;
22
+ exports.squeeze = squeeze;
23
+ exports.unsqueeze = unsqueeze;
24
+ exports.validate = validate;
25
+ exports.validateIndex = validateIndex;
26
26
 
27
27
  var _number = require("./number.js");
28
28
 
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.bitAndBigNumber = bitAndBigNumber;
7
7
  exports.bitNotBigNumber = bitNotBigNumber;
8
8
  exports.bitOrBigNumber = bitOrBigNumber;
9
- exports.bitwise = bitwise;
10
9
  exports.bitXor = bitXor;
10
+ exports.bitwise = bitwise;
11
11
  exports.leftShiftBigNumber = leftShiftBigNumber;
12
12
  exports.rightArithShiftBigNumber = rightArithShiftBigNumber;
13
13
 
@@ -5,14 +5,14 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
+ exports.getSafeProperties = getSafeProperties;
8
9
  exports.getSafeProperty = getSafeProperty;
9
- exports.setSafeProperty = setSafeProperty;
10
- exports.isSafeProperty = isSafeProperty;
11
10
  exports.hasSafeProperty = hasSafeProperty;
12
- exports.getSafeProperties = getSafeProperties;
13
- exports.validateSafeMethod = validateSafeMethod;
14
- exports.isSafeMethod = isSafeMethod;
15
11
  exports.isPlainObject = isPlainObject;
12
+ exports.isSafeMethod = isSafeMethod;
13
+ exports.isSafeProperty = isSafeProperty;
14
+ exports.setSafeProperty = setSafeProperty;
15
+ exports.validateSafeMethod = validateSafeMethod;
16
16
 
17
17
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
18
18
 
@@ -3,12 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.factory = factory;
7
- exports.sortFactories = sortFactories;
6
+ exports.assertDependencies = assertDependencies;
8
7
  exports.create = create;
8
+ exports.factory = factory;
9
9
  exports.isFactory = isFactory;
10
- exports.assertDependencies = assertDependencies;
11
10
  exports.isOptionalDependency = isOptionalDependency;
11
+ exports.sortFactories = sortFactories;
12
12
  exports.stripOptionalNotation = stripOptionalNotation;
13
13
 
14
14
  var _array = require("./array.js");
@@ -5,9 +5,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
+ exports.maxArgumentCount = maxArgumentCount;
8
9
  exports.memoize = memoize;
9
10
  exports.memoizeCompare = memoizeCompare;
10
- exports.maxArgumentCount = maxArgumentCount;
11
11
 
12
12
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
13
13
 
@@ -5,45 +5,45 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.isNumber = isNumber;
9
- exports.isBigNumber = isBigNumber;
10
- exports.isComplex = isComplex;
11
- exports.isFraction = isFraction;
12
- exports.isUnit = isUnit;
13
- exports.isString = isString;
14
- exports.isMatrix = isMatrix;
15
- exports.isCollection = isCollection;
16
- exports.isDenseMatrix = isDenseMatrix;
17
- exports.isSparseMatrix = isSparseMatrix;
18
- exports.isRange = isRange;
19
- exports.isIndex = isIndex;
20
- exports.isBoolean = isBoolean;
21
- exports.isResultSet = isResultSet;
22
- exports.isHelp = isHelp;
23
- exports.isFunction = isFunction;
24
- exports.isDate = isDate;
25
- exports.isRegExp = isRegExp;
26
- exports.isObject = isObject;
27
- exports.isNull = isNull;
28
- exports.isUndefined = isUndefined;
29
8
  exports.isAccessorNode = isAccessorNode;
9
+ exports.isArray = void 0;
30
10
  exports.isArrayNode = isArrayNode;
31
11
  exports.isAssignmentNode = isAssignmentNode;
12
+ exports.isBigNumber = isBigNumber;
32
13
  exports.isBlockNode = isBlockNode;
14
+ exports.isBoolean = isBoolean;
15
+ exports.isChain = isChain;
16
+ exports.isCollection = isCollection;
17
+ exports.isComplex = isComplex;
33
18
  exports.isConditionalNode = isConditionalNode;
34
19
  exports.isConstantNode = isConstantNode;
20
+ exports.isDate = isDate;
21
+ exports.isDenseMatrix = isDenseMatrix;
22
+ exports.isFraction = isFraction;
23
+ exports.isFunction = isFunction;
35
24
  exports.isFunctionAssignmentNode = isFunctionAssignmentNode;
36
25
  exports.isFunctionNode = isFunctionNode;
26
+ exports.isHelp = isHelp;
27
+ exports.isIndex = isIndex;
37
28
  exports.isIndexNode = isIndexNode;
29
+ exports.isMatrix = isMatrix;
38
30
  exports.isNode = isNode;
31
+ exports.isNull = isNull;
32
+ exports.isNumber = isNumber;
33
+ exports.isObject = isObject;
39
34
  exports.isObjectNode = isObjectNode;
40
35
  exports.isOperatorNode = isOperatorNode;
41
36
  exports.isParenthesisNode = isParenthesisNode;
37
+ exports.isRange = isRange;
42
38
  exports.isRangeNode = isRangeNode;
39
+ exports.isRegExp = isRegExp;
40
+ exports.isResultSet = isResultSet;
41
+ exports.isSparseMatrix = isSparseMatrix;
42
+ exports.isString = isString;
43
43
  exports.isSymbolNode = isSymbolNode;
44
- exports.isChain = isChain;
44
+ exports.isUndefined = isUndefined;
45
+ exports.isUnit = isUnit;
45
46
  exports.typeOf = typeOf;
46
- exports.isArray = void 0;
47
47
 
48
48
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
49
49
 
@@ -5,9 +5,10 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
+ exports.defaultTemplate = void 0;
8
9
  exports.escapeLatex = escapeLatex;
10
+ exports.latexSymbols = exports.latexOperators = exports.latexFunctions = void 0;
9
11
  exports.toSymbol = toSymbol;
10
- exports.defaultTemplate = exports.latexFunctions = exports.latexOperators = exports.latexSymbols = void 0;
11
12
 
12
13
  var _escapeLatex = _interopRequireDefault(require("escape-latex"));
13
14
 
@@ -5,12 +5,12 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
+ exports.ObjectWrappingMap = void 0;
9
+ exports.assign = assign;
8
10
  exports.createEmptyMap = createEmptyMap;
9
11
  exports.createMap = createMap;
10
- exports.toObject = toObject;
11
12
  exports.isMap = isMap;
12
- exports.assign = assign;
13
- exports.ObjectWrappingMap = void 0;
13
+ exports.toObject = toObject;
14
14
 
15
15
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
16
16
 
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.noBignumber = noBignumber;
7
7
  exports.noFraction = noFraction;
8
- exports.noMatrix = noMatrix;
9
8
  exports.noIndex = noIndex;
9
+ exports.noMatrix = noMatrix;
10
10
  exports.noSubset = noSubset;
11
11
 
12
12
  function noBignumber() {