mathjs 11.8.0 → 11.8.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. package/HISTORY.md +25 -1
  2. package/lib/browser/math.js +1 -1
  3. package/lib/browser/math.js.LICENSE.txt +2 -2
  4. package/lib/browser/math.js.map +1 -1
  5. package/lib/cjs/entry/dependenciesAny/dependenciesDistance.generated.js +2 -2
  6. package/lib/cjs/entry/pureFunctionsAny.generated.js +2 -2
  7. package/lib/cjs/expression/Parser.js +1 -1
  8. package/lib/cjs/expression/function/parser.js +1 -1
  9. package/lib/cjs/expression/transform/filter.transform.js +4 -13
  10. package/lib/cjs/expression/transform/forEach.transform.js +3 -12
  11. package/lib/cjs/expression/transform/map.transform.js +4 -13
  12. package/lib/cjs/function/algebra/derivative.js +2 -2
  13. package/lib/cjs/function/algebra/leafCount.js +1 -1
  14. package/lib/cjs/function/algebra/polynomialRoot.js +1 -1
  15. package/lib/cjs/function/algebra/rationalize.js +4 -4
  16. package/lib/cjs/function/algebra/resolve.js +1 -1
  17. package/lib/cjs/function/algebra/simplify.js +7 -7
  18. package/lib/cjs/function/algebra/simplifyConstant.js +2 -2
  19. package/lib/cjs/function/algebra/simplifyCore.js +2 -2
  20. package/lib/cjs/function/algebra/symbolicEqual.js +8 -8
  21. package/lib/cjs/function/geometry/distance.js +21 -17
  22. package/lib/cjs/function/matrix/filter.js +2 -11
  23. package/lib/cjs/function/matrix/forEach.js +3 -12
  24. package/lib/cjs/function/matrix/map.js +6 -38
  25. package/lib/cjs/function/matrix/sqrtm.js +1 -1
  26. package/lib/cjs/header.js +2 -2
  27. package/lib/cjs/type/bignumber/function/bignumber.js +7 -0
  28. package/lib/cjs/type/fraction/function/fraction.js +8 -1
  29. package/lib/cjs/type/number.js +7 -3
  30. package/lib/cjs/type/unit/function/splitUnit.js +1 -1
  31. package/lib/cjs/utils/applyCallback.js +73 -0
  32. package/lib/cjs/utils/bignumber/formatter.js +4 -3
  33. package/lib/cjs/version.js +1 -1
  34. package/lib/esm/entry/dependenciesAny/dependenciesDistance.generated.js +2 -2
  35. package/lib/esm/entry/pureFunctionsAny.generated.js +2 -2
  36. package/lib/esm/expression/Parser.js +1 -1
  37. package/lib/esm/expression/function/parser.js +1 -1
  38. package/lib/esm/expression/transform/filter.transform.js +4 -13
  39. package/lib/esm/expression/transform/forEach.transform.js +3 -12
  40. package/lib/esm/expression/transform/map.transform.js +4 -13
  41. package/lib/esm/function/algebra/derivative.js +2 -2
  42. package/lib/esm/function/algebra/leafCount.js +1 -1
  43. package/lib/esm/function/algebra/polynomialRoot.js +1 -1
  44. package/lib/esm/function/algebra/rationalize.js +4 -4
  45. package/lib/esm/function/algebra/resolve.js +1 -1
  46. package/lib/esm/function/algebra/simplify.js +7 -7
  47. package/lib/esm/function/algebra/simplifyConstant.js +2 -2
  48. package/lib/esm/function/algebra/simplifyCore.js +2 -2
  49. package/lib/esm/function/algebra/symbolicEqual.js +8 -8
  50. package/lib/esm/function/geometry/distance.js +21 -17
  51. package/lib/esm/function/matrix/filter.js +2 -11
  52. package/lib/esm/function/matrix/forEach.js +3 -12
  53. package/lib/esm/function/matrix/map.js +6 -38
  54. package/lib/esm/function/matrix/sqrtm.js +1 -1
  55. package/lib/esm/type/bignumber/function/bignumber.js +5 -0
  56. package/lib/esm/type/fraction/function/fraction.js +6 -1
  57. package/lib/esm/type/number.js +5 -3
  58. package/lib/esm/type/unit/function/splitUnit.js +1 -1
  59. package/lib/esm/utils/applyCallback.js +67 -0
  60. package/lib/esm/utils/bignumber/formatter.js +4 -3
  61. package/lib/esm/version.js +1 -1
  62. package/package.json +19 -19
  63. package/types/index.d.ts +149 -50
