mathjs 14.0.1 → 14.1.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 +9 -0
- package/NOTICE +1 -1
- package/README.md +7 -7
- package/bin/cli.js +1 -1
- package/lib/browser/math.js +1 -1
- package/lib/browser/math.js.LICENSE.txt +5 -5
- package/lib/browser/math.js.map +1 -1
- package/lib/cjs/entry/dependenciesAny/dependenciesLarger.generated.js +2 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesRandomInt.generated.js +2 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesSmaller.generated.js +2 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesRandomInt.generated.js +2 -0
- package/lib/cjs/entry/impureFunctionsNumber.generated.js +1 -1
- package/lib/cjs/entry/pureFunctionsAny.generated.js +3 -0
- package/lib/cjs/entry/pureFunctionsNumber.generated.js +5 -4
- package/lib/cjs/expression/embeddedDocs/function/arithmetic/sign.js +1 -1
- package/lib/cjs/function/arithmetic/log.js +12 -5
- package/lib/cjs/function/arithmetic/log10.js +15 -7
- package/lib/cjs/function/arithmetic/log2.js +9 -4
- package/lib/cjs/function/probability/randomInt.js +26 -3
- package/lib/cjs/function/relational/larger.js +12 -4
- package/lib/cjs/function/relational/smaller.js +12 -4
- package/lib/cjs/function/statistics/max.js +1 -1
- package/lib/cjs/function/statistics/min.js +1 -1
- package/lib/cjs/function/string/print.js +2 -2
- package/lib/cjs/function/utils/isInteger.js +1 -1
- package/lib/cjs/header.js +3 -3
- package/lib/cjs/utils/bigint.js +33 -0
- package/lib/cjs/utils/number.js +7 -19
- package/lib/cjs/version.js +1 -1
- package/lib/esm/entry/dependenciesAny/dependenciesLarger.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesRandomInt.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesSmaller.generated.js +2 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesRandomInt.generated.js +2 -0
- package/lib/esm/entry/impureFunctionsNumber.generated.js +2 -2
- package/lib/esm/entry/pureFunctionsAny.generated.js +3 -0
- package/lib/esm/entry/pureFunctionsNumber.generated.js +6 -5
- package/lib/esm/expression/embeddedDocs/function/arithmetic/sign.js +1 -1
- package/lib/esm/function/arithmetic/log.js +12 -5
- package/lib/esm/function/arithmetic/log10.js +16 -8
- package/lib/esm/function/arithmetic/log2.js +9 -4
- package/lib/esm/function/probability/randomInt.js +26 -3
- package/lib/esm/function/relational/larger.js +12 -4
- package/lib/esm/function/relational/smaller.js +12 -4
- package/lib/esm/function/statistics/max.js +1 -1
- package/lib/esm/function/statistics/min.js +1 -1
- package/lib/esm/function/string/print.js +2 -2
- package/lib/esm/function/utils/isInteger.js +1 -1
- package/lib/esm/header.js +1 -1
- package/lib/esm/utils/bigint.js +27 -0
- package/lib/esm/utils/number.js +6 -17
- package/lib/esm/version.js +1 -1
- package/package.json +13 -11
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
exports.largerDependencies = void 0;
|
7
7
|
var _dependenciesDenseMatrixClassGenerated = require("./dependenciesDenseMatrixClass.generated.js");
|
8
8
|
var _dependenciesSparseMatrixClassGenerated = require("./dependenciesSparseMatrixClass.generated.js");
|
9
|
+
var _dependenciesBignumberGenerated = require("./dependenciesBignumber.generated.js");
|
9
10
|
var _dependenciesConcatGenerated = require("./dependenciesConcat.generated.js");
|
10
11
|
var _dependenciesMatrixGenerated = require("./dependenciesMatrix.generated.js");
|
11
12
|
var _dependenciesTypedGenerated = require("./dependenciesTyped.generated.js");
|
@@ -18,6 +19,7 @@ var _factoriesAny = require("../../factoriesAny.js");
|
|
18
19
|
const largerDependencies = exports.largerDependencies = {
|
19
20
|
DenseMatrixDependencies: _dependenciesDenseMatrixClassGenerated.DenseMatrixDependencies,
|
20
21
|
SparseMatrixDependencies: _dependenciesSparseMatrixClassGenerated.SparseMatrixDependencies,
|
22
|
+
bignumberDependencies: _dependenciesBignumberGenerated.bignumberDependencies,
|
21
23
|
concatDependencies: _dependenciesConcatGenerated.concatDependencies,
|
22
24
|
matrixDependencies: _dependenciesMatrixGenerated.matrixDependencies,
|
23
25
|
typedDependencies: _dependenciesTypedGenerated.typedDependencies,
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.randomIntDependencies = void 0;
|
7
|
+
var _dependenciesLog2Generated = require("./dependenciesLog2.generated.js");
|
7
8
|
var _dependenciesTypedGenerated = require("./dependenciesTyped.generated.js");
|
8
9
|
var _factoriesAny = require("../../factoriesAny.js");
|
9
10
|
/**
|
@@ -12,6 +13,7 @@ var _factoriesAny = require("../../factoriesAny.js");
|
|
12
13
|
*/
|
13
14
|
|
14
15
|
const randomIntDependencies = exports.randomIntDependencies = {
|
16
|
+
log2Dependencies: _dependenciesLog2Generated.log2Dependencies,
|
15
17
|
typedDependencies: _dependenciesTypedGenerated.typedDependencies,
|
16
18
|
createRandomInt: _factoriesAny.createRandomInt
|
17
19
|
};
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
exports.smallerDependencies = void 0;
|
7
7
|
var _dependenciesDenseMatrixClassGenerated = require("./dependenciesDenseMatrixClass.generated.js");
|
8
8
|
var _dependenciesSparseMatrixClassGenerated = require("./dependenciesSparseMatrixClass.generated.js");
|
9
|
+
var _dependenciesBignumberGenerated = require("./dependenciesBignumber.generated.js");
|
9
10
|
var _dependenciesConcatGenerated = require("./dependenciesConcat.generated.js");
|
10
11
|
var _dependenciesMatrixGenerated = require("./dependenciesMatrix.generated.js");
|
11
12
|
var _dependenciesTypedGenerated = require("./dependenciesTyped.generated.js");
|
@@ -18,6 +19,7 @@ var _factoriesAny = require("../../factoriesAny.js");
|
|
18
19
|
const smallerDependencies = exports.smallerDependencies = {
|
19
20
|
DenseMatrixDependencies: _dependenciesDenseMatrixClassGenerated.DenseMatrixDependencies,
|
20
21
|
SparseMatrixDependencies: _dependenciesSparseMatrixClassGenerated.SparseMatrixDependencies,
|
22
|
+
bignumberDependencies: _dependenciesBignumberGenerated.bignumberDependencies,
|
21
23
|
concatDependencies: _dependenciesConcatGenerated.concatDependencies,
|
22
24
|
matrixDependencies: _dependenciesMatrixGenerated.matrixDependencies,
|
23
25
|
typedDependencies: _dependenciesTypedGenerated.typedDependencies,
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.randomIntDependencies = void 0;
|
7
|
+
var _dependenciesLog2Generated = require("./dependenciesLog2.generated.js");
|
7
8
|
var _dependenciesTypedGenerated = require("./dependenciesTyped.generated.js");
|
8
9
|
var _factoriesNumber = require("../../factoriesNumber.js");
|
9
10
|
/**
|
@@ -12,6 +13,7 @@ var _factoriesNumber = require("../../factoriesNumber.js");
|
|
12
13
|
*/
|
13
14
|
|
14
15
|
const randomIntDependencies = exports.randomIntDependencies = {
|
16
|
+
log2Dependencies: _dependenciesLog2Generated.log2Dependencies,
|
15
17
|
typedDependencies: _dependenciesTypedGenerated.typedDependencies,
|
16
18
|
createRandomInt: _factoriesNumber.createRandomInt
|
17
19
|
};
|
@@ -339,7 +339,6 @@ const parser = exports.parser = (0, _factoriesNumber.createParser)({
|
|
339
339
|
multiplyScalar: _pureFunctionsNumberGenerated.multiplyScalar,
|
340
340
|
nthRoot: _pureFunctionsNumberGenerated.nthRoot,
|
341
341
|
pickRandom: _pureFunctionsNumberGenerated.pickRandom,
|
342
|
-
randomInt: _pureFunctionsNumberGenerated.randomInt,
|
343
342
|
rightArithShift: _pureFunctionsNumberGenerated.rightArithShift,
|
344
343
|
sec: _pureFunctionsNumberGenerated.sec,
|
345
344
|
sinh: _pureFunctionsNumberGenerated.sinh,
|
@@ -362,6 +361,7 @@ const parser = exports.parser = (0, _factoriesNumber.createParser)({
|
|
362
361
|
norm: _pureFunctionsNumberGenerated.norm,
|
363
362
|
partitionSelect: _pureFunctionsNumberGenerated.partitionSelect,
|
364
363
|
print: _pureFunctionsNumberGenerated.print,
|
364
|
+
randomInt: _pureFunctionsNumberGenerated.randomInt,
|
365
365
|
round: _pureFunctionsNumberGenerated.round,
|
366
366
|
smaller: _pureFunctionsNumberGenerated.smaller,
|
367
367
|
subtractScalar: _pureFunctionsNumberGenerated.subtractScalar,
|
@@ -352,6 +352,7 @@ const isPrime = exports.isPrime = /* #__PURE__ */(0, _factoriesAny.createIsPrime
|
|
352
352
|
});
|
353
353
|
const randomInt = exports.randomInt = /* #__PURE__ */(0, _factoriesAny.createRandomInt)({
|
354
354
|
config: _configReadonly.config,
|
355
|
+
log2,
|
355
356
|
typed
|
356
357
|
});
|
357
358
|
const sech = exports.sech = /* #__PURE__ */(0, _factoriesAny.createSech)({
|
@@ -612,6 +613,7 @@ const round = exports.round = /* #__PURE__ */(0, _factoriesAny.createRound)({
|
|
612
613
|
const smaller = exports.smaller = /* #__PURE__ */(0, _factoriesAny.createSmaller)({
|
613
614
|
DenseMatrix,
|
614
615
|
SparseMatrix,
|
616
|
+
bignumber,
|
615
617
|
concat,
|
616
618
|
config: _configReadonly.config,
|
617
619
|
matrix,
|
@@ -791,6 +793,7 @@ const Index = exports.Index = /* #__PURE__ */(0, _factoriesAny.createIndexClass)
|
|
791
793
|
const larger = exports.larger = /* #__PURE__ */(0, _factoriesAny.createLarger)({
|
792
794
|
DenseMatrix,
|
793
795
|
SparseMatrix,
|
796
|
+
bignumber,
|
794
797
|
concat,
|
795
798
|
config: _configReadonly.config,
|
796
799
|
matrix,
|
@@ -302,10 +302,6 @@ const pickRandom = exports.pickRandom = /* #__PURE__ */(0, _factoriesNumber.crea
|
|
302
302
|
config: _configReadonly.config,
|
303
303
|
typed
|
304
304
|
});
|
305
|
-
const randomInt = exports.randomInt = /* #__PURE__ */(0, _factoriesNumber.createRandomInt)({
|
306
|
-
config: _configReadonly.config,
|
307
|
-
typed
|
308
|
-
});
|
309
305
|
const rightArithShift = exports.rightArithShift = /* #__PURE__ */(0, _factoriesNumber.createRightArithShift)({
|
310
306
|
typed
|
311
307
|
});
|
@@ -382,6 +378,11 @@ const partitionSelect = exports.partitionSelect = /* #__PURE__ */(0, _factoriesN
|
|
382
378
|
const print = exports.print = /* #__PURE__ */(0, _factoriesNumber.createPrint)({
|
383
379
|
typed
|
384
380
|
});
|
381
|
+
const randomInt = exports.randomInt = /* #__PURE__ */(0, _factoriesNumber.createRandomInt)({
|
382
|
+
config: _configReadonly.config,
|
383
|
+
log2,
|
384
|
+
typed
|
385
|
+
});
|
385
386
|
const round = exports.round = /* #__PURE__ */(0, _factoriesNumber.createRound)({
|
386
387
|
typed
|
387
388
|
});
|
@@ -8,7 +8,7 @@ const signDocs = exports.signDocs = {
|
|
8
8
|
name: 'sign',
|
9
9
|
category: 'Arithmetic',
|
10
10
|
syntax: ['sign(x)'],
|
11
|
-
description: 'Compute the sign of a value. The sign of a value x is 1 when x>
|
11
|
+
description: 'Compute the sign of a value. The sign of a value x is 1 when x>0, -1 when x<0, and 0 when x=0.',
|
12
12
|
examples: ['sign(3.5)', 'sign(-4.2)', 'sign(0)'],
|
13
13
|
seealso: ['abs']
|
14
14
|
};
|
@@ -5,9 +5,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
});
|
6
6
|
exports.createLog = void 0;
|
7
7
|
var _factory = require("../../utils/factory.js");
|
8
|
+
var _bigint = require("../../utils/bigint.js");
|
8
9
|
var _index = require("../../plain/number/index.js");
|
9
10
|
const name = 'log';
|
10
11
|
const dependencies = ['config', 'typed', 'typeOf', 'divideScalar', 'Complex'];
|
12
|
+
const nlg16 = Math.log(16);
|
11
13
|
const createLog = exports.createLog = /* #__PURE__ */(0, _factory.factory)(name, dependencies, _ref => {
|
12
14
|
let {
|
13
15
|
typed,
|
@@ -51,24 +53,29 @@ const createLog = exports.createLog = /* #__PURE__ */(0, _factory.factory)(name,
|
|
51
53
|
* @return {number | BigNumber | Fraction | Complex}
|
52
54
|
* Returns the logarithm of `x`
|
53
55
|
*/
|
56
|
+
function complexLog(c) {
|
57
|
+
return c.log();
|
58
|
+
}
|
59
|
+
function complexLogNumber(x) {
|
60
|
+
return complexLog(new Complex(x, 0));
|
61
|
+
}
|
54
62
|
return typed(name, {
|
55
63
|
number: function (x) {
|
56
64
|
if (x >= 0 || config.predictable) {
|
57
65
|
return (0, _index.logNumber)(x);
|
58
66
|
} else {
|
59
67
|
// negative value -> complex value computation
|
60
|
-
return
|
68
|
+
return complexLogNumber(x);
|
61
69
|
}
|
62
70
|
},
|
63
|
-
|
64
|
-
|
65
|
-
},
|
71
|
+
bigint: (0, _bigint.promoteLogarithm)(nlg16, _index.logNumber, config, complexLogNumber),
|
72
|
+
Complex: complexLog,
|
66
73
|
BigNumber: function (x) {
|
67
74
|
if (!x.isNegative() || config.predictable) {
|
68
75
|
return x.ln();
|
69
76
|
} else {
|
70
77
|
// downgrade to number, return Complex valued result
|
71
|
-
return
|
78
|
+
return complexLogNumber(x.toNumber());
|
72
79
|
}
|
73
80
|
},
|
74
81
|
'any, any': typed.referToSelf(self => (x, base) => {
|
@@ -4,11 +4,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.createLog10 = void 0;
|
7
|
-
var _factory = require("../../utils/factory.js");
|
8
|
-
var _collection = require("../../utils/collection.js");
|
9
7
|
var _index = require("../../plain/number/index.js");
|
8
|
+
var _bigint = require("../../utils/bigint.js");
|
9
|
+
var _collection = require("../../utils/collection.js");
|
10
|
+
var _factory = require("../../utils/factory.js");
|
10
11
|
const name = 'log10';
|
11
12
|
const dependencies = ['typed', 'config', 'Complex'];
|
13
|
+
const log16 = (0, _index.log10Number)(16);
|
12
14
|
const createLog10 = exports.createLog10 = /* #__PURE__ */(0, _factory.factory)(name, dependencies, _ref => {
|
13
15
|
let {
|
14
16
|
typed,
|
@@ -40,24 +42,30 @@ const createLog10 = exports.createLog10 = /* #__PURE__ */(0, _factory.factory)(n
|
|
40
42
|
* @return {number | BigNumber | Complex | Array | Matrix}
|
41
43
|
* Returns the 10-base logarithm of `x`
|
42
44
|
*/
|
45
|
+
|
46
|
+
function complexLog(c) {
|
47
|
+
return c.log().div(Math.LN10);
|
48
|
+
}
|
49
|
+
function complexLogNumber(x) {
|
50
|
+
return complexLog(new Complex(x, 0));
|
51
|
+
}
|
43
52
|
return typed(name, {
|
44
53
|
number: function (x) {
|
45
54
|
if (x >= 0 || config.predictable) {
|
46
55
|
return (0, _index.log10Number)(x);
|
47
56
|
} else {
|
48
57
|
// negative value -> complex value computation
|
49
|
-
return
|
58
|
+
return complexLogNumber(x);
|
50
59
|
}
|
51
60
|
},
|
52
|
-
|
53
|
-
|
54
|
-
},
|
61
|
+
bigint: (0, _bigint.promoteLogarithm)(log16, _index.log10Number, config, complexLogNumber),
|
62
|
+
Complex: complexLog,
|
55
63
|
BigNumber: function (x) {
|
56
64
|
if (!x.isNegative() || config.predictable) {
|
57
65
|
return x.log();
|
58
66
|
} else {
|
59
67
|
// downgrade to number, return Complex valued result
|
60
|
-
return
|
68
|
+
return complexLogNumber(x.toNumber());
|
61
69
|
}
|
62
70
|
},
|
63
71
|
'Array | Matrix': typed.referToSelf(self => x => (0, _collection.deepMap)(x, self))
|
@@ -4,9 +4,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.createLog2 = void 0;
|
7
|
-
var _factory = require("../../utils/factory.js");
|
8
|
-
var _collection = require("../../utils/collection.js");
|
9
7
|
var _index = require("../../plain/number/index.js");
|
8
|
+
var _bigint = require("../../utils/bigint.js");
|
9
|
+
var _collection = require("../../utils/collection.js");
|
10
|
+
var _factory = require("../../utils/factory.js");
|
10
11
|
const name = 'log2';
|
11
12
|
const dependencies = ['typed', 'config', 'Complex'];
|
12
13
|
const createLog2 = exports.createLog2 = /* #__PURE__ */(0, _factory.factory)(name, dependencies, _ref => {
|
@@ -40,22 +41,26 @@ const createLog2 = exports.createLog2 = /* #__PURE__ */(0, _factory.factory)(nam
|
|
40
41
|
* @return {number | BigNumber | Complex | Array | Matrix}
|
41
42
|
* Returns the 2-base logarithm of `x`
|
42
43
|
*/
|
44
|
+
function complexLog2Number(x) {
|
45
|
+
return _log2Complex(new Complex(x, 0));
|
46
|
+
}
|
43
47
|
return typed(name, {
|
44
48
|
number: function (x) {
|
45
49
|
if (x >= 0 || config.predictable) {
|
46
50
|
return (0, _index.log2Number)(x);
|
47
51
|
} else {
|
48
52
|
// negative value -> complex value computation
|
49
|
-
return
|
53
|
+
return complexLog2Number(x);
|
50
54
|
}
|
51
55
|
},
|
56
|
+
bigint: (0, _bigint.promoteLogarithm)(4, _index.log2Number, config, complexLog2Number),
|
52
57
|
Complex: _log2Complex,
|
53
58
|
BigNumber: function (x) {
|
54
59
|
if (!x.isNegative() || config.predictable) {
|
55
60
|
return x.log(2);
|
56
61
|
} else {
|
57
62
|
// downgrade to number, return Complex valued result
|
58
|
-
return
|
63
|
+
return complexLog2Number(x.toNumber());
|
59
64
|
}
|
60
65
|
},
|
61
66
|
'Array | Matrix': typed.referToSelf(self => x => (0, _collection.deepMap)(x, self))
|
@@ -9,11 +9,13 @@ var _randomMatrix = require("./util/randomMatrix.js");
|
|
9
9
|
var _seededRNG = require("./util/seededRNG.js");
|
10
10
|
var _is = require("../../utils/is.js");
|
11
11
|
const name = 'randomInt';
|
12
|
-
const dependencies = ['typed', 'config', '?on'];
|
12
|
+
const dependencies = ['typed', 'config', 'log2', '?on'];
|
13
|
+
const simpleCutoff = 2n ** 30n;
|
13
14
|
const createRandomInt = exports.createRandomInt = /* #__PURE__ */(0, _factory.factory)(name, dependencies, _ref => {
|
14
15
|
let {
|
15
16
|
typed,
|
16
17
|
config,
|
18
|
+
log2,
|
17
19
|
on
|
18
20
|
} = _ref;
|
19
21
|
// seeded pseudo random number generator
|
@@ -32,7 +34,7 @@ const createRandomInt = exports.createRandomInt = /* #__PURE__ */(0, _factory.fa
|
|
32
34
|
*
|
33
35
|
* Syntax:
|
34
36
|
*
|
35
|
-
* math.randomInt() // generate
|
37
|
+
* math.randomInt() // generate either 0 or 1, randomly
|
36
38
|
* math.randomInt(max) // generate a random integer between 0 and max
|
37
39
|
* math.randomInt(min, max) // generate a random integer between min and max
|
38
40
|
* math.randomInt(size) // generate a matrix with random integer between 0 and 1
|
@@ -56,9 +58,11 @@ const createRandomInt = exports.createRandomInt = /* #__PURE__ */(0, _factory.fa
|
|
56
58
|
* @return {number | Array | Matrix} A random integer value
|
57
59
|
*/
|
58
60
|
return typed(name, {
|
59
|
-
'': () => _randomInt(0,
|
61
|
+
'': () => _randomInt(0, 2),
|
60
62
|
number: max => _randomInt(0, max),
|
61
63
|
'number, number': (min, max) => _randomInt(min, max),
|
64
|
+
bigint: max => _randomBigint(0n, max),
|
65
|
+
'bigint, bigint': _randomBigint,
|
62
66
|
'Array | Matrix': size => _randomIntMatrix(size, 0, 1),
|
63
67
|
'Array | Matrix, number': (size, max) => _randomIntMatrix(size, 0, max),
|
64
68
|
'Array | Matrix, number, number': (size, min, max) => _randomIntMatrix(size, min, max)
|
@@ -70,4 +74,23 @@ const createRandomInt = exports.createRandomInt = /* #__PURE__ */(0, _factory.fa
|
|
70
74
|
function _randomInt(min, max) {
|
71
75
|
return Math.floor(min + rng() * (max - min));
|
72
76
|
}
|
77
|
+
function _randomBigint(min, max) {
|
78
|
+
const width = max - min; // number of choices
|
79
|
+
if (width <= simpleCutoff) {
|
80
|
+
// do it with number type
|
81
|
+
return min + BigInt(_randomInt(0, Number(width)));
|
82
|
+
}
|
83
|
+
// Too big to choose accurately that way. Instead, choose the correct
|
84
|
+
// number of random bits to cover the width, and repeat until the
|
85
|
+
// resulting number falls within the width
|
86
|
+
const bits = log2(width);
|
87
|
+
let picked = width;
|
88
|
+
while (picked >= width) {
|
89
|
+
picked = 0n;
|
90
|
+
for (let i = 0; i < bits; ++i) {
|
91
|
+
picked = 2n * picked + (rng() < 0.5 ? 0n : 1n);
|
92
|
+
}
|
93
|
+
}
|
94
|
+
return min + picked;
|
95
|
+
}
|
73
96
|
});
|
@@ -13,11 +13,12 @@ var _matAlgo12xSfs = require("../../type/matrix/utils/matAlgo12xSfs.js");
|
|
13
13
|
var _matrixAlgorithmSuite = require("../../type/matrix/utils/matrixAlgorithmSuite.js");
|
14
14
|
var _compareUnits = require("./compareUnits.js");
|
15
15
|
const name = 'larger';
|
16
|
-
const dependencies = ['typed', 'config', 'matrix', 'DenseMatrix', 'concat', 'SparseMatrix'];
|
16
|
+
const dependencies = ['typed', 'config', 'bignumber', 'matrix', 'DenseMatrix', 'concat', 'SparseMatrix'];
|
17
17
|
const createLarger = exports.createLarger = /* #__PURE__ */(0, _factory.factory)(name, dependencies, _ref => {
|
18
18
|
let {
|
19
19
|
typed,
|
20
20
|
config,
|
21
|
+
bignumber,
|
21
22
|
matrix,
|
22
23
|
DenseMatrix,
|
23
24
|
concat,
|
@@ -74,16 +75,23 @@ const createLarger = exports.createLarger = /* #__PURE__ */(0, _factory.factory)
|
|
74
75
|
* @param {number | BigNumber | bigint | Fraction | boolean | Unit | string | Array | Matrix} y Second value to compare
|
75
76
|
* @return {boolean | Array | Matrix} Returns true when the x is larger than y, else returns false
|
76
77
|
*/
|
78
|
+
function bignumLarger(x, y) {
|
79
|
+
return x.gt(y) && !(0, _nearlyEqual.nearlyEqual)(x, y, config.relTol, config.absTol);
|
80
|
+
}
|
77
81
|
return typed(name, createLargerNumber({
|
78
82
|
typed,
|
79
83
|
config
|
80
84
|
}), {
|
81
85
|
'boolean, boolean': (x, y) => x > y,
|
82
|
-
'BigNumber, BigNumber':
|
83
|
-
return x.gt(y) && !(0, _nearlyEqual.nearlyEqual)(x, y, config.relTol, config.absTol);
|
84
|
-
},
|
86
|
+
'BigNumber, BigNumber': bignumLarger,
|
85
87
|
'bigint, bigint': (x, y) => x > y,
|
86
88
|
'Fraction, Fraction': (x, y) => x.compare(y) === 1,
|
89
|
+
'Fraction, BigNumber': function (x, y) {
|
90
|
+
return bignumLarger(bignumber(x), y);
|
91
|
+
},
|
92
|
+
'BigNumber, Fraction': function (x, y) {
|
93
|
+
return bignumLarger(x, bignumber(y));
|
94
|
+
},
|
87
95
|
'Complex, Complex': function () {
|
88
96
|
throw new TypeError('No ordering relation is defined for complex numbers');
|
89
97
|
}
|
@@ -13,11 +13,12 @@ var _matAlgo12xSfs = require("../../type/matrix/utils/matAlgo12xSfs.js");
|
|
13
13
|
var _matrixAlgorithmSuite = require("../../type/matrix/utils/matrixAlgorithmSuite.js");
|
14
14
|
var _compareUnits = require("./compareUnits.js");
|
15
15
|
const name = 'smaller';
|
16
|
-
const dependencies = ['typed', 'config', 'matrix', 'DenseMatrix', 'concat', 'SparseMatrix'];
|
16
|
+
const dependencies = ['typed', 'config', 'bignumber', 'matrix', 'DenseMatrix', 'concat', 'SparseMatrix'];
|
17
17
|
const createSmaller = exports.createSmaller = /* #__PURE__ */(0, _factory.factory)(name, dependencies, _ref => {
|
18
18
|
let {
|
19
19
|
typed,
|
20
20
|
config,
|
21
|
+
bignumber,
|
21
22
|
matrix,
|
22
23
|
DenseMatrix,
|
23
24
|
concat,
|
@@ -74,16 +75,23 @@ const createSmaller = exports.createSmaller = /* #__PURE__ */(0, _factory.factor
|
|
74
75
|
* @param {number | BigNumber | bigint | Fraction | boolean | Unit | string | Array | Matrix} y Second value to compare
|
75
76
|
* @return {boolean | Array | Matrix} Returns true when the x is smaller than y, else returns false
|
76
77
|
*/
|
78
|
+
function bignumSmaller(x, y) {
|
79
|
+
return x.lt(y) && !(0, _nearlyEqual.nearlyEqual)(x, y, config.relTol, config.absTol);
|
80
|
+
}
|
77
81
|
return typed(name, createSmallerNumber({
|
78
82
|
typed,
|
79
83
|
config
|
80
84
|
}), {
|
81
85
|
'boolean, boolean': (x, y) => x < y,
|
82
|
-
'BigNumber, BigNumber':
|
83
|
-
return x.lt(y) && !(0, _nearlyEqual.nearlyEqual)(x, y, config.relTol, config.absTol);
|
84
|
-
},
|
86
|
+
'BigNumber, BigNumber': bignumSmaller,
|
85
87
|
'bigint, bigint': (x, y) => x < y,
|
86
88
|
'Fraction, Fraction': (x, y) => x.compare(y) === -1,
|
89
|
+
'Fraction, BigNumber': function (x, y) {
|
90
|
+
return bignumSmaller(bignumber(x), y);
|
91
|
+
},
|
92
|
+
'BigNumber, Fraction': function (x, y) {
|
93
|
+
return bignumSmaller(x, bignumber(y));
|
94
|
+
},
|
87
95
|
'Complex, Complex': function (x, y) {
|
88
96
|
throw new TypeError('No ordering relation is defined for complex numbers');
|
89
97
|
}
|
@@ -89,7 +89,7 @@ const createMax = exports.createMax = /* #__PURE__ */(0, _factory.factory)(name,
|
|
89
89
|
let res;
|
90
90
|
(0, _collection.deepForEach)(array, function (value) {
|
91
91
|
try {
|
92
|
-
if (
|
92
|
+
if (typeof value === 'number' && isNaN(value)) {
|
93
93
|
res = NaN;
|
94
94
|
} else if (res === undefined || larger(value, res)) {
|
95
95
|
res = value;
|
@@ -89,7 +89,7 @@ const createMin = exports.createMin = /* #__PURE__ */(0, _factory.factory)(name,
|
|
89
89
|
let min;
|
90
90
|
(0, _collection.deepForEach)(array, function (value) {
|
91
91
|
try {
|
92
|
-
if (
|
92
|
+
if (typeof value === 'number' && isNaN(value)) {
|
93
93
|
min = NaN;
|
94
94
|
} else if (min === undefined || smaller(value, min)) {
|
95
95
|
min = value;
|
@@ -31,12 +31,12 @@ const createPrint = exports.createPrint = /* #__PURE__ */(0, _factory.factory)(n
|
|
31
31
|
* // the following outputs: 'The value of pi is 3.141592654'
|
32
32
|
* math.print('The value of pi is $pi', {pi: math.pi}, 10)
|
33
33
|
*
|
34
|
-
* // the following outputs: '
|
34
|
+
* // the following outputs: 'Hello Mary! The date is 2013-03-23'
|
35
35
|
* math.print('Hello $user.name! The date is $date', {
|
36
36
|
* user: {
|
37
37
|
* name: 'Mary',
|
38
38
|
* },
|
39
|
-
* date:
|
39
|
+
* date: '2013-03-23'
|
40
40
|
* })
|
41
41
|
*
|
42
42
|
* // the following outputs: 'My favorite fruits are apples and bananas !'
|
@@ -32,7 +32,7 @@ const createIsInteger = exports.createIsInteger = /* #__PURE__ */(0, _factory.fa
|
|
32
32
|
* math.isInteger(math.fraction(4)) // returns true
|
33
33
|
* math.isInteger('3') // returns true
|
34
34
|
* math.isInteger([3, 0.5, -2]) // returns [true, false, true]
|
35
|
-
* math.isInteger(math.complex('2-4i')) // throws
|
35
|
+
* math.isInteger(math.complex('2-4i')) // throws TypeError
|
36
36
|
*
|
37
37
|
* See also:
|
38
38
|
*
|
package/lib/cjs/header.js
CHANGED
@@ -6,11 +6,11 @@
|
|
6
6
|
* It features real and complex numbers, units, matrices, a large set of
|
7
7
|
* mathematical functions, and a flexible expression parser.
|
8
8
|
*
|
9
|
-
* @version 14.0
|
10
|
-
* @date
|
9
|
+
* @version 14.1.0
|
10
|
+
* @date 2025-01-24
|
11
11
|
*
|
12
12
|
* @license
|
13
|
-
* Copyright (C) 2013-
|
13
|
+
* Copyright (C) 2013-2025 Jos de Jong <wjosdejong@gmail.com>
|
14
14
|
*
|
15
15
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
16
16
|
* use this file except in compliance with the License. You may obtain a copy
|
@@ -0,0 +1,33 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.promoteLogarithm = promoteLogarithm;
|
7
|
+
/**
|
8
|
+
* Build a bigint logarithm function from a number logarithm,
|
9
|
+
* still returning a number. The idea is that 15 hexadecimal digits
|
10
|
+
* (60 bits) saturates the mantissa of the log, and each additional hex
|
11
|
+
* digit effectively just adds the log of 16 to the resulting value. So
|
12
|
+
* convert the most significant 15 hex digits to a number and take its
|
13
|
+
* log, and then add the log of 16 for each additional hex digit that
|
14
|
+
* was in the bigint.
|
15
|
+
* For negative numbers (complex logarithms), following the bignum
|
16
|
+
* implementation, it just downgrades to number and uses the complex result.
|
17
|
+
* @param {number} log16 the log of 16
|
18
|
+
* @param {(number) -> number} numberLog the logarithm function for numbers
|
19
|
+
* @param {ConfigurationObject} config the mathjs configuration
|
20
|
+
* @param {(number) -> Complex} cplx the associated Complex log
|
21
|
+
* @returns {(bigint) -> number} the corresponding logarithm for bigints
|
22
|
+
*/
|
23
|
+
function promoteLogarithm(log16, numberLog, config, cplx) {
|
24
|
+
return function (b) {
|
25
|
+
if (b > 0 || config.predictable) {
|
26
|
+
if (b <= 0) return NaN;
|
27
|
+
const s = b.toString(16);
|
28
|
+
const s15 = s.substring(0, 15);
|
29
|
+
return log16 * (s.length - s15.length) + numberLog(Number('0x' + s15));
|
30
|
+
}
|
31
|
+
return cplx(b.toNumber());
|
32
|
+
};
|
33
|
+
}
|
package/lib/cjs/utils/number.js
CHANGED
@@ -3,14 +3,13 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
-
exports.cbrt = exports.atanh = exports.asinh = exports.acosh =
|
6
|
+
exports.cbrt = exports.atanh = exports.asinh = exports.acosh = void 0;
|
7
7
|
exports.copysign = copysign;
|
8
8
|
exports.cosh = void 0;
|
9
9
|
exports.digits = digits;
|
10
10
|
exports.expm1 = void 0;
|
11
11
|
exports.format = format;
|
12
12
|
exports.isInteger = isInteger;
|
13
|
-
exports.isIntegerStr = isIntegerStr;
|
14
13
|
exports.log2 = exports.log1p = exports.log10 = void 0;
|
15
14
|
exports.nearlyEqual = nearlyEqual;
|
16
15
|
exports.normalizeFormatOptions = normalizeFormatOptions;
|
@@ -40,16 +39,6 @@ function isInteger(value) {
|
|
40
39
|
return isFinite(value) ? value === Math.round(value) : false;
|
41
40
|
}
|
42
41
|
|
43
|
-
/**
|
44
|
-
* Check if a string contains an integer
|
45
|
-
* @param {string} str
|
46
|
-
* @return {boolean} isInteger
|
47
|
-
*/
|
48
|
-
function isIntegerStr(str) {
|
49
|
-
// regex matching strings like "123" and "-123"
|
50
|
-
return /^-?\d+$/.test(str);
|
51
|
-
}
|
52
|
-
|
53
42
|
/**
|
54
43
|
* Ensure the number type is compatible with the provided value.
|
55
44
|
* If not, return 'number' instead.
|
@@ -69,8 +58,12 @@ function isIntegerStr(str) {
|
|
69
58
|
* @returns {'number' | 'BigNumber' | 'bigint' | 'Fraction'}
|
70
59
|
*/
|
71
60
|
function safeNumberType(numberStr, config) {
|
72
|
-
if (config.number === 'bigint'
|
73
|
-
|
61
|
+
if (config.number === 'bigint') {
|
62
|
+
try {
|
63
|
+
BigInt(numberStr);
|
64
|
+
} catch (_unused) {
|
65
|
+
return config.numberFallback;
|
66
|
+
}
|
74
67
|
}
|
75
68
|
return config.number;
|
76
69
|
}
|
@@ -634,11 +627,6 @@ function digits(value) {
|
|
634
627
|
.length;
|
635
628
|
}
|
636
629
|
|
637
|
-
/**
|
638
|
-
* Minimum number added to one that makes the result different than one
|
639
|
-
*/
|
640
|
-
const DBL_EPSILON = exports.DBL_EPSILON = Number.EPSILON || 2.2204460492503130808472633361816E-16;
|
641
|
-
|
642
630
|
/**
|
643
631
|
* Compares two floating point numbers.
|
644
632
|
* @param {number} a - First value to compare
|
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
|
-
const version = exports.version = '14.0
|
7
|
+
const version = exports.version = '14.1.0';
|
8
8
|
// Note: This file is automatically generated when building math.js.
|
9
9
|
// Changes made in this file will be overwritten.
|
@@ -4,6 +4,7 @@
|
|
4
4
|
*/
|
5
5
|
import { DenseMatrixDependencies } from './dependenciesDenseMatrixClass.generated.js';
|
6
6
|
import { SparseMatrixDependencies } from './dependenciesSparseMatrixClass.generated.js';
|
7
|
+
import { bignumberDependencies } from './dependenciesBignumber.generated.js';
|
7
8
|
import { concatDependencies } from './dependenciesConcat.generated.js';
|
8
9
|
import { matrixDependencies } from './dependenciesMatrix.generated.js';
|
9
10
|
import { typedDependencies } from './dependenciesTyped.generated.js';
|
@@ -11,6 +12,7 @@ import { createLarger } from '../../factoriesAny.js';
|
|
11
12
|
export var largerDependencies = {
|
12
13
|
DenseMatrixDependencies,
|
13
14
|
SparseMatrixDependencies,
|
15
|
+
bignumberDependencies,
|
14
16
|
concatDependencies,
|
15
17
|
matrixDependencies,
|
16
18
|
typedDependencies,
|
@@ -2,9 +2,11 @@
|
|
2
2
|
* THIS FILE IS AUTO-GENERATED
|
3
3
|
* DON'T MAKE CHANGES HERE
|
4
4
|
*/
|
5
|
+
import { log2Dependencies } from './dependenciesLog2.generated.js';
|
5
6
|
import { typedDependencies } from './dependenciesTyped.generated.js';
|
6
7
|
import { createRandomInt } from '../../factoriesAny.js';
|
7
8
|
export var randomIntDependencies = {
|
9
|
+
log2Dependencies,
|
8
10
|
typedDependencies,
|
9
11
|
createRandomInt
|
10
12
|
};
|
@@ -4,6 +4,7 @@
|
|
4
4
|
*/
|
5
5
|
import { DenseMatrixDependencies } from './dependenciesDenseMatrixClass.generated.js';
|
6
6
|
import { SparseMatrixDependencies } from './dependenciesSparseMatrixClass.generated.js';
|
7
|
+
import { bignumberDependencies } from './dependenciesBignumber.generated.js';
|
7
8
|
import { concatDependencies } from './dependenciesConcat.generated.js';
|
8
9
|
import { matrixDependencies } from './dependenciesMatrix.generated.js';
|
9
10
|
import { typedDependencies } from './dependenciesTyped.generated.js';
|
@@ -11,6 +12,7 @@ import { createSmaller } from '../../factoriesAny.js';
|
|
11
12
|
export var smallerDependencies = {
|
12
13
|
DenseMatrixDependencies,
|
13
14
|
SparseMatrixDependencies,
|
15
|
+
bignumberDependencies,
|
14
16
|
concatDependencies,
|
15
17
|
matrixDependencies,
|
16
18
|
typedDependencies,
|
@@ -2,9 +2,11 @@
|
|
2
2
|
* THIS FILE IS AUTO-GENERATED
|
3
3
|
* DON'T MAKE CHANGES HERE
|
4
4
|
*/
|
5
|
+
import { log2Dependencies } from './dependenciesLog2.generated.js';
|
5
6
|
import { typedDependencies } from './dependenciesTyped.generated.js';
|
6
7
|
import { createRandomInt } from '../../factoriesNumber.js';
|
7
8
|
export var randomIntDependencies = {
|
9
|
+
log2Dependencies,
|
8
10
|
typedDependencies,
|
9
11
|
createRandomInt
|
10
12
|
};
|