spear-kernels 1.3.0 → 1.4.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/README.md +2 -2
- package/index.cjs +47 -26
- package/index.js +47 -26
- package/package.json +25 -25
package/README.md
CHANGED
|
@@ -42,5 +42,5 @@ instance.exports.spear(2); // same protected-division semantics as the JS backen
|
|
|
42
42
|
```
|
|
43
43
|
|
|
44
44
|
Division is **protected** exactly like the engine: denominators floored at
|
|
45
|
-
|
|
46
|
-
these rails
|
|
45
|
+
±1e-4 (sign-preserving), results clamped to ±1e4. Discovered formulas rely on
|
|
46
|
+
these rails — do not swap in bare `/`.
|
package/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Auto-generated by scripts/gen-kernels-package.ts
|
|
1
|
+
// Auto-generated by scripts/gen-kernels-package.ts — DO NOT EDIT.
|
|
2
2
|
'use strict';
|
|
3
3
|
const kernels = {
|
|
4
4
|
"silu": {
|
|
@@ -159,7 +159,7 @@ const kernels = {
|
|
|
159
159
|
formulaCost: 25,
|
|
160
160
|
exactCost: 34,
|
|
161
161
|
speedupVsExact: 1.36,
|
|
162
|
-
vsIterative: {"label":"Monte-Carlo
|
|
162
|
+
vsIterative: {"label":"Monte-Carlo · 1000 tirages","speedup":1840},
|
|
163
163
|
},
|
|
164
164
|
},
|
|
165
165
|
"damped_pendulum": {
|
|
@@ -184,7 +184,7 @@ const kernels = {
|
|
|
184
184
|
formulaCost: 46,
|
|
185
185
|
exactCost: null,
|
|
186
186
|
speedupVsExact: null,
|
|
187
|
-
vsIterative: {"label":"Euler-Cromer
|
|
187
|
+
vsIterative: {"label":"Euler-Cromer · 60 pas","speedup":32.6},
|
|
188
188
|
},
|
|
189
189
|
},
|
|
190
190
|
"rl_distillation": {
|
|
@@ -445,7 +445,7 @@ const kernels = {
|
|
|
445
445
|
formulaCost: 13,
|
|
446
446
|
exactCost: 17,
|
|
447
447
|
speedupVsExact: 1.3076923076923077,
|
|
448
|
-
vsIterative: {"label":"RK4
|
|
448
|
+
vsIterative: {"label":"RK4 géodésique · 200 pas","speedup":184.6},
|
|
449
449
|
},
|
|
450
450
|
},
|
|
451
451
|
"lennard_jones": {
|
|
@@ -488,7 +488,7 @@ const kernels = {
|
|
|
488
488
|
formulaCost: 27,
|
|
489
489
|
exactCost: 44,
|
|
490
490
|
speedupVsExact: 1.6296296296296295,
|
|
491
|
-
vsIterative: {"label":"RKF45
|
|
491
|
+
vsIterative: {"label":"RKF45 · 300 pas","speedup":200},
|
|
492
492
|
},
|
|
493
493
|
},
|
|
494
494
|
"logistic_growth": {
|
|
@@ -550,6 +550,13 @@ const kernels = {
|
|
|
550
550
|
py: "import torch\n\ndef spear_fn(x):\n # Evolved by SPEAR — zero transcendental ops (exp/erf/tanh free)\n return ((-1.553578 * torch.maximum(torch.sqrt(torch.abs((6.660595 - torch.maximum(3.1671, x)))), 0.603662)) + 2.906087)",
|
|
551
551
|
wasmBase64: "AGFzbQEAAAABCwJgAXwBfGABfAF8AwIBAAcJAQVzcGVhcgAACjoBOABEuI/cmnTb+L9Ev5oDBHOkGkBE9UpZhjhWCUAgAKWhmZ9EgdB6+DJR4z+lokRhpYKKqj8HQKAL",
|
|
552
552
|
},
|
|
553
|
+
fast: {
|
|
554
|
+
js: "((t, x) => (((t) * (t) * Math.sin((4.822148 * t))) * (x * Math.sin((4.8694 * t)))))",
|
|
555
|
+
eval: ((t, x) => (((t) * (t) * Math.sin((4.822148 * t))) * (x * Math.sin((4.8694 * t))))),
|
|
556
|
+
c: "// Evolved by SPEAR — algebraic only, FP16 safe\n__device__ inline float spear_fn(const float x) {\n return ((powf(t, 2.0f) * sinf((4.822148f * t))) * (x * sinf((4.8694f * t))));\n}",
|
|
557
|
+
py: "import torch\n\ndef spear_fn(t, x):\n # Evolved by SPEAR — zero transcendental ops (exp/erf/tanh free)\n return (((t * t) * torch.sin((4.822148 * t))) * (x * torch.sin((4.8694 * t))))",
|
|
558
|
+
wasmBase64: "AGFzbQEAAAABDAJgAnx8AXxgAXwBfAILAQNlbnYDc2luAAEDAgEABwkBBXNwZWFyAAEKKgEoACAAIACiRCLjUSrhSRNAIACiEACiIAFE0ZFc/kN6E0AgAKIQAKKiCw==",
|
|
559
|
+
},
|
|
553
560
|
meta: {
|
|
554
561
|
metric: 0.0017117911533114868,
|
|
555
562
|
level: 2,
|
|
@@ -581,7 +588,7 @@ const kernels = {
|
|
|
581
588
|
formulaCost: 18,
|
|
582
589
|
exactCost: 21,
|
|
583
590
|
speedupVsExact: 1.1666666666666667,
|
|
584
|
-
vsIterative: {"label":"RK4
|
|
591
|
+
vsIterative: {"label":"RK4 géodésique · 200 pas","speedup":133.3},
|
|
585
592
|
},
|
|
586
593
|
},
|
|
587
594
|
"pendulum_hybrid": {
|
|
@@ -624,7 +631,7 @@ const kernels = {
|
|
|
624
631
|
formulaCost: 120,
|
|
625
632
|
exactCost: null,
|
|
626
633
|
speedupVsExact: null,
|
|
627
|
-
vsIterative: {"label":"Jacobi
|
|
634
|
+
vsIterative: {"label":"Jacobi · 4 balayages","speedup":1.7},
|
|
628
635
|
},
|
|
629
636
|
},
|
|
630
637
|
"ik_reach": {
|
|
@@ -649,20 +656,27 @@ const kernels = {
|
|
|
649
656
|
formulaCost: 52,
|
|
650
657
|
exactCost: null,
|
|
651
658
|
speedupVsExact: null,
|
|
652
|
-
vsIterative: {"label":"Newton-DLS
|
|
659
|
+
vsIterative: {"label":"Newton-DLS · 8 itérations","speedup":6.2},
|
|
653
660
|
},
|
|
654
661
|
},
|
|
655
662
|
"idm_following": {
|
|
656
663
|
id: "idm_following",
|
|
657
664
|
precise: {
|
|
658
|
-
js: "((v, dv, s) => ((1.
|
|
659
|
-
eval: ((v, dv, s) => ((1.
|
|
660
|
-
c: "// Evolved by SPEAR — algebraic only, FP16 safe\n__device__ inline float spear_fn(const float x) {\n return ((1.
|
|
661
|
-
py: "import torch\n\ndef spear_fn(v, dv, s):\n # Evolved by SPEAR — zero transcendental ops (exp/erf/tanh free)\n return ((1.
|
|
662
|
-
wasmBase64: "AGFzbQEAAAABDQJgA3x8fAF8YAF8AXwDAgEABwkBBXNwZWFyAAAK+
|
|
665
|
+
js: "((v, dv, s) => ((1.825166 * Math.min(1.9, Math.max(-5.198308, ((0.840532 - (((v) * (v)) * ((v) * (v)) * 0.000001)) - (Math.min(1e4, Math.max(-1e4, ((2.393229 + Math.max(-0.435303, ((v * 1.543892) + ((v * dv) * 0.212766))))) / ((s) < 1e-4 && (s) > -1e-4 ? ((s) >= 0 ? 1e-4 : -1e-4) : (s))))) * (Math.min(1e4, Math.max(-1e4, ((2.393229 + Math.max(-0.435303, ((v * 1.543892) + ((v * dv) * 0.212766))))) / ((s) < 1e-4 && (s) > -1e-4 ? ((s) >= 0 ? 1e-4 : -1e-4) : (s))))))))) + 0.4862064122902764))",
|
|
666
|
+
eval: ((v, dv, s) => ((1.825166 * Math.min(1.9, Math.max(-5.198308, ((0.840532 - (((v) * (v)) * ((v) * (v)) * 0.000001)) - (Math.min(1e4, Math.max(-1e4, ((2.393229 + Math.max(-0.435303, ((v * 1.543892) + ((v * dv) * 0.212766))))) / ((s) < 1e-4 && (s) > -1e-4 ? ((s) >= 0 ? 1e-4 : -1e-4) : (s))))) * (Math.min(1e4, Math.max(-1e4, ((2.393229 + Math.max(-0.435303, ((v * 1.543892) + ((v * dv) * 0.212766))))) / ((s) < 1e-4 && (s) > -1e-4 ? ((s) >= 0 ? 1e-4 : -1e-4) : (s))))))))) + 0.4862064122902764)),
|
|
667
|
+
c: "// Evolved by SPEAR — algebraic only, FP16 safe\n__device__ inline float spear_fn(const float x) {\n return ((1.825166f * fminf(1.9f, fmaxf(-5.198308f, ((0.840532f - (powf(powf(v, 2.0f), 2.0f) * 0.000001f)) - powf(fminf(fmaxf(((2.393229f + fmaxf(-0.435303f, ((v * 1.543892f) + ((v * dv) * 0.212766f)))) / copysignf(fmaxf(fabsf(s), 1.0e-4f), s)), -1.0e4f), 1.0e4f), 2.0f))))) + 0.486206f);\n}",
|
|
668
|
+
py: "import torch\n\ndef spear_fn(v, dv, s):\n # Evolved by SPEAR — zero transcendental ops (exp/erf/tanh free)\n return ((1.825166 * torch.minimum(1.9, torch.maximum(-5.198308, ((0.840532 - (((v * v) * (v * v)) * 0.000001)) - (((2.393229 + torch.maximum(-0.435303, ((v * 1.543892) + ((v * dv) * 0.212766)))) / (abs(s) < 1e-4 ? 1e-4 : s)) * ((2.393229 + torch.maximum(-0.435303, ((v * 1.543892) + ((v * dv) * 0.212766)))) / (abs(s) < 1e-4 ? 1e-4 : s))))))) + 0.486206)",
|
|
669
|
+
wasmBase64: "AGFzbQEAAAABDQJgA3x8fAF8YAF8AXwDAgEABwkBBXNwZWFyAAAK+AEB9QEARJNWfEPhM/0/RGZmZmZmZv4/RAMkmkARyxTARCO6Z12j5eo/IAAgAKIgACAAoqJEje21oPfGsD6ioUTUtfY+VSUDQESscTYdAdzbvyAARILlCBnIs/g/oiAAIAGiRLix2ZHqO8s/oqCloCACmUQtQxzr4jYaP6UgAqajRAAAAAAAiMPApUQAAAAAAIjDQKRE1LX2PlUlA0BErHE2HQHc278gAESC5QgZyLP4P6IgACABokS4sdmR6jvLP6KgpaAgAplELUMc6+I2Gj+lIAKmo0QAAAAAAIjDwKVEAAAAAACIw0CkoqGlpKJEShr5fwEe3z+gCw==",
|
|
670
|
+
},
|
|
671
|
+
fast: {
|
|
672
|
+
js: "((v, dv, s) => ((1.1414205468162575 * ((1.22047 * Math.min(1.9, Math.max(-7.31, ((1 - (((v) * (v)) * ((v) * (v)) * 0.000001)) - (Math.min(1e4, Math.max(-1e4, ((3.45 + Math.max(-0.05, ((v * 1.45) + ((v * dv) * 0.212766))))) / ((s) < 1e-4 && (s) > -1e-4 ? ((s) >= 0 ? 1e-4 : -1e-4) : (s))))) * (Math.min(1e4, Math.max(-1e4, ((3.45 + Math.max(-0.05, ((v * 1.45) + ((v * dv) * 0.212766))))) / ((s) < 1e-4 && (s) > -1e-4 ? ((s) >= 0 ? 1e-4 : -1e-4) : (s))))))))) + 0.215661)) + 0.024217427345017313))",
|
|
673
|
+
eval: ((v, dv, s) => ((1.1414205468162575 * ((1.22047 * Math.min(1.9, Math.max(-7.31, ((1 - (((v) * (v)) * ((v) * (v)) * 0.000001)) - (Math.min(1e4, Math.max(-1e4, ((3.45 + Math.max(-0.05, ((v * 1.45) + ((v * dv) * 0.212766))))) / ((s) < 1e-4 && (s) > -1e-4 ? ((s) >= 0 ? 1e-4 : -1e-4) : (s))))) * (Math.min(1e4, Math.max(-1e4, ((3.45 + Math.max(-0.05, ((v * 1.45) + ((v * dv) * 0.212766))))) / ((s) < 1e-4 && (s) > -1e-4 ? ((s) >= 0 ? 1e-4 : -1e-4) : (s))))))))) + 0.215661)) + 0.024217427345017313)),
|
|
674
|
+
c: "// Evolved by SPEAR — algebraic only, FP16 safe\n__device__ inline float spear_fn(const float x) {\n return ((1.141421f * ((1.22047f * fminf(1.9f, fmaxf(-7.31f, ((1f - (powf(powf(v, 2.0f), 2.0f) * 0.000001f)) - powf(fminf(fmaxf(((3.45f + fmaxf(-0.05f, ((v * 1.45f) + ((v * dv) * 0.212766f)))) / copysignf(fmaxf(fabsf(s), 1.0e-4f), s)), -1.0e4f), 1.0e4f), 2.0f))))) + 0.215661f)) + 0.024217f);\n}",
|
|
675
|
+
py: "import torch\n\ndef spear_fn(v, dv, s):\n # Evolved by SPEAR — zero transcendental ops (exp/erf/tanh free)\n return ((1.141421 * ((1.22047 * torch.minimum(1.9, torch.maximum(-7.31, ((1 - (((v * v) * (v * v)) * 0.000001)) - (((3.45 + torch.maximum(-0.05, ((v * 1.45) + ((v * dv) * 0.212766)))) / (abs(s) < 1e-4 ? 1e-4 : s)) * ((3.45 + torch.maximum(-0.05, ((v * 1.45) + ((v * dv) * 0.212766)))) / (abs(s) < 1e-4 ? 1e-4 : s))))))) + 0.215661)) + 0.024217)",
|
|
676
|
+
wasmBase64: "AGFzbQEAAAABDQJgA3x8fAF8YAF8AXwDAgEABwkBBXNwZWFyAAAKjAIBiQIARKXu+DBCQ/I/RGX8+4wLh/M/RGZmZmZmZv4/RD0K16NwPR3ARAAAAAAAAPA/IAAgAKIgACAAoqJEje21oPfGsD6ioUSamZmZmZkLQESamZmZmZmpvyAARDMzMzMzM/c/oiAAIAGiRLix2ZHqO8s/oqCloCACmUQtQxzr4jYaP6UgAqajRAAAAAAAiMPApUQAAAAAAIjDQKREmpmZmZmZC0BEmpmZmZmZqb8gAEQzMzMzMzP3P6IgACABokS4sdmR6jvLP6KgpaAgAplELUMc6+I2Gj+lIAKmo0QAAAAAAIjDwKVEAAAAAACIw0CkoqGlpKJEZOYCl8eayz+gokQCq8IJdMyYP6AL",
|
|
663
677
|
},
|
|
664
678
|
meta: {
|
|
665
|
-
metric: 0.
|
|
679
|
+
metric: 0.002938652617546022,
|
|
666
680
|
level: 2,
|
|
667
681
|
formulaCost: 20,
|
|
668
682
|
exactCost: 30,
|
|
@@ -710,7 +724,7 @@ const kernels = {
|
|
|
710
724
|
formulaCost: 44,
|
|
711
725
|
exactCost: 43,
|
|
712
726
|
speedupVsExact: 0.9772727272727273,
|
|
713
|
-
vsIterative: {"label":"CORDIC
|
|
727
|
+
vsIterative: {"label":"CORDIC · 16 micro-rotations","speedup":1.5},
|
|
714
728
|
},
|
|
715
729
|
},
|
|
716
730
|
"gauss_shader": {
|
|
@@ -1319,6 +1333,13 @@ const kernels = {
|
|
|
1319
1333
|
py: "import torch\n\ndef spear_fn(da, t):\n # Evolved by SPEAR — zero transcendental ops (exp/erf/tanh free)\n return (1 / (abs((1 + torch.exp(torch.clamp((-(da / (abs(t) < 1e-4 ? 1e-4 : t))), -50.0, 50.0)))) < 1e-4 ? 1e-4 : (1 + torch.exp(torch.clamp((-(da / (abs(t) < 1e-4 ? 1e-4 : t))), -50.0, 50.0)))))",
|
|
1320
1334
|
wasmBase64: "AGFzbQEAAAABDAJgAnx8AXxgAXwBfAILAQNlbnYDZXhwAAEDAgEABwkBBXNwZWFyAAEKvwEBvAEARAAAAAAAAPA/RAAAAAAAAPA/IAAgAZlELUMc6+I2Gj+lIAGmo0QAAAAAAIjDwKVEAAAAAACIw0CkmkQAAAAAAABJwKVEAAAAAAAASUCkEACgmUQtQxzr4jYaP6VEAAAAAAAA8D8gACABmUQtQxzr4jYaP6UgAaajRAAAAAAAiMPApUQAAAAAAIjDQKSaRAAAAAAAAEnApUQAAAAAAABJQKQQAKCmo0QAAAAAAIjDwKVEAAAAAACIw0CkCw==",
|
|
1321
1335
|
},
|
|
1336
|
+
fast: {
|
|
1337
|
+
js: "((da, t) => Math.min(1e4, Math.max(-1e4, (1) / (((1 + Math.exp(Math.max(-50, Math.min(50, (-Math.min(1e4, Math.max(-1e4, (da) / ((t) < 1e-4 && (t) > -1e-4 ? ((t) >= 0 ? 1e-4 : -1e-4) : (t)))))))))) < 1e-4 && ((1 + Math.exp(Math.max(-50, Math.min(50, (-Math.min(1e4, Math.max(-1e4, (da) / ((t) < 1e-4 && (t) > -1e-4 ? ((t) >= 0 ? 1e-4 : -1e-4) : (t)))))))))) > -1e-4 ? (((1 + Math.exp(Math.max(-50, Math.min(50, (-Math.min(1e4, Math.max(-1e4, (da) / ((t) < 1e-4 && (t) > -1e-4 ? ((t) >= 0 ? 1e-4 : -1e-4) : (t)))))))))) >= 0 ? 1e-4 : -1e-4) : ((1 + Math.exp(Math.max(-50, Math.min(50, (-Math.min(1e4, Math.max(-1e4, (da) / ((t) < 1e-4 && (t) > -1e-4 ? ((t) >= 0 ? 1e-4 : -1e-4) : (t))))))))))))))",
|
|
1338
|
+
eval: ((da, t) => Math.min(1e4, Math.max(-1e4, (1) / (((1 + Math.exp(Math.max(-50, Math.min(50, (-Math.min(1e4, Math.max(-1e4, (da) / ((t) < 1e-4 && (t) > -1e-4 ? ((t) >= 0 ? 1e-4 : -1e-4) : (t)))))))))) < 1e-4 && ((1 + Math.exp(Math.max(-50, Math.min(50, (-Math.min(1e4, Math.max(-1e4, (da) / ((t) < 1e-4 && (t) > -1e-4 ? ((t) >= 0 ? 1e-4 : -1e-4) : (t)))))))))) > -1e-4 ? (((1 + Math.exp(Math.max(-50, Math.min(50, (-Math.min(1e4, Math.max(-1e4, (da) / ((t) < 1e-4 && (t) > -1e-4 ? ((t) >= 0 ? 1e-4 : -1e-4) : (t)))))))))) >= 0 ? 1e-4 : -1e-4) : ((1 + Math.exp(Math.max(-50, Math.min(50, (-Math.min(1e4, Math.max(-1e4, (da) / ((t) < 1e-4 && (t) > -1e-4 ? ((t) >= 0 ? 1e-4 : -1e-4) : (t)))))))))))))),
|
|
1339
|
+
c: "// Evolved by SPEAR — algebraic only, FP16 safe\n__device__ inline float spear_fn(const float x) {\n return fminf(fmaxf((1f / copysignf(fmaxf(fabsf((1f + expf(fmaxf(-50.0f, fminf(50.0f, (-fminf(fmaxf((da / copysignf(fmaxf(fabsf(t), 1.0e-4f), t)), -1.0e4f), 1.0e4f))))))), 1.0e-4f), (1f + expf(fmaxf(-50.0f, fminf(50.0f, (-fminf(fmaxf((da / copysignf(fmaxf(fabsf(t), 1.0e-4f), t)), -1.0e4f), 1.0e4f)))))))), -1.0e4f), 1.0e4f);\n}",
|
|
1340
|
+
py: "import torch\n\ndef spear_fn(da, t):\n # Evolved by SPEAR — zero transcendental ops (exp/erf/tanh free)\n return (1 / (abs((1 + torch.exp(torch.clamp((-(da / (abs(t) < 1e-4 ? 1e-4 : t))), -50.0, 50.0)))) < 1e-4 ? 1e-4 : (1 + torch.exp(torch.clamp((-(da / (abs(t) < 1e-4 ? 1e-4 : t))), -50.0, 50.0)))))",
|
|
1341
|
+
wasmBase64: "AGFzbQEAAAABDAJgAnx8AXxgAXwBfAILAQNlbnYDZXhwAAEDAgEABwkBBXNwZWFyAAEKvwEBvAEARAAAAAAAAPA/RAAAAAAAAPA/IAAgAZlELUMc6+I2Gj+lIAGmo0QAAAAAAIjDwKVEAAAAAACIw0CkmkQAAAAAAABJwKVEAAAAAAAASUCkEACgmUQtQxzr4jYaP6VEAAAAAAAA8D8gACABmUQtQxzr4jYaP6UgAaajRAAAAAAAiMPApUQAAAAAAIjDQKSaRAAAAAAAAEnApUQAAAAAAABJQKQQAKCmo0QAAAAAAIjDwKVEAAAAAACIw0CkCw==",
|
|
1342
|
+
},
|
|
1322
1343
|
meta: {
|
|
1323
1344
|
metric: 7.439476402624881e-47,
|
|
1324
1345
|
level: 2,
|
|
@@ -1406,18 +1427,18 @@ const kernels = {
|
|
|
1406
1427
|
"grover_amplitude": {
|
|
1407
1428
|
id: "grover_amplitude",
|
|
1408
1429
|
precise: {
|
|
1409
|
-
js: "((k) => ((0.
|
|
1410
|
-
eval: ((k) => ((0.
|
|
1411
|
-
c: "// Evolved by SPEAR — algebraic only, FP16 safe\n__device__ inline float spear_fn(const float x) {\n return ((0.
|
|
1412
|
-
py: "import torch\n\ndef spear_fn(k):\n # Evolved by SPEAR — zero transcendental ops (exp/erf/tanh free)\n return ((0.
|
|
1413
|
-
wasmBase64: "
|
|
1430
|
+
js: "((k) => ((-0.9084030522924049 * (Math.min(k, (Math.min(1e4, Math.max(-1e4, (1.924223) / ((k) < 1e-4 && (k) > -1e-4 ? ((k) >= 0 ? 1e-4 : -1e-4) : (k)))) + Math.min(1e4, Math.max(-1e4, (k) / ((k) < 1e-4 && (k) > -1e-4 ? ((k) >= 0 ? 1e-4 : -1e-4) : (k)))))) * -0.38734452474957204)) + 0.07435079907199241))",
|
|
1431
|
+
eval: ((k) => ((-0.9084030522924049 * (Math.min(k, (Math.min(1e4, Math.max(-1e4, (1.924223) / ((k) < 1e-4 && (k) > -1e-4 ? ((k) >= 0 ? 1e-4 : -1e-4) : (k)))) + Math.min(1e4, Math.max(-1e4, (k) / ((k) < 1e-4 && (k) > -1e-4 ? ((k) >= 0 ? 1e-4 : -1e-4) : (k)))))) * -0.38734452474957204)) + 0.07435079907199241)),
|
|
1432
|
+
c: "// Evolved by SPEAR — algebraic only, FP16 safe\n__device__ inline float spear_fn(const float x) {\n return ((-0.908403f * (fminf(k, (fminf(fmaxf((1.924223f / copysignf(fmaxf(fabsf(k), 1.0e-4f), k)), -1.0e4f), 1.0e4f) + fminf(fmaxf((k / copysignf(fmaxf(fabsf(k), 1.0e-4f), k)), -1.0e4f), 1.0e4f))) * -0.387345f)) + 0.074351f);\n}",
|
|
1433
|
+
py: "import torch\n\ndef spear_fn(k):\n # Evolved by SPEAR — zero transcendental ops (exp/erf/tanh free)\n return ((-0.908403 * (torch.minimum(k, ((1.924223 / (abs(k) < 1e-4 ? 1e-4 : k)) + (k / (abs(k) < 1e-4 ? 1e-4 : k)))) * -0.387345)) + 0.074351)",
|
|
1434
|
+
wasmBase64: "AGFzbQEAAAABCwJgAXwBfGABfAF8AwIBAAcJAQVzcGVhcgAACnsBeQBEsNYlR6MR7b8gAERKYHMOnsn+PyAAmUQtQxzr4jYaP6UgAKajRAAAAAAAiMPApUQAAAAAAIjDQKQgACAAmUQtQxzr4jYaP6UgAKajRAAAAAAAiMPApUQAAAAAAIjDQKSgpER6YYWwQMrYv6KiRLoXcmqnCLM/oAs=",
|
|
1414
1435
|
},
|
|
1415
1436
|
meta: {
|
|
1416
|
-
metric: 0.
|
|
1437
|
+
metric: 0.10609082949960358,
|
|
1417
1438
|
level: 0,
|
|
1418
|
-
formulaCost:
|
|
1439
|
+
formulaCost: 13,
|
|
1419
1440
|
exactCost: 48,
|
|
1420
|
-
speedupVsExact:
|
|
1441
|
+
speedupVsExact: 3.6923076923076925,
|
|
1421
1442
|
vsIterative: null,
|
|
1422
1443
|
},
|
|
1423
1444
|
},
|
|
@@ -1547,7 +1568,7 @@ const kernels = {
|
|
|
1547
1568
|
formulaCost: 55,
|
|
1548
1569
|
exactCost: 22,
|
|
1549
1570
|
speedupVsExact: 0.4,
|
|
1550
|
-
vsIterative: {"label":"BFGS optimisation","speedup":14.
|
|
1571
|
+
vsIterative: {"label":"BFGS optimisation","speedup":14.5},
|
|
1551
1572
|
},
|
|
1552
1573
|
},
|
|
1553
1574
|
"amp_damp_fid": {
|
|
@@ -1565,7 +1586,7 @@ const kernels = {
|
|
|
1565
1586
|
formulaCost: 124,
|
|
1566
1587
|
exactCost: 24,
|
|
1567
1588
|
speedupVsExact: 0.1935483870967742,
|
|
1568
|
-
vsIterative: {"label":"Kraus ops 4
|
|
1589
|
+
vsIterative: {"label":"Kraus ops 4×4 matmul","speedup":0.4},
|
|
1569
1590
|
},
|
|
1570
1591
|
},
|
|
1571
1592
|
"loschmidt_rate": {
|
|
@@ -1590,7 +1611,7 @@ const kernels = {
|
|
|
1590
1611
|
formulaCost: 47,
|
|
1591
1612
|
exactCost: 18,
|
|
1592
1613
|
speedupVsExact: 0.3829787234042553,
|
|
1593
|
-
vsIterative: {"label":"Diag
|
|
1614
|
+
vsIterative: {"label":"Diag complète 128 modes","speedup":13.6},
|
|
1594
1615
|
},
|
|
1595
1616
|
},
|
|
1596
1617
|
"bessel_i0e": {
|
package/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Auto-generated by scripts/gen-kernels-package.ts
|
|
1
|
+
// Auto-generated by scripts/gen-kernels-package.ts — DO NOT EDIT.
|
|
2
2
|
// Self-contained runtime: the arrow functions below ARE the kernels.
|
|
3
3
|
export const kernels = {
|
|
4
4
|
"silu": {
|
|
@@ -159,7 +159,7 @@ export const kernels = {
|
|
|
159
159
|
formulaCost: 25,
|
|
160
160
|
exactCost: 34,
|
|
161
161
|
speedupVsExact: 1.36,
|
|
162
|
-
vsIterative: {"label":"Monte-Carlo
|
|
162
|
+
vsIterative: {"label":"Monte-Carlo · 1000 tirages","speedup":1840},
|
|
163
163
|
},
|
|
164
164
|
},
|
|
165
165
|
"damped_pendulum": {
|
|
@@ -184,7 +184,7 @@ export const kernels = {
|
|
|
184
184
|
formulaCost: 46,
|
|
185
185
|
exactCost: null,
|
|
186
186
|
speedupVsExact: null,
|
|
187
|
-
vsIterative: {"label":"Euler-Cromer
|
|
187
|
+
vsIterative: {"label":"Euler-Cromer · 60 pas","speedup":32.6},
|
|
188
188
|
},
|
|
189
189
|
},
|
|
190
190
|
"rl_distillation": {
|
|
@@ -445,7 +445,7 @@ export const kernels = {
|
|
|
445
445
|
formulaCost: 13,
|
|
446
446
|
exactCost: 17,
|
|
447
447
|
speedupVsExact: 1.3076923076923077,
|
|
448
|
-
vsIterative: {"label":"RK4
|
|
448
|
+
vsIterative: {"label":"RK4 géodésique · 200 pas","speedup":184.6},
|
|
449
449
|
},
|
|
450
450
|
},
|
|
451
451
|
"lennard_jones": {
|
|
@@ -488,7 +488,7 @@ export const kernels = {
|
|
|
488
488
|
formulaCost: 27,
|
|
489
489
|
exactCost: 44,
|
|
490
490
|
speedupVsExact: 1.6296296296296295,
|
|
491
|
-
vsIterative: {"label":"RKF45
|
|
491
|
+
vsIterative: {"label":"RKF45 · 300 pas","speedup":200},
|
|
492
492
|
},
|
|
493
493
|
},
|
|
494
494
|
"logistic_growth": {
|
|
@@ -550,6 +550,13 @@ export const kernels = {
|
|
|
550
550
|
py: "import torch\n\ndef spear_fn(x):\n # Evolved by SPEAR — zero transcendental ops (exp/erf/tanh free)\n return ((-1.553578 * torch.maximum(torch.sqrt(torch.abs((6.660595 - torch.maximum(3.1671, x)))), 0.603662)) + 2.906087)",
|
|
551
551
|
wasmBase64: "AGFzbQEAAAABCwJgAXwBfGABfAF8AwIBAAcJAQVzcGVhcgAACjoBOABEuI/cmnTb+L9Ev5oDBHOkGkBE9UpZhjhWCUAgAKWhmZ9EgdB6+DJR4z+lokRhpYKKqj8HQKAL",
|
|
552
552
|
},
|
|
553
|
+
fast: {
|
|
554
|
+
js: "((t, x) => (((t) * (t) * Math.sin((4.822148 * t))) * (x * Math.sin((4.8694 * t)))))",
|
|
555
|
+
eval: ((t, x) => (((t) * (t) * Math.sin((4.822148 * t))) * (x * Math.sin((4.8694 * t))))),
|
|
556
|
+
c: "// Evolved by SPEAR — algebraic only, FP16 safe\n__device__ inline float spear_fn(const float x) {\n return ((powf(t, 2.0f) * sinf((4.822148f * t))) * (x * sinf((4.8694f * t))));\n}",
|
|
557
|
+
py: "import torch\n\ndef spear_fn(t, x):\n # Evolved by SPEAR — zero transcendental ops (exp/erf/tanh free)\n return (((t * t) * torch.sin((4.822148 * t))) * (x * torch.sin((4.8694 * t))))",
|
|
558
|
+
wasmBase64: "AGFzbQEAAAABDAJgAnx8AXxgAXwBfAILAQNlbnYDc2luAAEDAgEABwkBBXNwZWFyAAEKKgEoACAAIACiRCLjUSrhSRNAIACiEACiIAFE0ZFc/kN6E0AgAKIQAKKiCw==",
|
|
559
|
+
},
|
|
553
560
|
meta: {
|
|
554
561
|
metric: 0.0017117911533114868,
|
|
555
562
|
level: 2,
|
|
@@ -581,7 +588,7 @@ export const kernels = {
|
|
|
581
588
|
formulaCost: 18,
|
|
582
589
|
exactCost: 21,
|
|
583
590
|
speedupVsExact: 1.1666666666666667,
|
|
584
|
-
vsIterative: {"label":"RK4
|
|
591
|
+
vsIterative: {"label":"RK4 géodésique · 200 pas","speedup":133.3},
|
|
585
592
|
},
|
|
586
593
|
},
|
|
587
594
|
"pendulum_hybrid": {
|
|
@@ -624,7 +631,7 @@ export const kernels = {
|
|
|
624
631
|
formulaCost: 120,
|
|
625
632
|
exactCost: null,
|
|
626
633
|
speedupVsExact: null,
|
|
627
|
-
vsIterative: {"label":"Jacobi
|
|
634
|
+
vsIterative: {"label":"Jacobi · 4 balayages","speedup":1.7},
|
|
628
635
|
},
|
|
629
636
|
},
|
|
630
637
|
"ik_reach": {
|
|
@@ -649,20 +656,27 @@ export const kernels = {
|
|
|
649
656
|
formulaCost: 52,
|
|
650
657
|
exactCost: null,
|
|
651
658
|
speedupVsExact: null,
|
|
652
|
-
vsIterative: {"label":"Newton-DLS
|
|
659
|
+
vsIterative: {"label":"Newton-DLS · 8 itérations","speedup":6.2},
|
|
653
660
|
},
|
|
654
661
|
},
|
|
655
662
|
"idm_following": {
|
|
656
663
|
id: "idm_following",
|
|
657
664
|
precise: {
|
|
658
|
-
js: "((v, dv, s) => ((1.
|
|
659
|
-
eval: ((v, dv, s) => ((1.
|
|
660
|
-
c: "// Evolved by SPEAR — algebraic only, FP16 safe\n__device__ inline float spear_fn(const float x) {\n return ((1.
|
|
661
|
-
py: "import torch\n\ndef spear_fn(v, dv, s):\n # Evolved by SPEAR — zero transcendental ops (exp/erf/tanh free)\n return ((1.
|
|
662
|
-
wasmBase64: "AGFzbQEAAAABDQJgA3x8fAF8YAF8AXwDAgEABwkBBXNwZWFyAAAK+
|
|
665
|
+
js: "((v, dv, s) => ((1.825166 * Math.min(1.9, Math.max(-5.198308, ((0.840532 - (((v) * (v)) * ((v) * (v)) * 0.000001)) - (Math.min(1e4, Math.max(-1e4, ((2.393229 + Math.max(-0.435303, ((v * 1.543892) + ((v * dv) * 0.212766))))) / ((s) < 1e-4 && (s) > -1e-4 ? ((s) >= 0 ? 1e-4 : -1e-4) : (s))))) * (Math.min(1e4, Math.max(-1e4, ((2.393229 + Math.max(-0.435303, ((v * 1.543892) + ((v * dv) * 0.212766))))) / ((s) < 1e-4 && (s) > -1e-4 ? ((s) >= 0 ? 1e-4 : -1e-4) : (s))))))))) + 0.4862064122902764))",
|
|
666
|
+
eval: ((v, dv, s) => ((1.825166 * Math.min(1.9, Math.max(-5.198308, ((0.840532 - (((v) * (v)) * ((v) * (v)) * 0.000001)) - (Math.min(1e4, Math.max(-1e4, ((2.393229 + Math.max(-0.435303, ((v * 1.543892) + ((v * dv) * 0.212766))))) / ((s) < 1e-4 && (s) > -1e-4 ? ((s) >= 0 ? 1e-4 : -1e-4) : (s))))) * (Math.min(1e4, Math.max(-1e4, ((2.393229 + Math.max(-0.435303, ((v * 1.543892) + ((v * dv) * 0.212766))))) / ((s) < 1e-4 && (s) > -1e-4 ? ((s) >= 0 ? 1e-4 : -1e-4) : (s))))))))) + 0.4862064122902764)),
|
|
667
|
+
c: "// Evolved by SPEAR — algebraic only, FP16 safe\n__device__ inline float spear_fn(const float x) {\n return ((1.825166f * fminf(1.9f, fmaxf(-5.198308f, ((0.840532f - (powf(powf(v, 2.0f), 2.0f) * 0.000001f)) - powf(fminf(fmaxf(((2.393229f + fmaxf(-0.435303f, ((v * 1.543892f) + ((v * dv) * 0.212766f)))) / copysignf(fmaxf(fabsf(s), 1.0e-4f), s)), -1.0e4f), 1.0e4f), 2.0f))))) + 0.486206f);\n}",
|
|
668
|
+
py: "import torch\n\ndef spear_fn(v, dv, s):\n # Evolved by SPEAR — zero transcendental ops (exp/erf/tanh free)\n return ((1.825166 * torch.minimum(1.9, torch.maximum(-5.198308, ((0.840532 - (((v * v) * (v * v)) * 0.000001)) - (((2.393229 + torch.maximum(-0.435303, ((v * 1.543892) + ((v * dv) * 0.212766)))) / (abs(s) < 1e-4 ? 1e-4 : s)) * ((2.393229 + torch.maximum(-0.435303, ((v * 1.543892) + ((v * dv) * 0.212766)))) / (abs(s) < 1e-4 ? 1e-4 : s))))))) + 0.486206)",
|
|
669
|
+
wasmBase64: "AGFzbQEAAAABDQJgA3x8fAF8YAF8AXwDAgEABwkBBXNwZWFyAAAK+AEB9QEARJNWfEPhM/0/RGZmZmZmZv4/RAMkmkARyxTARCO6Z12j5eo/IAAgAKIgACAAoqJEje21oPfGsD6ioUTUtfY+VSUDQESscTYdAdzbvyAARILlCBnIs/g/oiAAIAGiRLix2ZHqO8s/oqCloCACmUQtQxzr4jYaP6UgAqajRAAAAAAAiMPApUQAAAAAAIjDQKRE1LX2PlUlA0BErHE2HQHc278gAESC5QgZyLP4P6IgACABokS4sdmR6jvLP6KgpaAgAplELUMc6+I2Gj+lIAKmo0QAAAAAAIjDwKVEAAAAAACIw0CkoqGlpKJEShr5fwEe3z+gCw==",
|
|
670
|
+
},
|
|
671
|
+
fast: {
|
|
672
|
+
js: "((v, dv, s) => ((1.1414205468162575 * ((1.22047 * Math.min(1.9, Math.max(-7.31, ((1 - (((v) * (v)) * ((v) * (v)) * 0.000001)) - (Math.min(1e4, Math.max(-1e4, ((3.45 + Math.max(-0.05, ((v * 1.45) + ((v * dv) * 0.212766))))) / ((s) < 1e-4 && (s) > -1e-4 ? ((s) >= 0 ? 1e-4 : -1e-4) : (s))))) * (Math.min(1e4, Math.max(-1e4, ((3.45 + Math.max(-0.05, ((v * 1.45) + ((v * dv) * 0.212766))))) / ((s) < 1e-4 && (s) > -1e-4 ? ((s) >= 0 ? 1e-4 : -1e-4) : (s))))))))) + 0.215661)) + 0.024217427345017313))",
|
|
673
|
+
eval: ((v, dv, s) => ((1.1414205468162575 * ((1.22047 * Math.min(1.9, Math.max(-7.31, ((1 - (((v) * (v)) * ((v) * (v)) * 0.000001)) - (Math.min(1e4, Math.max(-1e4, ((3.45 + Math.max(-0.05, ((v * 1.45) + ((v * dv) * 0.212766))))) / ((s) < 1e-4 && (s) > -1e-4 ? ((s) >= 0 ? 1e-4 : -1e-4) : (s))))) * (Math.min(1e4, Math.max(-1e4, ((3.45 + Math.max(-0.05, ((v * 1.45) + ((v * dv) * 0.212766))))) / ((s) < 1e-4 && (s) > -1e-4 ? ((s) >= 0 ? 1e-4 : -1e-4) : (s))))))))) + 0.215661)) + 0.024217427345017313)),
|
|
674
|
+
c: "// Evolved by SPEAR — algebraic only, FP16 safe\n__device__ inline float spear_fn(const float x) {\n return ((1.141421f * ((1.22047f * fminf(1.9f, fmaxf(-7.31f, ((1f - (powf(powf(v, 2.0f), 2.0f) * 0.000001f)) - powf(fminf(fmaxf(((3.45f + fmaxf(-0.05f, ((v * 1.45f) + ((v * dv) * 0.212766f)))) / copysignf(fmaxf(fabsf(s), 1.0e-4f), s)), -1.0e4f), 1.0e4f), 2.0f))))) + 0.215661f)) + 0.024217f);\n}",
|
|
675
|
+
py: "import torch\n\ndef spear_fn(v, dv, s):\n # Evolved by SPEAR — zero transcendental ops (exp/erf/tanh free)\n return ((1.141421 * ((1.22047 * torch.minimum(1.9, torch.maximum(-7.31, ((1 - (((v * v) * (v * v)) * 0.000001)) - (((3.45 + torch.maximum(-0.05, ((v * 1.45) + ((v * dv) * 0.212766)))) / (abs(s) < 1e-4 ? 1e-4 : s)) * ((3.45 + torch.maximum(-0.05, ((v * 1.45) + ((v * dv) * 0.212766)))) / (abs(s) < 1e-4 ? 1e-4 : s))))))) + 0.215661)) + 0.024217)",
|
|
676
|
+
wasmBase64: "AGFzbQEAAAABDQJgA3x8fAF8YAF8AXwDAgEABwkBBXNwZWFyAAAKjAIBiQIARKXu+DBCQ/I/RGX8+4wLh/M/RGZmZmZmZv4/RD0K16NwPR3ARAAAAAAAAPA/IAAgAKIgACAAoqJEje21oPfGsD6ioUSamZmZmZkLQESamZmZmZmpvyAARDMzMzMzM/c/oiAAIAGiRLix2ZHqO8s/oqCloCACmUQtQxzr4jYaP6UgAqajRAAAAAAAiMPApUQAAAAAAIjDQKREmpmZmZmZC0BEmpmZmZmZqb8gAEQzMzMzMzP3P6IgACABokS4sdmR6jvLP6KgpaAgAplELUMc6+I2Gj+lIAKmo0QAAAAAAIjDwKVEAAAAAACIw0CkoqGlpKJEZOYCl8eayz+gokQCq8IJdMyYP6AL",
|
|
663
677
|
},
|
|
664
678
|
meta: {
|
|
665
|
-
metric: 0.
|
|
679
|
+
metric: 0.002938652617546022,
|
|
666
680
|
level: 2,
|
|
667
681
|
formulaCost: 20,
|
|
668
682
|
exactCost: 30,
|
|
@@ -710,7 +724,7 @@ export const kernels = {
|
|
|
710
724
|
formulaCost: 44,
|
|
711
725
|
exactCost: 43,
|
|
712
726
|
speedupVsExact: 0.9772727272727273,
|
|
713
|
-
vsIterative: {"label":"CORDIC
|
|
727
|
+
vsIterative: {"label":"CORDIC · 16 micro-rotations","speedup":1.5},
|
|
714
728
|
},
|
|
715
729
|
},
|
|
716
730
|
"gauss_shader": {
|
|
@@ -1319,6 +1333,13 @@ export const kernels = {
|
|
|
1319
1333
|
py: "import torch\n\ndef spear_fn(da, t):\n # Evolved by SPEAR — zero transcendental ops (exp/erf/tanh free)\n return (1 / (abs((1 + torch.exp(torch.clamp((-(da / (abs(t) < 1e-4 ? 1e-4 : t))), -50.0, 50.0)))) < 1e-4 ? 1e-4 : (1 + torch.exp(torch.clamp((-(da / (abs(t) < 1e-4 ? 1e-4 : t))), -50.0, 50.0)))))",
|
|
1320
1334
|
wasmBase64: "AGFzbQEAAAABDAJgAnx8AXxgAXwBfAILAQNlbnYDZXhwAAEDAgEABwkBBXNwZWFyAAEKvwEBvAEARAAAAAAAAPA/RAAAAAAAAPA/IAAgAZlELUMc6+I2Gj+lIAGmo0QAAAAAAIjDwKVEAAAAAACIw0CkmkQAAAAAAABJwKVEAAAAAAAASUCkEACgmUQtQxzr4jYaP6VEAAAAAAAA8D8gACABmUQtQxzr4jYaP6UgAaajRAAAAAAAiMPApUQAAAAAAIjDQKSaRAAAAAAAAEnApUQAAAAAAABJQKQQAKCmo0QAAAAAAIjDwKVEAAAAAACIw0CkCw==",
|
|
1321
1335
|
},
|
|
1336
|
+
fast: {
|
|
1337
|
+
js: "((da, t) => Math.min(1e4, Math.max(-1e4, (1) / (((1 + Math.exp(Math.max(-50, Math.min(50, (-Math.min(1e4, Math.max(-1e4, (da) / ((t) < 1e-4 && (t) > -1e-4 ? ((t) >= 0 ? 1e-4 : -1e-4) : (t)))))))))) < 1e-4 && ((1 + Math.exp(Math.max(-50, Math.min(50, (-Math.min(1e4, Math.max(-1e4, (da) / ((t) < 1e-4 && (t) > -1e-4 ? ((t) >= 0 ? 1e-4 : -1e-4) : (t)))))))))) > -1e-4 ? (((1 + Math.exp(Math.max(-50, Math.min(50, (-Math.min(1e4, Math.max(-1e4, (da) / ((t) < 1e-4 && (t) > -1e-4 ? ((t) >= 0 ? 1e-4 : -1e-4) : (t)))))))))) >= 0 ? 1e-4 : -1e-4) : ((1 + Math.exp(Math.max(-50, Math.min(50, (-Math.min(1e4, Math.max(-1e4, (da) / ((t) < 1e-4 && (t) > -1e-4 ? ((t) >= 0 ? 1e-4 : -1e-4) : (t))))))))))))))",
|
|
1338
|
+
eval: ((da, t) => Math.min(1e4, Math.max(-1e4, (1) / (((1 + Math.exp(Math.max(-50, Math.min(50, (-Math.min(1e4, Math.max(-1e4, (da) / ((t) < 1e-4 && (t) > -1e-4 ? ((t) >= 0 ? 1e-4 : -1e-4) : (t)))))))))) < 1e-4 && ((1 + Math.exp(Math.max(-50, Math.min(50, (-Math.min(1e4, Math.max(-1e4, (da) / ((t) < 1e-4 && (t) > -1e-4 ? ((t) >= 0 ? 1e-4 : -1e-4) : (t)))))))))) > -1e-4 ? (((1 + Math.exp(Math.max(-50, Math.min(50, (-Math.min(1e4, Math.max(-1e4, (da) / ((t) < 1e-4 && (t) > -1e-4 ? ((t) >= 0 ? 1e-4 : -1e-4) : (t)))))))))) >= 0 ? 1e-4 : -1e-4) : ((1 + Math.exp(Math.max(-50, Math.min(50, (-Math.min(1e4, Math.max(-1e4, (da) / ((t) < 1e-4 && (t) > -1e-4 ? ((t) >= 0 ? 1e-4 : -1e-4) : (t)))))))))))))),
|
|
1339
|
+
c: "// Evolved by SPEAR — algebraic only, FP16 safe\n__device__ inline float spear_fn(const float x) {\n return fminf(fmaxf((1f / copysignf(fmaxf(fabsf((1f + expf(fmaxf(-50.0f, fminf(50.0f, (-fminf(fmaxf((da / copysignf(fmaxf(fabsf(t), 1.0e-4f), t)), -1.0e4f), 1.0e4f))))))), 1.0e-4f), (1f + expf(fmaxf(-50.0f, fminf(50.0f, (-fminf(fmaxf((da / copysignf(fmaxf(fabsf(t), 1.0e-4f), t)), -1.0e4f), 1.0e4f)))))))), -1.0e4f), 1.0e4f);\n}",
|
|
1340
|
+
py: "import torch\n\ndef spear_fn(da, t):\n # Evolved by SPEAR — zero transcendental ops (exp/erf/tanh free)\n return (1 / (abs((1 + torch.exp(torch.clamp((-(da / (abs(t) < 1e-4 ? 1e-4 : t))), -50.0, 50.0)))) < 1e-4 ? 1e-4 : (1 + torch.exp(torch.clamp((-(da / (abs(t) < 1e-4 ? 1e-4 : t))), -50.0, 50.0)))))",
|
|
1341
|
+
wasmBase64: "AGFzbQEAAAABDAJgAnx8AXxgAXwBfAILAQNlbnYDZXhwAAEDAgEABwkBBXNwZWFyAAEKvwEBvAEARAAAAAAAAPA/RAAAAAAAAPA/IAAgAZlELUMc6+I2Gj+lIAGmo0QAAAAAAIjDwKVEAAAAAACIw0CkmkQAAAAAAABJwKVEAAAAAAAASUCkEACgmUQtQxzr4jYaP6VEAAAAAAAA8D8gACABmUQtQxzr4jYaP6UgAaajRAAAAAAAiMPApUQAAAAAAIjDQKSaRAAAAAAAAEnApUQAAAAAAABJQKQQAKCmo0QAAAAAAIjDwKVEAAAAAACIw0CkCw==",
|
|
1342
|
+
},
|
|
1322
1343
|
meta: {
|
|
1323
1344
|
metric: 7.439476402624881e-47,
|
|
1324
1345
|
level: 2,
|
|
@@ -1406,18 +1427,18 @@ export const kernels = {
|
|
|
1406
1427
|
"grover_amplitude": {
|
|
1407
1428
|
id: "grover_amplitude",
|
|
1408
1429
|
precise: {
|
|
1409
|
-
js: "((k) => ((0.
|
|
1410
|
-
eval: ((k) => ((0.
|
|
1411
|
-
c: "// Evolved by SPEAR — algebraic only, FP16 safe\n__device__ inline float spear_fn(const float x) {\n return ((0.
|
|
1412
|
-
py: "import torch\n\ndef spear_fn(k):\n # Evolved by SPEAR — zero transcendental ops (exp/erf/tanh free)\n return ((0.
|
|
1413
|
-
wasmBase64: "
|
|
1430
|
+
js: "((k) => ((-0.9084030522924049 * (Math.min(k, (Math.min(1e4, Math.max(-1e4, (1.924223) / ((k) < 1e-4 && (k) > -1e-4 ? ((k) >= 0 ? 1e-4 : -1e-4) : (k)))) + Math.min(1e4, Math.max(-1e4, (k) / ((k) < 1e-4 && (k) > -1e-4 ? ((k) >= 0 ? 1e-4 : -1e-4) : (k)))))) * -0.38734452474957204)) + 0.07435079907199241))",
|
|
1431
|
+
eval: ((k) => ((-0.9084030522924049 * (Math.min(k, (Math.min(1e4, Math.max(-1e4, (1.924223) / ((k) < 1e-4 && (k) > -1e-4 ? ((k) >= 0 ? 1e-4 : -1e-4) : (k)))) + Math.min(1e4, Math.max(-1e4, (k) / ((k) < 1e-4 && (k) > -1e-4 ? ((k) >= 0 ? 1e-4 : -1e-4) : (k)))))) * -0.38734452474957204)) + 0.07435079907199241)),
|
|
1432
|
+
c: "// Evolved by SPEAR — algebraic only, FP16 safe\n__device__ inline float spear_fn(const float x) {\n return ((-0.908403f * (fminf(k, (fminf(fmaxf((1.924223f / copysignf(fmaxf(fabsf(k), 1.0e-4f), k)), -1.0e4f), 1.0e4f) + fminf(fmaxf((k / copysignf(fmaxf(fabsf(k), 1.0e-4f), k)), -1.0e4f), 1.0e4f))) * -0.387345f)) + 0.074351f);\n}",
|
|
1433
|
+
py: "import torch\n\ndef spear_fn(k):\n # Evolved by SPEAR — zero transcendental ops (exp/erf/tanh free)\n return ((-0.908403 * (torch.minimum(k, ((1.924223 / (abs(k) < 1e-4 ? 1e-4 : k)) + (k / (abs(k) < 1e-4 ? 1e-4 : k)))) * -0.387345)) + 0.074351)",
|
|
1434
|
+
wasmBase64: "AGFzbQEAAAABCwJgAXwBfGABfAF8AwIBAAcJAQVzcGVhcgAACnsBeQBEsNYlR6MR7b8gAERKYHMOnsn+PyAAmUQtQxzr4jYaP6UgAKajRAAAAAAAiMPApUQAAAAAAIjDQKQgACAAmUQtQxzr4jYaP6UgAKajRAAAAAAAiMPApUQAAAAAAIjDQKSgpER6YYWwQMrYv6KiRLoXcmqnCLM/oAs=",
|
|
1414
1435
|
},
|
|
1415
1436
|
meta: {
|
|
1416
|
-
metric: 0.
|
|
1437
|
+
metric: 0.10609082949960358,
|
|
1417
1438
|
level: 0,
|
|
1418
|
-
formulaCost:
|
|
1439
|
+
formulaCost: 13,
|
|
1419
1440
|
exactCost: 48,
|
|
1420
|
-
speedupVsExact:
|
|
1441
|
+
speedupVsExact: 3.6923076923076925,
|
|
1421
1442
|
vsIterative: null,
|
|
1422
1443
|
},
|
|
1423
1444
|
},
|
|
@@ -1547,7 +1568,7 @@ export const kernels = {
|
|
|
1547
1568
|
formulaCost: 55,
|
|
1548
1569
|
exactCost: 22,
|
|
1549
1570
|
speedupVsExact: 0.4,
|
|
1550
|
-
vsIterative: {"label":"BFGS optimisation","speedup":14.
|
|
1571
|
+
vsIterative: {"label":"BFGS optimisation","speedup":14.5},
|
|
1551
1572
|
},
|
|
1552
1573
|
},
|
|
1553
1574
|
"amp_damp_fid": {
|
|
@@ -1565,7 +1586,7 @@ export const kernels = {
|
|
|
1565
1586
|
formulaCost: 124,
|
|
1566
1587
|
exactCost: 24,
|
|
1567
1588
|
speedupVsExact: 0.1935483870967742,
|
|
1568
|
-
vsIterative: {"label":"Kraus ops 4
|
|
1589
|
+
vsIterative: {"label":"Kraus ops 4×4 matmul","speedup":0.4},
|
|
1569
1590
|
},
|
|
1570
1591
|
},
|
|
1571
1592
|
"loschmidt_rate": {
|
|
@@ -1590,7 +1611,7 @@ export const kernels = {
|
|
|
1590
1611
|
formulaCost: 47,
|
|
1591
1612
|
exactCost: 18,
|
|
1592
1613
|
speedupVsExact: 0.3829787234042553,
|
|
1593
|
-
vsIterative: {"label":"Diag
|
|
1614
|
+
vsIterative: {"label":"Diag complète 128 modes","speedup":13.6},
|
|
1594
1615
|
},
|
|
1595
1616
|
},
|
|
1596
1617
|
"bessel_i0e": {
|
package/package.json
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "spear-kernels",
|
|
3
|
+
"version": "1.4.0",
|
|
4
|
+
"description": "Closed-form kernels discovered by the SPEAR symbolic regression engine, shipped as JS, CUDA C, PyTorch and WebAssembly.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./index.cjs",
|
|
8
|
+
"module": "./index.js",
|
|
9
|
+
"types": "./index.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./index.d.ts",
|
|
13
|
+
"import": "./index.js",
|
|
14
|
+
"require": "./index.cjs"
|
|
15
|
+
},
|
|
16
|
+
"./package.json": "./package.json"
|
|
17
|
+
},
|
|
18
|
+
"files": [
|
|
19
|
+
"index.js",
|
|
20
|
+
"index.cjs",
|
|
21
|
+
"index.d.ts",
|
|
22
|
+
"README.md"
|
|
23
|
+
],
|
|
24
|
+
"sideEffects": false
|
|
25
|
+
}
|