mathjs 14.0.0 → 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 +15 -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/algebra/derivative.js +64 -77
- 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/algebra/derivative.js +64 -77
- 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 +19 -17
- package/types/index.d.ts +5 -8
@@ -0,0 +1,27 @@
|
|
1
|
+
/**
|
2
|
+
* Build a bigint logarithm function from a number logarithm,
|
3
|
+
* still returning a number. The idea is that 15 hexadecimal digits
|
4
|
+
* (60 bits) saturates the mantissa of the log, and each additional hex
|
5
|
+
* digit effectively just adds the log of 16 to the resulting value. So
|
6
|
+
* convert the most significant 15 hex digits to a number and take its
|
7
|
+
* log, and then add the log of 16 for each additional hex digit that
|
8
|
+
* was in the bigint.
|
9
|
+
* For negative numbers (complex logarithms), following the bignum
|
10
|
+
* implementation, it just downgrades to number and uses the complex result.
|
11
|
+
* @param {number} log16 the log of 16
|
12
|
+
* @param {(number) -> number} numberLog the logarithm function for numbers
|
13
|
+
* @param {ConfigurationObject} config the mathjs configuration
|
14
|
+
* @param {(number) -> Complex} cplx the associated Complex log
|
15
|
+
* @returns {(bigint) -> number} the corresponding logarithm for bigints
|
16
|
+
*/
|
17
|
+
export function promoteLogarithm(log16, numberLog, config, cplx) {
|
18
|
+
return function (b) {
|
19
|
+
if (b > 0 || config.predictable) {
|
20
|
+
if (b <= 0) return NaN;
|
21
|
+
var s = b.toString(16);
|
22
|
+
var s15 = s.substring(0, 15);
|
23
|
+
return log16 * (s.length - s15.length) + numberLog(Number('0x' + s15));
|
24
|
+
}
|
25
|
+
return cplx(b.toNumber());
|
26
|
+
};
|
27
|
+
}
|
package/lib/esm/utils/number.js
CHANGED
@@ -16,16 +16,6 @@ export function isInteger(value) {
|
|
16
16
|
return isFinite(value) ? value === Math.round(value) : false;
|
17
17
|
}
|
18
18
|
|
19
|
-
/**
|
20
|
-
* Check if a string contains an integer
|
21
|
-
* @param {string} str
|
22
|
-
* @return {boolean} isInteger
|
23
|
-
*/
|
24
|
-
export function isIntegerStr(str) {
|
25
|
-
// regex matching strings like "123" and "-123"
|
26
|
-
return /^-?\d+$/.test(str);
|
27
|
-
}
|
28
|
-
|
29
19
|
/**
|
30
20
|
* Ensure the number type is compatible with the provided value.
|
31
21
|
* If not, return 'number' instead.
|
@@ -45,8 +35,12 @@ export function isIntegerStr(str) {
|
|
45
35
|
* @returns {'number' | 'BigNumber' | 'bigint' | 'Fraction'}
|
46
36
|
*/
|
47
37
|
export function safeNumberType(numberStr, config) {
|
48
|
-
if (config.number === 'bigint'
|
49
|
-
|
38
|
+
if (config.number === 'bigint') {
|
39
|
+
try {
|
40
|
+
BigInt(numberStr);
|
41
|
+
} catch (_unused) {
|
42
|
+
return config.numberFallback;
|
43
|
+
}
|
50
44
|
}
|
51
45
|
return config.number;
|
52
46
|
}
|
@@ -610,11 +604,6 @@ export function digits(value) {
|
|
610
604
|
.length;
|
611
605
|
}
|
612
606
|
|
613
|
-
/**
|
614
|
-
* Minimum number added to one that makes the result different than one
|
615
|
-
*/
|
616
|
-
export var DBL_EPSILON = Number.EPSILON || 2.2204460492503130808472633361816E-16;
|
617
|
-
|
618
607
|
/**
|
619
608
|
* Compares two floating point numbers.
|
620
609
|
* @param {number} a - First value to compare
|
package/lib/esm/version.js
CHANGED
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "mathjs",
|
3
|
-
"version": "14.
|
3
|
+
"version": "14.1.0",
|
4
4
|
"description": "Math.js is an extensive math library for JavaScript and Node.js. It features a flexible expression parser with support for symbolic computation, comes with a large set of built-in functions and constants, and offers an integrated solution to work with different data types like numbers, big numbers, complex numbers, fractions, units, and matrices.",
|
5
5
|
"author": "Jos de Jong <wjosdejong@gmail.com> (https://github.com/josdejong)",
|
6
6
|
"homepage": "https://mathjs.org",
|
@@ -26,6 +26,7 @@
|
|
26
26
|
],
|
27
27
|
"dependencies": {
|
28
28
|
"@babel/runtime": "^7.25.7",
|
29
|
+
"@lambdatest/node-tunnel": "^4.0.8",
|
29
30
|
"complex.js": "^2.2.5",
|
30
31
|
"decimal.js": "^10.4.3",
|
31
32
|
"escape-latex": "^1.2.0",
|
@@ -43,41 +44,42 @@
|
|
43
44
|
"@babel/preset-env": "7.26.0",
|
44
45
|
"@babel/register": "7.25.9",
|
45
46
|
"@types/assert": "1.5.11",
|
46
|
-
"@types/mocha": "10.0.
|
47
|
-
"@typescript-eslint/eslint-plugin": "
|
48
|
-
"@typescript-eslint/parser": "
|
47
|
+
"@types/mocha": "10.0.10",
|
48
|
+
"@typescript-eslint/eslint-plugin": "8.21.0",
|
49
|
+
"@typescript-eslint/parser": "8.21.0",
|
49
50
|
"assert": "2.1.0",
|
50
51
|
"babel-loader": "9.2.1",
|
51
|
-
"
|
52
|
-
"c8": "10.1.2",
|
52
|
+
"c8": "10.1.3",
|
53
53
|
"codecov": "3.8.3",
|
54
|
-
"core-js": "3.
|
54
|
+
"core-js": "3.40.0",
|
55
55
|
"del": "8.0.0",
|
56
56
|
"dtslint": "4.2.1",
|
57
|
-
"
|
57
|
+
"eigen": "0.2.2",
|
58
|
+
"eslint": "8.57.1",
|
58
59
|
"eslint-config-prettier": "9.1.0",
|
59
60
|
"eslint-config-standard": "17.1.0",
|
60
61
|
"eslint-plugin-import": "2.31.0",
|
61
62
|
"eslint-plugin-mocha": "10.5.0",
|
62
63
|
"eslint-plugin-n": "16.6.2",
|
63
|
-
"eslint-plugin-prettier": "5.2.
|
64
|
+
"eslint-plugin-prettier": "5.2.3",
|
64
65
|
"eslint-plugin-promise": "6.6.0",
|
65
66
|
"expect-type": "1.1.0",
|
66
67
|
"expr-eval": "2.0.2",
|
67
68
|
"fancy-log": "2.0.0",
|
68
|
-
"glob": "11.0.
|
69
|
+
"glob": "11.0.1",
|
69
70
|
"gulp": "5.0.0",
|
70
71
|
"gulp-babel": "8.0.0",
|
71
72
|
"handlebars": "4.7.8",
|
72
73
|
"jsep": "1.4.0",
|
73
74
|
"karma": "6.4.4",
|
74
|
-
"karma-browserstack-launcher": "1.6.0",
|
75
75
|
"karma-firefox-launcher": "2.1.3",
|
76
76
|
"karma-mocha": "2.0.1",
|
77
77
|
"karma-mocha-reporter": "2.2.5",
|
78
|
+
"karma-spec-reporter": "0.0.36",
|
79
|
+
"karma-webdriver-launcher": "1.0.8",
|
78
80
|
"karma-webpack": "5.0.1",
|
79
81
|
"mkdirp": "3.0.1",
|
80
|
-
"mocha": "
|
82
|
+
"mocha": "11.1.0",
|
81
83
|
"mocha-junit-reporter": "2.2.1",
|
82
84
|
"ndarray": "1.0.19",
|
83
85
|
"ndarray-determinant": "1.0.0",
|
@@ -85,14 +87,14 @@
|
|
85
87
|
"ndarray-ops": "1.2.2",
|
86
88
|
"ndarray-pack": "1.2.1",
|
87
89
|
"numericjs": "1.2.6",
|
88
|
-
"
|
89
|
-
"prettier": "3.3.3",
|
90
|
+
"prettier": "3.4.2",
|
90
91
|
"process": "0.11.10",
|
91
92
|
"sinon": "19.0.2",
|
92
93
|
"sylvester": "0.0.21",
|
94
|
+
"tinybench": "3.1.0",
|
93
95
|
"ts-node": "10.9.2",
|
94
|
-
"typescript": "5.
|
95
|
-
"webpack": "5.
|
96
|
+
"typescript": "5.7.3",
|
97
|
+
"webpack": "5.97.1",
|
96
98
|
"zeros": "1.0.0"
|
97
99
|
},
|
98
100
|
"type": "module",
|
@@ -151,7 +153,7 @@
|
|
151
153
|
"test:node": "mocha test/node-tests/*.test.js test/node-tests/**/*.test.js",
|
152
154
|
"test:all": "npm run test:src && npm run test:generated && npm run test:node && npm run test:types",
|
153
155
|
"test:browser": "karma start test/browser-test-config/local-karma.js",
|
154
|
-
"test:
|
156
|
+
"test:lambdatest": "karma start test/browser-test-config/lambdatest-karma.js",
|
155
157
|
"test:types": " tsc -p ./tsconfig.json && node --loader ts-node/esm ./test/typescript-tests/testTypes.ts",
|
156
158
|
"coverage": "c8 --reporter=lcov --reporter=text-summary mocha test/unit-tests && echo \"\nDetailed coverage report is available at ./coverage/lcov-report/index.html\"",
|
157
159
|
"prepublishOnly": "npm run test:all && npm run lint",
|
package/types/index.d.ts
CHANGED
@@ -1,4 +1,7 @@
|
|
1
1
|
import { Decimal } from 'decimal.js'
|
2
|
+
import { Fraction } from 'fraction.js'
|
3
|
+
|
4
|
+
export { Fraction }
|
2
5
|
|
3
6
|
export as namespace math
|
4
7
|
|
@@ -4046,15 +4049,9 @@ export interface MatrixCtor {
|
|
4046
4049
|
new (): Matrix
|
4047
4050
|
}
|
4048
4051
|
|
4049
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-
|
4052
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
|
4050
4053
|
export interface BigNumber extends Decimal {}
|
4051
4054
|
|
4052
|
-
export interface Fraction {
|
4053
|
-
s: bigint
|
4054
|
-
n: bigint
|
4055
|
-
d: bigint
|
4056
|
-
}
|
4057
|
-
|
4058
4055
|
export interface Complex {
|
4059
4056
|
re: number
|
4060
4057
|
im: number
|
@@ -4246,7 +4243,7 @@ export interface UnitDefinition {
|
|
4246
4243
|
baseName?: string
|
4247
4244
|
}
|
4248
4245
|
|
4249
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-
|
4246
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
|
4250
4247
|
export interface Index {}
|
4251
4248
|
|
4252
4249
|
export interface PartitionedMap<T, U> {
|