From: Chris Duncan Date: Sun, 17 Aug 2025 09:55:00 +0000 (-0700) Subject: Unroll loop to eliminate branching. X-Git-Tag: v0.10.5~41^2~86 X-Git-Url: https://git.codecow.com/?a=commitdiff_plain;h=68b96eb80667d6dc22da74fd29c5962dd16a4a2b;p=libnemo.git Unroll loop to eliminate branching. --- diff --git a/src/lib/crypto/nano-nacl.ts b/src/lib/crypto/nano-nacl.ts index c1e401d..104e5af 100644 --- a/src/lib/crypto/nano-nacl.ts +++ b/src/lib/crypto/nano-nacl.ts @@ -62,12 +62,18 @@ export class NanoNaCl { static inv25519 (out: Float64Array, i: Float64Array): void { const c: Float64Array = new Float64Array(16) c.set(i.subarray(0, 16), 0) - for (let a = 253; a >= 0; a--) { + for (let a = 0; a < 249; a++) { this.Square(c, c) - if (a !== 2 && a !== 4) { - this.Multiply(c, c, i) - } + this.Multiply(c, c, i) } + this.Square(c, c) + this.Square(c, c) + this.Multiply(c, c, i) + this.Square(c, c) + this.Square(c, c) + this.Multiply(c, c, i) + this.Square(c, c) + this.Multiply(c, c, i) out.set(c, 0) }