@danielsimonjr/mathts-functions 0.2.12 → 0.2.13
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 +87 -37
- package/dist/typed/arithmetic.d.ts.map +1 -1
- package/dist/typed/trigonometry.d.ts.map +1 -1
- package/dist/wasm/elementwise/wasm-bridge.d.ts +13 -0
- package/dist/wasm/elementwise/wasm-bridge.d.ts.map +1 -0
- package/dist/wasm/wasm-manifest.json +3 -3
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -459,6 +459,44 @@ __export(typed_exports, {
|
|
|
459
459
|
// src/typed/arithmetic.ts
|
|
460
460
|
import { mathTyped, Complex, Fraction, BigNumber } from "@danielsimonjr/mathts-core";
|
|
461
461
|
import { computePool } from "@danielsimonjr/mathts-parallel";
|
|
462
|
+
|
|
463
|
+
// src/wasm/elementwise/wasm-bridge.ts
|
|
464
|
+
var WASM_ELEMENTWISE_THRESHOLD = 1024;
|
|
465
|
+
function getWasm() {
|
|
466
|
+
try {
|
|
467
|
+
return wasmLoader.getModule();
|
|
468
|
+
} catch {
|
|
469
|
+
return null;
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
var scratchBase = -1;
|
|
473
|
+
function elementwiseUnaryDispatch(op, xs) {
|
|
474
|
+
const n = xs.length;
|
|
475
|
+
if (n < WASM_ELEMENTWISE_THRESHOLD) return null;
|
|
476
|
+
const wasm = getWasm();
|
|
477
|
+
if (!wasm) return null;
|
|
478
|
+
const fn = wasm[`simd_${op}_array`];
|
|
479
|
+
const mem = wasm.memory;
|
|
480
|
+
if (typeof fn !== "function" || !(mem instanceof WebAssembly.Memory)) return null;
|
|
481
|
+
try {
|
|
482
|
+
const need = 2 * n * 8;
|
|
483
|
+
if (scratchBase < 0) scratchBase = mem.buffer.byteLength;
|
|
484
|
+
if (scratchBase + need > mem.buffer.byteLength) {
|
|
485
|
+
mem.grow(Math.ceil((scratchBase + need - mem.buffer.byteLength) / 65536));
|
|
486
|
+
}
|
|
487
|
+
const inOff = scratchBase;
|
|
488
|
+
const outOff = scratchBase + n * 8;
|
|
489
|
+
new Float64Array(mem.buffer, inOff, n).set(xs);
|
|
490
|
+
fn(inOff, outOff, n);
|
|
491
|
+
const result = new Float64Array(n);
|
|
492
|
+
result.set(new Float64Array(mem.buffer, outOff, n));
|
|
493
|
+
return result;
|
|
494
|
+
} catch {
|
|
495
|
+
return null;
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
// src/typed/arithmetic.ts
|
|
462
500
|
var add = mathTyped("add", {
|
|
463
501
|
"number, number": (a, b) => a + b,
|
|
464
502
|
"bigint, bigint": (a, b) => a + b,
|
|
@@ -594,6 +632,8 @@ var abs = mathTyped("abs", {
|
|
|
594
632
|
BigNumber: (a) => a.abs(),
|
|
595
633
|
// Parallel array abs
|
|
596
634
|
Float64Array: async (a) => {
|
|
635
|
+
const wasm = elementwiseUnaryDispatch("abs", a);
|
|
636
|
+
if (wasm) return wasm;
|
|
597
637
|
const result = await computePool.abs(a);
|
|
598
638
|
return result.result;
|
|
599
639
|
}
|
|
@@ -693,6 +733,8 @@ var exp = mathTyped("exp", {
|
|
|
693
733
|
BigNumber: (a) => a.exp(),
|
|
694
734
|
// Parallel array exp
|
|
695
735
|
Float64Array: async (a) => {
|
|
736
|
+
const wasm = elementwiseUnaryDispatch("exp", a);
|
|
737
|
+
if (wasm) return wasm;
|
|
696
738
|
const result = await computePool.exp(a);
|
|
697
739
|
return result.result;
|
|
698
740
|
}
|
|
@@ -704,6 +746,8 @@ var log = mathTyped("log", {
|
|
|
704
746
|
"number, number": (a, base) => Math.log(a) / Math.log(base),
|
|
705
747
|
// Parallel array log
|
|
706
748
|
Float64Array: async (a) => {
|
|
749
|
+
const wasm = elementwiseUnaryDispatch("log", a);
|
|
750
|
+
if (wasm) return wasm;
|
|
707
751
|
const result = await computePool.log(a);
|
|
708
752
|
return result.result;
|
|
709
753
|
}
|
|
@@ -1214,6 +1258,8 @@ var sin = mathTyped2("sin", {
|
|
|
1214
1258
|
BigNumber: (a) => a.sin(),
|
|
1215
1259
|
// Parallel Float64Array sin
|
|
1216
1260
|
Float64Array: async (a) => {
|
|
1261
|
+
const wasm = elementwiseUnaryDispatch("sin", a);
|
|
1262
|
+
if (wasm) return wasm;
|
|
1217
1263
|
const result = await computePool2.sin(a);
|
|
1218
1264
|
return result.result;
|
|
1219
1265
|
}
|
|
@@ -1224,6 +1270,8 @@ var cos = mathTyped2("cos", {
|
|
|
1224
1270
|
BigNumber: (a) => a.cos(),
|
|
1225
1271
|
// Parallel Float64Array cos
|
|
1226
1272
|
Float64Array: async (a) => {
|
|
1273
|
+
const wasm = elementwiseUnaryDispatch("cos", a);
|
|
1274
|
+
if (wasm) return wasm;
|
|
1227
1275
|
const result = await computePool2.cos(a);
|
|
1228
1276
|
return result.result;
|
|
1229
1277
|
}
|
|
@@ -1234,6 +1282,8 @@ var tan = mathTyped2("tan", {
|
|
|
1234
1282
|
BigNumber: (a) => a.tan(),
|
|
1235
1283
|
// Parallel Float64Array tan
|
|
1236
1284
|
Float64Array: async (a) => {
|
|
1285
|
+
const wasm = elementwiseUnaryDispatch("tan", a);
|
|
1286
|
+
if (wasm) return wasm;
|
|
1237
1287
|
const result = await computePool2.tan(a);
|
|
1238
1288
|
return result.result;
|
|
1239
1289
|
}
|
|
@@ -1974,7 +2024,7 @@ import { computePool as computePool4 } from "@danielsimonjr/mathts-parallel";
|
|
|
1974
2024
|
|
|
1975
2025
|
// src/wasm/signal/wasm-bridge.ts
|
|
1976
2026
|
var WASM_SIGNAL_THRESHOLD = 4096;
|
|
1977
|
-
function
|
|
2027
|
+
function getWasm2() {
|
|
1978
2028
|
try {
|
|
1979
2029
|
return wasmLoader.getModule();
|
|
1980
2030
|
} catch {
|
|
@@ -2184,7 +2234,7 @@ function chirpZTransformJS(samples, m, phiStartRe, phiStartIm, phiStepRe, phiSte
|
|
|
2184
2234
|
}
|
|
2185
2235
|
function applyWindowDispatch(samples, windowName) {
|
|
2186
2236
|
const wt = windowTypeCode(windowName);
|
|
2187
|
-
const wasm =
|
|
2237
|
+
const wasm = getWasm2();
|
|
2188
2238
|
if (wasm) {
|
|
2189
2239
|
const rustFn = wasm["apply_window_f64"];
|
|
2190
2240
|
if (typeof rustFn === "function") {
|
|
@@ -2215,7 +2265,7 @@ function welchPSDDispatch(samples, frameLength, overlap, windowName) {
|
|
|
2215
2265
|
const n = samples.length;
|
|
2216
2266
|
const wt = windowTypeCode(windowName);
|
|
2217
2267
|
if (n >= WASM_SIGNAL_THRESHOLD && n >= frameLength) {
|
|
2218
|
-
const wasm =
|
|
2268
|
+
const wasm = getWasm2();
|
|
2219
2269
|
if (wasm) {
|
|
2220
2270
|
const rustFn = wasm["welch_psd_f64"];
|
|
2221
2271
|
if (typeof rustFn === "function") {
|
|
@@ -2254,7 +2304,7 @@ function welchPSDDispatch(samples, frameLength, overlap, windowName) {
|
|
|
2254
2304
|
function bartlettPSDDispatch(samples, frameLength) {
|
|
2255
2305
|
const n = samples.length;
|
|
2256
2306
|
if (n >= WASM_SIGNAL_THRESHOLD && n >= frameLength) {
|
|
2257
|
-
const wasm =
|
|
2307
|
+
const wasm = getWasm2();
|
|
2258
2308
|
if (wasm) {
|
|
2259
2309
|
const rustFn = wasm["bartlett_psd_f64"];
|
|
2260
2310
|
if (typeof rustFn === "function") {
|
|
@@ -2288,7 +2338,7 @@ function bartlettPSDDispatch(samples, frameLength) {
|
|
|
2288
2338
|
function goertzelDispatch(samples, targetFreq, sampleRate) {
|
|
2289
2339
|
const n = samples.length;
|
|
2290
2340
|
if (n >= WASM_SIGNAL_THRESHOLD) {
|
|
2291
|
-
const wasm =
|
|
2341
|
+
const wasm = getWasm2();
|
|
2292
2342
|
if (wasm) {
|
|
2293
2343
|
const rustFn = wasm["goertzel_f64"];
|
|
2294
2344
|
if (typeof rustFn === "function") {
|
|
@@ -2320,7 +2370,7 @@ function goertzelDispatch(samples, targetFreq, sampleRate) {
|
|
|
2320
2370
|
function chirpZTransformDispatch(samples, m, phiStartRe, phiStartIm, phiStepRe, phiStepIm) {
|
|
2321
2371
|
const n = samples.length;
|
|
2322
2372
|
if (Math.max(n, m) >= WASM_SIGNAL_THRESHOLD) {
|
|
2323
|
-
const wasm =
|
|
2373
|
+
const wasm = getWasm2();
|
|
2324
2374
|
if (wasm) {
|
|
2325
2375
|
const rustFn = wasm["chirp_z_transform_f64"];
|
|
2326
2376
|
if (typeof rustFn === "function") {
|
|
@@ -3409,7 +3459,7 @@ var BINARY_OPS = {
|
|
|
3409
3459
|
var UNARY_OPS = {
|
|
3410
3460
|
bitNot: { rust: "bitNotArray", as: "bitNot_i32_array" }
|
|
3411
3461
|
};
|
|
3412
|
-
function
|
|
3462
|
+
function getWasm3() {
|
|
3413
3463
|
try {
|
|
3414
3464
|
return wasmLoader.getModule();
|
|
3415
3465
|
} catch {
|
|
@@ -3417,7 +3467,7 @@ function getWasm2() {
|
|
|
3417
3467
|
}
|
|
3418
3468
|
}
|
|
3419
3469
|
function getBinaryKernel(op) {
|
|
3420
|
-
const wasm =
|
|
3470
|
+
const wasm = getWasm3();
|
|
3421
3471
|
if (!wasm) return null;
|
|
3422
3472
|
const names = BINARY_OPS[op];
|
|
3423
3473
|
const rust = wasm[names.rust];
|
|
@@ -3431,7 +3481,7 @@ function getBinaryKernel(op) {
|
|
|
3431
3481
|
return null;
|
|
3432
3482
|
}
|
|
3433
3483
|
function getUnaryKernel(op) {
|
|
3434
|
-
const wasm =
|
|
3484
|
+
const wasm = getWasm3();
|
|
3435
3485
|
if (!wasm) return null;
|
|
3436
3486
|
const names = UNARY_OPS[op];
|
|
3437
3487
|
const rust = wasm[names.rust];
|
|
@@ -4120,7 +4170,7 @@ import { computePool as computePool6 } from "@danielsimonjr/mathts-parallel";
|
|
|
4120
4170
|
|
|
4121
4171
|
// src/wasm/special/wasm-bridge.ts
|
|
4122
4172
|
var WASM_SPECIAL_THRESHOLD = 1024;
|
|
4123
|
-
function
|
|
4173
|
+
function getWasm4() {
|
|
4124
4174
|
try {
|
|
4125
4175
|
return wasmLoader.getModule();
|
|
4126
4176
|
} catch {
|
|
@@ -4186,7 +4236,7 @@ function airyBiJS(xs) {
|
|
|
4186
4236
|
function besselJ0Dispatch(xs) {
|
|
4187
4237
|
const n = xs.length;
|
|
4188
4238
|
if (n >= WASM_SPECIAL_THRESHOLD) {
|
|
4189
|
-
const wasm =
|
|
4239
|
+
const wasm = getWasm4();
|
|
4190
4240
|
if (wasm) {
|
|
4191
4241
|
try {
|
|
4192
4242
|
const rustFn = wasm["bessel_j0_f64"];
|
|
@@ -4217,7 +4267,7 @@ function besselJ0Dispatch(xs) {
|
|
|
4217
4267
|
function besselJ1Dispatch(xs) {
|
|
4218
4268
|
const n = xs.length;
|
|
4219
4269
|
if (n >= WASM_SPECIAL_THRESHOLD) {
|
|
4220
|
-
const wasm =
|
|
4270
|
+
const wasm = getWasm4();
|
|
4221
4271
|
if (wasm) {
|
|
4222
4272
|
try {
|
|
4223
4273
|
const rustFn = wasm["bessel_j1_f64"];
|
|
@@ -4250,7 +4300,7 @@ function besselJDispatch(order, xs) {
|
|
|
4250
4300
|
if (order === 1) return besselJ1Dispatch(xs);
|
|
4251
4301
|
const n = xs.length;
|
|
4252
4302
|
if (n >= WASM_SPECIAL_THRESHOLD) {
|
|
4253
|
-
const wasm =
|
|
4303
|
+
const wasm = getWasm4();
|
|
4254
4304
|
if (wasm) {
|
|
4255
4305
|
try {
|
|
4256
4306
|
const rustFn = wasm["bessel_j_f64"];
|
|
@@ -4281,7 +4331,7 @@ function besselJDispatch(order, xs) {
|
|
|
4281
4331
|
function besselY0Dispatch(xs) {
|
|
4282
4332
|
const n = xs.length;
|
|
4283
4333
|
if (n >= WASM_SPECIAL_THRESHOLD) {
|
|
4284
|
-
const wasm =
|
|
4334
|
+
const wasm = getWasm4();
|
|
4285
4335
|
if (wasm) {
|
|
4286
4336
|
try {
|
|
4287
4337
|
const rustFn = wasm["bessel_y0_f64"];
|
|
@@ -4312,7 +4362,7 @@ function besselY0Dispatch(xs) {
|
|
|
4312
4362
|
function besselY1Dispatch(xs) {
|
|
4313
4363
|
const n = xs.length;
|
|
4314
4364
|
if (n >= WASM_SPECIAL_THRESHOLD) {
|
|
4315
|
-
const wasm =
|
|
4365
|
+
const wasm = getWasm4();
|
|
4316
4366
|
if (wasm) {
|
|
4317
4367
|
try {
|
|
4318
4368
|
const rustFn = wasm["bessel_y1_f64"];
|
|
@@ -4345,7 +4395,7 @@ function besselYDispatch(order, xs) {
|
|
|
4345
4395
|
if (order === 1) return besselY1Dispatch(xs);
|
|
4346
4396
|
const n = xs.length;
|
|
4347
4397
|
if (n >= WASM_SPECIAL_THRESHOLD) {
|
|
4348
|
-
const wasm =
|
|
4398
|
+
const wasm = getWasm4();
|
|
4349
4399
|
if (wasm) {
|
|
4350
4400
|
try {
|
|
4351
4401
|
const rustFn = wasm["bessel_y_f64"];
|
|
@@ -4376,7 +4426,7 @@ function besselYDispatch(order, xs) {
|
|
|
4376
4426
|
function airyAiDispatch(xs) {
|
|
4377
4427
|
const n = xs.length;
|
|
4378
4428
|
if (n >= WASM_SPECIAL_THRESHOLD) {
|
|
4379
|
-
const wasm =
|
|
4429
|
+
const wasm = getWasm4();
|
|
4380
4430
|
if (wasm) {
|
|
4381
4431
|
try {
|
|
4382
4432
|
const rustFn = wasm["airy_ai_f64"];
|
|
@@ -4409,7 +4459,7 @@ function airyAiDispatch(xs) {
|
|
|
4409
4459
|
function airyBiDispatch(xs) {
|
|
4410
4460
|
const n = xs.length;
|
|
4411
4461
|
if (n >= WASM_SPECIAL_THRESHOLD) {
|
|
4412
|
-
const wasm =
|
|
4462
|
+
const wasm = getWasm4();
|
|
4413
4463
|
if (wasm) {
|
|
4414
4464
|
try {
|
|
4415
4465
|
const rustFn = wasm["airy_bi_f64"];
|
|
@@ -4472,7 +4522,7 @@ function lgammaJS(xs) {
|
|
|
4472
4522
|
function lgammaDispatch(xs) {
|
|
4473
4523
|
const n = xs.length;
|
|
4474
4524
|
if (n >= WASM_SPECIAL_THRESHOLD) {
|
|
4475
|
-
const wasm =
|
|
4525
|
+
const wasm = getWasm4();
|
|
4476
4526
|
if (wasm) {
|
|
4477
4527
|
try {
|
|
4478
4528
|
const rustFn = wasm["lgamma_f64"];
|
|
@@ -4709,7 +4759,7 @@ function ellipticPiIncompleteScalar(n, phi, m) {
|
|
|
4709
4759
|
function carlsonRCDispatch(xs, ys) {
|
|
4710
4760
|
const n = xs.length;
|
|
4711
4761
|
if (n >= WASM_SPECIAL_THRESHOLD) {
|
|
4712
|
-
const wasm =
|
|
4762
|
+
const wasm = getWasm4();
|
|
4713
4763
|
if (wasm) {
|
|
4714
4764
|
try {
|
|
4715
4765
|
const rustFn = wasm["carlson_rc_f64"];
|
|
@@ -4740,7 +4790,7 @@ function carlsonRCDispatch(xs, ys) {
|
|
|
4740
4790
|
function carlsonRFDispatch(xs, ys, zs) {
|
|
4741
4791
|
const n = xs.length;
|
|
4742
4792
|
if (n >= WASM_SPECIAL_THRESHOLD) {
|
|
4743
|
-
const wasm =
|
|
4793
|
+
const wasm = getWasm4();
|
|
4744
4794
|
if (wasm) {
|
|
4745
4795
|
try {
|
|
4746
4796
|
const rustFn = wasm["carlson_rf_f64"];
|
|
@@ -4773,7 +4823,7 @@ function carlsonRFDispatch(xs, ys, zs) {
|
|
|
4773
4823
|
function carlsonRDDispatch(xs, ys, zs) {
|
|
4774
4824
|
const n = xs.length;
|
|
4775
4825
|
if (n >= WASM_SPECIAL_THRESHOLD) {
|
|
4776
|
-
const wasm =
|
|
4826
|
+
const wasm = getWasm4();
|
|
4777
4827
|
if (wasm) {
|
|
4778
4828
|
try {
|
|
4779
4829
|
const rustFn = wasm["carlson_rd_f64"];
|
|
@@ -4806,7 +4856,7 @@ function carlsonRDDispatch(xs, ys, zs) {
|
|
|
4806
4856
|
function carlsonRJDispatch(xs, ys, zs, ps) {
|
|
4807
4857
|
const n = xs.length;
|
|
4808
4858
|
if (n >= WASM_SPECIAL_THRESHOLD) {
|
|
4809
|
-
const wasm =
|
|
4859
|
+
const wasm = getWasm4();
|
|
4810
4860
|
if (wasm) {
|
|
4811
4861
|
try {
|
|
4812
4862
|
const rustFn = wasm["carlson_rj_f64"];
|
|
@@ -4841,7 +4891,7 @@ function carlsonRJDispatch(xs, ys, zs, ps) {
|
|
|
4841
4891
|
function ellipticFIncompleteDispatch(phis, ms) {
|
|
4842
4892
|
const n = phis.length;
|
|
4843
4893
|
if (n >= WASM_SPECIAL_THRESHOLD) {
|
|
4844
|
-
const wasm =
|
|
4894
|
+
const wasm = getWasm4();
|
|
4845
4895
|
if (wasm) {
|
|
4846
4896
|
try {
|
|
4847
4897
|
const rustFn = wasm["elliptic_f_incomplete_f64"];
|
|
@@ -4872,7 +4922,7 @@ function ellipticFIncompleteDispatch(phis, ms) {
|
|
|
4872
4922
|
function ellipticEIncompleteDispatch(phis, ms) {
|
|
4873
4923
|
const n = phis.length;
|
|
4874
4924
|
if (n >= WASM_SPECIAL_THRESHOLD) {
|
|
4875
|
-
const wasm =
|
|
4925
|
+
const wasm = getWasm4();
|
|
4876
4926
|
if (wasm) {
|
|
4877
4927
|
try {
|
|
4878
4928
|
const rustFn = wasm["elliptic_e_incomplete_f64"];
|
|
@@ -4903,7 +4953,7 @@ function ellipticEIncompleteDispatch(phis, ms) {
|
|
|
4903
4953
|
function ellipticPiIncompleteDispatch(ns, phis, ms) {
|
|
4904
4954
|
const n = ns.length;
|
|
4905
4955
|
if (n >= WASM_SPECIAL_THRESHOLD) {
|
|
4906
|
-
const wasm =
|
|
4956
|
+
const wasm = getWasm4();
|
|
4907
4957
|
if (wasm) {
|
|
4908
4958
|
try {
|
|
4909
4959
|
const rustFn = wasm["elliptic_pi_incomplete_f64"];
|
|
@@ -4994,7 +5044,7 @@ function ellipticEJS(ms) {
|
|
|
4994
5044
|
function ellipticKDispatch(ms) {
|
|
4995
5045
|
const n = ms.length;
|
|
4996
5046
|
if (n >= WASM_SPECIAL_THRESHOLD) {
|
|
4997
|
-
const wasm =
|
|
5047
|
+
const wasm = getWasm4();
|
|
4998
5048
|
if (wasm) {
|
|
4999
5049
|
try {
|
|
5000
5050
|
const rustFn = wasm["elliptic_k_f64"];
|
|
@@ -5027,7 +5077,7 @@ function ellipticKDispatch(ms) {
|
|
|
5027
5077
|
function ellipticEDispatch(ms) {
|
|
5028
5078
|
const n = ms.length;
|
|
5029
5079
|
if (n >= WASM_SPECIAL_THRESHOLD) {
|
|
5030
|
-
const wasm =
|
|
5080
|
+
const wasm = getWasm4();
|
|
5031
5081
|
if (wasm) {
|
|
5032
5082
|
try {
|
|
5033
5083
|
const rustFn = wasm["elliptic_e_f64"];
|
|
@@ -7529,7 +7579,7 @@ async function distanceMatrix(points) {
|
|
|
7529
7579
|
|
|
7530
7580
|
// src/wasm/poly/wasm-bridge.ts
|
|
7531
7581
|
var WASM_POLY_THRESHOLD = 256;
|
|
7532
|
-
function
|
|
7582
|
+
function getWasm5() {
|
|
7533
7583
|
try {
|
|
7534
7584
|
return wasmLoader.getModule();
|
|
7535
7585
|
} catch {
|
|
@@ -7574,7 +7624,7 @@ function polyDivModJS(num, den) {
|
|
|
7574
7624
|
function polyMulDispatch(a, b) {
|
|
7575
7625
|
const bigEnough = a.length >= WASM_POLY_THRESHOLD || b.length >= WASM_POLY_THRESHOLD;
|
|
7576
7626
|
if (bigEnough) {
|
|
7577
|
-
const wasm =
|
|
7627
|
+
const wasm = getWasm5();
|
|
7578
7628
|
if (wasm) {
|
|
7579
7629
|
try {
|
|
7580
7630
|
const rustFn = wasm["poly_mul_f64"];
|
|
@@ -7606,7 +7656,7 @@ function polyDivModDispatch(num, den) {
|
|
|
7606
7656
|
if (den.length === 0) throw new Error("Division by zero polynomial");
|
|
7607
7657
|
const bigEnough = num.length >= WASM_POLY_THRESHOLD;
|
|
7608
7658
|
if (bigEnough) {
|
|
7609
|
-
const wasm =
|
|
7659
|
+
const wasm = getWasm5();
|
|
7610
7660
|
if (wasm) {
|
|
7611
7661
|
try {
|
|
7612
7662
|
const rustFn = wasm["poly_div_mod_f64"];
|
|
@@ -7734,7 +7784,7 @@ function discriminantJS(p) {
|
|
|
7734
7784
|
function resultantDispatch(p, q) {
|
|
7735
7785
|
const bigEnough = p.length >= WASM_POLY_THRESHOLD || q.length >= WASM_POLY_THRESHOLD;
|
|
7736
7786
|
if (bigEnough) {
|
|
7737
|
-
const wasm =
|
|
7787
|
+
const wasm = getWasm5();
|
|
7738
7788
|
if (wasm) {
|
|
7739
7789
|
try {
|
|
7740
7790
|
const rustFn = wasm["poly_resultant_f64"];
|
|
@@ -7761,7 +7811,7 @@ function resultantDispatch(p, q) {
|
|
|
7761
7811
|
function discriminantDispatch(p) {
|
|
7762
7812
|
const bigEnough = p.length >= WASM_POLY_THRESHOLD;
|
|
7763
7813
|
if (bigEnough) {
|
|
7764
|
-
const wasm =
|
|
7814
|
+
const wasm = getWasm5();
|
|
7765
7815
|
if (wasm) {
|
|
7766
7816
|
try {
|
|
7767
7817
|
const rustFn = wasm["poly_discriminant_f64"];
|
|
@@ -7882,7 +7932,7 @@ function fitDispatch(xs, ys, degree2, rustName, asName, jsFallback) {
|
|
|
7882
7932
|
if (xs.length !== ys.length) throw new Error("xs and ys must have the same length");
|
|
7883
7933
|
const bigEnough = xs.length >= WASM_POLY_FIT_THRESHOLD;
|
|
7884
7934
|
if (bigEnough) {
|
|
7885
|
-
const wasm =
|
|
7935
|
+
const wasm = getWasm5();
|
|
7886
7936
|
if (wasm) {
|
|
7887
7937
|
try {
|
|
7888
7938
|
const rustFn = wasm[rustName];
|
|
@@ -8881,7 +8931,7 @@ async function romberg(f, a, b, tol = 1e-12, options = {}) {
|
|
|
8881
8931
|
// src/wasm/interpolation/wasm-bridge.ts
|
|
8882
8932
|
var WASM_TRIDIAG_THRESHOLD = 1024;
|
|
8883
8933
|
var WASM_INTERP_THRESHOLD = 256;
|
|
8884
|
-
function
|
|
8934
|
+
function getWasm6() {
|
|
8885
8935
|
try {
|
|
8886
8936
|
return wasmLoader.getModule();
|
|
8887
8937
|
} catch {
|
|
@@ -8917,7 +8967,7 @@ function tridiagSolveJS(diag2, lower, upper, rhs) {
|
|
|
8917
8967
|
function tridiagSolveDispatch(diag2, lower, upper, rhs) {
|
|
8918
8968
|
const n = diag2.length;
|
|
8919
8969
|
if (n >= WASM_TRIDIAG_THRESHOLD) {
|
|
8920
|
-
const wasm =
|
|
8970
|
+
const wasm = getWasm6();
|
|
8921
8971
|
if (wasm) {
|
|
8922
8972
|
try {
|
|
8923
8973
|
const rustFn = wasm["tridiag_solve_f64"];
|
|
@@ -8978,7 +9028,7 @@ function dividedDifferenceJS(xs, ys) {
|
|
|
8978
9028
|
function dividedDifferenceDispatch(xs, ys) {
|
|
8979
9029
|
const n = xs.length;
|
|
8980
9030
|
if (n >= WASM_INTERP_THRESHOLD) {
|
|
8981
|
-
const wasm =
|
|
9031
|
+
const wasm = getWasm6();
|
|
8982
9032
|
if (wasm) {
|
|
8983
9033
|
try {
|
|
8984
9034
|
const rustFn = wasm["divided_difference_f64"];
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"arithmetic.d.ts","sourceRoot":"","sources":["../../src/typed/arithmetic.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;
|
|
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,wCAed,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,GAAG,wCAed,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,GAAG,wCAed,CAAC;AAMH;;GAEG;AACH,eAAO,MAAM,IAAI,wCAqBf,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,IAAI,wCAoBf,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,IAAI,wCAef,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,wCAehB,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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Element-count threshold above which the WASM kernel beats JS. */
|
|
2
|
+
export declare const WASM_ELEMENTWISE_THRESHOLD = 1024;
|
|
3
|
+
/** Unary ops with a Rust `simd_<op>_array` kernel that is net-faster than JS. */
|
|
4
|
+
export declare const WASM_ELEMENTWISE_OPS: readonly ["abs", "sin", "cos", "tan", "exp", "log"];
|
|
5
|
+
export type WasmElementwiseOp = (typeof WASM_ELEMENTWISE_OPS)[number];
|
|
6
|
+
/**
|
|
7
|
+
* Apply a unary elementwise op over `xs` via the Rust `simd_<op>_array` kernel.
|
|
8
|
+
* Returns the result, or `null` (below threshold, wasm unavailable, kernel
|
|
9
|
+
* missing, or any failure) — in which case the caller uses its JS/parallel path.
|
|
10
|
+
* Never throws.
|
|
11
|
+
*/
|
|
12
|
+
export declare function elementwiseUnaryDispatch(op: WasmElementwiseOp, xs: Float64Array): Float64Array | null;
|
|
13
|
+
//# sourceMappingURL=wasm-bridge.d.ts.map
|
|
@@ -0,0 +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,iFAAiF;AACjF,eAAO,MAAM,oBAAoB,qDAAsD,CAAC;AACxF,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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
{
|
|
2
|
-
"mathts.wasm": "sha384-oONMJGNzrFf5H4dPkE7U6ceOD2fBdFtJbrZitiNZOb/CcMvZVXY3g6ZTB/DtVDKy"
|
|
3
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"mathts.wasm": "sha384-oONMJGNzrFf5H4dPkE7U6ceOD2fBdFtJbrZitiNZOb/CcMvZVXY3g6ZTB/DtVDKy"
|
|
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.13",
|
|
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",
|
|
25
|
+
"test:diff": "node tests/diff-special.test.mjs && node tests/diff-elementwise.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",
|