@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 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 getWasm() {
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 = getWasm();
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 = getWasm();
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 = getWasm();
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 = getWasm();
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 = getWasm();
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 getWasm2() {
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 = getWasm2();
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 = getWasm2();
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 getWasm3() {
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 = getWasm3();
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 = getWasm3();
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 = getWasm3();
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 = getWasm3();
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 = getWasm3();
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 = getWasm3();
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 = getWasm3();
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 = getWasm3();
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 = getWasm3();
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 = getWasm3();
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 = getWasm3();
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 = getWasm3();
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 = getWasm3();
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 = getWasm3();
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 = getWasm3();
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 = getWasm3();
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 = getWasm3();
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 = getWasm3();
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 getWasm4() {
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 = getWasm4();
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 = getWasm4();
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 = getWasm4();
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 = getWasm4();
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 = getWasm4();
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 getWasm5() {
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 = getWasm5();
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 = getWasm5();
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":"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"}
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;AAiBH;;GAEG;AACH,eAAO,MAAM,GAAG,wCAUd,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,GAAG,wCAUd,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,GAAG,wCAUd,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"}
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.12",
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",