Function cSwap2 [src]

Conditionally swap two pairs of field elements if c is positive

Prototype

pub fn cSwap2(a0: *Fe, b0: *Fe, a1: *Fe, b1: *Fe, c: u64) void

Parameters

a0: *Feb0: *Fea1: *Feb1: *Fec: u64

Source

pub fn cSwap2(a0: *Fe, b0: *Fe, a1: *Fe, b1: *Fe, c: u64) void { const mask: u64 = 0 -% c; var x0 = a0.*; var x1 = a1.*; comptime var i = 0; inline while (i < 5) : (i += 1) { x0.limbs[i] ^= b0.limbs[i]; x1.limbs[i] ^= b1.limbs[i]; } i = 0; inline while (i < 5) : (i += 1) { x0.limbs[i] &= mask; x1.limbs[i] &= mask; } i = 0; inline while (i < 5) : (i += 1) { a0.limbs[i] ^= x0.limbs[i]; b0.limbs[i] ^= x0.limbs[i]; a1.limbs[i] ^= x1.limbs[i]; b1.limbs[i] ^= x1.limbs[i]; } }