Function add [src]

Return x+y (mod L)

Prototype

pub fn add(x: Scalar, y: Scalar) Scalar

Parameters

x: Scalary: Scalar

Source

pub fn add(x: Scalar, y: Scalar) Scalar { const carry0 = (x.limbs[0] + y.limbs[0]) >> 56; const t0 = (x.limbs[0] + y.limbs[0]) & 0xffffffffffffff; const t00 = t0; const c0 = carry0; const carry1 = (x.limbs[1] + y.limbs[1] + c0) >> 56; const t1 = (x.limbs[1] + y.limbs[1] + c0) & 0xffffffffffffff; const t10 = t1; const c1 = carry1; const carry2 = (x.limbs[2] + y.limbs[2] + c1) >> 56; const t2 = (x.limbs[2] + y.limbs[2] + c1) & 0xffffffffffffff; const t20 = t2; const c2 = carry2; const carry = (x.limbs[3] + y.limbs[3] + c2) >> 56; const t3 = (x.limbs[3] + y.limbs[3] + c2) & 0xffffffffffffff; const t30 = t3; const c3 = carry; const t4 = x.limbs[4] + y.limbs[4] + c3; const y01: u64 = 5175514460705773; const y11: u64 = 70332060721272408; const y21: u64 = 5342; const y31: u64 = 0; const y41: u64 = 268435456; const b5 = (t00 -% y01) >> 63; const t5 = ((b5 << 56) + t00) -% y01; const b0 = b5; const t01 = t5; const b6 = (t10 -% (y11 + b0)) >> 63; const t6 = ((b6 << 56) + t10) -% (y11 + b0); const b1 = b6; const t11 = t6; const b7 = (t20 -% (y21 + b1)) >> 63; const t7 = ((b7 << 56) + t20) -% (y21 + b1); const b2 = b7; const t21 = t7; const b8 = (t30 -% (y31 + b2)) >> 63; const t8 = ((b8 << 56) + t30) -% (y31 + b2); const b3 = b8; const t31 = t8; const b = (t4 -% (y41 + b3)) >> 63; const t = ((b << 56) + t4) -% (y41 + b3); const b4 = b; const t41 = t; const mask = (b4 -% 1); const z00 = t00 ^ (mask & (t00 ^ t01)); const z10 = t10 ^ (mask & (t10 ^ t11)); const z20 = t20 ^ (mask & (t20 ^ t21)); const z30 = t30 ^ (mask & (t30 ^ t31)); const z40 = t4 ^ (mask & (t4 ^ t41)); return Scalar{ .limbs = .{ z00, z10, z20, z30, z40 } }; }