mathjs 14.0.1 → 14.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
};
|