628{
629
630 int ret = 1;
631 fq_nmod_ctx_t ctx;
634 fmpz_set_si(
p, charac);
635 if (!find_random_if_no_conway_poly_available)
636 ret = _fq_nmod_ctx_init_conway(ctx,
p, deg,
"a");
637 else
638 fq_nmod_ctx_init(ctx,
p, deg,
"a");
639
640 if (ret == 0) return false;
641
642 result_poly.resize(deg + 1);
643 for (long i = 0; i <= deg; i++) result_poly[i] = 0;
644 for (long i = 0; i < ctx->len; i++)
645 {
646 if (ctx->j[i] < 0 or ctx->j[i] > deg)
647 printf("error: encountered bad degree\n");
648
649
650 result_poly[ctx->j[i]] = ctx->a[i];
651 }
652
653
654
655
656 fq_nmod_ctx_clear(ctx);
657 return true;
658}