static GEN _powpolmodsimple(Cache *C, Red *R, GEN jac) { pari_sp av = avma; GEN w = mulmat_pol(C->matvite, jac); long j, ph = lg(w); R->red = &_redsimple; for (j=1; j<ph; j++) gel(w,j) = _powpolmod(C, centermodii(gel(w,j), R->N, R->N2), R, &sqrmod); w = centermod_i( gmul(C->matinvvite, w), R->N, R->N2 ); w = gerepileupto(av, w); return RgV_to_RgX(w, 0); }
/* return a minimal lift of elt modulo id */ static GEN nf_bestlift(GEN elt, GEN bound, nflift_t *L) { GEN u; long i,l = lg(L->prk), t = typ(elt); if (t != t_INT) { if (t == t_POL) elt = mulmat_pol(L->tozk, elt); u = gmul(L->iprk,elt); for (i=1; i<l; i++) gel(u,i) = diviiround(gel(u,i), L->den); } else { u = gmul(elt, gel(L->iprk,1)); for (i=1; i<l; i++) gel(u,i) = diviiround(gel(u,i), L->den); elt = gscalcol(elt, l-1); } u = gsub(elt, gmul(L->prk, u)); if (bound && gcmp(QuickNormL2(u,DEFAULTPREC), bound) > 0) u = NULL; return u; }