- {
- mpmont mm;
-
- mpmont_create(&mm, q);
- rr = mp_sub(rr, q, MP_TWO);
- rr = mpmont_exp(&mm, rr, s, rr);
- mpmont_destroy(&mm);
- rr = mp_mul(rr, rr, s);
- rr = mp_lsl(rr, rr, 1);
- rr = mp_sub(rr, rr, MP_ONE);
- }
+ rr = mp_modinv(rr, s, q);
+ rr = mp_mul(rr, rr, s);
+ rr = mp_lsl(rr, rr, 1);
+ rr = mp_sub(rr, rr, MP_ONE);