mp *r, *A, *aa;
mp *t;
grand *gr;
+ int j;
/* --- Cope if %$a \not\in Q_p$% --- */
- if (mp_jacobi(a, p) != 1) {
+ j = mp_jacobi(a, p);
+ if (j == -1) {
mp_drop(d);
return (0);
+ } else if (j == 0) {
+ if (d != a) mp_drop(d);
+ d = MP_COPY(a);
+ return (d);
}
/* --- Choose some quadratic non-residue --- */