@@ -6,12 +6,12 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.distanceDependencies = void 0;
7
7
  var _dependenciesAbsGenerated = require("./dependenciesAbs.generated.js");
8
8
  var _dependenciesAddScalarGenerated = require("./dependenciesAddScalar.generated.js");
9
+ var _dependenciesDeepEqualGenerated = require("./dependenciesDeepEqual.generated.js");
9
10
  var _dependenciesDivideScalarGenerated = require("./dependenciesDivideScalar.generated.js");
10
11
  var _dependenciesMultiplyScalarGenerated = require("./dependenciesMultiplyScalar.generated.js");
11
12
  var _dependenciesSqrtGenerated = require("./dependenciesSqrt.generated.js");
12
13
  var _dependenciesSubtractGenerated = require("./dependenciesSubtract.generated.js");
13
14
  var _dependenciesTypedGenerated = require("./dependenciesTyped.generated.js");
14
- var _dependenciesUnaryMinusGenerated = require("./dependenciesUnaryMinus.generated.js");
15
15
  var _factoriesAny = require("../../factoriesAny.js");
16
16
  /**
17
17
  * THIS FILE IS AUTO-GENERATED
@@ -21,12 +21,12 @@ var _factoriesAny = require("../../factoriesAny.js");
21
21
  var distanceDependencies = {
22
22
  absDependencies: _dependenciesAbsGenerated.absDependencies,
23
23
  addScalarDependencies: _dependenciesAddScalarGenerated.addScalarDependencies,
24
+ deepEqualDependencies: _dependenciesDeepEqualGenerated.deepEqualDependencies,
24
25
  divideScalarDependencies: _dependenciesDivideScalarGenerated.divideScalarDependencies,
25
26
  multiplyScalarDependencies: _dependenciesMultiplyScalarGenerated.multiplyScalarDependencies,
26
27
  sqrtDependencies: _dependenciesSqrtGenerated.sqrtDependencies,
27
28
  subtractDependencies: _dependenciesSubtractGenerated.subtractDependencies,
28
29
  typedDependencies: _dependenciesTypedGenerated.typedDependencies,
29
- unaryMinusDependencies: _dependenciesUnaryMinusGenerated.unaryMinusDependencies,
30
30
  createDistance: _factoriesAny.createDistance
31
31
  };
32
32
  exports.distanceDependencies = distanceDependencies;
@@ -1066,12 +1066,12 @@ exports.diff = diff;
1066
1066
  var distance = /* #__PURE__ */(0, _factoriesAny.createDistance)({
1067
1067
  abs: abs,
1068
1068
  addScalar: addScalar,
1069
+ deepEqual: deepEqual,
1069
1070
  divideScalar: divideScalar,
1070
1071
  multiplyScalar: multiplyScalar,
1071
1072
  sqrt: sqrt,
1072
1073
  subtract: subtract,
1073
- typed: typed,
1074
- unaryMinus: unaryMinus
1074
+ typed: typed
1075
1075
  });
1076
1076
  exports.distance = distance;
