mathjs 11.8.0 → 11.8.2
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.
- package/HISTORY.md +25 -1
- package/lib/browser/math.js +1 -1
- package/lib/browser/math.js.LICENSE.txt +2 -2
- package/lib/browser/math.js.map +1 -1
- package/lib/cjs/entry/dependenciesAny/dependenciesDistance.generated.js +2 -2
- package/lib/cjs/entry/pureFunctionsAny.generated.js +2 -2
- package/lib/cjs/expression/Parser.js +1 -1
- package/lib/cjs/expression/function/parser.js +1 -1
- package/lib/cjs/expression/transform/filter.transform.js +4 -13
- package/lib/cjs/expression/transform/forEach.transform.js +3 -12
- package/lib/cjs/expression/transform/map.transform.js +4 -13
- package/lib/cjs/function/algebra/derivative.js +2 -2
- package/lib/cjs/function/algebra/leafCount.js +1 -1
- package/lib/cjs/function/algebra/polynomialRoot.js +1 -1
- package/lib/cjs/function/algebra/rationalize.js +4 -4
- package/lib/cjs/function/algebra/resolve.js +1 -1
- package/lib/cjs/function/algebra/simplify.js +7 -7
- package/lib/cjs/function/algebra/simplifyConstant.js +2 -2
- package/lib/cjs/function/algebra/simplifyCore.js +2 -2
- package/lib/cjs/function/algebra/symbolicEqual.js +8 -8
- package/lib/cjs/function/geometry/distance.js +21 -17
- package/lib/cjs/function/matrix/filter.js +2 -11
- package/lib/cjs/function/matrix/forEach.js +3 -12
- package/lib/cjs/function/matrix/map.js +6 -38
- package/lib/cjs/function/matrix/sqrtm.js +1 -1
- package/lib/cjs/header.js +2 -2
- package/lib/cjs/type/bignumber/function/bignumber.js +7 -0
- package/lib/cjs/type/fraction/function/fraction.js +8 -1
- package/lib/cjs/type/number.js +7 -3
- package/lib/cjs/type/unit/function/splitUnit.js +1 -1
- package/lib/cjs/utils/applyCallback.js +73 -0
- package/lib/cjs/utils/bignumber/formatter.js +4 -3
- package/lib/cjs/version.js +1 -1
- package/lib/esm/entry/dependenciesAny/dependenciesDistance.generated.js +2 -2
- package/lib/esm/entry/pureFunctionsAny.generated.js +2 -2
- package/lib/esm/expression/Parser.js +1 -1
- package/lib/esm/expression/function/parser.js +1 -1
- package/lib/esm/expression/transform/filter.transform.js +4 -13
- package/lib/esm/expression/transform/forEach.transform.js +3 -12
- package/lib/esm/expression/transform/map.transform.js +4 -13
- package/lib/esm/function/algebra/derivative.js +2 -2
- package/lib/esm/function/algebra/leafCount.js +1 -1
- package/lib/esm/function/algebra/polynomialRoot.js +1 -1
- package/lib/esm/function/algebra/rationalize.js +4 -4
- package/lib/esm/function/algebra/resolve.js +1 -1
- package/lib/esm/function/algebra/simplify.js +7 -7
- package/lib/esm/function/algebra/simplifyConstant.js +2 -2
- package/lib/esm/function/algebra/simplifyCore.js +2 -2
- package/lib/esm/function/algebra/symbolicEqual.js +8 -8
- package/lib/esm/function/geometry/distance.js +21 -17
- package/lib/esm/function/matrix/filter.js +2 -11
- package/lib/esm/function/matrix/forEach.js +3 -12
- package/lib/esm/function/matrix/map.js +6 -38
- package/lib/esm/function/matrix/sqrtm.js +1 -1
- package/lib/esm/type/bignumber/function/bignumber.js +5 -0
- package/lib/esm/type/fraction/function/fraction.js +6 -1
- package/lib/esm/type/number.js +5 -3
- package/lib/esm/type/unit/function/splitUnit.js +1 -1
- package/lib/esm/utils/applyCallback.js +67 -0
- package/lib/esm/utils/bignumber/formatter.js +4 -3
- package/lib/esm/version.js +1 -1
- package/package.json +19 -19
- package/types/index.d.ts +149 -50
@@ -0,0 +1,73 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
5
|
+
value: true
|
6
|
+
});
|
7
|
+
exports.applyCallback = applyCallback;
|
8
|
+
var _typedFunction = _interopRequireDefault(require("typed-function"));
|
9
|
+
var _is = require("./is.js");
|
10
|
+
/**
|
11
|
+
* Invoke a callback for functions like map and filter with a matching number of arguments
|
12
|
+
* @param {function} callback
|
13
|
+
* @param {any} value
|
14
|
+
* @param {number | number[]} index
|
15
|
+
* @param {Array} array
|
16
|
+
* @param {string} mappingFnName The name of the function that is invoking these callbacks, for example "map" or "filter"
|
17
|
+
* @returns {*}
|
18
|
+
*/
|
19
|
+
function applyCallback(callback, value, index, array, mappingFnName) {
|
20
|
+
if (_typedFunction["default"].isTypedFunction(callback)) {
|
21
|
+
// invoke the typed callback function with the matching number of arguments only
|
22
|
+
|
23
|
+
var args3 = [value, index, array];
|
24
|
+
var signature3 = _typedFunction["default"].resolve(callback, args3);
|
25
|
+
if (signature3) {
|
26
|
+
return tryWithArgs(signature3.implementation, args3);
|
27
|
+
}
|
28
|
+
var args2 = [value, index];
|
29
|
+
var signature2 = _typedFunction["default"].resolve(callback, args2);
|
30
|
+
if (signature2) {
|
31
|
+
return tryWithArgs(signature2.implementation, args2);
|
32
|
+
}
|
33
|
+
var args1 = [value];
|
34
|
+
var signature1 = _typedFunction["default"].resolve(callback, args1);
|
35
|
+
if (signature1) {
|
36
|
+
return tryWithArgs(signature1.implementation, args1);
|
37
|
+
}
|
38
|
+
|
39
|
+
// fallback (will throw an exception)
|
40
|
+
return tryWithArgs(callback, args3);
|
41
|
+
} else {
|
42
|
+
// A regular JavaScript function
|
43
|
+
return callback(value, index, array);
|
44
|
+
}
|
45
|
+
|
46
|
+
/**
|
47
|
+
* @param {function} signature The selected signature of the typed-function
|
48
|
+
* @param {Array} args List with arguments to apply to the selected signature
|
49
|
+
* @returns {*} Returns the return value of the invoked signature
|
50
|
+
* @throws {TypeError} Throws an error when no matching signature was found
|
51
|
+
*/
|
52
|
+
function tryWithArgs(signature, args) {
|
53
|
+
try {
|
54
|
+
return signature.apply(signature, args);
|
55
|
+
} catch (err) {
|
56
|
+
var _err$data;
|
57
|
+
// Enrich the error message so the user understands that it took place inside the callback function
|
58
|
+
if (err instanceof TypeError && ((_err$data = err.data) === null || _err$data === void 0 ? void 0 : _err$data.category) === 'wrongType') {
|
59
|
+
var argsDesc = [];
|
60
|
+
argsDesc.push("value: ".concat((0, _is.typeOf)(value)));
|
61
|
+
if (args.length >= 2) {
|
62
|
+
argsDesc.push("index: ".concat((0, _is.typeOf)(index)));
|
63
|
+
}
|
64
|
+
if (args.length >= 3) {
|
65
|
+
argsDesc.push("array: ".concat((0, _is.typeOf)(array)));
|
66
|
+
}
|
67
|
+
throw new TypeError("Function ".concat(mappingFnName, " cannot apply callback arguments ") + "".concat(callback.name, "(").concat(argsDesc.join(', '), ") at index ").concat(JSON.stringify(index)));
|
68
|
+
} else {
|
69
|
+
throw new TypeError("Function ".concat(mappingFnName, " cannot apply callback arguments ") + "to function ".concat(callback.name, ": ").concat(err.message));
|
70
|
+
}
|
71
|
+
}
|
72
|
+
}
|
73
|
+
}
|
@@ -154,7 +154,7 @@ function format(value, options) {
|
|
154
154
|
// determine precision from options
|
155
155
|
if (typeof options === 'number') {
|
156
156
|
precision = options;
|
157
|
-
} else if (options.precision) {
|
157
|
+
} else if (options.precision !== undefined) {
|
158
158
|
precision = options.precision;
|
159
159
|
}
|
160
160
|
if (options.wordSize) {
|
@@ -215,7 +215,7 @@ function format(value, options) {
|
|
215
215
|
|
216
216
|
/**
|
217
217
|
* Format a BigNumber in engineering notation. Like '1.23e+6', '2.3e+0', '3.500e-3'
|
218
|
-
* @param {BigNumber
|
218
|
+
* @param {BigNumber} value
|
219
219
|
* @param {number} [precision] Optional number of significant figures to return.
|
220
220
|
*/
|
221
221
|
function toEngineering(value, precision) {
|
@@ -227,7 +227,8 @@ function toEngineering(value, precision) {
|
|
227
227
|
var valueWithoutExp = value.mul(Math.pow(10, -newExp));
|
228
228
|
var valueStr = valueWithoutExp.toPrecision(precision);
|
229
229
|
if (valueStr.indexOf('e') !== -1) {
|
230
|
-
|
230
|
+
var BigNumber = value.constructor;
|
231
|
+
valueStr = new BigNumber(valueStr).toFixed();
|
231
232
|
}
|
232
233
|
return valueStr + 'e' + (e >= 0 ? '+' : '') + newExp.toString();
|
233
234
|
}
|
package/lib/cjs/version.js
CHANGED
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.version = void 0;
|
7
|
-
var version = '11.8.
|
7
|
+
var version = '11.8.2';
|
8
8
|
// Note: This file is automatically generated when building math.js.
|
9
9
|
// Changes made in this file will be overwritten.
|
10
10
|
exports.version = version;
|
@@ -4,21 +4,21 @@
|
|
4
4
|
*/
|
5
5
|
import { absDependencies } from './dependenciesAbs.generated.js';
|
6
6
|
import { addScalarDependencies } from './dependenciesAddScalar.generated.js';
|
7
|
+
import { deepEqualDependencies } from './dependenciesDeepEqual.generated.js';
|
7
8
|
import { divideScalarDependencies } from './dependenciesDivideScalar.generated.js';
|
8
9
|
import { multiplyScalarDependencies } from './dependenciesMultiplyScalar.generated.js';
|
9
10
|
import { sqrtDependencies } from './dependenciesSqrt.generated.js';
|
10
11
|
import { subtractDependencies } from './dependenciesSubtract.generated.js';
|
11
12
|
import { typedDependencies } from './dependenciesTyped.generated.js';
|
12
|
-
import { unaryMinusDependencies } from './dependenciesUnaryMinus.generated.js';
|
13
13
|
import { createDistance } from '../../factoriesAny.js';
|
14
14
|
export var distanceDependencies = {
|
15
15
|
absDependencies,
|
16
16
|
addScalarDependencies,
|
17
|
+
deepEqualDependencies,
|
17
18
|
divideScalarDependencies,
|
18
19
|
multiplyScalarDependencies,
|
19
20
|
sqrtDependencies,
|
20
21
|
subtractDependencies,
|
21
22
|
typedDependencies,
|
22
|
-
unaryMinusDependencies,
|
23
23
|
createDistance
|
24
24
|
};
|
@@ -875,12 +875,12 @@ export var diff = /* #__PURE__ */createDiff({
|
|
875
875
|
export var distance = /* #__PURE__ */createDistance({
|
876
876
|
abs,
|
877
877
|
addScalar,
|
878
|
+
deepEqual,
|
878
879
|
divideScalar,
|
879
880
|
multiplyScalar,
|
880
881
|
sqrt,
|
881
882
|
subtract,
|
882
|
-
typed
|
883
|
-
unaryMinus
|
883
|
+
typed
|
884
884
|
});
|
885
885
|
export var dotMultiply = /* #__PURE__ */createDotMultiply({
|
886
886
|
concat,
|
@@ -40,7 +40,7 @@ export var createParserClass = /* #__PURE__ */factory(name, dependencies, _ref =
|
|
40
40
|
* parser.evaluate('f(2, 3)') // 8
|
41
41
|
*
|
42
42
|
* // get and set variables and functions
|
43
|
-
* const x = parser.get('x') //
|
43
|
+
* const x = parser.get('x') // 3.5
|
44
44
|
* const f = parser.get('f') // function
|
45
45
|
* const g = f(3, 2) // 9
|
46
46
|
* parser.set('h', 500)
|
@@ -30,7 +30,7 @@ export var createParser = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
30
30
|
* parser.evaluate('f(2, 3)') // 8
|
31
31
|
*
|
32
32
|
* // get and set variables and functions
|
33
|
-
* const x = parser.get('x') //
|
33
|
+
* const x = parser.get('x') // 3.5
|
34
34
|
* const f = parser.get('f') // function
|
35
35
|
* const g = f(3, 2) // 9
|
36
36
|
* parser.set('h', 500)
|
@@ -1,8 +1,8 @@
|
|
1
|
-
import {
|
1
|
+
import { applyCallback } from '../../utils/applyCallback.js';
|
2
2
|
import { filter, filterRegExp } from '../../utils/array.js';
|
3
|
-
import { maxArgumentCount } from '../../utils/function.js';
|
4
|
-
import { compileInlineExpression } from './utils/compileInlineExpression.js';
|
5
3
|
import { factory } from '../../utils/factory.js';
|
4
|
+
import { isFunctionAssignmentNode, isSymbolNode } from '../../utils/is.js';
|
5
|
+
import { compileInlineExpression } from './utils/compileInlineExpression.js';
|
6
6
|
var name = 'filter';
|
7
7
|
var dependencies = ['typed'];
|
8
8
|
export var createFilterTransform = /* #__PURE__ */factory(name, dependencies, _ref => {
|
@@ -61,17 +61,8 @@ export var createFilterTransform = /* #__PURE__ */factory(name, dependencies, _r
|
|
61
61
|
* @private
|
62
62
|
*/
|
63
63
|
function _filter(x, callback) {
|
64
|
-
// figure out what number of arguments the callback function expects
|
65
|
-
var args = maxArgumentCount(callback);
|
66
64
|
return filter(x, function (value, index, array) {
|
67
65
|
// invoke the callback function with the right number of arguments
|
68
|
-
|
69
|
-
return callback(value);
|
70
|
-
} else if (args === 2) {
|
71
|
-
return callback(value, [index + 1]);
|
72
|
-
} else {
|
73
|
-
// 3 or -1
|
74
|
-
return callback(value, [index + 1], array);
|
75
|
-
}
|
66
|
+
return applyCallback(callback, value, [index + 1], array, 'filter');
|
76
67
|
});
|
77
68
|
}
|
@@ -1,7 +1,7 @@
|
|
1
|
-
import {
|
2
|
-
import { maxArgumentCount } from '../../utils/function.js';
|
1
|
+
import { applyCallback } from '../../utils/applyCallback.js';
|
3
2
|
import { forEach } from '../../utils/array.js';
|
4
3
|
import { factory } from '../../utils/factory.js';
|
4
|
+
import { isFunctionAssignmentNode, isSymbolNode } from '../../utils/is.js';
|
5
5
|
import { compileInlineExpression } from './utils/compileInlineExpression.js';
|
6
6
|
var name = 'forEach';
|
7
7
|
var dependencies = ['typed'];
|
@@ -36,8 +36,6 @@ export var createForEachTransform = /* #__PURE__ */factory(name, dependencies, _
|
|
36
36
|
// one-based version of forEach
|
37
37
|
var _forEach = typed('forEach', {
|
38
38
|
'Array | Matrix, function': function ArrayMatrixFunction(array, callback) {
|
39
|
-
// figure out what number of arguments the callback function expects
|
40
|
-
var args = maxArgumentCount(callback);
|
41
39
|
var recurse = function recurse(value, index) {
|
42
40
|
if (Array.isArray(value)) {
|
43
41
|
forEach(value, function (child, i) {
|
@@ -46,14 +44,7 @@ export var createForEachTransform = /* #__PURE__ */factory(name, dependencies, _
|
|
46
44
|
});
|
47
45
|
} else {
|
48
46
|
// invoke the callback function with the right number of arguments
|
49
|
-
|
50
|
-
callback(value);
|
51
|
-
} else if (args === 2) {
|
52
|
-
callback(value, index);
|
53
|
-
} else {
|
54
|
-
// 3 or -1
|
55
|
-
callback(value, index, array);
|
56
|
-
}
|
47
|
+
return applyCallback(callback, value, index, array, 'forEach');
|
57
48
|
}
|
58
49
|
};
|
59
50
|
recurse(array.valueOf(), []); // pass Array
|
@@ -1,7 +1,7 @@
|
|
1
|
-
import {
|
2
|
-
import { maxArgumentCount } from '../../utils/function.js';
|
1
|
+
import { applyCallback } from '../../utils/applyCallback.js';
|
3
2
|
import { map } from '../../utils/array.js';
|
4
3
|
import { factory } from '../../utils/factory.js';
|
4
|
+
import { isFunctionAssignmentNode, isSymbolNode } from '../../utils/is.js';
|
5
5
|
import { compileInlineExpression } from './utils/compileInlineExpression.js';
|
6
6
|
var name = 'map';
|
7
7
|
var dependencies = ['typed'];
|
@@ -48,7 +48,7 @@ export var createMapTransform = /* #__PURE__ */factory(name, dependencies, _ref
|
|
48
48
|
});
|
49
49
|
|
50
50
|
/**
|
51
|
-
* Map for a
|
51
|
+
* Map for a multidimensional array. One-based indexes
|
52
52
|
* @param {Array} array
|
53
53
|
* @param {function} callback
|
54
54
|
* @param {Array} orig
|
@@ -56,8 +56,6 @@ export var createMapTransform = /* #__PURE__ */factory(name, dependencies, _ref
|
|
56
56
|
* @private
|
57
57
|
*/
|
58
58
|
function _map(array, callback, orig) {
|
59
|
-
// figure out what number of arguments the callback function expects
|
60
|
-
var argsCount = maxArgumentCount(callback);
|
61
59
|
function recurse(value, index) {
|
62
60
|
if (Array.isArray(value)) {
|
63
61
|
return map(value, function (child, i) {
|
@@ -66,14 +64,7 @@ function _map(array, callback, orig) {
|
|
66
64
|
});
|
67
65
|
} else {
|
68
66
|
// invoke the (typed) callback function with the right number of arguments
|
69
|
-
|
70
|
-
return callback(value);
|
71
|
-
} else if (argsCount === 2) {
|
72
|
-
return callback(value, index);
|
73
|
-
} else {
|
74
|
-
// 3 or -1
|
75
|
-
return callback(value, index, orig);
|
76
|
-
}
|
67
|
+
return applyCallback(callback, value, index, orig, 'map');
|
77
68
|
}
|
78
69
|
}
|
79
70
|
return recurse(array, []);
|
@@ -29,8 +29,8 @@ export var createDerivative = /* #__PURE__ */factory(name, dependencies, _ref =>
|
|
29
29
|
*
|
30
30
|
* Syntax:
|
31
31
|
*
|
32
|
-
* derivative(expr, variable)
|
33
|
-
* derivative(expr, variable, options)
|
32
|
+
* math.derivative(expr, variable)
|
33
|
+
* math.derivative(expr, variable, options)
|
34
34
|
*
|
35
35
|
* Examples:
|
36
36
|
*
|
@@ -24,7 +24,7 @@ export var createPolynomialRoot = /* #__PURE__ */factory(name, dependencies, _re
|
|
24
24
|
*
|
25
25
|
* Syntax:
|
26
26
|
*
|
27
|
-
* polynomialRoot(constant, linearCoeff, quadraticCoeff, cubicCoeff)
|
27
|
+
* math.polynomialRoot(constant, linearCoeff, quadraticCoeff, cubicCoeff)
|
28
28
|
*
|
29
29
|
* Examples:
|
30
30
|
* // linear
|
@@ -39,10 +39,10 @@ export var createRationalize = /* #__PURE__ */factory(name, dependencies, _ref =
|
|
39
39
|
*
|
40
40
|
* Syntax:
|
41
41
|
*
|
42
|
-
* rationalize(expr)
|
43
|
-
* rationalize(expr, detailed)
|
44
|
-
* rationalize(expr, scope)
|
45
|
-
* rationalize(expr, scope, detailed)
|
42
|
+
* math.rationalize(expr)
|
43
|
+
* math.rationalize(expr, detailed)
|
44
|
+
* math.rationalize(expr, scope)
|
45
|
+
* math.rationalize(expr, scope, detailed)
|
46
46
|
*
|
47
47
|
* Examples:
|
48
48
|
*
|
@@ -138,13 +138,13 @@ export var createSimplify = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
138
138
|
*
|
139
139
|
* Syntax:
|
140
140
|
*
|
141
|
-
* simplify(expr)
|
142
|
-
* simplify(expr, rules)
|
143
|
-
* simplify(expr, rules)
|
144
|
-
* simplify(expr, rules, scope)
|
145
|
-
* simplify(expr, rules, scope, options)
|
146
|
-
* simplify(expr, scope)
|
147
|
-
* simplify(expr, scope, options)
|
141
|
+
* math.simplify(expr)
|
142
|
+
* math.simplify(expr, rules)
|
143
|
+
* math.simplify(expr, rules)
|
144
|
+
* math.simplify(expr, rules, scope)
|
145
|
+
* math.simplify(expr, rules, scope, options)
|
146
|
+
* math.simplify(expr, scope)
|
147
|
+
* math.simplify(expr, scope, options)
|
148
148
|
*
|
149
149
|
* Examples:
|
150
150
|
*
|
@@ -40,8 +40,8 @@ export var createSimplifyConstant = /* #__PURE__ */factory(name, dependencies, _
|
|
40
40
|
*
|
41
41
|
* Syntax:
|
42
42
|
*
|
43
|
-
* simplifyConstant(expr)
|
44
|
-
* simplifyConstant(expr, options)
|
43
|
+
* math.simplifyConstant(expr)
|
44
|
+
* math.simplifyConstant(expr, options)
|
45
45
|
*
|
46
46
|
* Examples:
|
47
47
|
*
|
@@ -25,20 +25,20 @@ export var createSymbolicEqual = /* #__PURE__ */factory(name, dependencies, _ref
|
|
25
25
|
*
|
26
26
|
* Syntax:
|
27
27
|
*
|
28
|
-
*
|
29
|
-
*
|
28
|
+
* math.symbolicEqual(expr1, expr2)
|
29
|
+
* math.symbolicEqual(expr1, expr2, options)
|
30
30
|
*
|
31
31
|
* Examples:
|
32
32
|
*
|
33
|
-
*
|
34
|
-
*
|
35
|
-
*
|
36
|
-
*
|
37
|
-
*
|
33
|
+
* math.symbolicEqual('x*y', 'y*x') // Returns true
|
34
|
+
* math.symbolicEqual('x*y', 'y*x', {context: {multiply: {commutative: false}}}) // Returns false
|
35
|
+
* math.symbolicEqual('x/y', '(y*x^(-1))^(-1)') // Returns true
|
36
|
+
* math.symbolicEqual('abs(x)','x') // Returns false
|
37
|
+
* math.symbolicEqual('abs(x)','x', simplify.positiveContext) // Returns true
|
38
38
|
*
|
39
39
|
* See also:
|
40
40
|
*
|
41
|
-
*
|
41
|
+
* simplify, evaluate
|
42
42
|
*
|
43
43
|
* @param {Node|string} expr1 The first expression to compare
|
44
44
|
* @param {Node|string} expr2 The second expression to compare
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { isBigNumber } from '../../utils/is.js';
|
2
2
|
import { factory } from '../../utils/factory.js';
|
3
3
|
var name = 'distance';
|
4
|
-
var dependencies = ['typed', 'addScalar', 'subtract', 'divideScalar', 'multiplyScalar', '
|
4
|
+
var dependencies = ['typed', 'addScalar', 'subtract', 'divideScalar', 'multiplyScalar', 'deepEqual', 'sqrt', 'abs'];
|
5
5
|
export var createDistance = /* #__PURE__ */factory(name, dependencies, _ref => {
|
6
6
|
var {
|
7
7
|
typed,
|
@@ -9,7 +9,7 @@ export var createDistance = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
9
9
|
subtract,
|
10
10
|
multiplyScalar,
|
11
11
|
divideScalar,
|
12
|
-
|
12
|
+
deepEqual,
|
13
13
|
sqrt,
|
14
14
|
abs
|
15
15
|
} = _ref;
|
@@ -31,10 +31,10 @@ export var createDistance = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
31
31
|
* math.distance([x1,y1,z1,a1], [x2,y2,z2,a2])
|
32
32
|
* math.distance([[x1,y1], [x2,y2], [x3,y3]])
|
33
33
|
* math.distance([[x1,y1,z1], [x2,y2,z2], [x3,y3,z3]])
|
34
|
-
* math.distance([
|
35
|
-
* math.distance([
|
34
|
+
* math.distance([pointX,pointY], [a,b,c])
|
35
|
+
* math.distance([pointX,pointY], [lineOnePtX,lineOnePtY], [lineTwoPtX,lineTwoPtY])
|
36
36
|
* math.distance({pointX, pointY}, {lineOnePtX, lineOnePtY}, {lineTwoPtX, lineTwoPtY})
|
37
|
-
* math.distance([
|
37
|
+
* math.distance([pointX,pointY,pointZ], [x0, y0, z0, a, b, c])
|
38
38
|
* math.distance({pointX, pointY, pointZ}, {x0, y0, z0, a, b, c})
|
39
39
|
*
|
40
40
|
* Examples:
|
@@ -50,11 +50,11 @@ export var createDistance = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
50
50
|
* math.distance([[1, 2], [1, 2], [1, 3]]) // Returns [0, 1, 1]
|
51
51
|
* math.distance([[1,2,4], [1,2,6], [8,1,3]]) // Returns [2, 7.14142842854285, 7.681145747868608]
|
52
52
|
* math.distance([10, 10], [8, 1, 3]) // Returns 11.535230316796387
|
53
|
-
* math.distance([
|
53
|
+
* math.distance([0, 0], [3, 0], [0, 4]) // Returns 2.4
|
54
54
|
* math.distance(
|
55
|
-
* {pointX:
|
56
|
-
* {lineOnePtX:
|
57
|
-
* {lineTwoPtX:
|
55
|
+
* {pointX: 0, pointY: 0},
|
56
|
+
* {lineOnePtX: 3, lineOnePtY: 0},
|
57
|
+
* {lineTwoPtX: 0, lineTwoPtY: 4}) // Returns 2.4
|
58
58
|
* math.distance([2, 3, 1], [1, 1, 2, 5, 0, 1]) // Returns 2.3204774044612857
|
59
59
|
* math.distance(
|
60
60
|
* {pointX: 2, pointY: 3, pointZ: 1},
|
@@ -77,10 +77,12 @@ export var createDistance = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
77
77
|
if (!_2d(z)) {
|
78
78
|
throw new TypeError('Array with 2 numbers or BigNumbers expected for third argument');
|
79
79
|
}
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
var
|
80
|
+
if (deepEqual(y, z)) {
|
81
|
+
throw new TypeError('LinePoint1 should not be same with LinePoint2');
|
82
|
+
}
|
83
|
+
var xCoeff = subtract(z[1], y[1]);
|
84
|
+
var yCoeff = subtract(y[0], z[0]);
|
85
|
+
var constant = subtract(multiplyScalar(z[0], y[1]), multiplyScalar(y[0], z[1]));
|
84
86
|
return _distancePointLine2D(x[0], x[1], xCoeff, yCoeff, constant);
|
85
87
|
} else {
|
86
88
|
throw new TypeError('Invalid Arguments: Try again');
|
@@ -97,11 +99,13 @@ export var createDistance = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
97
99
|
if (!_2d(z)) {
|
98
100
|
throw new TypeError('Values of lineTwoPtX and lineTwoPtY should be numbers or BigNumbers');
|
99
101
|
}
|
102
|
+
if (deepEqual(_objectToArray(y), _objectToArray(z))) {
|
103
|
+
throw new TypeError('LinePoint1 should not be same with LinePoint2');
|
104
|
+
}
|
100
105
|
if ('pointX' in x && 'pointY' in x && 'lineOnePtX' in y && 'lineOnePtY' in y && 'lineTwoPtX' in z && 'lineTwoPtY' in z) {
|
101
|
-
var
|
102
|
-
var
|
103
|
-
var
|
104
|
-
var constant = x.pointX;
|
106
|
+
var xCoeff = subtract(z.lineTwoPtY, y.lineOnePtY);
|
107
|
+
var yCoeff = subtract(y.lineOnePtX, z.lineTwoPtX);
|
108
|
+
var constant = subtract(multiplyScalar(z.lineTwoPtX, y.lineOnePtY), multiplyScalar(y.lineOnePtX, z.lineTwoPtY));
|
105
109
|
return _distancePointLine2D(x.pointX, x.pointY, xCoeff, yCoeff, constant);
|
106
110
|
} else {
|
107
111
|
throw new TypeError('Key names do not match');
|
@@ -1,5 +1,5 @@
|
|
1
|
+
import { applyCallback } from '../../utils/applyCallback.js';
|
1
2
|
import { filter, filterRegExp } from '../../utils/array.js';
|
2
|
-
import { maxArgumentCount } from '../../utils/function.js';
|
3
3
|
import { factory } from '../../utils/factory.js';
|
4
4
|
var name = 'filter';
|
5
5
|
var dependencies = ['typed'];
|
@@ -56,17 +56,8 @@ export var createFilter = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
56
56
|
* @private
|
57
57
|
*/
|
58
58
|
function _filterCallback(x, callback) {
|
59
|
-
// figure out what number of arguments the callback function expects
|
60
|
-
var args = maxArgumentCount(callback);
|
61
59
|
return filter(x, function (value, index, array) {
|
62
60
|
// invoke the callback function with the right number of arguments
|
63
|
-
|
64
|
-
return callback(value);
|
65
|
-
} else if (args === 2) {
|
66
|
-
return callback(value, [index]);
|
67
|
-
} else {
|
68
|
-
// 3 or -1
|
69
|
-
return callback(value, [index], array);
|
70
|
-
}
|
61
|
+
return applyCallback(callback, value, [index], array, 'filter');
|
71
62
|
});
|
72
63
|
}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
1
|
+
import { applyCallback } from '../../utils/applyCallback.js';
|
2
2
|
import { forEach as forEachArray } from '../../utils/array.js';
|
3
3
|
import { factory } from '../../utils/factory.js';
|
4
4
|
var name = 'forEach';
|
@@ -39,14 +39,12 @@ export var createForEach = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
39
39
|
});
|
40
40
|
|
41
41
|
/**
|
42
|
-
* forEach for a
|
42
|
+
* forEach for a multidimensional array
|
43
43
|
* @param {Array} array
|
44
44
|
* @param {Function} callback
|
45
45
|
* @private
|
46
46
|
*/
|
47
47
|
function _forEach(array, callback) {
|
48
|
-
// figure out what number of arguments the callback function expects
|
49
|
-
var args = maxArgumentCount(callback);
|
50
48
|
var recurse = function recurse(value, index) {
|
51
49
|
if (Array.isArray(value)) {
|
52
50
|
forEachArray(value, function (child, i) {
|
@@ -55,14 +53,7 @@ function _forEach(array, callback) {
|
|
55
53
|
});
|
56
54
|
} else {
|
57
55
|
// invoke the callback function with the right number of arguments
|
58
|
-
|
59
|
-
callback(value);
|
60
|
-
} else if (args === 2) {
|
61
|
-
callback(value, index);
|
62
|
-
} else {
|
63
|
-
// 3 or -1
|
64
|
-
callback(value, index, array);
|
65
|
-
}
|
56
|
+
return applyCallback(callback, value, index, array, 'forEach');
|
66
57
|
}
|
67
58
|
};
|
68
59
|
recurse(array, []);
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
1
|
+
import { applyCallback } from '../../utils/applyCallback.js';
|
2
2
|
import { factory } from '../../utils/factory.js';
|
3
3
|
var name = 'map';
|
4
4
|
var dependencies = ['typed'];
|
@@ -27,14 +27,9 @@ export var createMap = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
27
27
|
* return value * value
|
28
28
|
* }) // returns [1, 4, 9]
|
29
29
|
*
|
30
|
-
* // The
|
31
|
-
*
|
32
|
-
* //
|
33
|
-
* // [This happens because `format` _can_ take a second argument,
|
34
|
-
* // but its semantics don't match that of the 2nd argument `map` provides]
|
35
|
-
*
|
36
|
-
* // To avoid this error, use a function that takes exactly the
|
37
|
-
* // desired arguments:
|
30
|
+
* // The callback is normally called with three arguments:
|
31
|
+
* // callback(value, index, Array)
|
32
|
+
* // If you want to call with only one argument, use:
|
38
33
|
* math.map([1, 2, 3], x => math.format(x)) // returns ['1', '2', '3']
|
39
34
|
*
|
40
35
|
* See also:
|
@@ -63,8 +58,6 @@ export var createMap = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
63
58
|
* @private
|
64
59
|
*/
|
65
60
|
function _map(array, callback) {
|
66
|
-
// figure out what number of arguments the callback function expects
|
67
|
-
var args = maxArgumentCount(callback);
|
68
61
|
var recurse = function recurse(value, index) {
|
69
62
|
if (Array.isArray(value)) {
|
70
63
|
return value.map(function (child, i) {
|
@@ -72,33 +65,8 @@ function _map(array, callback) {
|
|
72
65
|
return recurse(child, index.concat(i));
|
73
66
|
});
|
74
67
|
} else {
|
75
|
-
|
76
|
-
|
77
|
-
if (args === 1) {
|
78
|
-
return callback(value);
|
79
|
-
} else if (args === 2) {
|
80
|
-
return callback(value, index);
|
81
|
-
} else {
|
82
|
-
// 3 or -1
|
83
|
-
return callback(value, index, array);
|
84
|
-
}
|
85
|
-
} catch (err) {
|
86
|
-
// But maybe the arguments still weren't right
|
87
|
-
if (err instanceof TypeError && 'data' in err && err.data.category === 'wrongType') {
|
88
|
-
var newmsg = "map attempted to call '".concat(err.data.fn, "(").concat(value);
|
89
|
-
var indexString = JSON.stringify(index);
|
90
|
-
if (args === 2) {
|
91
|
-
newmsg += ',' + indexString;
|
92
|
-
} else if (args !== 1) {
|
93
|
-
newmsg += ",".concat(indexString, ",").concat(array);
|
94
|
-
}
|
95
|
-
newmsg += ")' but argument ".concat(err.data.index + 1, " of type ");
|
96
|
-
newmsg += "".concat(err.data.actual, " does not match expected type ");
|
97
|
-
newmsg += err.data.expected.join(' or ');
|
98
|
-
throw new TypeError(newmsg);
|
99
|
-
}
|
100
|
-
throw err;
|
101
|
-
}
|
68
|
+
// invoke the callback function with the right number of arguments
|
69
|
+
return applyCallback(callback, value, index, array, 'map');
|
102
70
|
}
|
103
71
|
};
|
104
72
|
return recurse(array, []);
|