@@ -11,6 +11,9 @@ from flint.flintlib.types.fmpz cimport (
1111from flint.flintlib.types.fmpq cimport (
1212 fmpq_poly_t,
1313)
14+ from flint.flintlib.types.mpoly cimport (
15+ ordering_t,
16+ )
1417from flint.flintlib.functions.ulong_extras cimport (
1518 n_is_prime,
1619)
@@ -26,6 +29,7 @@ from flint.flintlib.functions.fmpq_poly cimport (
2629 fmpq_poly_set,
2730)
2831
32+
2933from flint.flintlib.types.gr cimport (
3034 truth_t,
3135 T_TRUE,
@@ -44,6 +48,7 @@ from flint.flintlib.functions.gr_domains cimport (
4448 gr_ctx_init_fmpz,
4549 gr_ctx_init_fmpq,
4650 gr_ctx_init_fmpzi,
51+ gr_ctx_init_fexpr,
4752
4853 gr_ctx_init_nmod,
4954 gr_ctx_init_fmpz_mod,
@@ -71,8 +76,12 @@ from flint.flintlib.functions.gr_domains cimport (
7176
7277 gr_ctx_init_real_arb,
7378 gr_ctx_init_complex_acb,
74- gr_ctx_init_fexpr,
7579
80+ gr_ctx_init_gr_poly,
81+ gr_ctx_init_gr_mpoly,
82+ gr_ctx_init_fmpz_mpoly_q,
83+ # gr_ctx_init_series_mod_gr_poly,
84+ gr_ctx_init_gr_series,
7685)
7786from flint.flintlib.functions.gr cimport (
7887 gr_heap_init,
@@ -150,7 +159,12 @@ from flint.flintlib.functions.gr_vec cimport (
150159 gr_vec_entry_ptr,
151160)
152161
153- from flint.flint_base.flint_base cimport flint_ctx, flint_scalar
162+ from flint.flint_base.flint_base cimport (
163+ flint_ctx,
164+ flint_scalar,
165+ Ordering,
166+ ordering_py_to_c,
167+ )
154168
155169from flint.types.fmpz cimport fmpz
156170from flint.types.fmpz_poly cimport fmpz_poly
@@ -314,7 +328,7 @@ cdef class gr_ctx(flint_ctx):
314328 return res
315329
316330 @cython.final
317- cdef inline _gens(self ):
331+ cdef inline list _gens(self ):
318332 cdef int err
319333 cdef gr g
320334 cdef gr_vec_t gens
@@ -334,7 +348,7 @@ cdef class gr_ctx(flint_ctx):
334348 return py_gens
335349
336350 @cython.final
337- cdef inline gr _gens_recursive(self ):
351+ cdef inline list _gens_recursive(self ):
338352 cdef int err
339353 cdef gr g
340354 cdef gr_vec_t gens
@@ -749,6 +763,90 @@ cdef class gr_complex_acb_ctx(gr_scalar_ctx):
749763# cdef _gr_gr_poly_ctx _new()
750764
751765
766+ @cython.no_gc
767+ cdef class gr_gr_poly_ctx(gr_poly_ctx):
768+ cdef gr_ctx base_ctx
769+
770+ @staticmethod
771+ cdef inline gr_gr_poly_ctx _new(gr_ctx base_ctx):
772+ cdef gr_gr_poly_ctx ctx
773+ ctx = gr_gr_poly_ctx.__new__ (gr_gr_poly_ctx)
774+ gr_ctx_init_gr_poly(ctx.ctx_t, base_ctx.ctx_t)
775+ ctx._init = True
776+ ctx.base_ctx = base_ctx
777+ return ctx
778+
779+
780+ @cython.no_gc
781+ cdef class gr_gr_mpoly_ctx(gr_mpoly_ctx):
782+ cdef gr_ctx base_ctx
783+ cdef ordering_t _order
784+ cdef slong _nvars
785+
786+ @staticmethod
787+ cdef inline gr_gr_mpoly_ctx _new(gr_ctx base_ctx, slong nvars, Ordering order):
788+ cdef gr_gr_mpoly_ctx ctx
789+ cdef ordering_t ord_c
790+ ord_c = ordering_py_to_c(order)
791+ ctx = gr_gr_mpoly_ctx.__new__ (gr_gr_mpoly_ctx)
792+ gr_ctx_init_gr_mpoly(ctx.ctx_t, base_ctx.ctx_t, nvars, ord_c)
793+ ctx._init = True
794+ ctx.base_ctx = base_ctx
795+ ctx._order = ord_c
796+ ctx._nvars = nvars
797+ return ctx
798+
799+
800+ # @cython.no_gc
801+ # cdef class gr_fmpz_mpoly_q_ctx(gr_mpoly_ctx):
802+ # cdef ordering_t _order
803+ # cdef slong _nvars
804+ #
805+ # @staticmethod
806+ # cdef inline gr_fmpz_mpoly_q_ctx _new(slong nvars, Ordering order):
807+ # cdef gr_fmpz_mpoly_q_ctx ctx
808+ # cdef ordering_t ord_c
809+ # ord_c = ordering_py_to_c(order)
810+ # ctx = gr_fmpz_mpoly_q_ctx.__new__(gr_fmpz_mpoly_q_ctx)
811+ # gr_ctx_init_fmpz_mpoly_q(ctx.ctx_t, nvars, ord_c)
812+ # ctx._init = True
813+ # ctx._order = ord_c
814+ # ctx._nvars = nvars
815+ # return ctx
816+
817+
818+ # @cython.no_gc
819+ # cdef class gr_series_mod_gr_poly_ctx(gr_ctx):
820+ # cdef gr_ctx base_ctx
821+ # cdef slong _n
822+ #
823+ # @staticmethod
824+ # cdef inline gr_series_mod_gr_poly_ctx _new(gr_ctx base_ctx, slong n):
825+ # cdef gr_series_mod_gr_poly_ctx ctx
826+ # ctx = gr_series_mod_gr_poly_ctx.__new__(gr_series_mod_gr_poly_ctx)
827+ # gr_ctx_init_series_mod_gr_poly(ctx.ctx_t, base_ctx.ctx_t, n)
828+ # ctx._init = True
829+ # ctx.base_ctx = base_ctx
830+ # ctx._n = n
831+ # return ctx
832+
833+
834+ @cython.no_gc
835+ cdef class gr_series_ctx(gr_ctx):
836+ cdef gr_ctx base_ctx
837+ cdef slong _prec
838+
839+ @staticmethod
840+ cdef inline gr_series_ctx _new(gr_ctx base_ctx, slong prec):
841+ cdef gr_series_ctx ctx
842+ ctx = gr_series_ctx.__new__ (gr_series_ctx)
843+ gr_ctx_init_gr_series(ctx.ctx_t, base_ctx.ctx_t, prec)
844+ ctx._init = True
845+ ctx.base_ctx = base_ctx
846+ ctx._prec = prec
847+ return ctx
848+
849+
752850@cython.no_gc
753851cdef class gr(flint_scalar):
754852 cdef gr_ptr pval
0 commit comments