854bf9379a
fe_sqr was 20.6ns (using mul_wide + reduce_wide as separate functions) while fe_mul was 15.6ns (inlined). Simply making fe_sqr call fe_mul eliminates the gap. This has a massive impact on fe_inv/fe_sqrt which do 255 squarings: fe_inv: 6107ns → 4085ns (33% faster!) fe_sqr: 20.6ns → 15.8ns (23% faster) fe_mul: 15.6ns → 14.9ns (stable) Impact on operations: sign (cached): 15.2µs → 13.6µs (1.30x faster than ACINQ) pubkeyCreate: 15.3µs → 14.1µs (1.24x faster) verifyFast: 35.1µs → 32.2µs (1.01x vs ACINQ — tied!) verify (BIP-340): 39.7µs → 36.5µs (0.89x vs ACINQ) batch(200)/event: 6.2µs → 4.5µs (8.3x faster than ACINQ!) https://claude.ai/code/session_011KVZhDcV2G7idNWEBz12GY