use dlog_once in conrey_log (instead of bsgs)

This commit is contained in:
Pascal 2016-09-09 12:38:22 +02:00
parent 0c25431cdf
commit 32cb8c9db0

View file

@ -19,7 +19,7 @@
void void
acb_dirichlet_conrey_log(acb_dirichlet_conrey_t x, const acb_dirichlet_group_t G, ulong m) acb_dirichlet_conrey_log(acb_dirichlet_conrey_t x, const acb_dirichlet_group_t G, ulong m)
{ {
ulong k, pk, gk; slong k;
/* even part */ /* even part */
if (G->neven >= 1) if (G->neven >= 1)
{ {
@ -37,15 +37,14 @@ acb_dirichlet_conrey_log(acb_dirichlet_conrey_t x, const acb_dirichlet_group_t G
/* odd part */ /* odd part */
for (k = G->neven; k < G->num; k++) for (k = G->neven; k < G->num; k++)
{ {
if (G->P[k].dlog == NULL) acb_dirichlet_prime_group_struct P = G->P[k];
if (P.dlog == NULL)
{ {
pk = G->P[k].pe.n; x->log[k] = dlog_once(m % P.pe.n, P.g, P.pe, P.phi);
gk = G->P[k].g;
x->log[k] = n_discrete_log_bsgs(m % pk, gk, pk);
} }
else else
{ {
x->log[k] = dlog_precomp(G->P[k].dlog, m % G->P[k].pe.n); x->log[k] = dlog_precomp(P.dlog, m % P.pe.n);
} }
} }
/* keep value m */ /* keep value m */