neg method

JubJubFr neg()

Implementation

JubJubFr neg() {
  // Compute modulus - self
  List<BigInt> t = BigintUtils.sbb(
    JubJubFrConst.modulus.limbs[0],
    limbs[0],
    BigInt.zero,
  );
  BigInt d0 = t[0];
  BigInt borrow = t[1];

  t = BigintUtils.sbb(JubJubFrConst.modulus.limbs[1], limbs[1], borrow);
  BigInt d1 = t[0];
  borrow = t[1];

  t = BigintUtils.sbb(JubJubFrConst.modulus.limbs[2], limbs[2], borrow);
  BigInt d2 = t[0];
  borrow = t[1];

  t = BigintUtils.sbb(JubJubFrConst.modulus.limbs[3], limbs[3], borrow);
  BigInt d3 = t[0];
  final oRed = limbs[0] | limbs[1] | limbs[2] | limbs[3];
  final isZero = oRed == BigInt.zero;
  final mask = isZero ? BigInt.zero : BinaryOps.maskBig64;
  return JubJubFr([d0 & mask, d1 & mask, d2 & mask, d3 & mask]);
}