add method
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);
}