sqrtAlt method

FieldSqrtResult<F> sqrtAlt(
  1. F u
)

Returns (isSquare, sqrtValue)

Implementation

FieldSqrtResult<F> sqrtAlt(F u) {
  final v = u.powByTMinus1Over2();
  final uv = u * v;
  final res = sqrtCommon(uv, v);
  final sq = res.square();
  final isSquare = (sq - u).isZero();
  final isNonSquare = (sq - rootOfUnity * u).isZero();
  // Sanity check (optional, only for debug)
  assert(u.isZero() || (isSquare ^ isNonSquare));
  return FieldSqrtResult(res, isSquare);
}