add method

VestaFq add(
  1. VestaFq rhs
)

Implementation

VestaFq add(VestaFq rhs) {
  // Step 1: add limbs with carry
  var a0 = BigintUtils.adc(limbs[0], rhs.limbs[0], BigInt.zero);
  var d0 = a0[0];
  var carry = a0[1];

  var a1 = BigintUtils.adc(limbs[1], rhs.limbs[1], carry);
  var d1 = a1[0];
  carry = a1[1];

  var a2 = BigintUtils.adc(limbs[2], rhs.limbs[2], carry);
  var d2 = a2[0];
  carry = a2[1];

  var a3 = BigintUtils.adc(limbs[3], rhs.limbs[3], carry);
  var d3 = a3[0];
  // final carry ignored

  // Step 2: reduce modulo modulus if necessary
  return VestaFq([d0, d1, d2, d3]).sub(VestaFQConst.modulus);
}