powByTMinus1Over2 method

  1. @override
PallasFp powByTMinus1Over2()
override

Computes (self)^((t - 1)/2), used in curve-specific operations.

Implementation

@override
PallasFp powByTMinus1Over2() {
  PallasFp sqr(PallasFp x, int i) {
    PallasFp res = x;
    for (int j = 0; j < i; j++) {
      res = res.square();
    }
    return res;
  }

  final r10 = square();
  final r11 = r10 * this;
  final r110 = r11.square();
  final r111 = r110 * this;
  final r1001 = r111 * r10;
  final r1101 = r111 * r110;
  final ra = sqr(this, 129) * this;
  final rb = sqr(ra, 7) * r1001;
  final rc = sqr(rb, 7) * r1101;
  final rd = sqr(rc, 4) * r11;
  final re = sqr(rd, 6) * r111;
  final rf = sqr(re, 3) * r111;
  final rg = sqr(rf, 10) * r1001;
  final rh = sqr(rg, 5) * r1001;
  final ri = sqr(rh, 4) * r1001;
  final rj = sqr(ri, 3) * r111;
  final rk = sqr(rj, 4) * r1001;
  final rl = sqr(rk, 5) * r11;
  final rm = sqr(rl, 4) * r111;
  final rn = sqr(rm, 4) * r11;
  final ro = sqr(rn, 6) * r1001;
  final rp = sqr(ro, 5) * r1101;
  final rq = sqr(rp, 4) * r11;
  final rr = sqr(rq, 7) * r111;
  final rs = sqr(rr, 3) * r11;
  return rs.square();
}