@danielsimonjr/mathts-functions 0.2.13 → 0.2.14
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/dist/index.js +100 -1
- package/dist/typed/arithmetic.d.ts.map +1 -1
- package/dist/typed/fused.d.ts +21 -0
- package/dist/typed/fused.d.ts.map +1 -0
- package/dist/typed/index.d.ts +1 -0
- package/dist/typed/index.d.ts.map +1 -1
- package/dist/typed/special.d.ts +5 -0
- package/dist/typed/special.d.ts.map +1 -1
- package/dist/typed/trigonometry.d.ts.map +1 -1
- package/dist/wasm/elementwise/wasm-bridge.d.ts +16 -2
- package/dist/wasm/elementwise/wasm-bridge.d.ts.map +1 -1
- package/dist/wasm/mathts.wasm +0 -0
- package/dist/wasm/wasm-manifest.json +3 -3
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -144,6 +144,7 @@ __export(typed_exports, {
|
|
|
144
144
|
equalScalar: () => equalScalar,
|
|
145
145
|
equalText: () => equalText,
|
|
146
146
|
erfc: () => erfc,
|
|
147
|
+
erfcScalar: () => erfcScalar,
|
|
147
148
|
erfi: () => erfi,
|
|
148
149
|
eulerPhi: () => eulerPhi,
|
|
149
150
|
eventDetection: () => eventDetection,
|
|
@@ -170,6 +171,7 @@ __export(typed_exports, {
|
|
|
170
171
|
fresnelS: () => fresnelS,
|
|
171
172
|
fullSimplify: () => fullSimplify,
|
|
172
173
|
functionExpand: () => functionExpand,
|
|
174
|
+
fuseUnaryChain: () => fuseUnaryChain,
|
|
173
175
|
gammaDist: () => gammaDist,
|
|
174
176
|
gammaPDF: () => gammaPDF,
|
|
175
177
|
gammainc: () => gammainc,
|
|
@@ -495,6 +497,43 @@ function elementwiseUnaryDispatch(op, xs) {
|
|
|
495
497
|
return null;
|
|
496
498
|
}
|
|
497
499
|
}
|
|
500
|
+
function elementwiseChainDispatch(ops, xs) {
|
|
501
|
+
const n = xs.length;
|
|
502
|
+
if (ops.length === 0 || n < WASM_ELEMENTWISE_THRESHOLD) return null;
|
|
503
|
+
const wasm = getWasm();
|
|
504
|
+
if (!wasm) return null;
|
|
505
|
+
const mem = wasm.memory;
|
|
506
|
+
if (!(mem instanceof WebAssembly.Memory)) return null;
|
|
507
|
+
const kernels = [];
|
|
508
|
+
for (const op of ops) {
|
|
509
|
+
const fn = wasm[`simd_${op}_array`];
|
|
510
|
+
if (typeof fn !== "function") return null;
|
|
511
|
+
kernels.push(fn);
|
|
512
|
+
}
|
|
513
|
+
try {
|
|
514
|
+
const need = 2 * n * 8;
|
|
515
|
+
if (scratchBase < 0) scratchBase = mem.buffer.byteLength;
|
|
516
|
+
if (scratchBase + need > mem.buffer.byteLength) {
|
|
517
|
+
mem.grow(Math.ceil((scratchBase + need - mem.buffer.byteLength) / 65536));
|
|
518
|
+
}
|
|
519
|
+
const bufA = scratchBase;
|
|
520
|
+
const bufB = scratchBase + n * 8;
|
|
521
|
+
new Float64Array(mem.buffer, bufA, n).set(xs);
|
|
522
|
+
let cur = bufA;
|
|
523
|
+
let other = bufB;
|
|
524
|
+
for (const fn of kernels) {
|
|
525
|
+
fn(cur, other, n);
|
|
526
|
+
const t = cur;
|
|
527
|
+
cur = other;
|
|
528
|
+
other = t;
|
|
529
|
+
}
|
|
530
|
+
const result = new Float64Array(n);
|
|
531
|
+
result.set(new Float64Array(mem.buffer, cur, n));
|
|
532
|
+
return result;
|
|
533
|
+
} catch {
|
|
534
|
+
return null;
|
|
535
|
+
}
|
|
536
|
+
}
|
|
498
537
|
|
|
499
538
|
// src/typed/arithmetic.ts
|
|
500
539
|
var add = mathTyped("add", {
|
|
@@ -758,6 +797,8 @@ var log10 = mathTyped("log10", {
|
|
|
758
797
|
BigNumber: (a) => a.log10(),
|
|
759
798
|
// Parallel array log10
|
|
760
799
|
Float64Array: async (a) => {
|
|
800
|
+
const wasm = elementwiseUnaryDispatch("log10", a);
|
|
801
|
+
if (wasm) return wasm;
|
|
761
802
|
if (computePool.shouldParallelize(a.length)) {
|
|
762
803
|
const r = await computePool.applyKernel(a, "(x) => Math.log10(x)");
|
|
763
804
|
return r.result;
|
|
@@ -773,6 +814,8 @@ var log2 = mathTyped("log2", {
|
|
|
773
814
|
BigNumber: (a) => a.log2(),
|
|
774
815
|
// Parallel array log2
|
|
775
816
|
Float64Array: async (a) => {
|
|
817
|
+
const wasm = elementwiseUnaryDispatch("log2", a);
|
|
818
|
+
if (wasm) return wasm;
|
|
776
819
|
if (computePool.shouldParallelize(a.length)) {
|
|
777
820
|
const r = await computePool.applyKernel(a, "(x) => Math.log2(x)");
|
|
778
821
|
return r.result;
|
|
@@ -786,6 +829,8 @@ var log1p = mathTyped("log1p", {
|
|
|
786
829
|
number: (a) => Math.log1p(a),
|
|
787
830
|
// Parallel array log1p
|
|
788
831
|
Float64Array: async (a) => {
|
|
832
|
+
const wasm = elementwiseUnaryDispatch("log1p", a);
|
|
833
|
+
if (wasm) return wasm;
|
|
789
834
|
if (computePool.shouldParallelize(a.length)) {
|
|
790
835
|
const r = await computePool.applyKernel(a, "(x) => Math.log1p(x)");
|
|
791
836
|
return r.result;
|
|
@@ -799,6 +844,8 @@ var expm1 = mathTyped("expm1", {
|
|
|
799
844
|
number: (a) => Math.expm1(a),
|
|
800
845
|
// Parallel array expm1
|
|
801
846
|
Float64Array: async (a) => {
|
|
847
|
+
const wasm = elementwiseUnaryDispatch("expm1", a);
|
|
848
|
+
if (wasm) return wasm;
|
|
802
849
|
if (computePool.shouldParallelize(a.length)) {
|
|
803
850
|
const r = await computePool.applyKernel(a, "(x) => Math.expm1(x)");
|
|
804
851
|
return r.result;
|
|
@@ -964,6 +1011,8 @@ var sinh = mathTyped("sinh", {
|
|
|
964
1011
|
BigNumber: (a) => a.sinh(),
|
|
965
1012
|
// Parallel array sinh
|
|
966
1013
|
Float64Array: async (a) => {
|
|
1014
|
+
const wasm = elementwiseUnaryDispatch("sinh", a);
|
|
1015
|
+
if (wasm) return wasm;
|
|
967
1016
|
if (computePool.shouldParallelize(a.length)) {
|
|
968
1017
|
const r = await computePool.applyKernel(a, "(x) => Math.sinh(x)");
|
|
969
1018
|
return r.result;
|
|
@@ -994,6 +1043,8 @@ var tanh = mathTyped("tanh", {
|
|
|
994
1043
|
BigNumber: (a) => a.tanh(),
|
|
995
1044
|
// Parallel array tanh
|
|
996
1045
|
Float64Array: async (a) => {
|
|
1046
|
+
const wasm = elementwiseUnaryDispatch("tanh", a);
|
|
1047
|
+
if (wasm) return wasm;
|
|
997
1048
|
if (computePool.shouldParallelize(a.length)) {
|
|
998
1049
|
const r = await computePool.applyKernel(a, "(x) => Math.tanh(x)");
|
|
999
1050
|
return r.result;
|
|
@@ -1294,6 +1345,8 @@ var csc = mathTyped2("csc", {
|
|
|
1294
1345
|
BigNumber: (a) => BigNumber2.fromNumber(1).divide(a.sin()),
|
|
1295
1346
|
// Parallel array csc
|
|
1296
1347
|
Float64Array: async (a) => {
|
|
1348
|
+
const wasm = elementwiseUnaryDispatch("csc", a);
|
|
1349
|
+
if (wasm) return wasm;
|
|
1297
1350
|
if (computePool2.shouldParallelize(a.length)) {
|
|
1298
1351
|
const r = await computePool2.applyKernel(a, "(x) => 1 / Math.sin(x)");
|
|
1299
1352
|
return r.result;
|
|
@@ -1309,6 +1362,8 @@ var sec = mathTyped2("sec", {
|
|
|
1309
1362
|
BigNumber: (a) => BigNumber2.fromNumber(1).divide(a.cos()),
|
|
1310
1363
|
// Parallel array sec
|
|
1311
1364
|
Float64Array: async (a) => {
|
|
1365
|
+
const wasm = elementwiseUnaryDispatch("sec", a);
|
|
1366
|
+
if (wasm) return wasm;
|
|
1312
1367
|
if (computePool2.shouldParallelize(a.length)) {
|
|
1313
1368
|
const r = await computePool2.applyKernel(a, "(x) => 1 / Math.cos(x)");
|
|
1314
1369
|
return r.result;
|
|
@@ -1324,6 +1379,8 @@ var cot = mathTyped2("cot", {
|
|
|
1324
1379
|
BigNumber: (a) => BigNumber2.fromNumber(1).divide(a.tan()),
|
|
1325
1380
|
// Parallel array cot
|
|
1326
1381
|
Float64Array: async (a) => {
|
|
1382
|
+
const wasm = elementwiseUnaryDispatch("cot", a);
|
|
1383
|
+
if (wasm) return wasm;
|
|
1327
1384
|
if (computePool2.shouldParallelize(a.length)) {
|
|
1328
1385
|
const r = await computePool2.applyKernel(a, "(x) => 1 / Math.tan(x)");
|
|
1329
1386
|
return r.result;
|
|
@@ -1379,6 +1436,8 @@ var atan = mathTyped2("atan", {
|
|
|
1379
1436
|
BigNumber: (a) => a.atan(),
|
|
1380
1437
|
// Parallel array atan
|
|
1381
1438
|
Float64Array: async (a) => {
|
|
1439
|
+
const wasm = elementwiseUnaryDispatch("atan", a);
|
|
1440
|
+
if (wasm) return wasm;
|
|
1382
1441
|
if (computePool2.shouldParallelize(a.length)) {
|
|
1383
1442
|
const r = await computePool2.applyKernel(a, "(x) => Math.atan(x)");
|
|
1384
1443
|
return r.result;
|
|
@@ -1439,6 +1498,8 @@ var atanh = mathTyped2("atanh", {
|
|
|
1439
1498
|
BigNumber: (a) => a.atanh(),
|
|
1440
1499
|
// Parallel array atanh (values outside (-1, 1) produce NaN or ±Infinity, matching Math.atanh behavior)
|
|
1441
1500
|
Float64Array: async (a) => {
|
|
1501
|
+
const wasm = elementwiseUnaryDispatch("atanh", a);
|
|
1502
|
+
if (wasm) return wasm;
|
|
1442
1503
|
if (computePool2.shouldParallelize(a.length)) {
|
|
1443
1504
|
const r = await computePool2.applyKernel(a, "(x) => Math.atanh(x)");
|
|
1444
1505
|
return r.result;
|
|
@@ -6125,7 +6186,11 @@ async function mapArray(x, scalar, buildKernel) {
|
|
|
6125
6186
|
}
|
|
6126
6187
|
var erfc = mathTyped9("erfc", {
|
|
6127
6188
|
number: erfcScalar,
|
|
6128
|
-
Float64Array: (x) =>
|
|
6189
|
+
Float64Array: (x) => {
|
|
6190
|
+
const wasm = elementwiseUnaryDispatch("erfc", x);
|
|
6191
|
+
if (wasm) return Promise.resolve(wasm);
|
|
6192
|
+
return mapArray(x, erfcScalar, () => kernelSource([_erfSeries, _erfcCF, erfcScalar], "(x) => erfcScalar(x)"));
|
|
6193
|
+
}
|
|
6129
6194
|
});
|
|
6130
6195
|
var erfi = mathTyped9("erfi", {
|
|
6131
6196
|
number: erfiScalar,
|
|
@@ -6490,6 +6555,38 @@ var typedSpecial = {
|
|
|
6490
6555
|
ellipticPi
|
|
6491
6556
|
};
|
|
6492
6557
|
|
|
6558
|
+
// src/typed/fused.ts
|
|
6559
|
+
var SCALAR = {
|
|
6560
|
+
abs: Math.abs,
|
|
6561
|
+
sin: Math.sin,
|
|
6562
|
+
cos: Math.cos,
|
|
6563
|
+
tan: Math.tan,
|
|
6564
|
+
exp: Math.exp,
|
|
6565
|
+
log: Math.log,
|
|
6566
|
+
atan: Math.atan,
|
|
6567
|
+
sinh: Math.sinh,
|
|
6568
|
+
tanh: Math.tanh,
|
|
6569
|
+
atanh: Math.atanh,
|
|
6570
|
+
expm1: Math.expm1,
|
|
6571
|
+
log1p: Math.log1p,
|
|
6572
|
+
log2: Math.log2,
|
|
6573
|
+
log10: Math.log10,
|
|
6574
|
+
sec: (x) => 1 / Math.cos(x),
|
|
6575
|
+
csc: (x) => 1 / Math.sin(x),
|
|
6576
|
+
cot: (x) => 1 / Math.tan(x),
|
|
6577
|
+
erfc: erfcScalar
|
|
6578
|
+
};
|
|
6579
|
+
function fuseUnaryChain(ops, xs) {
|
|
6580
|
+
const wasm = elementwiseChainDispatch(ops, xs);
|
|
6581
|
+
if (wasm) return wasm;
|
|
6582
|
+
const out = Float64Array.from(xs);
|
|
6583
|
+
for (const op of ops) {
|
|
6584
|
+
const f = SCALAR[op];
|
|
6585
|
+
for (let i = 0; i < out.length; i++) out[i] = f(out[i]);
|
|
6586
|
+
}
|
|
6587
|
+
return out;
|
|
6588
|
+
}
|
|
6589
|
+
|
|
6493
6590
|
// src/typed/distributions.ts
|
|
6494
6591
|
import { mathTyped as mathTyped10 } from "@danielsimonjr/mathts-core";
|
|
6495
6592
|
import { computePool as computePool7 } from "@danielsimonjr/mathts-parallel";
|
|
@@ -45823,6 +45920,7 @@ export {
|
|
|
45823
45920
|
equalText,
|
|
45824
45921
|
erf,
|
|
45825
45922
|
erfc,
|
|
45923
|
+
erfcScalar,
|
|
45826
45924
|
erfi,
|
|
45827
45925
|
eulerPhi,
|
|
45828
45926
|
evaluate,
|
|
@@ -45927,6 +46025,7 @@ export {
|
|
|
45927
46025
|
fresnelS,
|
|
45928
46026
|
fullSimplify,
|
|
45929
46027
|
functionExpand,
|
|
46028
|
+
fuseUnaryChain,
|
|
45930
46029
|
gamma,
|
|
45931
46030
|
gammaDist,
|
|
45932
46031
|
gammaPDF,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arithmetic.d.ts","sourceRoot":"","sources":["../../src/typed/arithmetic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EAAe,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAU1E,4BAA4B;AAC5B,KAAK,GAAG,GAAG,MAAM,CAAC;AASlB;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,GAAG,wCAwCd,CAAC;AAMH;;GAEG;AACH,eAAO,MAAM,QAAQ,wCAyBnB,CAAC;AAMH;;GAEG;AACH,eAAO,MAAM,QAAQ,wCAgDnB,CAAC;AAMH;;GAEG;AACH,eAAO,MAAM,MAAM,wCAyBjB,CAAC;AAMH;;GAEG;AACH,eAAO,MAAM,UAAU,wCAYrB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,SAAS,wCAOpB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,GAAG,wCAcd,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,IAAI,wCAgBf,CAAC;AAMH;;GAEG;AACH,eAAO,MAAM,GAAG,wCAQd,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,IAAI,wCAef,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,MAAM,wCAYjB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,IAAI,wCAiBf,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,IAAI,wCAef,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,OAAO,wCAIlB,CAAC;AAMH;;GAEG;AACH,eAAO,MAAM,GAAG,wCAYd,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,GAAG,wCAad,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,KAAK,
|
|
1
|
+
{"version":3,"file":"arithmetic.d.ts","sourceRoot":"","sources":["../../src/typed/arithmetic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Op-fusion public API (Tier 3 of the WASM pairing gap plan).
|
|
3
|
+
*
|
|
4
|
+
* Applies a *chain* of unary elementwise ops with the array resident in WASM
|
|
5
|
+
* memory across the whole chain, so the JS↔wasm transfer is paid **once**, not
|
|
6
|
+
* once per op. This is the structural lever the per-op benchmarks pointed to:
|
|
7
|
+
* a single op barely beats (or loses to) JS once the copy is counted, but a
|
|
8
|
+
* chain of K ops amortizes that one copy over K kernels.
|
|
9
|
+
*
|
|
10
|
+
* fuseUnaryChain(['sin', 'exp'], xs) // = exp(sin(x)), one copy in + one out
|
|
11
|
+
*
|
|
12
|
+
* Falls back to a sequential JS scalar pass when WASM is unavailable or the
|
|
13
|
+
* array is below threshold, so the result is always correct.
|
|
14
|
+
*/
|
|
15
|
+
import { type WasmElementwiseOp } from '../wasm/elementwise/wasm-bridge.js';
|
|
16
|
+
/**
|
|
17
|
+
* Apply `ops` left-to-right over `xs` (i.e. `ops[last](…ops[0](x))`), fused in
|
|
18
|
+
* WASM when possible. Returns a new `Float64Array`; never mutates `xs`.
|
|
19
|
+
*/
|
|
20
|
+
export declare function fuseUnaryChain(ops: WasmElementwiseOp[], xs: Float64Array): Float64Array;
|
|
21
|
+
//# sourceMappingURL=fused.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fused.d.ts","sourceRoot":"","sources":["../../src/typed/fused.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,oCAAoC,CAAC;AAyB5C;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAAE,YAAY,GAAG,YAAY,CASvF"}
|
package/dist/typed/index.d.ts
CHANGED
|
@@ -29,6 +29,7 @@ export { typedComplex } from './complex.js';
|
|
|
29
29
|
export * from './set.js';
|
|
30
30
|
export { typedSet } from './set.js';
|
|
31
31
|
export * from './special.js';
|
|
32
|
+
export * from './fused.js';
|
|
32
33
|
export { typedSpecial } from './special.js';
|
|
33
34
|
export * from './distributions.js';
|
|
34
35
|
export { typedDistributions } from './distributions.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/typed/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGtD,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAK5C,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGpC,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxD,cAAc,eAAe,CAAC;AAG9B,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,cAAc,kBAAkB,CAAC;AAGjC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,cAAc,CAAC;AAG7B,cAAc,oBAAoB,CAAC;AAGnC,cAAc,YAAY,CAAC;AAG3B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,iBAAiB,CAAC;AAWhC,cAAc,iBAAiB,CAAC;AAGhC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAGvC,cAAc,UAAU,CAAC;AAIzB,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1C,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGpD,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAsCtC;;;;;;GAMG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8B1B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/typed/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGtD,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAK5C,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGpC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxD,cAAc,eAAe,CAAC;AAG9B,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,cAAc,kBAAkB,CAAC;AAGjC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,cAAc,CAAC;AAG7B,cAAc,oBAAoB,CAAC;AAGnC,cAAc,YAAY,CAAC;AAG3B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,iBAAiB,CAAC;AAWhC,cAAc,iBAAiB,CAAC;AAGhC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAGvC,cAAc,UAAU,CAAC;AAIzB,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1C,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGpD,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAsCtC;;;;;;GAMG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8B1B,CAAC"}
|
package/dist/typed/special.d.ts
CHANGED
|
@@ -12,6 +12,10 @@
|
|
|
12
12
|
*
|
|
13
13
|
* @packageDocumentation
|
|
14
14
|
*/
|
|
15
|
+
/** 64-bit float (default for decimals) */
|
|
16
|
+
type f64 = number;
|
|
17
|
+
/** Complementary error function erfc(x) = 1 - erf(x). */
|
|
18
|
+
export declare function erfcScalar(x: f64): f64;
|
|
15
19
|
/**
|
|
16
20
|
* Complementary error function: erfc(x) = 1 - erf(x).
|
|
17
21
|
*
|
|
@@ -466,4 +470,5 @@ export declare const typedSpecial: {
|
|
|
466
470
|
ellipticEIncomplete: import("typed-function").TypedFunction;
|
|
467
471
|
ellipticPi: import("typed-function").TypedFunction;
|
|
468
472
|
};
|
|
473
|
+
export {};
|
|
469
474
|
//# sourceMappingURL=special.d.ts.map
|
|
@@ -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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trigonometry.d.ts","sourceRoot":"","sources":["../../src/typed/trigonometry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAkBH;;GAEG;AACH,eAAO,MAAM,GAAG,wCAYd,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,GAAG,wCAYd,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,GAAG,wCAYd,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"trigonometry.d.ts","sourceRoot":"","sources":["../../src/typed/trigonometry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAkBH;;GAEG;AACH,eAAO,MAAM,GAAG,wCAYd,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,GAAG,wCAYd,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,GAAG,wCAYd,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,GAAG,wCAiBd,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,GAAG,wCAiBd,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,GAAG,wCAiBd,CAAC;AAMH;;GAEG;AACH,eAAO,MAAM,IAAI,wCAqBf,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,IAAI,wCAoBf,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,IAAI,wCAiBf,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,KAAK,wCAEhB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,IAAI,wCAGf,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,IAAI,wCAGf,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,IAAI,wCAGf,CAAC;AAMH;;GAEG;AACH,eAAO,MAAM,KAAK,wCAehB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,KAAK,wCAehB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,KAAK,wCAiBhB,CAAC;AAMH;;GAEG;AACH,eAAO,MAAM,SAAS,wCAEpB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,SAAS,wCAEpB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,KAAK,wCAKhB,CAAC;AAMH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;CA2B7B,CAAC"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
/** Element-count threshold above which the WASM kernel beats JS. */
|
|
2
2
|
export declare const WASM_ELEMENTWISE_THRESHOLD = 1024;
|
|
3
|
-
/**
|
|
4
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Unary ops with a Rust `simd_<op>_array` kernel that is benchmark-confirmed
|
|
5
|
+
* net-faster than JS (see tools/benchmark/wasm/{elementwise,transcendental}.bench.mjs).
|
|
6
|
+
* Excluded after measuring (JS wins): sqrt, cbrt, asin, acos, cosh, asinh, acosh.
|
|
7
|
+
*/
|
|
8
|
+
export declare const WASM_ELEMENTWISE_OPS: readonly ["abs", "sin", "cos", "tan", "exp", "log", "atan", "sinh", "tanh", "atanh", "expm1", "log1p", "log2", "log10", "sec", "csc", "cot", "erfc"];
|
|
5
9
|
export type WasmElementwiseOp = (typeof WASM_ELEMENTWISE_OPS)[number];
|
|
6
10
|
/**
|
|
7
11
|
* Apply a unary elementwise op over `xs` via the Rust `simd_<op>_array` kernel.
|
|
@@ -10,4 +14,14 @@ export type WasmElementwiseOp = (typeof WASM_ELEMENTWISE_OPS)[number];
|
|
|
10
14
|
* Never throws.
|
|
11
15
|
*/
|
|
12
16
|
export declare function elementwiseUnaryDispatch(op: WasmElementwiseOp, xs: Float64Array): Float64Array | null;
|
|
17
|
+
/**
|
|
18
|
+
* Op-fusion (Tier 3): apply a *chain* of unary ops with the data resident in
|
|
19
|
+
* wasm memory the whole time — one copy-in, one copy-out, regardless of chain
|
|
20
|
+
* length. `fuseUnaryChain([sin, exp])` computes `exp(sin(x))` paying the JS↔wasm
|
|
21
|
+
* transfer once instead of once per op. Ping-pongs between two scratch buffers
|
|
22
|
+
* (the simd kernels are out-of-place). Returns null (caller applies the chain in
|
|
23
|
+
* JS) below threshold, when wasm is unavailable, or any kernel is missing.
|
|
24
|
+
* Never throws.
|
|
25
|
+
*/
|
|
26
|
+
export declare function elementwiseChainDispatch(ops: WasmElementwiseOp[], xs: Float64Array): Float64Array | null;
|
|
13
27
|
//# sourceMappingURL=wasm-bridge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wasm-bridge.d.ts","sourceRoot":"","sources":["../../../src/wasm/elementwise/wasm-bridge.ts"],"names":[],"mappings":"AAoBA,oEAAoE;AACpE,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAE/C
|
|
1
|
+
{"version":3,"file":"wasm-bridge.d.ts","sourceRoot":"","sources":["../../../src/wasm/elementwise/wasm-bridge.ts"],"names":[],"mappings":"AAoBA,oEAAoE;AACpE,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAE/C;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,sJAOvB,CAAC;AACX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAyBtE;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,YAAY,GAAG,YAAY,GAAG,IAAI,CA0BrG;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAAE,YAAY,GAAG,YAAY,GAAG,IAAI,CAqCxG"}
|
package/dist/wasm/mathts.wasm
CHANGED
|
Binary file
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
{
|
|
2
|
-
"mathts.wasm": "sha384-
|
|
3
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"mathts.wasm": "sha384-Qxm1yVKyyLXqqjH9qAfYxdsZDgvHQOtck+kldt9l/0AaJCFcHAqTglsyuDPjv622"
|
|
3
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@danielsimonjr/mathts-functions",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.14",
|
|
4
4
|
"description": "Mathematical functions for MathTS - arithmetic, algebra, trigonometry, statistics, and more",
|
|
5
5
|
"author": "Daniel Simon Jr.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"build": "tsup src/index.ts --format esm --clean && tsc -p tsconfig.dts.json && node scripts/copy-wasm.mjs",
|
|
23
23
|
"dev": "tsup src/index.ts --format esm --dts --watch",
|
|
24
24
|
"test": "vitest run",
|
|
25
|
-
"test:diff": "node tests/diff-special.test.mjs && node tests/diff-elementwise.test.mjs",
|
|
25
|
+
"test:diff": "node tests/diff-special.test.mjs && node tests/diff-elementwise.test.mjs && node tests/diff-fusion.test.mjs",
|
|
26
26
|
"golden:gen": "python -X utf8 tests/golden/gen_special_goldens.py",
|
|
27
27
|
"test:watch": "vitest",
|
|
28
28
|
"test:coverage": "vitest run --coverage",
|