mathjs 12.3.0 → 12.3.2
Sign up to get free protection for your applications and to get access to all the features.
- package/HISTORY.md +27 -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/configReadonly.js +1 -1
- package/lib/cjs/entry/dependenciesAny/dependenciesHelpClass.generated.js +2 -2
- package/lib/cjs/entry/dependenciesNumber/dependenciesHelpClass.generated.js +2 -2
- package/lib/cjs/entry/impureFunctionsAny.generated.js +14 -14
- package/lib/cjs/entry/impureFunctionsNumber.generated.js +1 -1
- package/lib/cjs/entry/pureFunctionsAny.generated.js +11 -11
- package/lib/cjs/expression/Help.js +21 -4
- package/lib/cjs/expression/node/OperatorNode.js +2 -1
- package/lib/cjs/expression/transform/utils/compileInlineExpression.js +5 -4
- package/lib/cjs/function/string/bin.js +3 -3
- package/lib/cjs/function/string/format.js +3 -3
- package/lib/cjs/function/string/hex.js +3 -3
- package/lib/cjs/function/string/oct.js +3 -3
- package/lib/cjs/header.js +2 -2
- package/lib/cjs/type/unit/physicalConstants.js +1 -1
- package/lib/cjs/utils/bignumber/formatter.js +17 -27
- package/lib/cjs/utils/map.js +174 -14
- package/lib/cjs/utils/number.js +75 -33
- package/lib/cjs/utils/scope.js +4 -10
- package/lib/cjs/version.js +1 -1
- package/lib/esm/entry/configReadonly.js +1 -1
- package/lib/esm/entry/dependenciesAny/dependenciesHelpClass.generated.js +2 -2
- package/lib/esm/entry/dependenciesNumber/dependenciesHelpClass.generated.js +2 -2
- package/lib/esm/entry/impureFunctionsAny.generated.js +16 -16
- package/lib/esm/entry/impureFunctionsNumber.generated.js +1 -1
- package/lib/esm/entry/pureFunctionsAny.generated.js +12 -12
- package/lib/esm/expression/Help.js +21 -4
- package/lib/esm/expression/node/OperatorNode.js +2 -1
- package/lib/esm/expression/transform/utils/compileInlineExpression.js +5 -4
- package/lib/esm/function/string/bin.js +3 -3
- package/lib/esm/function/string/format.js +3 -3
- package/lib/esm/function/string/hex.js +3 -3
- package/lib/esm/function/string/oct.js +3 -3
- package/lib/esm/type/unit/physicalConstants.js +1 -1
- package/lib/esm/utils/bignumber/formatter.js +19 -28
- package/lib/esm/utils/map.js +97 -1
- package/lib/esm/utils/number.js +76 -34
- package/lib/esm/utils/scope.js +5 -11
- package/lib/esm/version.js +1 -1
- package/package.json +12 -12
- package/types/index.d.ts +30 -18
package/lib/cjs/utils/map.js
CHANGED
@@ -4,12 +4,13 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
5
5
|
value: true
|
6
6
|
});
|
7
|
-
exports.ObjectWrappingMap = void 0;
|
7
|
+
exports.PartitionedMap = exports.ObjectWrappingMap = void 0;
|
8
8
|
exports.assign = assign;
|
9
9
|
exports.createEmptyMap = createEmptyMap;
|
10
10
|
exports.createMap = createMap;
|
11
11
|
exports.isMap = isMap;
|
12
12
|
exports.toObject = toObject;
|
13
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
13
14
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
14
15
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
15
16
|
var _customs = require("./customs.js");
|
@@ -33,7 +34,7 @@ var ObjectWrappingMap = exports.ObjectWrappingMap = /*#__PURE__*/function () {
|
|
33
34
|
(0, _createClass2["default"])(ObjectWrappingMap, [{
|
34
35
|
key: "keys",
|
35
36
|
value: function keys() {
|
36
|
-
return Object.keys(this.wrappedObject);
|
37
|
+
return Object.keys(this.wrappedObject).values();
|
37
38
|
}
|
38
39
|
}, {
|
39
40
|
key: "get",
|
@@ -51,9 +52,168 @@ var ObjectWrappingMap = exports.ObjectWrappingMap = /*#__PURE__*/function () {
|
|
51
52
|
value: function has(key) {
|
52
53
|
return (0, _customs.hasSafeProperty)(this.wrappedObject, key);
|
53
54
|
}
|
55
|
+
}, {
|
56
|
+
key: "entries",
|
57
|
+
value: function entries() {
|
58
|
+
var _this = this;
|
59
|
+
return mapIterator(this.keys(), function (key) {
|
60
|
+
return [key, _this.get(key)];
|
61
|
+
});
|
62
|
+
}
|
63
|
+
}, {
|
64
|
+
key: "forEach",
|
65
|
+
value: function forEach(callback) {
|
66
|
+
var _iterator = _createForOfIteratorHelper(this.keys()),
|
67
|
+
_step;
|
68
|
+
try {
|
69
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
70
|
+
var key = _step.value;
|
71
|
+
callback(this.get(key), key, this);
|
72
|
+
}
|
73
|
+
} catch (err) {
|
74
|
+
_iterator.e(err);
|
75
|
+
} finally {
|
76
|
+
_iterator.f();
|
77
|
+
}
|
78
|
+
}
|
79
|
+
}, {
|
80
|
+
key: "delete",
|
81
|
+
value: function _delete(key) {
|
82
|
+
delete this.wrappedObject[key];
|
83
|
+
}
|
84
|
+
}, {
|
85
|
+
key: "clear",
|
86
|
+
value: function clear() {
|
87
|
+
var _iterator2 = _createForOfIteratorHelper(this.keys()),
|
88
|
+
_step2;
|
89
|
+
try {
|
90
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
91
|
+
var key = _step2.value;
|
92
|
+
this["delete"](key);
|
93
|
+
}
|
94
|
+
} catch (err) {
|
95
|
+
_iterator2.e(err);
|
96
|
+
} finally {
|
97
|
+
_iterator2.f();
|
98
|
+
}
|
99
|
+
}
|
100
|
+
}, {
|
101
|
+
key: "size",
|
102
|
+
get: function get() {
|
103
|
+
return Object.keys(this.wrappedObject).length;
|
104
|
+
}
|
54
105
|
}]);
|
55
106
|
return ObjectWrappingMap;
|
56
107
|
}();
|
108
|
+
/**
|
109
|
+
* Create a map with two partitions: a and b.
|
110
|
+
* The set with bKeys determines which keys/values are read/written to map b,
|
111
|
+
* all other values are read/written to map a
|
112
|
+
*
|
113
|
+
* For example:
|
114
|
+
*
|
115
|
+
* const a = new Map()
|
116
|
+
* const b = new Map()
|
117
|
+
* const p = new PartitionedMap(a, b, new Set(['x', 'y']))
|
118
|
+
*
|
119
|
+
* In this case, values `x` and `y` are read/written to map `b`,
|
120
|
+
* all other values are read/written to map `a`.
|
121
|
+
*/
|
122
|
+
var PartitionedMap = exports.PartitionedMap = /*#__PURE__*/function () {
|
123
|
+
/**
|
124
|
+
* @param {Map} a
|
125
|
+
* @param {Map} b
|
126
|
+
* @param {Set} bKeys
|
127
|
+
*/
|
128
|
+
function PartitionedMap(a, b, bKeys) {
|
129
|
+
(0, _classCallCheck2["default"])(this, PartitionedMap);
|
130
|
+
this.a = a;
|
131
|
+
this.b = b;
|
132
|
+
this.bKeys = bKeys;
|
133
|
+
}
|
134
|
+
(0, _createClass2["default"])(PartitionedMap, [{
|
135
|
+
key: "get",
|
136
|
+
value: function get(key) {
|
137
|
+
return this.bKeys.has(key) ? this.b.get(key) : this.a.get(key);
|
138
|
+
}
|
139
|
+
}, {
|
140
|
+
key: "set",
|
141
|
+
value: function set(key, value) {
|
142
|
+
if (this.bKeys.has(key)) {
|
143
|
+
this.b.set(key, value);
|
144
|
+
} else {
|
145
|
+
this.a.set(key, value);
|
146
|
+
}
|
147
|
+
return this;
|
148
|
+
}
|
149
|
+
}, {
|
150
|
+
key: "has",
|
151
|
+
value: function has(key) {
|
152
|
+
return this.b.has(key) || this.a.has(key);
|
153
|
+
}
|
154
|
+
}, {
|
155
|
+
key: "keys",
|
156
|
+
value: function keys() {
|
157
|
+
return new Set([].concat((0, _toConsumableArray2["default"])(this.a.keys()), (0, _toConsumableArray2["default"])(this.b.keys())))[Symbol.iterator]();
|
158
|
+
}
|
159
|
+
}, {
|
160
|
+
key: "entries",
|
161
|
+
value: function entries() {
|
162
|
+
var _this2 = this;
|
163
|
+
return mapIterator(this.keys(), function (key) {
|
164
|
+
return [key, _this2.get(key)];
|
165
|
+
});
|
166
|
+
}
|
167
|
+
}, {
|
168
|
+
key: "forEach",
|
169
|
+
value: function forEach(callback) {
|
170
|
+
var _iterator3 = _createForOfIteratorHelper(this.keys()),
|
171
|
+
_step3;
|
172
|
+
try {
|
173
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
174
|
+
var key = _step3.value;
|
175
|
+
callback(this.get(key), key, this);
|
176
|
+
}
|
177
|
+
} catch (err) {
|
178
|
+
_iterator3.e(err);
|
179
|
+
} finally {
|
180
|
+
_iterator3.f();
|
181
|
+
}
|
182
|
+
}
|
183
|
+
}, {
|
184
|
+
key: "delete",
|
185
|
+
value: function _delete(key) {
|
186
|
+
return this.bKeys.has(key) ? this.b["delete"](key) : this.a["delete"](key);
|
187
|
+
}
|
188
|
+
}, {
|
189
|
+
key: "clear",
|
190
|
+
value: function clear() {
|
191
|
+
this.a.clear();
|
192
|
+
this.b.clear();
|
193
|
+
}
|
194
|
+
}, {
|
195
|
+
key: "size",
|
196
|
+
get: function get() {
|
197
|
+
return (0, _toConsumableArray2["default"])(this.keys()).length;
|
198
|
+
}
|
199
|
+
}]);
|
200
|
+
return PartitionedMap;
|
201
|
+
}();
|
202
|
+
/**
|
203
|
+
* Create a new iterator that maps over the provided iterator, applying a mapping function to each item
|
204
|
+
*/
|
205
|
+
function mapIterator(it, callback) {
|
206
|
+
return {
|
207
|
+
next: function next() {
|
208
|
+
var n = it.next();
|
209
|
+
return n.done ? n : {
|
210
|
+
value: callback(n.value),
|
211
|
+
done: false
|
212
|
+
};
|
213
|
+
}
|
214
|
+
};
|
215
|
+
}
|
216
|
+
|
57
217
|
/**
|
58
218
|
* Creates an empty map, or whatever your platform's polyfill is.
|
59
219
|
*
|
@@ -93,18 +253,18 @@ function toObject(map) {
|
|
93
253
|
return map.wrappedObject;
|
94
254
|
}
|
95
255
|
var object = {};
|
96
|
-
var
|
97
|
-
|
256
|
+
var _iterator4 = _createForOfIteratorHelper(map.keys()),
|
257
|
+
_step4;
|
98
258
|
try {
|
99
|
-
for (
|
100
|
-
var key =
|
259
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
260
|
+
var key = _step4.value;
|
101
261
|
var value = map.get(key);
|
102
262
|
(0, _customs.setSafeProperty)(object, key, value);
|
103
263
|
}
|
104
264
|
} catch (err) {
|
105
|
-
|
265
|
+
_iterator4.e(err);
|
106
266
|
} finally {
|
107
|
-
|
267
|
+
_iterator4.f();
|
108
268
|
}
|
109
269
|
return object;
|
110
270
|
}
|
@@ -143,17 +303,17 @@ function assign(map) {
|
|
143
303
|
continue;
|
144
304
|
}
|
145
305
|
if (isMap(args)) {
|
146
|
-
var
|
147
|
-
|
306
|
+
var _iterator5 = _createForOfIteratorHelper(args.keys()),
|
307
|
+
_step5;
|
148
308
|
try {
|
149
|
-
for (
|
150
|
-
var key =
|
309
|
+
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
310
|
+
var key = _step5.value;
|
151
311
|
map.set(key, args.get(key));
|
152
312
|
}
|
153
313
|
} catch (err) {
|
154
|
-
|
314
|
+
_iterator5.e(err);
|
155
315
|
} finally {
|
156
|
-
|
316
|
+
_iterator5.f();
|
157
317
|
}
|
158
318
|
} else if ((0, _is.isObject)(args)) {
|
159
319
|
for (var _i2 = 0, _Object$keys = Object.keys(args); _i2 < _Object$keys.length; _i2++) {
|
package/lib/cjs/utils/number.js
CHANGED
@@ -12,6 +12,7 @@ exports.format = format;
|
|
12
12
|
exports.isInteger = isInteger;
|
13
13
|
exports.log2 = exports.log1p = exports.log10 = void 0;
|
14
14
|
exports.nearlyEqual = nearlyEqual;
|
15
|
+
exports.normalizeFormatOptions = normalizeFormatOptions;
|
15
16
|
exports.roundDigits = roundDigits;
|
16
17
|
exports.sinh = exports.sign = void 0;
|
17
18
|
exports.splitNumber = splitNumber;
|
@@ -42,7 +43,7 @@ function isInteger(value) {
|
|
42
43
|
* @param {number} x
|
43
44
|
* @returns {number}
|
44
45
|
*/
|
45
|
-
var sign = exports.sign =
|
46
|
+
var sign = exports.sign = Math.sign || function (x) {
|
46
47
|
if (x > 0) {
|
47
48
|
return 1;
|
48
49
|
} else if (x < 0) {
|
@@ -57,7 +58,7 @@ var sign = exports.sign = /* #__PURE__ */Math.sign || function (x) {
|
|
57
58
|
* @param {number} x
|
58
59
|
* @returns {number}
|
59
60
|
*/
|
60
|
-
var log2 = exports.log2 =
|
61
|
+
var log2 = exports.log2 = Math.log2 || function log2(x) {
|
61
62
|
return Math.log(x) / Math.LN2;
|
62
63
|
};
|
63
64
|
|
@@ -66,7 +67,7 @@ var log2 = exports.log2 = /* #__PURE__ */Math.log2 || function log2(x) {
|
|
66
67
|
* @param {number} x
|
67
68
|
* @returns {number}
|
68
69
|
*/
|
69
|
-
var log10 = exports.log10 =
|
70
|
+
var log10 = exports.log10 = Math.log10 || function log10(x) {
|
70
71
|
return Math.log(x) / Math.LN10;
|
71
72
|
};
|
72
73
|
|
@@ -75,7 +76,7 @@ var log10 = exports.log10 = /* #__PURE__ */Math.log10 || function log10(x) {
|
|
75
76
|
* @param {number} x
|
76
77
|
* @returns {number}
|
77
78
|
*/
|
78
|
-
var log1p = exports.log1p =
|
79
|
+
var log1p = exports.log1p = Math.log1p || function (x) {
|
79
80
|
return Math.log(x + 1);
|
80
81
|
};
|
81
82
|
|
@@ -88,7 +89,7 @@ var log1p = exports.log1p = /* #__PURE__ */Math.log1p || function (x) {
|
|
88
89
|
* @param {number} x
|
89
90
|
* @returns {number} Returns the cubic root of x
|
90
91
|
*/
|
91
|
-
var cbrt = exports.cbrt =
|
92
|
+
var cbrt = exports.cbrt = Math.cbrt || function cbrt(x) {
|
92
93
|
if (x === 0) {
|
93
94
|
return x;
|
94
95
|
}
|
@@ -112,7 +113,7 @@ var cbrt = exports.cbrt = /* #__PURE__ */Math.cbrt || function cbrt(x) {
|
|
112
113
|
* @param {number} x
|
113
114
|
* @return {number} res
|
114
115
|
*/
|
115
|
-
var expm1 = exports.expm1 =
|
116
|
+
var expm1 = exports.expm1 = Math.expm1 || function expm1(x) {
|
116
117
|
return x >= 2e-4 || x <= -2e-4 ? Math.exp(x) - 1 : x + x * x / 2 + x * x * x / 6;
|
117
118
|
};
|
118
119
|
|
@@ -255,30 +256,10 @@ function format(value, options) {
|
|
255
256
|
} else if (isNaN(value)) {
|
256
257
|
return 'NaN';
|
257
258
|
}
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
var wordSize;
|
263
|
-
if (options) {
|
264
|
-
// determine notation from options
|
265
|
-
if (options.notation) {
|
266
|
-
notation = options.notation;
|
267
|
-
}
|
268
|
-
|
269
|
-
// determine precision from options
|
270
|
-
if ((0, _is.isNumber)(options)) {
|
271
|
-
precision = options;
|
272
|
-
} else if ((0, _is.isNumber)(options.precision)) {
|
273
|
-
precision = options.precision;
|
274
|
-
}
|
275
|
-
if (options.wordSize) {
|
276
|
-
wordSize = options.wordSize;
|
277
|
-
if (typeof wordSize !== 'number') {
|
278
|
-
throw new Error('Option "wordSize" must be a number');
|
279
|
-
}
|
280
|
-
}
|
281
|
-
}
|
259
|
+
var _normalizeFormatOptio = normalizeFormatOptions(options),
|
260
|
+
notation = _normalizeFormatOptio.notation,
|
261
|
+
precision = _normalizeFormatOptio.precision,
|
262
|
+
wordSize = _normalizeFormatOptio.wordSize;
|
282
263
|
|
283
264
|
// handle the various notations
|
284
265
|
switch (notation) {
|
@@ -296,7 +277,7 @@ function format(value, options) {
|
|
296
277
|
return formatNumberToBase(value, 16, wordSize);
|
297
278
|
case 'auto':
|
298
279
|
// remove trailing zeros after the decimal point
|
299
|
-
return toPrecision(value, precision, options
|
280
|
+
return toPrecision(value, precision, options).replace(/((\.\d*?)(0+))($|e)/, function () {
|
300
281
|
var digits = arguments[2];
|
301
282
|
var e = arguments[4];
|
302
283
|
return digits !== '.' ? digits + e : e;
|
@@ -306,6 +287,49 @@ function format(value, options) {
|
|
306
287
|
}
|
307
288
|
}
|
308
289
|
|
290
|
+
/**
|
291
|
+
* Normalize format options into an object:
|
292
|
+
* {
|
293
|
+
* notation: string,
|
294
|
+
* precision: number | undefined,
|
295
|
+
* wordSize: number | undefined
|
296
|
+
* }
|
297
|
+
*/
|
298
|
+
function normalizeFormatOptions(options) {
|
299
|
+
// default values for options
|
300
|
+
var notation = 'auto';
|
301
|
+
var precision;
|
302
|
+
var wordSize;
|
303
|
+
if (options !== undefined) {
|
304
|
+
if ((0, _is.isNumber)(options)) {
|
305
|
+
precision = options;
|
306
|
+
} else if ((0, _is.isBigNumber)(options)) {
|
307
|
+
precision = options.toNumber();
|
308
|
+
} else if ((0, _is.isObject)(options)) {
|
309
|
+
if (options.precision !== undefined) {
|
310
|
+
precision = _toNumberOrThrow(options.precision, function () {
|
311
|
+
throw new Error('Option "precision" must be a number or BigNumber');
|
312
|
+
});
|
313
|
+
}
|
314
|
+
if (options.wordSize !== undefined) {
|
315
|
+
wordSize = _toNumberOrThrow(options.wordSize, function () {
|
316
|
+
throw new Error('Option "wordSize" must be a number or BigNumber');
|
317
|
+
});
|
318
|
+
}
|
319
|
+
if (options.notation) {
|
320
|
+
notation = options.notation;
|
321
|
+
}
|
322
|
+
} else {
|
323
|
+
throw new Error('Unsupported type of options, number, BigNumber, or object expected');
|
324
|
+
}
|
325
|
+
}
|
326
|
+
return {
|
327
|
+
notation: notation,
|
328
|
+
precision: precision,
|
329
|
+
wordSize: wordSize
|
330
|
+
};
|
331
|
+
}
|
332
|
+
|
309
333
|
/**
|
310
334
|
* Split a number into sign, coefficients, and exponent
|
311
335
|
* @param {number | string} value
|
@@ -469,8 +493,8 @@ function toPrecision(value, precision, options) {
|
|
469
493
|
}
|
470
494
|
|
471
495
|
// determine lower and upper bound for exponential notation.
|
472
|
-
var lowerExp = options
|
473
|
-
var upperExp = options
|
496
|
+
var lowerExp = _toNumberOrDefault(options === null || options === void 0 ? void 0 : options.lowerExp, -3);
|
497
|
+
var upperExp = _toNumberOrDefault(options === null || options === void 0 ? void 0 : options.upperExp, 5);
|
474
498
|
var split = splitNumber(value);
|
475
499
|
var rounded = precision ? roundDigits(split, precision) : split;
|
476
500
|
if (rounded.exponent < lowerExp || rounded.exponent >= upperExp) {
|
@@ -675,4 +699,22 @@ function copysign(x, y) {
|
|
675
699
|
var signx = x > 0 ? true : x < 0 ? false : 1 / x === Infinity;
|
676
700
|
var signy = y > 0 ? true : y < 0 ? false : 1 / y === Infinity;
|
677
701
|
return signx ^ signy ? -x : x;
|
702
|
+
}
|
703
|
+
function _toNumberOrThrow(value, onError) {
|
704
|
+
if ((0, _is.isNumber)(value)) {
|
705
|
+
return value;
|
706
|
+
} else if ((0, _is.isBigNumber)(value)) {
|
707
|
+
return value.toNumber();
|
708
|
+
} else {
|
709
|
+
onError();
|
710
|
+
}
|
711
|
+
}
|
712
|
+
function _toNumberOrDefault(value, defaultValue) {
|
713
|
+
if ((0, _is.isNumber)(value)) {
|
714
|
+
return value;
|
715
|
+
} else if ((0, _is.isBigNumber)(value)) {
|
716
|
+
return value.toNumber();
|
717
|
+
} else {
|
718
|
+
return defaultValue;
|
719
|
+
}
|
678
720
|
}
|
package/lib/cjs/utils/scope.js
CHANGED
@@ -15,15 +15,9 @@ var _map = require("./map.js");
|
|
15
15
|
* the remaining `args`.
|
16
16
|
*
|
17
17
|
* @param {Map} parentScope
|
18
|
-
* @param {
|
19
|
-
* @returns {
|
18
|
+
* @param {Object} args
|
19
|
+
* @returns {PartitionedMap}
|
20
20
|
*/
|
21
|
-
function createSubScope(parentScope) {
|
22
|
-
|
23
|
-
args[_key - 1] = arguments[_key];
|
24
|
-
}
|
25
|
-
if (typeof parentScope.createSubScope === 'function') {
|
26
|
-
return _map.assign.apply(void 0, [parentScope.createSubScope()].concat(args));
|
27
|
-
}
|
28
|
-
return _map.assign.apply(void 0, [(0, _map.createEmptyMap)(), parentScope].concat(args));
|
21
|
+
function createSubScope(parentScope, args) {
|
22
|
+
return new _map.PartitionedMap(parentScope, new _map.ObjectWrappingMap(args), new Set(Object.keys(args)));
|
29
23
|
}
|
package/lib/cjs/version.js
CHANGED
@@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.version = void 0;
|
7
|
-
var version = exports.version = '12.3.
|
7
|
+
var version = exports.version = '12.3.2';
|
8
8
|
// Note: This file is automatically generated when building math.js.
|
9
9
|
// Changes made in this file will be overwritten.
|
@@ -3,7 +3,7 @@ import { DEFAULT_CONFIG } from '../core/config.js';
|
|
3
3
|
import { MATRIX_OPTIONS, NUMBER_OPTIONS } from '../core/function/config.js';
|
4
4
|
|
5
5
|
// create a read-only version of config
|
6
|
-
export var config =
|
6
|
+
export var config = function config(options) {
|
7
7
|
if (options) {
|
8
8
|
throw new Error('The global config is readonly. \n' + 'Please create a mathjs instance if you want to change the default configuration. \n' + 'Example:\n' + '\n' + ' import { create, all } from \'mathjs\';\n' + ' const mathjs = create(all);\n' + ' mathjs.config({ number: \'BigNumber\' });\n');
|
9
9
|
}
|
@@ -2,9 +2,9 @@
|
|
2
2
|
* THIS FILE IS AUTO-GENERATED
|
3
3
|
* DON'T MAKE CHANGES HERE
|
4
4
|
*/
|
5
|
-
import {
|
5
|
+
import { evaluateDependencies } from './dependenciesEvaluate.generated.js';
|
6
6
|
import { createHelpClass } from '../../factoriesAny.js';
|
7
7
|
export var HelpDependencies = {
|
8
|
-
|
8
|
+
evaluateDependencies,
|
9
9
|
createHelpClass
|
10
10
|
};
|
@@ -2,9 +2,9 @@
|
|
2
2
|
* THIS FILE IS AUTO-GENERATED
|
3
3
|
* DON'T MAKE CHANGES HERE
|
4
4
|
*/
|
5
|
-
import {
|
5
|
+
import { evaluateDependencies } from './dependenciesEvaluate.generated.js';
|
6
6
|
import { createHelpClass } from '../../factoriesNumber.js';
|
7
7
|
export var HelpDependencies = {
|
8
|
-
|
8
|
+
evaluateDependencies,
|
9
9
|
createHelpClass
|
10
10
|
};
|
@@ -4,10 +4,10 @@ import _extends from "@babel/runtime/helpers/extends";
|
|
4
4
|
* DON'T MAKE CHANGES HERE
|
5
5
|
*/
|
6
6
|
import { config } from './configReadonly.js';
|
7
|
-
import { createNode, createObjectNode, createOperatorNode, createParenthesisNode, createRelationalNode, createArrayNode, createBlockNode, createConditionalNode, createConstantNode, createRangeNode, createReviver, createChainClass, createFunctionAssignmentNode, createChain, createIndexNode, createAccessorNode, createAssignmentNode, createSymbolNode, createFunctionNode, createParse, createResolve, createSimplifyConstant, createCompile,
|
7
|
+
import { createNode, createObjectNode, createOperatorNode, createParenthesisNode, createRelationalNode, createArrayNode, createBlockNode, createConditionalNode, createConstantNode, createRangeNode, createReviver, createChainClass, createFunctionAssignmentNode, createChain, createIndexNode, createAccessorNode, createAssignmentNode, createSymbolNode, createFunctionNode, createParse, createResolve, createSimplifyConstant, createCompile, createSimplifyCore, createEvaluate, createHelpClass, createParserClass, createSimplify, createSymbolicEqual, createLeafCount, createParser, createRationalize, createDerivative, createHelp, createFilterTransform, createForEachTransform, createMapTransform, createApplyTransform, createOrTransform, createAndTransform, createConcatTransform, createMaxTransform, createPrintTransform, createBitAndTransform, createDiffTransform, createMinTransform, createSubsetTransform, createBitOrTransform, createCumSumTransform, createIndexTransform, createSumTransform, createRangeTransform, createRowTransform, createColumnTransform, createMeanTransform, createQuantileSeqTransform, createVarianceTransform, createStdTransform } from '../factoriesAny.js';
|
8
8
|
import { BigNumber, Complex, e, _false, fineStructure, Fraction, i, _Infinity, LN10, LOG10E, Matrix, _NaN, _null, phi, Range, ResultSet, SQRT1_2,
|
9
9
|
// eslint-disable-line camelcase
|
10
|
-
sackurTetrode, tau, _true, version, DenseMatrix, efimovFactor, LN2, pi, replacer, SQRT2, typed, unaryPlus, weakMixingAngle, abs, acos, acot, acsc, addScalar, arg, asech, asinh, atan, atanh, bignumber, bitNot, boolean, clone, combinations, complex, conj, cos, cot, csc, cube, equalScalar, erf, exp, expm1, filter, forEach, format, getMatrixDataType, hex, im, isInteger, isNegative, isPositive, isZero, LOG2E, lgamma, log10, log2, map, multiplyScalar, not, number, oct, pickRandom, print, random, re, sec, sign, sin, SparseMatrix, splitUnit, square, string, subtractScalar, tan, typeOf, acosh, acsch, apply, asec, bin, combinationsWithRep, cosh, csch, isNaN, isPrime, randomInt, sech, sinh, sparse, sqrt, tanh, unaryMinus, acoth, coth, fraction, isNumeric, matrix, matrixFromFunction, mode, numeric, prod, reshape, size, squeeze, transpose, xgcd, zeros, asin, cbrt, concat, count, ctranspose, diag, divideScalar, dotDivide, equal, flatten, hasNumericValue, identity, kron, largerEq, leftShift, lsolve, matrixFromColumns, nthRoot, ones, qr, resize, rightArithShift, round, smaller, subtract, to, unequal, usolve, xor, add, atan2, bitAnd, bitOr, bitXor, catalan, compare, compareText, cumsum, deepEqual, diff, distance, dot, equalText, floor, gcd, hypot, ImmutableDenseMatrix, Index, larger, log, lsolveAll, matrixFromRows, min, mod, multiply, nthRoots, or, partitionSelect, rightLogShift, slu, subset, sum, trace, usolveAll, zpk2tf, ceil, compareNatural, composition, cross, det, dotMultiply, FibonacciHeap, fix, index, intersect, invmod, lcm, log1p, max, setCartesian, setDistinct, setIsSubset, setPowerset, smallerEq, sort, and, range, row, setDifference, setMultiplicity, setSymDifference, Spa, column, inv, lup, pinv, pow, setIntersect, setUnion, sqrtm, Unit, vacuumImpedance, wienDisplacement, atomicMass, bohrMagneton, boltzmann, conductanceQuantum, coulomb, deuteronMass, dotPow, electricConstant, elementaryCharge, expm, faraday, fft, gamma, gravitationConstant, hartreeEnergy, ifft, klitzing, loschmidt, magneticConstant, molarMass, molarPlanckConstant, neutronMass, nuclearMagneton, planckCharge, planckLength, planckTemperature, protonMass, quantumOfCirculation, reducedPlanckConstant, rydberg, secondRadiation, speedOfLight, stefanBoltzmann, thomsonCrossSection, avogadro, bohrRadius, createUnit, divide, electronMass, factorial, firstRadiation, gravity, inverseConductanceQuantum, lusolve, magneticFluxQuantum, molarMassC12, multinomial, permutations, planckMass, polynomialRoot, setSize, solveODE, stirlingS2, unit, bellNumbers, eigs, fermiCoupling, gasConstant, mean, molarVolume, planckConstant, quantileSeq, variance, classicalElectronRadius, median, corr, freqz, mad, std, zeta, norm, rotationMatrix,
|
10
|
+
sackurTetrode, tau, _true, version, DenseMatrix, efimovFactor, LN2, pi, replacer, SQRT2, typed, unaryPlus, weakMixingAngle, abs, acos, acot, acsc, addScalar, arg, asech, asinh, atan, atanh, bignumber, bitNot, boolean, clone, combinations, complex, conj, cos, cot, csc, cube, equalScalar, erf, exp, expm1, filter, forEach, format, getMatrixDataType, hex, im, isInteger, isNegative, isPositive, isZero, LOG2E, lgamma, log10, log2, map, multiplyScalar, not, number, oct, pickRandom, print, random, re, sec, sign, sin, SparseMatrix, splitUnit, square, string, subtractScalar, tan, typeOf, acosh, acsch, apply, asec, bin, combinationsWithRep, cosh, csch, isNaN, isPrime, randomInt, sech, sinh, sparse, sqrt, tanh, unaryMinus, acoth, coth, fraction, isNumeric, matrix, matrixFromFunction, mode, numeric, prod, reshape, size, squeeze, transpose, xgcd, zeros, asin, cbrt, concat, count, ctranspose, diag, divideScalar, dotDivide, equal, flatten, hasNumericValue, identity, kron, largerEq, leftShift, lsolve, matrixFromColumns, nthRoot, ones, qr, resize, rightArithShift, round, smaller, subtract, to, unequal, usolve, xor, add, atan2, bitAnd, bitOr, bitXor, catalan, compare, compareText, cumsum, deepEqual, diff, distance, dot, equalText, floor, gcd, hypot, ImmutableDenseMatrix, Index, larger, log, lsolveAll, matrixFromRows, min, mod, multiply, nthRoots, or, partitionSelect, rightLogShift, slu, subset, sum, trace, usolveAll, zpk2tf, ceil, compareNatural, composition, cross, det, dotMultiply, FibonacciHeap, fix, index, intersect, invmod, lcm, log1p, max, setCartesian, setDistinct, setIsSubset, setPowerset, smallerEq, sort, and, range, row, setDifference, setMultiplicity, setSymDifference, Spa, column, inv, lup, pinv, pow, setIntersect, setUnion, sqrtm, Unit, vacuumImpedance, wienDisplacement, atomicMass, bohrMagneton, boltzmann, conductanceQuantum, coulomb, deuteronMass, dotPow, electricConstant, elementaryCharge, expm, faraday, fft, gamma, gravitationConstant, hartreeEnergy, ifft, klitzing, loschmidt, magneticConstant, molarMass, molarPlanckConstant, neutronMass, nuclearMagneton, planckCharge, planckLength, planckTemperature, protonMass, quantumOfCirculation, reducedPlanckConstant, rydberg, secondRadiation, speedOfLight, stefanBoltzmann, thomsonCrossSection, avogadro, bohrRadius, createUnit, divide, electronMass, factorial, firstRadiation, gravity, inverseConductanceQuantum, lusolve, magneticFluxQuantum, molarMassC12, multinomial, permutations, planckMass, polynomialRoot, setSize, solveODE, stirlingS2, unit, bellNumbers, eigs, fermiCoupling, gasConstant, kldivergence, mean, molarVolume, planckConstant, quantileSeq, variance, classicalElectronRadius, median, corr, freqz, mad, std, zeta, norm, rotationMatrix, planckTime, schur, rotate, sylvester, lyap } from './pureFunctionsAny.generated.js';
|
11
11
|
var math = {}; // NOT pure!
|
12
12
|
var mathWithTransform = {}; // NOT pure!
|
13
13
|
var classes = {}; // NOT pure!
|
@@ -129,13 +129,6 @@ export var compile = createCompile({
|
|
129
129
|
parse,
|
130
130
|
typed
|
131
131
|
});
|
132
|
-
export var Help = createHelpClass({
|
133
|
-
parse
|
134
|
-
});
|
135
|
-
export var leafCount = createLeafCount({
|
136
|
-
parse,
|
137
|
-
typed
|
138
|
-
});
|
139
132
|
export var simplifyCore = createSimplifyCore({
|
140
133
|
AccessorNode,
|
141
134
|
ArrayNode,
|
@@ -160,10 +153,8 @@ export var evaluate = createEvaluate({
|
|
160
153
|
parse,
|
161
154
|
typed
|
162
155
|
});
|
163
|
-
export var
|
164
|
-
|
165
|
-
mathWithTransform,
|
166
|
-
typed
|
156
|
+
export var Help = createHelpClass({
|
157
|
+
evaluate
|
167
158
|
});
|
168
159
|
export var Parser = createParserClass({
|
169
160
|
evaluate
|
@@ -202,6 +193,10 @@ export var symbolicEqual = createSymbolicEqual({
|
|
202
193
|
simplify,
|
203
194
|
typed
|
204
195
|
});
|
196
|
+
export var leafCount = createLeafCount({
|
197
|
+
parse,
|
198
|
+
typed
|
199
|
+
});
|
205
200
|
export var parser = createParser({
|
206
201
|
Parser,
|
207
202
|
typed
|
@@ -248,6 +243,11 @@ export var derivative = createDerivative({
|
|
248
243
|
simplify,
|
249
244
|
typed
|
250
245
|
});
|
246
|
+
export var help = createHelp({
|
247
|
+
Help,
|
248
|
+
mathWithTransform,
|
249
|
+
typed
|
250
|
+
});
|
251
251
|
_extends(math, {
|
252
252
|
e,
|
253
253
|
false: _false,
|
@@ -525,7 +525,7 @@ _extends(math, {
|
|
525
525
|
eigs,
|
526
526
|
fermiCoupling,
|
527
527
|
gasConstant,
|
528
|
-
|
528
|
+
kldivergence,
|
529
529
|
mean,
|
530
530
|
molarVolume,
|
531
531
|
planckConstant,
|
@@ -534,12 +534,12 @@ _extends(math, {
|
|
534
534
|
variance,
|
535
535
|
classicalElectronRadius,
|
536
536
|
evaluate,
|
537
|
-
help,
|
538
537
|
median,
|
539
538
|
simplify,
|
540
539
|
symbolicEqual,
|
541
540
|
corr,
|
542
541
|
freqz,
|
542
|
+
leafCount,
|
543
543
|
mad,
|
544
544
|
parser,
|
545
545
|
rationalize,
|
@@ -548,7 +548,7 @@ _extends(math, {
|
|
548
548
|
derivative,
|
549
549
|
norm,
|
550
550
|
rotationMatrix,
|
551
|
-
|
551
|
+
help,
|
552
552
|
planckTime,
|
553
553
|
schur,
|
554
554
|
rotate,
|
@@ -5,7 +5,7 @@
|
|
5
5
|
import { config } from './configReadonly.js';
|
6
6
|
import { createBigNumberClass, createComplexClass, createE, createFalse, createFineStructure, createFractionClass, createI, createInfinity, createLN10, createLOG10E, createMatrixClass, createNaN, createNull, createPhi, createRangeClass, createResultSet, createSQRT1_2,
|
7
7
|
// eslint-disable-line camelcase
|
8
|
-
createSackurTetrode, createTau, createTrue, createVersion, createDenseMatrixClass, createEfimovFactor, createLN2, createPi, createReplacer, createSQRT2, createTyped, createUnaryPlus, createWeakMixingAngle, createAbs, createAcos, createAcot, createAcsc, createAddScalar, createArg, createAsech, createAsinh, createAtan, createAtanh, createBignumber, createBitNot, createBoolean, createClone, createCombinations, createComplex, createConj, createCos, createCot, createCsc, createCube, createEqualScalar, createErf, createExp, createExpm1, createFilter, createForEach, createFormat, createGetMatrixDataType, createHex, createIm, createIsInteger, createIsNegative, createIsPositive, createIsZero, createLOG2E, createLgamma, createLog10, createLog2, createMap, createMultiplyScalar, createNot, createNumber, createOct, createPickRandom, createPrint, createRandom, createRe, createSec, createSign, createSin, createSparseMatrixClass, createSplitUnit, createSquare, createString, createSubtractScalar, createTan, createTypeOf, createAcosh, createAcsch, createApply, createAsec, createBin, createCombinationsWithRep, createCosh, createCsch, createIsNaN, createIsPrime, createRandomInt, createSech, createSinh, createSparse, createSqrt, createTanh, createUnaryMinus, createAcoth, createCoth, createFraction, createIsNumeric, createMatrix, createMatrixFromFunction, createMode, createNumeric, createProd, createReshape, createSize, createSqueeze, createTranspose, createXgcd, createZeros, createAsin, createCbrt, createConcat, createCount, createCtranspose, createDiag, createDivideScalar, createDotDivide, createEqual, createFlatten, createHasNumericValue, createIdentity, createKron, createLargerEq, createLeftShift, createLsolve, createMatrixFromColumns, createNthRoot, createOnes, createQr, createResize, createRightArithShift, createRound, createSmaller, createSubtract, createTo, createUnequal, createUsolve, createXor, createAdd, createAtan2, createBitAnd, createBitOr, createBitXor, createCatalan, createCompare, createCompareText, createCumSum, createDeepEqual, createDiff, createDistance, createDot, createEqualText, createFloor, createGcd, createHypot, createImmutableDenseMatrixClass, createIndexClass, createLarger, createLog, createLsolveAll, createMatrixFromRows, createMin, createMod, createMultiply, createNthRoots, createOr, createPartitionSelect, createRightLogShift, createSlu, createSubset, createSum, createTrace, createUsolveAll, createZpk2tf, createCeil, createCompareNatural, createComposition, createCross, createDet, createDotMultiply, createFibonacciHeapClass, createFix, createIndex, createIntersect, createInvmod, createLcm, createLog1p, createMax, createSetCartesian, createSetDistinct, createSetIsSubset, createSetPowerset, createSmallerEq, createSort, createAnd, createRange, createRow, createSetDifference, createSetMultiplicity, createSetSymDifference, createSpaClass, createColumn, createInv, createLup, createPinv, createPow, createSetIntersect, createSetUnion, createSqrtm, createUnitClass, createVacuumImpedance, createWienDisplacement, createAtomicMass, createBohrMagneton, createBoltzmann, createConductanceQuantum, createCoulomb, createDeuteronMass, createDotPow, createElectricConstant, createElementaryCharge, createExpm, createFaraday, createFft, createGamma, createGravitationConstant, createHartreeEnergy, createIfft, createKlitzing, createLoschmidt, createMagneticConstant, createMolarMass, createMolarPlanckConstant, createNeutronMass, createNuclearMagneton, createPlanckCharge, createPlanckLength, createPlanckTemperature, createProtonMass, createQuantumOfCirculation, createReducedPlanckConstant, createRydberg, createSecondRadiation, createSpeedOfLight, createStefanBoltzmann, createThomsonCrossSection, createAvogadro, createBohrRadius, createCreateUnit, createDivide, createElectronMass, createFactorial, createFirstRadiation, createGravity, createInverseConductanceQuantum, createLusolve, createMagneticFluxQuantum, createMolarMassC12, createMultinomial, createPermutations, createPlanckMass, createPolynomialRoot, createSetSize, createSolveODE, createStirlingS2, createUnitFunction, createBellNumbers, createEigs, createFermiCoupling, createGasConstant, createMean, createMolarVolume, createPlanckConstant, createQuantileSeq, createVariance, createClassicalElectronRadius, createMedian, createCorr, createFreqz, createMad, createStd, createZeta, createNorm, createRotationMatrix,
|
8
|
+
createSackurTetrode, createTau, createTrue, createVersion, createDenseMatrixClass, createEfimovFactor, createLN2, createPi, createReplacer, createSQRT2, createTyped, createUnaryPlus, createWeakMixingAngle, createAbs, createAcos, createAcot, createAcsc, createAddScalar, createArg, createAsech, createAsinh, createAtan, createAtanh, createBignumber, createBitNot, createBoolean, createClone, createCombinations, createComplex, createConj, createCos, createCot, createCsc, createCube, createEqualScalar, createErf, createExp, createExpm1, createFilter, createForEach, createFormat, createGetMatrixDataType, createHex, createIm, createIsInteger, createIsNegative, createIsPositive, createIsZero, createLOG2E, createLgamma, createLog10, createLog2, createMap, createMultiplyScalar, createNot, createNumber, createOct, createPickRandom, createPrint, createRandom, createRe, createSec, createSign, createSin, createSparseMatrixClass, createSplitUnit, createSquare, createString, createSubtractScalar, createTan, createTypeOf, createAcosh, createAcsch, createApply, createAsec, createBin, createCombinationsWithRep, createCosh, createCsch, createIsNaN, createIsPrime, createRandomInt, createSech, createSinh, createSparse, createSqrt, createTanh, createUnaryMinus, createAcoth, createCoth, createFraction, createIsNumeric, createMatrix, createMatrixFromFunction, createMode, createNumeric, createProd, createReshape, createSize, createSqueeze, createTranspose, createXgcd, createZeros, createAsin, createCbrt, createConcat, createCount, createCtranspose, createDiag, createDivideScalar, createDotDivide, createEqual, createFlatten, createHasNumericValue, createIdentity, createKron, createLargerEq, createLeftShift, createLsolve, createMatrixFromColumns, createNthRoot, createOnes, createQr, createResize, createRightArithShift, createRound, createSmaller, createSubtract, createTo, createUnequal, createUsolve, createXor, createAdd, createAtan2, createBitAnd, createBitOr, createBitXor, createCatalan, createCompare, createCompareText, createCumSum, createDeepEqual, createDiff, createDistance, createDot, createEqualText, createFloor, createGcd, createHypot, createImmutableDenseMatrixClass, createIndexClass, createLarger, createLog, createLsolveAll, createMatrixFromRows, createMin, createMod, createMultiply, createNthRoots, createOr, createPartitionSelect, createRightLogShift, createSlu, createSubset, createSum, createTrace, createUsolveAll, createZpk2tf, createCeil, createCompareNatural, createComposition, createCross, createDet, createDotMultiply, createFibonacciHeapClass, createFix, createIndex, createIntersect, createInvmod, createLcm, createLog1p, createMax, createSetCartesian, createSetDistinct, createSetIsSubset, createSetPowerset, createSmallerEq, createSort, createAnd, createRange, createRow, createSetDifference, createSetMultiplicity, createSetSymDifference, createSpaClass, createColumn, createInv, createLup, createPinv, createPow, createSetIntersect, createSetUnion, createSqrtm, createUnitClass, createVacuumImpedance, createWienDisplacement, createAtomicMass, createBohrMagneton, createBoltzmann, createConductanceQuantum, createCoulomb, createDeuteronMass, createDotPow, createElectricConstant, createElementaryCharge, createExpm, createFaraday, createFft, createGamma, createGravitationConstant, createHartreeEnergy, createIfft, createKlitzing, createLoschmidt, createMagneticConstant, createMolarMass, createMolarPlanckConstant, createNeutronMass, createNuclearMagneton, createPlanckCharge, createPlanckLength, createPlanckTemperature, createProtonMass, createQuantumOfCirculation, createReducedPlanckConstant, createRydberg, createSecondRadiation, createSpeedOfLight, createStefanBoltzmann, createThomsonCrossSection, createAvogadro, createBohrRadius, createCreateUnit, createDivide, createElectronMass, createFactorial, createFirstRadiation, createGravity, createInverseConductanceQuantum, createLusolve, createMagneticFluxQuantum, createMolarMassC12, createMultinomial, createPermutations, createPlanckMass, createPolynomialRoot, createSetSize, createSolveODE, createStirlingS2, createUnitFunction, createBellNumbers, createEigs, createFermiCoupling, createGasConstant, createKldivergence, createMean, createMolarVolume, createPlanckConstant, createQuantileSeq, createVariance, createClassicalElectronRadius, createMedian, createCorr, createFreqz, createMad, createStd, createZeta, createNorm, createRotationMatrix, createPlanckTime, createSchur, createRotate, createSylvester, createLyap } from '../factoriesAny.js';
|
9
9
|
export var BigNumber = /* #__PURE__ */createBigNumberClass({
|
10
10
|
config
|
11
11
|
});
|
@@ -1602,6 +1602,17 @@ export var gasConstant = /* #__PURE__ */createGasConstant({
|
|
1602
1602
|
Unit,
|
1603
1603
|
config
|
1604
1604
|
});
|
1605
|
+
export var kldivergence = /* #__PURE__ */createKldivergence({
|
1606
|
+
divide,
|
1607
|
+
dotDivide,
|
1608
|
+
isNumeric,
|
1609
|
+
log,
|
1610
|
+
map,
|
1611
|
+
matrix,
|
1612
|
+
multiply,
|
1613
|
+
sum,
|
1614
|
+
typed
|
1615
|
+
});
|
1605
1616
|
export var mean = /* #__PURE__ */createMean({
|
1606
1617
|
add,
|
1607
1618
|
divide,
|
@@ -1732,17 +1743,6 @@ export var rotationMatrix = /* #__PURE__ */createRotationMatrix({
|
|
1732
1743
|
typed,
|
1733
1744
|
unaryMinus
|
1734
1745
|
});
|
1735
|
-
export var kldivergence = /* #__PURE__ */createKldivergence({
|
1736
|
-
divide,
|
1737
|
-
dotDivide,
|
1738
|
-
isNumeric,
|
1739
|
-
log,
|
1740
|
-
map,
|
1741
|
-
matrix,
|
1742
|
-
multiply,
|
1743
|
-
sum,
|
1744
|
-
typed
|
1745
|
-
});
|
1746
1746
|
export var planckTime = /* #__PURE__ */createPlanckTime({
|
1747
1747
|
BigNumber,
|
1748
1748
|
Unit,
|