1077
1077
  var dotMultiply = /* #__PURE__ */(0, _factoriesAny.createDotMultiply)({
@@ -44,7 +44,7 @@ var createParserClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
44
44
  * parser.evaluate('f(2, 3)') // 8
45
45
  *
46
46
  * // get and set variables and functions
47
- * const x = parser.get('x') // 7
47
+ * const x = parser.get('x') // 3.5
48
48
  * const f = parser.get('f') // function
49
49
  * const g = f(3, 2) // 9
50
50
  * parser.set('h', 500)
@@ -34,7 +34,7 @@ var createParser = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
34
34
  * parser.evaluate('f(2, 3)') // 8
35
35
  *
36
36
  * // get and set variables and functions
37
- * const x = parser.get('x') // 7
37
+ * const x = parser.get('x') // 3.5
38
38
  * const f = parser.get('f') // function
39
39
  * const g = f(3, 2) // 9
40
40
  * parser.set('h', 500)
@@ -4,11 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.createFilterTransform = void 0;
7
- var _is = require("../../utils/is.js");
7
+ var _applyCallback = require("../../utils/applyCallback.js");
8
8
  var _array = require("../../utils/array.js");
9
- var _function = require("../../utils/function.js");
10
- var _compileInlineExpression = require("./utils/compileInlineExpression.js");
11
9
  var _factory = require("../../utils/factory.js");
10
+ var _is = require("../../utils/is.js");
11
+ var _compileInlineExpression = require("./utils/compileInlineExpression.js");
12
12
  var name = 'filter';
13
13
  var dependencies = ['typed'];
14
14
  var createFilterTransform = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
@@ -66,17 +66,8 @@ var createFilterTransform = /* #__PURE__ */(0, _factory.factory)(name, dependenc
66
66
  */
67
67
  exports.createFilterTransform = createFilterTransform;
68
68
  function _filter(x, callback) {
69
- // figure out what number of arguments the callback function expects
70
- var args = (0, _function.maxArgumentCount)(callback);
71
69
  return (0, _array.filter)(x, function (value, index, array) {
72
70
  // invoke the callback function with the right number of arguments
73
- if (args === 1) {
74
- return callback(value);
75
- } else if (args === 2) {
76
- return callback(value, [index + 1]);
77
- } else {
78
- // 3 or -1
79
- return callback(value, [index + 1], array);
80
- }
71
+ return (0, _applyCallback.applyCallback)(callback, value, [index + 1], array, 'filter');
81
72
  });
82
73
  }
@@ -4,10 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.createForEachTransform = void 0;
7
- var _is = require("../../utils/is.js");
8
- var _function = require("../../utils/function.js");
7
+ var _applyCallback = require("../../utils/applyCallback.js");
9
8
  var _array = require("../../utils/array.js");
10
9
  var _factory = require("../../utils/factory.js");
10
+ var _is = require("../../utils/is.js");
11
11
  var _compileInlineExpression = require("./utils/compileInlineExpression.js");
12
12
  var name = 'forEach';
13
13
  var dependencies = ['typed'];
@@ -40,8 +40,6 @@ var createForEachTransform = /* #__PURE__ */(0, _factory.factory)(name, dependen
40
40
  // one-based version of forEach
41
41
  var _forEach = typed('forEach', {
42
42
  'Array | Matrix, function': function ArrayMatrixFunction(array, callback) {
43
- // figure out what number of arguments the callback function expects
44
- var args = (0, _function.maxArgumentCount)(callback);
45
43
  var recurse = function recurse(value, index) {
46
44
  if (Array.isArray(value)) {
47
45
  (0, _array.forEach)(value, function (child, i) {
@@ -50,14 +48,7 @@ var createForEachTransform = /* #__PURE__ */(0, _factory.factory)(name, dependen
50
48
  });
51
49
  } else {
52
50
  // invoke the callback function with the right number of arguments
53
- if (args === 1) {
54
- callback(value);
55
- } else if (args === 2) {
56
- callback(value, index);
57
- } else {
58
- // 3 or -1
59
- callback(value, index, array);
60
- }
51
+ return (0, _applyCallback.applyCallback)(callback, value, index, array, 'forEach');
61
52
  }
62
53
  };
63
54
  recurse(array.valueOf(), []); // pass Array
@@ -4,10 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.createMapTransform = void 0;
7
- var _is = require("../../utils/is.js");
8
- var _function = require("../../utils/function.js");
7
+ var _applyCallback = require("../../utils/applyCallback.js");
9
8
  var _array = require("../../utils/array.js");
10
9
  var _factory = require("../../utils/factory.js");
10
+ var _is = require("../../utils/is.js");
11
11
  var _compileInlineExpression = require("./utils/compileInlineExpression.js");
12
12
  var name = 'map';
13
13
  var dependencies = ['typed'];
@@ -52,7 +52,7 @@ var createMapTransform = /* #__PURE__ */(0, _factory.factory)(name, dependencies
52
52
  });
53
53
 
54
54
  /**
55
- * Map for a multi dimensional array. One-based indexes
55
+ * Map for a multidimensional array. One-based indexes
56
56
  * @param {Array} array
57
57
  * @param {function} callback
58
58
  * @param {Array} orig
@@ -61,8 +61,6 @@ var createMapTransform = /* #__PURE__ */(0, _factory.factory)(name, dependencies
61
61
  */
62
62
  exports.createMapTransform = createMapTransform;
63
63
  function _map(array, callback, orig) {
64
- // figure out what number of arguments the callback function expects
65
- var argsCount = (0, _function.maxArgumentCount)(callback);
66
64
  function recurse(value, index) {
67
65
  if (Array.isArray(value)) {
68
66
  return (0, _array.map)(value, function (child, i) {
@@ -71,14 +69,7 @@ function _map(array, callback, orig) {
71
69
  });
72
70
  } else {
73
71
  // invoke the (typed) callback function with the right number of arguments
74
- if (argsCount === 1) {
75
- return callback(value);
76
- } else if (argsCount === 2) {
77
- return callback(value, index);
78
- } else {
79
- // 3 or -1
80
- return callback(value, index, orig);
81
- }
72
+ return (0, _applyCallback.applyCallback)(callback, value, index, orig, 'map');
82
73
  }
83
74
  }
84
75
  return recurse(array, []);
@@ -33,8 +33,8 @@ var createDerivative = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
33
33
  *
34
34
  * Syntax:
35
35
  *
36
- * derivative(expr, variable)
37
- * derivative(expr, variable, options)
36
+ * math.derivative(expr, variable)
37
+ * math.derivative(expr, variable, options)
38
38
  *
39
39
  * Examples:
40
40
  *
@@ -33,7 +33,7 @@ var createLeafCount = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
33
33
  *
34
34
  * Syntax:
35
35
  *
36
- * leafCount(expr)
36
+ * math.leafCount(expr)
37
37
  *
38
38
  * Examples:
39
39
  *
@@ -31,7 +31,7 @@ var createPolynomialRoot = /* #__PURE__ */(0, _factory.factory)(name, dependenci
31
31
  *
32
32
  * Syntax:
33
33
  *
34
- * polynomialRoot(constant, linearCoeff, quadraticCoeff, cubicCoeff)
34
+ * math.polynomialRoot(constant, linearCoeff, quadraticCoeff, cubicCoeff)
35
35
  *
36
36
  * Examples:
37
37
  * // linear
@@ -43,10 +43,10 @@ var createRationalize = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
43
43
  *
44
44
  * Syntax:
45
45
  *
46
- * rationalize(expr)
47
- * rationalize(expr, detailed)
48
- * rationalize(expr, scope)
49
- * rationalize(expr, scope, detailed)
46
+ * math.rationalize(expr)
47
+ * math.rationalize(expr, detailed)
48
+ * math.rationalize(expr, scope)
49
+ * math.rationalize(expr, scope, detailed)
50
50
  *
51
51
  * Examples:
52
52
  *
@@ -21,7 +21,7 @@ var createResolve = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
21
21
  *
22
22
  * Syntax:
23
23
  *
24
- * resolve(expr, scope)
24
+ * math.resolve(expr, scope)
25
25
  *
26
26
  * Examples:
27
27
  *
@@ -143,13 +143,13 @@ var createSimplify = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
143
143
  *
144
144
  * Syntax:
145
145
  *
146
- * simplify(expr)
147
- * simplify(expr, rules)
148
- * simplify(expr, rules)
149
- * simplify(expr, rules, scope)
150
- * simplify(expr, rules, scope, options)
151
- * simplify(expr, scope)
152
- * simplify(expr, scope, options)
146
+ * math.simplify(expr)
147
+ * math.simplify(expr, rules)
148
+ * math.simplify(expr, rules)
149
+ * math.simplify(expr, rules, scope)
150
+ * math.simplify(expr, rules, scope, options)
151
+ * math.simplify(expr, scope)
152
+ * math.simplify(expr, scope, options)
153
153
  *
154
154
  * Examples:
155
155
  *
@@ -48,8 +48,8 @@ var createSimplifyConstant = /* #__PURE__ */(0, _factory.factory)(name, dependen
48
48
  *
49
49
  * Syntax:
50
50
  *
51
- * simplifyConstant(expr)
52
- * simplifyConstant(expr, options)
51
+ * math.simplifyConstant(expr)
52
+ * math.simplifyConstant(expr, options)
53
53
  *
54
54
  * Examples:
55
55
  *
@@ -70,8 +70,8 @@ var createSimplifyCore = /* #__PURE__ */(0, _factory.factory)(name, dependencies
70
70
  *
71
71
  * Syntax:
72
72
  *
73
- * simplifyCore(expr)
74
- * simplifyCore(expr, options)
73
+ * math.simplifyCore(expr)
74
+ * math.simplifyCore(expr, options)
75
75
  *
76
76
  * Examples:
77
77
  *
@@ -29,20 +29,20 @@ var createSymbolicEqual = /* #__PURE__ */(0, _factory.factory)(name, dependencie
29
29
  *
30
30
  * Syntax:
31
31
  *
32
- * symbolicEqual(expr1, expr2)
33
- * symbolicEqual(expr1, expr2, options)
32
+ * math.symbolicEqual(expr1, expr2)
33
+ * math.symbolicEqual(expr1, expr2, options)
34
34
  *
35
35
  * Examples:
36
36
  *
37
- * symbolicEqual('x*y', 'y*x') // Returns true
38
- * symbolicEqual('x*y', 'y*x', {context: {multiply: {commutative: false}}}) // Returns false
39
- * symbolicEqual('x/y', '(y*x^(-1))^(-1)') // Returns true
40
- * symbolicEqual('abs(x)','x') // Returns false
41
- * symbolicEqual('abs(x)','x', simplify.positiveContext) // Returns true
37
+ * math.symbolicEqual('x*y', 'y*x') // Returns true
38
+ * math.symbolicEqual('x*y', 'y*x', {context: {multiply: {commutative: false}}}) // Returns false
39
+ * math.symbolicEqual('x/y', '(y*x^(-1))^(-1)') // Returns true
40
+ * math.symbolicEqual('abs(x)','x') // Returns false
41
+ * math.symbolicEqual('abs(x)','x', simplify.positiveContext) // Returns true
42
42
  *
43
43
  * See also:
44
44
  *
45
- * simplify, evaluate
45
+ * simplify, evaluate
46
46
  *
47
47
  * @param {Node|string} expr1 The first expression to compare
48
48
  * @param {Node|string} expr2 The second expression to compare
@@ -7,14 +7,14 @@ exports.createDistance = void 0;
7
7
  var _is = require("../../utils/is.js");
8
8
  var _factory = require("../../utils/factory.js");
9
9
  var name = 'distance';
10
- var dependencies = ['typed', 'addScalar', 'subtract', 'divideScalar', 'multiplyScalar', 'unaryMinus', 'sqrt', 'abs'];
10
+ var dependencies = ['typed', 'addScalar', 'subtract', 'divideScalar', 'multiplyScalar', 'deepEqual', 'sqrt', 'abs'];
11
11
  var createDistance = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
12
12
  var typed = _ref.typed,
13
13
  addScalar = _ref.addScalar,
14
14
  subtract = _ref.subtract,
15
15
  multiplyScalar = _ref.multiplyScalar,
16
16
  divideScalar = _ref.divideScalar,
17
- unaryMinus = _ref.unaryMinus,
17
+ deepEqual = _ref.deepEqual,
18
18
  sqrt = _ref.sqrt,
19
19
  abs = _ref.abs;
20
20
  /**
@@ -35,10 +35,10 @@ var createDistance = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
35
35
  * math.distance([x1,y1,z1,a1], [x2,y2,z2,a2])
36
36
  * math.distance([[x1,y1], [x2,y2], [x3,y3]])
37
37
  * math.distance([[x1,y1,z1], [x2,y2,z2], [x3,y3,z3]])
38
- * math.distance([x1,y1], [x2,y2,z2])
39
- * math.distance([x1,y1], [x2,y2], [x3,y3])
38
+ * math.distance([pointX,pointY], [a,b,c])
39
+ * math.distance([pointX,pointY], [lineOnePtX,lineOnePtY], [lineTwoPtX,lineTwoPtY])
40
40
  * math.distance({pointX, pointY}, {lineOnePtX, lineOnePtY}, {lineTwoPtX, lineTwoPtY})
41
- * math.distance([x1,y1,z1], [x0, y0, z0, a, b, c])
41
+ * math.distance([pointX,pointY,pointZ], [x0, y0, z0, a, b, c])
42
42
  * math.distance({pointX, pointY, pointZ}, {x0, y0, z0, a, b, c})
43
43
  *
44
44
  * Examples:
@@ -54,11 +54,11 @@ var createDistance = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
54
54
  * math.distance([[1, 2], [1, 2], [1, 3]]) // Returns [0, 1, 1]
55
55
  * math.distance([[1,2,4], [1,2,6], [8,1,3]]) // Returns [2, 7.14142842854285, 7.681145747868608]
56
56
  * math.distance([10, 10], [8, 1, 3]) // Returns 11.535230316796387
57
- * math.distance([10, 10], [2, 3], [-8, 0]) // Returns 8.759953130362847
57
+ * math.distance([0, 0], [3, 0], [0, 4]) // Returns 2.4
58
58
  * math.distance(
59
- * {pointX: 1, pointY: 4},
60
- * {lineOnePtX: 6, lineOnePtY: 3},
61
- * {lineTwoPtX: 2, lineTwoPtY: 8}) // Returns 2.720549372624744
59
+ * {pointX: 0, pointY: 0},
60
+ * {lineOnePtX: 3, lineOnePtY: 0},
61
+ * {lineTwoPtX: 0, lineTwoPtY: 4}) // Returns 2.4
62
62
  * math.distance([2, 3, 1], [1, 1, 2, 5, 0, 1]) // Returns 2.3204774044612857
63
63
  * math.distance(
64
64
  * {pointX: 2, pointY: 3, pointZ: 1},
@@ -81,10 +81,12 @@ var createDistance = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
81
81
  if (!_2d(z)) {
82
82
  throw new TypeError('Array with 2 numbers or BigNumbers expected for third argument');
83
83
  }
84
- var m = divideScalar(subtract(z[1], z[0]), subtract(y[1], y[0]));
85
- var xCoeff = multiplyScalar(multiplyScalar(m, m), y[0]);
86
- var yCoeff = unaryMinus(multiplyScalar(m, y[0]));
87
- var constant = x[1];
84
+ if (deepEqual(y, z)) {
85
+ throw new TypeError('LinePoint1 should not be same with LinePoint2');
86
+ }
87
+ var xCoeff = subtract(z[1], y[1]);
88
+ var yCoeff = subtract(y[0], z[0]);
89
+ var constant = subtract(multiplyScalar(z[0], y[1]), multiplyScalar(y[0], z[1]));
88
90
  return _distancePointLine2D(x[0], x[1], xCoeff, yCoeff, constant);
89
91
  } else {
90
92
  throw new TypeError('Invalid Arguments: Try again');
@@ -101,11 +103,13 @@ var createDistance = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
101
103
  if (!_2d(z)) {
102
104
  throw new TypeError('Values of lineTwoPtX and lineTwoPtY should be numbers or BigNumbers');
103
105
  }
106
+ if (deepEqual(_objectToArray(y), _objectToArray(z))) {
107
+ throw new TypeError('LinePoint1 should not be same with LinePoint2');
108
+ }
104
109
  if ('pointX' in x && 'pointY' in x && 'lineOnePtX' in y && 'lineOnePtY' in y && 'lineTwoPtX' in z && 'lineTwoPtY' in z) {
105
- var m = divideScalar(subtract(z.lineTwoPtY, z.lineTwoPtX), subtract(y.lineOnePtY, y.lineOnePtX));
106
- var xCoeff = multiplyScalar(multiplyScalar(m, m), y.lineOnePtX);
107
- var yCoeff = unaryMinus(multiplyScalar(m, y.lineOnePtX));
108
- var constant = x.pointX;
110
+ var xCoeff = subtract(z.lineTwoPtY, y.lineOnePtY);
111
+ var yCoeff = subtract(y.lineOnePtX, z.lineTwoPtX);
112
+ var constant = subtract(multiplyScalar(z.lineTwoPtX, y.lineOnePtY), multiplyScalar(y.lineOnePtX, z.lineTwoPtY));
109
113
  return _distancePointLine2D(x.pointX, x.pointY, xCoeff, yCoeff, constant);
110
114
  } else {
111
115
  throw new TypeError('Key names do not match');
@@ -4,8 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.createFilter = void 0;
7
+ var _applyCallback = require("../../utils/applyCallback.js");
7
8
  var _array = require("../../utils/array.js");
8
- var _function = require("../../utils/function.js");
9
9
  var _factory = require("../../utils/factory.js");
10
10
  var name = 'filter';
11
11
  var dependencies = ['typed'];
@@ -61,17 +61,8 @@ var createFilter = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
61
61
  */
62
62
  exports.createFilter = createFilter;
63
63
  function _filterCallback(x, callback) {
64
- // figure out what number of arguments the callback function expects
65
- var args = (0, _function.maxArgumentCount)(callback);
66
64
  return (0, _array.filter)(x, function (value, index, array) {
67
65
  // invoke the callback function with the right number of arguments
68
- if (args === 1) {
69
- return callback(value);
70
- } else if (args === 2) {
71
- return callback(value, [index]);
72
- } else {
73
- // 3 or -1
74
- return callback(value, [index], array);
75
- }
66
+ return (0, _applyCallback.applyCallback)(callback, value, [index], array, 'filter');
76
67
  });
77
68
  }
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.createForEach = void 0;
7
- var _function = require("../../utils/function.js");
7
+ var _applyCallback = require("../../utils/applyCallback.js");
8
8
  var _array = require("../../utils/array.js");
9
9
  var _factory = require("../../utils/factory.js");
10
10
  var name = 'forEach';
@@ -43,15 +43,13 @@ var createForEach = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
43
43
  });
44
44
 
45
45
  /**
46
- * forEach for a multi dimensional array
46
+ * forEach for a multidimensional array
47
47
  * @param {Array} array
48
48
  * @param {Function} callback
49
49
  * @private
50
50
  */
51
51
  exports.createForEach = createForEach;
52
52
  function _forEach(array, callback) {
53
- // figure out what number of arguments the callback function expects
54
- var args = (0, _function.maxArgumentCount)(callback);
55
53
  var recurse = function recurse(value, index) {
56
54
  if (Array.isArray(value)) {
57
55
  (0, _array.forEach)(value, function (child, i) {
@@ -60,14 +58,7 @@ function _forEach(array, callback) {
60
58
  });
61
59
  } else {
62
60
  // invoke the callback function with the right number of arguments
63
- if (args === 1) {
64
- callback(value);
65
- } else if (args === 2) {
66
- callback(value, index);
67
- } else {
68
- // 3 or -1
69
- callback(value, index, array);
70
- }
61
+ return (0, _applyCallback.applyCallback)(callback, value, index, array, 'forEach');
71
62
  }
72
63
  };
73
64
  recurse(array, []);
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.createMap = void 0;
7
- var _function = require("../../utils/function.js");
7
+ var _applyCallback = require("../../utils/applyCallback.js");
8
8
  var _factory = require("../../utils/factory.js");
9
9
  var name = 'map';
10
10
  var dependencies = ['typed'];
@@ -31,14 +31,9 @@ var createMap = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
31
31
  * return value * value
32
32
  * }) // returns [1, 4, 9]
33
33
  *
34
- * // The calling convention for the callback can cause subtleties:
35
- * math.map([1, 2, 3], math.format)
36
- * // throws TypeError: map attempted to call 'format(1,[0])' but argument 2 of type Array does not match expected type number or function or Object or string or boolean
37
- * // [This happens because `format` _can_ take a second argument,
38
- * // but its semantics don't match that of the 2nd argument `map` provides]
39
- *
40
- * // To avoid this error, use a function that takes exactly the
41
- * // desired arguments:
34
+ * // The callback is normally called with three arguments:
35
+ * // callback(value, index, Array)
36
+ * // If you want to call with only one argument, use:
42
37
  * math.map([1, 2, 3], x => math.format(x)) // returns ['1', '2', '3']
43
38
  *
44
39
  * See also:
@@ -68,8 +63,6 @@ var createMap = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
68
63
  */
69
64
  exports.createMap = createMap;
70
65
  function _map(array, callback) {
71
- // figure out what number of arguments the callback function expects
72
- var args = (0, _function.maxArgumentCount)(callback);
73
66
  var recurse = function recurse(value, index) {
74
67
  if (Array.isArray(value)) {
75
68
  return value.map(function (child, i) {
@@ -77,33 +70,8 @@ function _map(array, callback) {
77
70
  return recurse(child, index.concat(i));
78
71
  });
79
72
  } else {
80
- try {
81
- // invoke the callback function with the right number of arguments
82
- if (args === 1) {
83
- return callback(value);
84
- } else if (args === 2) {
85
- return callback(value, index);
86
- } else {
87
- // 3 or -1
88
- return callback(value, index, array);
89
- }
90
- } catch (err) {
91
- // But maybe the arguments still weren't right
92
- if (err instanceof TypeError && 'data' in err && err.data.category === 'wrongType') {
93
- var newmsg = "map attempted to call '".concat(err.data.fn, "(").concat(value);
94
- var indexString = JSON.stringify(index);
95
- if (args === 2) {
96
- newmsg += ',' + indexString;
97
- } else if (args !== 1) {
98
- newmsg += ",".concat(indexString, ",").concat(array);
99
- }
100
- newmsg += ")' but argument ".concat(err.data.index + 1, " of type ");
101
- newmsg += "".concat(err.data.actual, " does not match expected type ");
102
- newmsg += err.data.expected.join(' or ');
103
- throw new TypeError(newmsg);
104
- }
105
- throw err;
106
- }
73
+ // invoke the callback function with the right number of arguments
74
+ return (0, _applyCallback.applyCallback)(callback, value, index, array, 'map');
107
75
  }
108
76
  };
109
77
  return recurse(array, []);
@@ -59,7 +59,7 @@ var createSqrtm = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
59
59
  *
60
60
  * Syntax:
61
61
  *
62
- * X = math.sqrtm(A)
62
+ * math.sqrtm(A)
63
63
  *
64
64
  * Examples:
65
65
  *
package/lib/cjs/header.js CHANGED
@@ -6,8 +6,8 @@
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 11.8.0
10
- * @date 2023-04-03
9
+ * @version 11.8.2
10
+ * @date 2023-06-20
11
11
  *
12
12
  * @license
13
13
  * Copyright (C) 2013-2023 Jos de Jong <wjosdejong@gmail.com>
@@ -67,6 +67,13 @@ var createBignumber = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
67
67
  // we assume a BigNumber is immutable
68
68
  return x;
69
69
  },
70
+ Unit: typed.referToSelf(function (self) {
71
+ return function (x) {
72
+ var clone = x.clone();
73
+ clone.value = self(x.value);
74
+ return clone;
75
+ };
76
+ }),
70
77
  Fraction: function Fraction(x) {
71
78
  return new BigNumber(x.n).div(x.d).times(x.s);
72
79
  },
@@ -43,7 +43,7 @@ var createFraction = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
43
43
  *
44
44
  * bignumber, number, string, unit
45
45
  *
46
- * @param {number | string | Fraction | BigNumber | Array | Matrix} [args]
46
+ * @param {number | string | Fraction | BigNumber | Unit | Array | Matrix} [args]
47
47
  * Arguments specifying the value, or numerator and denominator of
48
48
  * the fraction
49
49
  * @return {Fraction | Array | Matrix} Returns a fraction
@@ -71,6 +71,13 @@ var createFraction = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
71
71
  return x; // fractions are immutable
72
72
  },
73
73
 
74
+ Unit: typed.referToSelf(function (self) {
75
+ return function (x) {
76
+ var clone = x.clone();
77
+ clone.value = self(x.value);
78
+ return clone;
79
+ };
80
+ }),
74
81
  Object: function Object(x) {
75
82
  return new Fraction(x);
76
83
  },
@@ -125,9 +125,13 @@ var createNumber = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
125
125
  Fraction: function Fraction(x) {
126
126
  return x.valueOf();
127
127
  },
128
- Unit: function Unit(x) {
129
- throw new Error('Second argument with valueless unit expected');
130
- },
128
+ Unit: typed.referToSelf(function (self) {
129
+ return function (x) {
130
+ var clone = x.clone();
131
+ clone.value = self(x.value);
132
+ return clone;
133
+ };
134
+ }),
131
135
  "null": function _null(x) {
132
136
  return 0;
133
137
  },
@@ -14,7 +14,7 @@ var createSplitUnit = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
14
14
  *
15
15
  * Syntax:
16
16
  *
17
- * splitUnit(unit: Unit, parts: Array.<Unit>)
17
+ * math.splitUnit(unit: Unit, parts: Array.<Unit>)
18
18
  *
19
19
  * Example:
20
20
  *