@danielsimonjr/mathts-functions 0.2.4 → 0.2.5
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/README.md +21 -0
- package/dist/index.js +59 -30
- package/dist/typed/special.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# @danielsimonjr/mathts-functions
|
|
2
|
+
|
|
3
|
+
Math functions for [MathTS](https://github.com/danielsimonjr/mathts).
|
|
4
|
+
|
|
5
|
+
The mathematical function library for MathTS — arithmetic, trigonometry, algebra, statistics, signal processing, and more — dispatched polymorphically via typed-function across number / Complex / Fraction / BigNumber / Matrix.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
npm install @danielsimonjr/mathts-functions
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## What it provides
|
|
14
|
+
|
|
15
|
+
- Hundreds of typed functions (`add`, `sin`, `svd`-aware ops, `parallelFFT`, …).
|
|
16
|
+
- A wired `parse` / `evaluate` against the full activated math scope.
|
|
17
|
+
- Per-domain focused entry points are also published: `@danielsimonjr/mathts-{arithmetic,trigonometry,statistics,signal}`.
|
|
18
|
+
|
|
19
|
+
## License
|
|
20
|
+
|
|
21
|
+
MIT (c) Daniel Simon Jr.
|
package/dist/index.js
CHANGED
|
@@ -5463,8 +5463,8 @@ function besselY1Scalar(x) {
|
|
|
5463
5463
|
if (x <= 0) return NaN;
|
|
5464
5464
|
if (x < 8) {
|
|
5465
5465
|
const y = x * x;
|
|
5466
|
-
const r1 = -4900604943e3 + y * (127527439e4 + y * (-
|
|
5467
|
-
const r2 = 249958057e5 + y * (424441966400 + y * (3733650367 + y * (
|
|
5466
|
+
const r1 = x * (-4900604943e3 + y * (127527439e4 + y * (-51534381390 + y * (7349264551e-1 + y * (-4237922726e-3 + y * 8511.937935)))));
|
|
5467
|
+
const r2 = 249958057e5 + y * (424441966400 + y * (3733650367 + y * (2245904002e-2 + y * (102042.605 + y * (354.9632885 + y)))));
|
|
5468
5468
|
return r1 / r2 + 0.636619772 * (besselJ1Scalar(x) * Math.log(x) - 1 / x);
|
|
5469
5469
|
} else {
|
|
5470
5470
|
const z = 8 / x;
|
|
@@ -5732,26 +5732,40 @@ function lambertWScalar(x) {
|
|
|
5732
5732
|
function cosIntegralScalar(x) {
|
|
5733
5733
|
if (x <= 0) return NaN;
|
|
5734
5734
|
const euler = 0.5772156649015329;
|
|
5735
|
-
if (x <=
|
|
5735
|
+
if (x <= 35) {
|
|
5736
5736
|
let sum2 = 0;
|
|
5737
5737
|
let term = 1;
|
|
5738
|
-
for (let n = 1; n <
|
|
5738
|
+
for (let n = 1; n < 200; n++) {
|
|
5739
5739
|
term *= -x * x / ((2 * n - 1) * (2 * n));
|
|
5740
5740
|
sum2 += term / (2 * n);
|
|
5741
|
-
if (Math.abs(term / (2 * n)) < 1e-
|
|
5741
|
+
if (Math.abs(term / (2 * n)) < Math.abs(sum2) * 1e-16) break;
|
|
5742
5742
|
}
|
|
5743
5743
|
return euler + Math.log(x) + sum2;
|
|
5744
5744
|
}
|
|
5745
|
-
let f =
|
|
5745
|
+
let f = 1, g = 1;
|
|
5746
5746
|
let fn = 1, gn = 1;
|
|
5747
|
-
|
|
5748
|
-
|
|
5749
|
-
|
|
5750
|
-
|
|
5751
|
-
|
|
5747
|
+
let fDone = false, gDone = false;
|
|
5748
|
+
for (let n = 1; n <= 60; n++) {
|
|
5749
|
+
const fnNext = fn * (-(2 * n) * (2 * n - 1)) / (x * x);
|
|
5750
|
+
const gnNext = gn * (-(2 * n + 1) * (2 * n)) / (x * x);
|
|
5751
|
+
if (!fDone) {
|
|
5752
|
+
if (Math.abs(fnNext) > Math.abs(fn)) fDone = true;
|
|
5753
|
+
else {
|
|
5754
|
+
fn = fnNext;
|
|
5755
|
+
f += fn;
|
|
5756
|
+
}
|
|
5757
|
+
}
|
|
5758
|
+
if (!gDone) {
|
|
5759
|
+
if (Math.abs(gnNext) > Math.abs(gn)) gDone = true;
|
|
5760
|
+
else {
|
|
5761
|
+
gn = gnNext;
|
|
5762
|
+
g += gn;
|
|
5763
|
+
}
|
|
5764
|
+
}
|
|
5765
|
+
if (fDone && gDone) break;
|
|
5752
5766
|
}
|
|
5753
|
-
f =
|
|
5754
|
-
g =
|
|
5767
|
+
f = f / x;
|
|
5768
|
+
g = g / (x * x);
|
|
5755
5769
|
return f * Math.sin(x) - g * Math.cos(x);
|
|
5756
5770
|
}
|
|
5757
5771
|
function sinIntegralScalar(x) {
|
|
@@ -5807,6 +5821,33 @@ function fresnelCScalar(x) {
|
|
|
5807
5821
|
}
|
|
5808
5822
|
return sign3 * sum2;
|
|
5809
5823
|
}
|
|
5824
|
+
var AIRY_U = (() => {
|
|
5825
|
+
const u = [1];
|
|
5826
|
+
for (let k = 1; k <= 10; k++) {
|
|
5827
|
+
u.push(u[k - 1] * ((6 * k - 5) * (6 * k - 3) * (6 * k - 1)) / (216 * k));
|
|
5828
|
+
}
|
|
5829
|
+
return u;
|
|
5830
|
+
})();
|
|
5831
|
+
function airyAsymPQ(zeta2) {
|
|
5832
|
+
let p = 0, q = 0;
|
|
5833
|
+
let pTerm = Infinity, qTerm = Infinity;
|
|
5834
|
+
const half = Math.floor((AIRY_U.length - 1) / 2);
|
|
5835
|
+
for (let k = 0; k <= half; k++) {
|
|
5836
|
+
const sign3 = k % 2 === 0 ? 1 : -1;
|
|
5837
|
+
const pt = sign3 * AIRY_U[2 * k] / Math.pow(zeta2, 2 * k);
|
|
5838
|
+
if (Math.abs(pt) > Math.abs(pTerm)) break;
|
|
5839
|
+
p += pt;
|
|
5840
|
+
pTerm = pt;
|
|
5841
|
+
}
|
|
5842
|
+
for (let k = 0; k <= half - 1; k++) {
|
|
5843
|
+
const sign3 = k % 2 === 0 ? 1 : -1;
|
|
5844
|
+
const qt = sign3 * AIRY_U[2 * k + 1] / Math.pow(zeta2, 2 * k + 1);
|
|
5845
|
+
if (Math.abs(qt) > Math.abs(qTerm)) break;
|
|
5846
|
+
q += qt;
|
|
5847
|
+
qTerm = qt;
|
|
5848
|
+
}
|
|
5849
|
+
return { p, q };
|
|
5850
|
+
}
|
|
5810
5851
|
function airyAiScalar(x) {
|
|
5811
5852
|
const XBIG = 4.5;
|
|
5812
5853
|
const AI0 = 0.3550280538878172;
|
|
@@ -5836,14 +5877,8 @@ function airyAiScalar(x) {
|
|
|
5836
5877
|
const axp = Math.pow(ax, 0.25);
|
|
5837
5878
|
const zeta2 = 2 / 3 * ax * Math.sqrt(ax);
|
|
5838
5879
|
const theta = zeta2 - Math.PI / 4;
|
|
5839
|
-
|
|
5840
|
-
|
|
5841
|
-
if (k % 2 === 0) p += sign3 * C[k] / zk;
|
|
5842
|
-
else q += sign3 * C[k] / zk;
|
|
5843
|
-
zk *= zeta2;
|
|
5844
|
-
sign3 = -sign3;
|
|
5845
|
-
}
|
|
5846
|
-
return (Math.sin(theta) * p + Math.cos(theta) * q) / (Math.sqrt(Math.PI) * axp);
|
|
5880
|
+
const { p, q } = airyAsymPQ(zeta2);
|
|
5881
|
+
return (Math.cos(theta) * p + Math.sin(theta) * q) / (Math.sqrt(Math.PI) * axp);
|
|
5847
5882
|
}
|
|
5848
5883
|
const x3 = x * x * x;
|
|
5849
5884
|
let f = 1, g = x, fTerm = 1, gTerm = x;
|
|
@@ -5889,15 +5924,9 @@ function airyBiScalar(x) {
|
|
|
5889
5924
|
const ax = Math.abs(x);
|
|
5890
5925
|
const axp = Math.pow(ax, 0.25);
|
|
5891
5926
|
const zeta2 = 2 / 3 * ax * Math.sqrt(ax);
|
|
5892
|
-
const theta = zeta2
|
|
5893
|
-
|
|
5894
|
-
|
|
5895
|
-
if (k % 2 === 0) p += sign3 * C[k] / zk;
|
|
5896
|
-
else q += sign3 * C[k] / zk;
|
|
5897
|
-
zk *= zeta2;
|
|
5898
|
-
sign3 = -sign3;
|
|
5899
|
-
}
|
|
5900
|
-
return (Math.cos(theta) * p + Math.sin(theta) * q) / (Math.sqrt(Math.PI) * axp);
|
|
5927
|
+
const theta = zeta2 - Math.PI / 4;
|
|
5928
|
+
const { p, q } = airyAsymPQ(zeta2);
|
|
5929
|
+
return (-Math.sin(theta) * p + Math.cos(theta) * q) / (Math.sqrt(Math.PI) * axp);
|
|
5901
5930
|
}
|
|
5902
5931
|
const x3 = x * x * x;
|
|
5903
5932
|
let f = 1, g = x, fTerm = 1, gTerm = x;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"special.d.ts","sourceRoot":"","sources":["../../src/typed/special.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"special.d.ts","sourceRoot":"","sources":["../../src/typed/special.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED