- z = F_INV(f, MP_NEW, p->z);
- zz = F_SQR(f, MP_NEW, z);
- z = F_MUL(f, z, zz, z);
- x = F_MUL(f, d->x, p->x, zz);
- y = F_MUL(f, d->y, p->y, z);
- mp_drop(z);
- mp_drop(zz);
+ if (p->z == f->one) {
+ d->x = F_OUT(f, d->x, p->x);
+ d->y = F_OUT(f, d->y, p->y);
+ } else {
+ z = F_INV(f, MP_NEW, p->z);
+ zz = F_SQR(f, MP_NEW, z);
+ z = F_MUL(f, z, zz, z);
+ x = F_MUL(f, d->x, p->x, zz);
+ y = F_MUL(f, d->y, p->y, z);
+ mp_drop(z);
+ mp_drop(zz);
+ d->x = F_OUT(f, x, x);
+ d->y = F_OUT(f, y, y);
+ }