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