mathjs 11.8.0 → 11.8.1
Sign up to get free protection for your applications and to get access to all the features.
- package/HISTORY.md +17 -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 +8 -8
@@ -63,6 +63,11 @@ export var createBignumber = /* #__PURE__ */factory(name, dependencies, _ref =>
|
|
63
63
|
// we assume a BigNumber is immutable
|
64
64
|
return x;
|
65
65
|
},
|
66
|
+
Unit: typed.referToSelf(self => x => {
|
67
|
+
var clone = x.clone();
|
68
|
+
clone.value = self(x.value);
|
69
|
+
return clone;
|
70
|
+
}),
|
66
71
|
Fraction: function Fraction(x) {
|
67
72
|
return new BigNumber(x.n).div(x.d).times(x.s);
|
68
73
|
},
|
@@ -39,7 +39,7 @@ export var createFraction = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
39
39
|
*
|
40
40
|
* bignumber, number, string, unit
|
41
41
|
*
|
42
|
-
* @param {number | string | Fraction | BigNumber | Array | Matrix} [args]
|
42
|
+
* @param {number | string | Fraction | BigNumber | Unit | Array | Matrix} [args]
|
43
43
|
* Arguments specifying the value, or numerator and denominator of
|
44
44
|
* the fraction
|
45
45
|
* @return {Fraction | Array | Matrix} Returns a fraction
|
@@ -67,6 +67,11 @@ export var createFraction = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
67
67
|
return x; // fractions are immutable
|
68
68
|
},
|
69
69
|
|
70
|
+
Unit: typed.referToSelf(self => x => {
|
71
|
+
var clone = x.clone();
|
72
|
+
clone.value = self(x.value);
|
73
|
+
return clone;
|
74
|
+
}),
|
70
75
|
Object: function Object(x) {
|
71
76
|
return new Fraction(x);
|
72
77
|
},
|
package/lib/esm/type/number.js
CHANGED
@@ -121,9 +121,11 @@ export var createNumber = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
121
121
|
Fraction: function Fraction(x) {
|
122
122
|
return x.valueOf();
|
123
123
|
},
|
124
|
-
Unit:
|
125
|
-
|
126
|
-
|
124
|
+
Unit: typed.referToSelf(self => x => {
|
125
|
+
var clone = x.clone();
|
126
|
+
clone.value = self(x.value);
|
127
|
+
return clone;
|
128
|
+
}),
|
127
129
|
null: function _null(x) {
|
128
130
|
return 0;
|
129
131
|
},
|
@@ -0,0 +1,67 @@
|
|
1
|
+
import typed from 'typed-function';
|
2
|
+
import { typeOf as _typeOf } from './is.js';
|
3
|
+
|
4
|
+
/**
|
5
|
+
* Invoke a callback for functions like map and filter with a matching number of arguments
|
6
|
+
* @param {function} callback
|
7
|
+
* @param {any} value
|
8
|
+
* @param {number | number[]} index
|
9
|
+
* @param {Array} array
|
10
|
+
* @param {string} mappingFnName The name of the function that is invoking these callbacks, for example "map" or "filter"
|
11
|
+
* @returns {*}
|
12
|
+
*/
|
13
|
+
export function applyCallback(callback, value, index, array, mappingFnName) {
|
14
|
+
if (typed.isTypedFunction(callback)) {
|
15
|
+
// invoke the typed callback function with the matching number of arguments only
|
16
|
+
|
17
|
+
var args3 = [value, index, array];
|
18
|
+
var signature3 = typed.resolve(callback, args3);
|
19
|
+
if (signature3) {
|
20
|
+
return tryWithArgs(signature3.implementation, args3);
|
21
|
+
}
|
22
|
+
var args2 = [value, index];
|
23
|
+
var signature2 = typed.resolve(callback, args2);
|
24
|
+
if (signature2) {
|
25
|
+
return tryWithArgs(signature2.implementation, args2);
|
26
|
+
}
|
27
|
+
var args1 = [value];
|
28
|
+
var signature1 = typed.resolve(callback, args1);
|
29
|
+
if (signature1) {
|
30
|
+
return tryWithArgs(signature1.implementation, args1);
|
31
|
+
}
|
32
|
+
|
33
|
+
// fallback (will throw an exception)
|
34
|
+
return tryWithArgs(callback, args3);
|
35
|
+
} else {
|
36
|
+
// A regular JavaScript function
|
37
|
+
return callback(value, index, array);
|
38
|
+
}
|
39
|
+
|
40
|
+
/**
|
41
|
+
* @param {function} signature The selected signature of the typed-function
|
42
|
+
* @param {Array} args List with arguments to apply to the selected signature
|
43
|
+
* @returns {*} Returns the return value of the invoked signature
|
44
|
+
* @throws {TypeError} Throws an error when no matching signature was found
|
45
|
+
*/
|
46
|
+
function tryWithArgs(signature, args) {
|
47
|
+
try {
|
48
|
+
return signature.apply(signature, args);
|
49
|
+
} catch (err) {
|
50
|
+
var _err$data;
|
51
|
+
// Enrich the error message so the user understands that it took place inside the callback function
|
52
|
+
if (err instanceof TypeError && ((_err$data = err.data) === null || _err$data === void 0 ? void 0 : _err$data.category) === 'wrongType') {
|
53
|
+
var argsDesc = [];
|
54
|
+
argsDesc.push("value: ".concat(_typeOf(value)));
|
55
|
+
if (args.length >= 2) {
|
56
|
+
argsDesc.push("index: ".concat(_typeOf(index)));
|
57
|
+
}
|
58
|
+
if (args.length >= 3) {
|
59
|
+
argsDesc.push("array: ".concat(_typeOf(array)));
|
60
|
+
}
|
61
|
+
throw new TypeError("Function ".concat(mappingFnName, " cannot apply callback arguments ") + "".concat(callback.name, "(").concat(argsDesc.join(', '), ") at index ").concat(JSON.stringify(index)));
|
62
|
+
} else {
|
63
|
+
throw new TypeError("Function ".concat(mappingFnName, " cannot apply callback arguments ") + "to function ".concat(callback.name, ": ").concat(err.message));
|
64
|
+
}
|
65
|
+
}
|
66
|
+
}
|
67
|
+
}
|
@@ -146,7 +146,7 @@ export function format(value, options) {
|
|
146
146
|
// determine precision from options
|
147
147
|
if (typeof options === 'number') {
|
148
148
|
precision = options;
|
149
|
-
} else if (options.precision) {
|
149
|
+
} else if (options.precision !== undefined) {
|
150
150
|
precision = options.precision;
|
151
151
|
}
|
152
152
|
if (options.wordSize) {
|
@@ -207,7 +207,7 @@ export function format(value, options) {
|
|
207
207
|
|
208
208
|
/**
|
209
209
|
* Format a BigNumber in engineering notation. Like '1.23e+6', '2.3e+0', '3.500e-3'
|
210
|
-
* @param {BigNumber
|
210
|
+
* @param {BigNumber} value
|
211
211
|
* @param {number} [precision] Optional number of significant figures to return.
|
212
212
|
*/
|
213
213
|
export function toEngineering(value, precision) {
|
@@ -219,7 +219,8 @@ export function toEngineering(value, precision) {
|
|
219
219
|
var valueWithoutExp = value.mul(Math.pow(10, -newExp));
|
220
220
|
var valueStr = valueWithoutExp.toPrecision(precision);
|
221
221
|
if (valueStr.indexOf('e') !== -1) {
|
222
|
-
|
222
|
+
var BigNumber = value.constructor;
|
223
|
+
valueStr = new BigNumber(valueStr).toFixed();
|
223
224
|
}
|
224
225
|
return valueStr + 'e' + (e >= 0 ? '+' : '') + newExp.toString();
|
225
226
|
}
|
package/lib/esm/version.js
CHANGED
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "mathjs",
|
3
|
-
"version": "11.8.
|
3
|
+
"version": "11.8.1",
|
4
4
|
"description": "Math.js is an extensive math library for JavaScript and Node.js. It features a flexible expression parser with support for symbolic computation, comes with a large set of built-in functions and constants, and offers an integrated solution to work with different data types like numbers, big numbers, complex numbers, fractions, units, and matrices.",
|
5
5
|
"author": "Jos de Jong <wjosdejong@gmail.com> (https://github.com/josdejong)",
|
6
6
|
"homepage": "https://mathjs.org",
|
@@ -25,7 +25,7 @@
|
|
25
25
|
"unit"
|
26
26
|
],
|
27
27
|
"dependencies": {
|
28
|
-
"@babel/runtime": "^7.
|
28
|
+
"@babel/runtime": "^7.22.5",
|
29
29
|
"complex.js": "^2.1.1",
|
30
30
|
"decimal.js": "^10.4.3",
|
31
31
|
"escape-latex": "^1.2.0",
|
@@ -36,32 +36,32 @@
|
|
36
36
|
"typed-function": "^4.1.0"
|
37
37
|
},
|
38
38
|
"devDependencies": {
|
39
|
-
"@babel/core": "7.
|
40
|
-
"@babel/plugin-transform-object-assign": "7.
|
41
|
-
"@babel/plugin-transform-runtime": "7.
|
42
|
-
"@babel/preset-env": "7.
|
43
|
-
"@babel/register": "7.
|
39
|
+
"@babel/core": "7.22.5",
|
40
|
+
"@babel/plugin-transform-object-assign": "7.22.5",
|
41
|
+
"@babel/plugin-transform-runtime": "7.22.5",
|
42
|
+
"@babel/preset-env": "7.22.5",
|
43
|
+
"@babel/register": "7.22.5",
|
44
44
|
"@types/assert": "1.5.6",
|
45
45
|
"@types/mocha": "10.0.1",
|
46
|
-
"@typescript-eslint/eslint-plugin": "5.
|
47
|
-
"@typescript-eslint/parser": "5.
|
46
|
+
"@typescript-eslint/eslint-plugin": "5.59.11",
|
47
|
+
"@typescript-eslint/parser": "5.59.11",
|
48
48
|
"assert": "2.0.0",
|
49
49
|
"babel-loader": "9.1.2",
|
50
50
|
"benchmark": "2.1.4",
|
51
|
-
"c8": "7.
|
51
|
+
"c8": "7.14.0",
|
52
52
|
"codecov": "3.8.3",
|
53
|
-
"core-js": "3.
|
53
|
+
"core-js": "3.31.0",
|
54
54
|
"del": "6.1.1",
|
55
55
|
"dtslint": "4.2.1",
|
56
|
-
"eslint": "8.
|
56
|
+
"eslint": "8.42.0",
|
57
57
|
"eslint-config-prettier": "8.8.0",
|
58
|
-
"eslint-config-standard": "17.
|
58
|
+
"eslint-config-standard": "17.1.0",
|
59
59
|
"eslint-plugin-import": "2.27.5",
|
60
60
|
"eslint-plugin-mocha": "10.1.0",
|
61
|
-
"eslint-plugin-n": "
|
61
|
+
"eslint-plugin-n": "16.0.0",
|
62
62
|
"eslint-plugin-prettier": "4.2.1",
|
63
63
|
"eslint-plugin-promise": "6.1.1",
|
64
|
-
"expect-type": "0.
|
64
|
+
"expect-type": "0.16.0",
|
65
65
|
"expr-eval": "2.0.2",
|
66
66
|
"fancy-log": "2.0.0",
|
67
67
|
"glob": "8.1.0",
|
@@ -69,7 +69,7 @@
|
|
69
69
|
"gulp-babel": "8.0.0",
|
70
70
|
"handlebars": "4.7.7",
|
71
71
|
"jsep": "1.3.8",
|
72
|
-
"karma": "6.4.
|
72
|
+
"karma": "6.4.2",
|
73
73
|
"karma-browserstack-launcher": "1.6.0",
|
74
74
|
"karma-firefox-launcher": "2.1.2",
|
75
75
|
"karma-mocha": "2.0.1",
|
@@ -85,12 +85,12 @@
|
|
85
85
|
"ndarray-pack": "1.2.1",
|
86
86
|
"numericjs": "1.2.6",
|
87
87
|
"pad-right": "0.2.2",
|
88
|
-
"prettier": "2.8.
|
88
|
+
"prettier": "2.8.8",
|
89
89
|
"process": "0.11.10",
|
90
90
|
"sylvester": "0.0.21",
|
91
91
|
"ts-node": "10.9.1",
|
92
|
-
"typescript": "5.
|
93
|
-
"webpack": "5.
|
92
|
+
"typescript": "5.1.3",
|
93
|
+
"webpack": "5.86.0",
|
94
94
|
"zeros": "1.0.0"
|
95
95
|
},
|
96
96
|
"type": "module",
|
package/types/index.d.ts
CHANGED
@@ -1581,12 +1581,14 @@ declare namespace math {
|
|
1581
1581
|
* a 3D line, x0, y0, z0, a, b, c are from: (x−x0, y−y0, z−z0) = t(a, b,
|
1582
1582
|
* c)
|
1583
1583
|
* @param x Coordinates of the first point
|
1584
|
-
* @param y Coordinates of the second point
|
1584
|
+
* @param y Coordinates of the second point OR coefficients of a line in 3D OR first end-point of a line if the calculation is for distance between point and a line in 2D
|
1585
|
+
* @param z Coordinates of second end-point of a line if the calculation is for distance between point and a line in 2D
|
1585
1586
|
* @returns Returns the distance from two/three points
|
1586
1587
|
*/
|
1587
1588
|
distance(
|
1588
1589
|
x: MathCollection | object,
|
1589
|
-
y: MathCollection | object
|
1590
|
+
y: MathCollection | object,
|
1591
|
+
z?: MathCollection | object
|
1590
1592
|
): number | BigNumber
|
1591
1593
|
|
1592
1594
|
/**
|
@@ -2596,8 +2598,7 @@ declare namespace math {
|
|
2596
2598
|
* @param args A single matrix or multiple scalar values
|
2597
2599
|
* @returns The maximum value
|
2598
2600
|
*/
|
2599
|
-
|
2600
|
-
max(...args: MathType[]): any
|
2601
|
+
max<T extends MathType[]>(...args: T): T[number]
|
2601
2602
|
/**
|
2602
2603
|
* @param A A single matrix
|
2603
2604
|
* @param dim The maximum over the selected dimension
|
@@ -2639,14 +2640,13 @@ declare namespace math {
|
|
2639
2640
|
|
2640
2641
|
/**
|
2641
2642
|
* Compute the minimum value of a matrix or a list of values. In case of
|
2642
|
-
* a multi dimensional array, the
|
2643
|
-
* calculated. When dim is provided, the
|
2643
|
+
* a multi dimensional array, the minimum of the flattened array will be
|
2644
|
+
* calculated. When dim is provided, the minimum over the selected
|
2644
2645
|
* dimension will be calculated. Parameter dim is zero-based.
|
2645
2646
|
* @param args A single matrix or or multiple scalar values
|
2646
2647
|
* @returns The minimum value
|
2647
2648
|
*/
|
2648
|
-
|
2649
|
-
min(...args: MathType[]): any
|
2649
|
+
min<T extends MathType[]>(...args: T): T[number]
|
2650
2650
|
/**
|
2651
2651
|
* @param A A single matrix
|
2652
2652
|
* @param dim The minimum over the selected dimension
|