mathjs 12.3.1 → 12.4.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.
- package/HISTORY.md +23 -0
- 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/pureFunctionsAny.generated.js +1 -0
- package/lib/cjs/expression/node/OperatorNode.js +2 -1
- package/lib/cjs/expression/parse.js +8 -4
- package/lib/cjs/expression/transform/utils/compileInlineExpression.js +5 -4
- package/lib/cjs/function/arithmetic/multiply.js +30 -29
- package/lib/cjs/function/arithmetic/round.js +38 -7
- package/lib/cjs/function/matrix/dot.js +3 -3
- package/lib/cjs/header.js +2 -2
- package/lib/cjs/type/matrix/utils/matAlgo01xDSid.js +4 -4
- package/lib/cjs/type/matrix/utils/matAlgo02xDS0.js +4 -4
- package/lib/cjs/type/matrix/utils/matAlgo03xDSf.js +4 -4
- package/lib/cjs/type/matrix/utils/matAlgo04xSidSid.js +4 -4
- package/lib/cjs/type/matrix/utils/matAlgo05xSfSf.js +4 -4
- package/lib/cjs/type/matrix/utils/matAlgo06xS0S0.js +4 -4
- package/lib/cjs/type/matrix/utils/matAlgo07xSSf.js +4 -4
- package/lib/cjs/type/matrix/utils/matAlgo08xS0Sid.js +4 -4
- package/lib/cjs/type/matrix/utils/matAlgo09xS0Sf.js +4 -4
- package/lib/cjs/utils/map.js +176 -14
- package/lib/cjs/utils/scope.js +4 -10
- package/lib/cjs/version.js +1 -1
- package/lib/esm/entry/pureFunctionsAny.generated.js +1 -0
- package/lib/esm/expression/node/OperatorNode.js +2 -1
- package/lib/esm/expression/parse.js +8 -4
- package/lib/esm/expression/transform/utils/compileInlineExpression.js +5 -4
- package/lib/esm/function/arithmetic/multiply.js +30 -29
- package/lib/esm/function/arithmetic/round.js +38 -7
- package/lib/esm/function/matrix/dot.js +3 -3
- package/lib/esm/type/matrix/utils/matAlgo01xDSid.js +4 -4
- package/lib/esm/type/matrix/utils/matAlgo02xDS0.js +4 -4
- package/lib/esm/type/matrix/utils/matAlgo03xDSf.js +4 -4
- package/lib/esm/type/matrix/utils/matAlgo04xSidSid.js +4 -4
- package/lib/esm/type/matrix/utils/matAlgo05xSfSf.js +4 -4
- package/lib/esm/type/matrix/utils/matAlgo06xS0S0.js +4 -4
- package/lib/esm/type/matrix/utils/matAlgo07xSSf.js +4 -4
- package/lib/esm/type/matrix/utils/matAlgo08xS0Sid.js +4 -4
- package/lib/esm/type/matrix/utils/matAlgo09xS0Sf.js +4 -4
- package/lib/esm/utils/map.js +99 -1
- package/lib/esm/utils/scope.js +5 -11
- package/lib/esm/version.js +1 -1
- package/package.json +9 -9
- package/types/index.d.ts +5 -5
package/lib/esm/utils/map.js
CHANGED
@@ -12,9 +12,10 @@ import { isObject } from './is.js';
|
|
12
12
|
export class ObjectWrappingMap {
|
13
13
|
constructor(object) {
|
14
14
|
this.wrappedObject = object;
|
15
|
+
this[Symbol.iterator] = this.entries;
|
15
16
|
}
|
16
17
|
keys() {
|
17
|
-
return Object.keys(this.wrappedObject);
|
18
|
+
return Object.keys(this.wrappedObject).values();
|
18
19
|
}
|
19
20
|
get(key) {
|
20
21
|
return getSafeProperty(this.wrappedObject, key);
|
@@ -26,6 +27,103 @@ export class ObjectWrappingMap {
|
|
26
27
|
has(key) {
|
27
28
|
return hasSafeProperty(this.wrappedObject, key);
|
28
29
|
}
|
30
|
+
entries() {
|
31
|
+
return mapIterator(this.keys(), key => [key, this.get(key)]);
|
32
|
+
}
|
33
|
+
forEach(callback) {
|
34
|
+
for (var key of this.keys()) {
|
35
|
+
callback(this.get(key), key, this);
|
36
|
+
}
|
37
|
+
}
|
38
|
+
delete(key) {
|
39
|
+
delete this.wrappedObject[key];
|
40
|
+
}
|
41
|
+
clear() {
|
42
|
+
for (var key of this.keys()) {
|
43
|
+
this.delete(key);
|
44
|
+
}
|
45
|
+
}
|
46
|
+
get size() {
|
47
|
+
return Object.keys(this.wrappedObject).length;
|
48
|
+
}
|
49
|
+
}
|
50
|
+
|
51
|
+
/**
|
52
|
+
* Create a map with two partitions: a and b.
|
53
|
+
* The set with bKeys determines which keys/values are read/written to map b,
|
54
|
+
* all other values are read/written to map a
|
55
|
+
*
|
56
|
+
* For example:
|
57
|
+
*
|
58
|
+
* const a = new Map()
|
59
|
+
* const b = new Map()
|
60
|
+
* const p = new PartitionedMap(a, b, new Set(['x', 'y']))
|
61
|
+
*
|
62
|
+
* In this case, values `x` and `y` are read/written to map `b`,
|
63
|
+
* all other values are read/written to map `a`.
|
64
|
+
*/
|
65
|
+
export class PartitionedMap {
|
66
|
+
/**
|
67
|
+
* @param {Map} a
|
68
|
+
* @param {Map} b
|
69
|
+
* @param {Set} bKeys
|
70
|
+
*/
|
71
|
+
constructor(a, b, bKeys) {
|
72
|
+
this.a = a;
|
73
|
+
this.b = b;
|
74
|
+
this.bKeys = bKeys;
|
75
|
+
this[Symbol.iterator] = this.entries;
|
76
|
+
}
|
77
|
+
get(key) {
|
78
|
+
return this.bKeys.has(key) ? this.b.get(key) : this.a.get(key);
|
79
|
+
}
|
80
|
+
set(key, value) {
|
81
|
+
if (this.bKeys.has(key)) {
|
82
|
+
this.b.set(key, value);
|
83
|
+
} else {
|
84
|
+
this.a.set(key, value);
|
85
|
+
}
|
86
|
+
return this;
|
87
|
+
}
|
88
|
+
has(key) {
|
89
|
+
return this.b.has(key) || this.a.has(key);
|
90
|
+
}
|
91
|
+
keys() {
|
92
|
+
return new Set([...this.a.keys(), ...this.b.keys()])[Symbol.iterator]();
|
93
|
+
}
|
94
|
+
entries() {
|
95
|
+
return mapIterator(this.keys(), key => [key, this.get(key)]);
|
96
|
+
}
|
97
|
+
forEach(callback) {
|
98
|
+
for (var key of this.keys()) {
|
99
|
+
callback(this.get(key), key, this);
|
100
|
+
}
|
101
|
+
}
|
102
|
+
delete(key) {
|
103
|
+
return this.bKeys.has(key) ? this.b.delete(key) : this.a.delete(key);
|
104
|
+
}
|
105
|
+
clear() {
|
106
|
+
this.a.clear();
|
107
|
+
this.b.clear();
|
108
|
+
}
|
109
|
+
get size() {
|
110
|
+
return [...this.keys()].length;
|
111
|
+
}
|
112
|
+
}
|
113
|
+
|
114
|
+
/**
|
115
|
+
* Create a new iterator that maps over the provided iterator, applying a mapping function to each item
|
116
|
+
*/
|
117
|
+
function mapIterator(it, callback) {
|
118
|
+
return {
|
119
|
+
next: () => {
|
120
|
+
var n = it.next();
|
121
|
+
return n.done ? n : {
|
122
|
+
value: callback(n.value),
|
123
|
+
done: false
|
124
|
+
};
|
125
|
+
}
|
126
|
+
};
|
29
127
|
}
|
30
128
|
|
31
129
|
/**
|
package/lib/esm/utils/scope.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
1
|
+
import { ObjectWrappingMap, PartitionedMap } from './map.js';
|
2
2
|
|
3
3
|
/**
|
4
4
|
* Create a new scope which can access the parent scope,
|
@@ -10,15 +10,9 @@ import { createEmptyMap, assign } from './map.js';
|
|
10
10
|
* the remaining `args`.
|
11
11
|
*
|
12
12
|
* @param {Map} parentScope
|
13
|
-
* @param {
|
14
|
-
* @returns {
|
13
|
+
* @param {Object} args
|
14
|
+
* @returns {PartitionedMap}
|
15
15
|
*/
|
16
|
-
export function createSubScope(parentScope) {
|
17
|
-
|
18
|
-
args[_key - 1] = arguments[_key];
|
19
|
-
}
|
20
|
-
if (typeof parentScope.createSubScope === 'function') {
|
21
|
-
return assign(parentScope.createSubScope(), ...args);
|
22
|
-
}
|
23
|
-
return assign(createEmptyMap(), parentScope, ...args);
|
16
|
+
export function createSubScope(parentScope, args) {
|
17
|
+
return new PartitionedMap(parentScope, new ObjectWrappingMap(args), new Set(Object.keys(args)));
|
24
18
|
}
|
package/lib/esm/version.js
CHANGED
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "mathjs",
|
3
|
-
"version": "12.
|
3
|
+
"version": "12.4.0",
|
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",
|
@@ -43,21 +43,21 @@
|
|
43
43
|
"@babel/register": "7.23.7",
|
44
44
|
"@types/assert": "1.5.10",
|
45
45
|
"@types/mocha": "10.0.6",
|
46
|
-
"@typescript-eslint/eslint-plugin": "
|
47
|
-
"@typescript-eslint/parser": "
|
46
|
+
"@typescript-eslint/eslint-plugin": "7.0.2",
|
47
|
+
"@typescript-eslint/parser": "7.0.2",
|
48
48
|
"assert": "2.1.0",
|
49
49
|
"babel-loader": "9.1.3",
|
50
50
|
"benchmark": "2.1.4",
|
51
51
|
"c8": "9.1.0",
|
52
52
|
"codecov": "3.8.3",
|
53
|
-
"core-js": "3.
|
53
|
+
"core-js": "3.36.0",
|
54
54
|
"del": "6.1.1",
|
55
55
|
"dtslint": "4.2.1",
|
56
56
|
"eslint": "8.56.0",
|
57
57
|
"eslint-config-prettier": "9.1.0",
|
58
58
|
"eslint-config-standard": "17.1.0",
|
59
59
|
"eslint-plugin-import": "2.29.1",
|
60
|
-
"eslint-plugin-mocha": "10.
|
60
|
+
"eslint-plugin-mocha": "10.3.0",
|
61
61
|
"eslint-plugin-n": "16.6.2",
|
62
62
|
"eslint-plugin-prettier": "5.1.3",
|
63
63
|
"eslint-plugin-promise": "6.1.1",
|
@@ -74,9 +74,9 @@
|
|
74
74
|
"karma-firefox-launcher": "2.1.2",
|
75
75
|
"karma-mocha": "2.0.1",
|
76
76
|
"karma-mocha-reporter": "2.2.5",
|
77
|
-
"karma-webpack": "5.0.
|
77
|
+
"karma-webpack": "5.0.1",
|
78
78
|
"mkdirp": "3.0.1",
|
79
|
-
"mocha": "10.
|
79
|
+
"mocha": "10.3.0",
|
80
80
|
"mocha-junit-reporter": "2.2.1",
|
81
81
|
"ndarray": "1.0.19",
|
82
82
|
"ndarray-determinant": "1.0.0",
|
@@ -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": "3.2.
|
88
|
+
"prettier": "3.2.5",
|
89
89
|
"process": "0.11.10",
|
90
90
|
"sylvester": "0.0.21",
|
91
91
|
"ts-node": "10.9.2",
|
92
92
|
"typescript": "5.3.3",
|
93
|
-
"webpack": "5.90.
|
93
|
+
"webpack": "5.90.3",
|
94
94
|
"zeros": "1.0.0"
|
95
95
|
},
|
96
96
|
"type": "module",
|
package/types/index.d.ts
CHANGED
@@ -2760,22 +2760,22 @@ export interface MathJsInstance extends MathJsFactory {
|
|
2760
2760
|
* @param args Multiple scalar values
|
2761
2761
|
* @returns The mode of all values
|
2762
2762
|
*/
|
2763
|
-
mode<T extends MathScalarType>(...args: T[]): T
|
2763
|
+
mode<T extends MathScalarType>(...args: T[]): T[]
|
2764
2764
|
/**
|
2765
2765
|
* @param args Multiple scalar values
|
2766
2766
|
* @returns The mode of all values
|
2767
2767
|
*/
|
2768
|
-
mode(...args: MathScalarType[]): MathScalarType
|
2768
|
+
mode(...args: MathScalarType[]): MathScalarType[]
|
2769
2769
|
/**
|
2770
2770
|
* @param A A single matrix
|
2771
|
-
* @returns The
|
2771
|
+
* @returns The mode value
|
2772
2772
|
*/
|
2773
|
-
mode<T extends MathScalarType>(A: T[] | T[][]): T
|
2773
|
+
mode<T extends MathScalarType>(A: T[] | T[][]): T[]
|
2774
2774
|
/**
|
2775
2775
|
* @param A A single matrix
|
2776
2776
|
* @returns The mode of all values
|
2777
2777
|
*/
|
2778
|
-
mode(A: MathCollection): MathScalarType
|
2778
|
+
mode(A: MathCollection): MathScalarType[]
|
2779
2779
|
|
2780
2780
|
/**
|
2781
2781
|
* Compute the product of a matrix or a list with values. In case of a
|