secp256k1GeSetAllGej static method
Implementation
static void secp256k1GeSetAllGej(
List<Secp256k1Ge> r, List<Secp256k1Gej> a, int len) {
Secp256k1Fe u = Secp256k1Fe();
int i;
for (i = 0; i < len; i++) {
_cond(secp256k1GejIsInfinity(a[i]) == 0, "secp256k1GeSetAllGej");
}
if (len == 0) {
return;
}
/// Use destination's x coordinates as scratch space
r[0].x = a[0].z.clone();
for (i = 1; i < len; i++) {
secp256k1FeMul(r[i].x, r[i - 1].x, a[i].z);
}
secp256k1FeInv(u, r[len - 1].x);
for (i = len - 1; i > 0; i--) {
secp256k1FeMul(r[i].x, r[i - 1].x, u);
secp256k1FeMul(u, u, a[i].z);
}
r[0].x = u.clone();
for (i = 0; i < len; i++) {
secp256k1GeSetGejZinv(r[i], a[i], r[i].x);
}
}