From 7f18e68fb5dad034f4019bcce212a63254b86fa9 Mon Sep 17 00:00:00 2001 From: Hans Schoenemann Date: Fri, 14 Jun 2024 12:07:55 +0200 Subject: [PATCH] only set_option(string,bool,ring) --- deps/src/caller.cpp | 13 +-- deps/src/coeffs.cpp | 5 +- deps/src/ideals.cpp | 222 ++++++++++++++++--------------------- deps/src/ideals.h | 1 - deps/src/rings.cpp | 35 +++--- deps/src/singular.cpp | 16 +-- test/ideal/freealg-test.jl | 2 +- 7 files changed, 128 insertions(+), 166 deletions(-) diff --git a/deps/src/caller.cpp b/deps/src/caller.cpp index 38cfe35cb..f99f984f4 100644 --- a/deps/src/caller.cpp +++ b/deps/src/caller.cpp @@ -1,5 +1,4 @@ #include "caller.h" -#include "ideals.h" #include #include @@ -253,7 +252,7 @@ jl_value_t * get_julia_type_from_sleftv(leftv ret) jl_value_t * get_ring_content(ring r) { ring save = currRing; - rChangeCurrRing_wo_options(r); + rChangeCurrRing(r); // count elements idhdl h = r->idroot; @@ -284,7 +283,7 @@ jl_value_t * get_ring_content(ring r) nr++; } JL_GC_POP(); - rChangeCurrRing_wo_options(save); + rChangeCurrRing(save); return reinterpret_cast(result); } @@ -410,9 +409,9 @@ jl_value_t * convert_nested_list(void * l_void) void * create_syStrategy_data(syStrategy res, ring o) { const ring origin = currRing; - rChangeCurrRing_wo_options(o); + rChangeCurrRing(o); syStrategy temp = syCopy(res); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return reinterpret_cast(temp); } @@ -490,9 +489,9 @@ void singular_define_caller(jlcxx::Module & Singular) Singular.method("jl_array_to_void", [](jl_value_t * args_val, jl_value_t * types_val, ring R) { auto origin = currRing; - rChangeCurrRing_wo_options(R); + rChangeCurrRing(R); lists l = jl_array_to_list_helper(args_val, types_val); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return (void *)l; }); diff --git a/deps/src/coeffs.cpp b/deps/src/coeffs.cpp index a238d7410..2fd489e8e 100644 --- a/deps/src/coeffs.cpp +++ b/deps/src/coeffs.cpp @@ -1,5 +1,4 @@ #include "coeffs.h" -#include "ideals.h" auto transExt_helper(coeffs cf, jlcxx::ArrayRef param) { @@ -27,9 +26,9 @@ poly transExt_to_poly(number a, coeffs cf, ring r) ring ext = cf->extRing; nMapFunc nMap = n_SetMap(ext->cf, r->cf); const ring origin = currRing; - rChangeCurrRing_wo_options(r); + rChangeCurrRing(r); poly p = p_PermPoly(NUM((fraction)a), NULL, ext, r, nMap, NULL); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return p; } diff --git a/deps/src/ideals.cpp b/deps/src/ideals.cpp index b1af987ab..00f084b3b 100644 --- a/deps/src/ideals.cpp +++ b/deps/src/ideals.cpp @@ -1,45 +1,11 @@ #include "ideals.h" -unsigned si_no_ring_opt; -void rChangeCurrRing_wo_options(ring R) -{ -#define RING_OPTS (Sy_bit(OPT_REDTAIL) | Sy_bit(OPT_REDTAIL_SYZ)|Sy_bit(OPT_INTSTRATEGY)) - unsigned save_opts=si_opt_1; // save options - if (currRing==NULL) - si_no_ring_opt=si_opt_1; - rChangeCurrRing(R); - si_opt_1 =save_opts; - if (R!=NULL) - { - if (rField_is_Ring(R) - || rField_is_Q(R) - || (R->cf->extRing!=NULL) - ) - si_opt_1 |= Sy_bit(OPT_INTSTRATEGY); - else - si_opt_1 &= ~Sy_bit(OPT_INTSTRATEGY); - if (R->OrdSgn == -1) - { - si_opt_1 &= ~Sy_bit(OPT_REDTAIL); - si_opt_1 &= ~Sy_bit(OPT_REDTHROUGH); - } - else - { - si_opt_1 |= Sy_bit(OPT_REDTHROUGH); - } - } - else - { - si_opt_1=si_no_ring_opt; - } -} - auto id_sres_helper(sip_sideal * m, int n, ring R) { auto origin = currRing; - rChangeCurrRing_wo_options(R); + rChangeCurrRing(R); syStrategy s = sySchreyer(m, n); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); auto r = s->minres; bool minimal = true; if (r == NULL) @@ -61,9 +27,9 @@ auto qring_simplify_helper(poly p, ring R) auto id_fres_helper(sip_sideal * I, int n, std::string method, ring R) { auto origin = currRing; - rChangeCurrRing_wo_options(R); + rChangeCurrRing(R); syStrategy s = syFrank(I, n, method.c_str()); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); auto r = s->minres; bool minimal = true; if (r == NULL) @@ -77,9 +43,9 @@ auto id_fres_helper(sip_sideal * I, int n, std::string method, ring R) auto id_res_helper(sip_sideal * I, int n, int minimize, ring R) { auto origin = currRing; - rChangeCurrRing_wo_options(R); + rChangeCurrRing(R); syStrategy s = syResolution(I, n, NULL, (BOOLEAN)minimize); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); auto r = s->minres; bool minimal = true; if (r == NULL) @@ -101,11 +67,11 @@ auto id_res_helper(sip_sideal * I, int n, int minimize, ring R) auto id_mres_map_helper(sip_sideal * I, int n, ring R) { auto origin = currRing; - rChangeCurrRing_wo_options(R); + rChangeCurrRing(R); ideal T; syStrategy s = syMres_with_map(I, n, NULL, T); matrix TT = id_Module2Matrix(T, currRing); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); auto r = s->minres; bool minimal = true; if (r == NULL) @@ -126,18 +92,18 @@ auto id_mres_map_helper(sip_sideal * I, int n, ring R) auto id_prune_map_helper(sip_sideal * I, ring R) { auto origin = currRing; - rChangeCurrRing_wo_options(R); + rChangeCurrRing(R); ideal T; ideal s = idMinEmbedding_with_map(I, NULL, T); matrix TT = id_Module2Matrix(T, currRing); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return std::make_tuple(s, TT); } auto id_prune_map_v_helper(sip_sideal * I, jlcxx::ArrayRef a, ring R) { auto origin = currRing; - rChangeCurrRing_wo_options(R); + rChangeCurrRing(R); ideal T; int *v = (int *)omAlloc(I->rank*sizeof(int)); ideal s = idMinEmbedding_with_map_v(I, NULL, T, v); @@ -145,7 +111,7 @@ auto id_prune_map_v_helper(sip_sideal * I, jlcxx::ArrayRef a, ring R) a.push_back(v[j]); omFreeSize(v,I->rank*sizeof(int)); matrix TT = id_Module2Matrix(T, currRing); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return std::make_tuple(s, TT); } @@ -155,9 +121,9 @@ ideal id_Syzygies_internal(ideal m, ring o) intvec * n = NULL; tHomog h = testHomog; const ring origin = currRing; - rChangeCurrRing_wo_options(o); + rChangeCurrRing(o); id = idSyzygies(m, h, &n); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); if (n != NULL) delete n; return id; @@ -179,10 +145,10 @@ auto id_Slimgb_helper(ideal a, ring b, bool complete_reduction = false) const ring origin = currRing; unsigned int save_opt = si_opt_1; si_opt_1 |= crbit; - rChangeCurrRing_wo_options(b); + rChangeCurrRing(b); id = t_rep_gb(b, a, a->rank); - rChangeCurrRing_wo_options(origin); si_opt_1 = save_opt; + rChangeCurrRing(origin); if (n != NULL) delete n; } @@ -197,9 +163,9 @@ auto id_InterRed_helper(ideal a, ring b) if (!idIs0(a)) { const ring origin = currRing; - rChangeCurrRing_wo_options(b); + rChangeCurrRing(b); id = kInterRed(a, b->qideal); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); } else id = idInit(0, a->rank); @@ -222,10 +188,10 @@ auto id_Std_helper(ideal a, ring b, bool complete_reduction = false) const ring origin = currRing; unsigned int save_opt = si_opt_1; si_opt_1 |= crbit; - rChangeCurrRing_wo_options(b); + rChangeCurrRing(b); id = kStd(a, b->qideal, h, &n); - rChangeCurrRing_wo_options(origin); si_opt_1 = save_opt; + rChangeCurrRing(origin); if (n != NULL) delete n; } @@ -242,14 +208,14 @@ auto id_StdHC_helper(ideal a, poly HC, ring b) intvec * n = NULL; tHomog h = testHomog; const ring origin = currRing; + rChangeCurrRing(b); p_Delete(&(b->ppNoether),b); poly NN=p_Copy(HC,b); p_IncrExp(NN,b->N,b); p_Setm(NN,b); - rChangeCurrRing_wo_options(b); b->ppNoether=NN; id = kStd(a, b->qideal, h, &n); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); if (n != NULL) delete n; p_Delete(&(b->ppNoether),b); @@ -273,10 +239,10 @@ auto id_MinStd_helper(ideal a, ring b, bool complete_reduction = false) const ring origin = currRing; unsigned int save_opt = si_opt_1; si_opt_1 |= crbit; - rChangeCurrRing_wo_options(b); + rChangeCurrRing(b); id = kMin_std(a, b->qideal, h, NULL, m); - rChangeCurrRing_wo_options(origin); si_opt_1 = save_opt; + rChangeCurrRing(origin); return std::make_tuple(id, m); } @@ -310,10 +276,10 @@ auto id_StdHilb_helper(ideal a, const ring origin = currRing; unsigned int save_opt = si_opt_1; si_opt_1 |= crbit; - rChangeCurrRing_wo_options(b); + rChangeCurrRing(b); id = kStd(a, b->qideal, h, &n, hilb); - rChangeCurrRing_wo_options(origin); si_opt_1 = save_opt; + rChangeCurrRing(origin); if (n != NULL) delete n; } @@ -345,14 +311,14 @@ auto id_StdHilbWeighted_helper(ideal a, const ring origin = currRing; unsigned int save_opt = si_opt_1; si_opt_1 |= crbit; - rChangeCurrRing_wo_options(b); + rChangeCurrRing(b); id = kStd(a, currRing->qideal, h, &n, // module weights hilb, // hilbert series 0, 0, // syzComp, newIdeal varweights); // weights of vars - rChangeCurrRing_wo_options(origin); si_opt_1 = save_opt; + rChangeCurrRing(origin); if (n != NULL) delete n; } @@ -366,9 +332,9 @@ auto id_StdHilbWeighted_helper(ideal a, auto id_TwoStd_helper(ideal a, ring b) { const ring origin = currRing; - rChangeCurrRing_wo_options(b); + rChangeCurrRing(b); ideal id = twostd(a); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return id; } @@ -448,25 +414,25 @@ void singular_define_ideals(jlcxx::Module & Singular) Singular.method("id_Quotient", [](ideal a, ideal b, bool c, ring d) { const ring origin = currRing; - rChangeCurrRing_wo_options(d); + rChangeCurrRing(d); ideal id = idQuot(a, b, c, TRUE); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return id; }); Singular.method("id_Intersection", [](ideal a, ideal b, ring c) { const ring origin = currRing; - rChangeCurrRing_wo_options(c); + rChangeCurrRing(c); ideal id = idSect(a, b); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return id; }); Singular.method("id_MultSect", [](void * ids, int len, ring r) { const ring origin = currRing; - rChangeCurrRing_wo_options(r); + rChangeCurrRing(r); ideal id = idMultSect(reinterpret_cast(ids), len); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return id; }); @@ -494,75 +460,75 @@ void singular_define_ideals(jlcxx::Module & Singular) Singular.method("id_Eliminate", [](ideal m, poly p, ring o) { const ring origin = currRing; - rChangeCurrRing_wo_options(o); + rChangeCurrRing(o); ideal res = idElimination(m, p); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return res; }); Singular.method("id_DivRem", [](ideal m, ideal sm, ring o) { const ring origin = currRing; - rChangeCurrRing_wo_options(o); + rChangeCurrRing(o); ideal factors; ideal res = idDivRem(sm, m, factors, NULL); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return std::make_tuple(res, factors); }); Singular.method("id_DivRem", [](ideal m, ideal sm, ring o, int flag) { const ring origin = currRing; - rChangeCurrRing_wo_options(o); + rChangeCurrRing(o); ideal factors; ideal res = idDivRem(sm, m, factors, NULL, flag); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return std::make_tuple(res, factors); }); Singular.method("id_DivRem_Unit", [](ideal m, ideal sm, ring o) { const ring origin = currRing; - rChangeCurrRing_wo_options(o); + rChangeCurrRing(o); ideal factors; ideal unit; ideal res = idDivRem(sm, m, factors, &unit); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return std::make_tuple(res, factors, unit); }); Singular.method("id_DivRem_Unit", [](ideal m, ideal sm, ring o, int flag) { const ring origin = currRing; - rChangeCurrRing_wo_options(o); + rChangeCurrRing(o); ideal factors; ideal unit; ideal rest = idDivRem(m, sm, factors, &unit, flag); rest->rank = m->rank; - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return std::make_tuple(rest,factors, unit); }); Singular.method("id_Lift", [](ideal m, ideal sm, ring o) { const ring origin = currRing; - rChangeCurrRing_wo_options(o); + rChangeCurrRing(o); ideal rest; ideal res = idLift(m, sm, &rest, FALSE, FALSE); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return std::make_tuple(res, rest); }); Singular.method("id_Lift", [](ideal m, ideal sm, bool goodShape, bool isSB, bool divide, ring o) { const ring origin = currRing; - rChangeCurrRing_wo_options(o); + rChangeCurrRing(o); ideal rest; matrix unit; ideal res = idLift(m, sm, &rest, BOOLEAN(goodShape), BOOLEAN(isSB), BOOLEAN(divide), &unit, GbDefault); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return std::make_tuple(res, rest, unit); }); Singular.method("id_LiftStd", [](ideal m, ring o, bool complete_reduction = false) { const ring origin = currRing; - rChangeCurrRing_wo_options(o); + rChangeCurrRing(o); matrix ma = mpNew(1, 1); unsigned int crbit; if (complete_reduction) @@ -573,13 +539,13 @@ void singular_define_ideals(jlcxx::Module & Singular) si_opt_1 |= crbit; ideal res = idLiftStd(m, &ma, testHomog, NULL); si_opt_1 = save_opt; - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return std::make_tuple(res, ma); }); Singular.method("id_LiftStdSyz", [](ideal m, ring o, bool complete_reduction = false) { const ring origin = currRing; - rChangeCurrRing_wo_options(o); + rChangeCurrRing(o); matrix ma = mpNew(1, 1); ideal syz = idInit(1, 1); unsigned int crbit; @@ -592,15 +558,15 @@ void singular_define_ideals(jlcxx::Module & Singular) ideal res = idLiftStd(m, &ma, testHomog, &syz); si_opt_1 = save_opt; - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return std::make_tuple(res, ma, syz); }); Singular.method("id_Modulo", [](ideal a, ideal b, ring o) { const ring origin = currRing; - rChangeCurrRing_wo_options(o); + rChangeCurrRing(o); ideal res = idModulo(a, b, testHomog); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return res; }); @@ -608,10 +574,10 @@ void singular_define_ideals(jlcxx::Module & Singular) Singular.method("id_Saturation", [](ideal I, ideal J, ring r) { const ring origin = currRing; - rChangeCurrRing_wo_options(r); + rChangeCurrRing(r); int d; ideal res = idSaturate(I, J, d, TRUE); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return std::make_tuple(res, d); }); @@ -639,56 +605,56 @@ void singular_define_ideals(jlcxx::Module & Singular) Singular.method("id_vdim", [](ideal I, ring r) { const ring origin = currRing; - rChangeCurrRing_wo_options(r); + rChangeCurrRing(r); int n = scMult0Int(I, r->qideal); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return n; }); Singular.method("id_kbase", [](ideal I, ring r) { ideal res; const ring origin = currRing; - rChangeCurrRing_wo_options(r); + rChangeCurrRing(r); res = scKBase(-1, I, r->qideal); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return res; }); Singular.method("id_kbase", [](ideal I, int n, ring r) { ideal res; const ring origin = currRing; - rChangeCurrRing_wo_options(r); + rChangeCurrRing(r); res = scKBase(n, I, r->qideal); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return res; }); Singular.method("id_highcorner", [](ideal I, ring r) { poly h; const ring origin = currRing; - rChangeCurrRing_wo_options(r); + rChangeCurrRing(r); h = iiHighCorner(I, 0); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return h; }); Singular.method("maMapIdeal", [](ideal map_id, ring pr, ideal im_id, ring im, void * cf_map) { const ring origin = currRing; - rChangeCurrRing_wo_options(pr); + rChangeCurrRing(pr); ideal I = maMapIdeal(map_id, pr, im_id, im, reinterpret_cast(cf_map)); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return I; }); Singular.method("idMinBase", [](ideal I, ring r) { const ring origin = currRing; - rChangeCurrRing_wo_options(r); + rChangeCurrRing(r); ideal J = idMinBase(I); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return J; }); Singular.method("scIndIndset", [](ideal I, ring r, jlcxx::ArrayRef a, bool all) { const ring origin = currRing; - rChangeCurrRing_wo_options(r); + rChangeCurrRing(r); lists L = scIndIndset(I, all, r->qideal); int n = rVar(r); int m = lSize(L); @@ -713,23 +679,23 @@ void singular_define_ideals(jlcxx::Module & Singular) a.push_back(content[j]); } } - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); }); Singular.method("scDegree", [](ideal I, ring R) { const ring origin = currRing; - rChangeCurrRing_wo_options(R); + rChangeCurrRing(R); SPrintStart(); scDegree(I, NULL, R->qideal); char * s = SPrintEnd(); s[strlen(s) - 1] = '\0'; std::string res(s); omFree(s); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return res; }); Singular.method("scDegree", [](ideal I, ring R, jlcxx::ArrayRef w) { const ring origin = currRing; - rChangeCurrRing_wo_options(R); + rChangeCurrRing(R); intvec * module_w = to_intvec(w); SPrintStart(); scDegree(I, module_w, R->qideal); @@ -738,41 +704,41 @@ void singular_define_ideals(jlcxx::Module & Singular) s[strlen(s) - 1] = '\0'; std::string res(s); omFree(s); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return res; }); Singular.method("scMultInt", [](ideal I, ring R) { const ring origin = currRing; - rChangeCurrRing_wo_options(R); + rChangeCurrRing(R); int k = scMultInt(I, R->qideal); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return k; }); Singular.method("scDimInt", [](ideal I, ring R) { const ring origin = currRing; - rChangeCurrRing_wo_options(R); + rChangeCurrRing(R); int k = scDimInt(I, R->qideal); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return k; }); Singular.method("scDimIntRing", [](ideal I, ring R) { const ring origin = currRing; - rChangeCurrRing_wo_options(R); + rChangeCurrRing(R); int k = scDimIntRing(I, R->qideal); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return k; }); Singular.method("fglmzero", [](ideal Isrc, ring Rsrc, ring Rdest) { const ring origin = currRing; - rChangeCurrRing_wo_options(Rdest); + rChangeCurrRing(Rdest); ideal Idest = NULL; bool c = fglmzero(Rsrc, Isrc, Rdest, Idest, FALSE, FALSE); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return Idest; }); Singular.method("scHilb", [](ideal I, ring r, jlcxx::ArrayRef a) { const ring origin = currRing; - rChangeCurrRing_wo_options(r); + rChangeCurrRing(r); bigintmat * v = hFirstSeries0b(I, r->qideal, NULL,NULL, r,coeffs_BIGINT); for (int j = 0; j < v->length(); j++) { @@ -780,13 +746,13 @@ void singular_define_ideals(jlcxx::Module & Singular) a.push_back(n_Int(n,coeffs_BIGINT)); } delete v; - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); }); Singular.method("scHilbWeighted", [](ideal I, ring r, jlcxx::ArrayRef weights, jlcxx::ArrayRef a) { intvec * w = to_intvec(weights); const ring origin = currRing; - rChangeCurrRing_wo_options(r); + rChangeCurrRing(r); bigintmat * v = hFirstSeries0b(I, r->qideal, w, NULL,r,coeffs_BIGINT); delete w; for (int j = 0; j < v->length(); j++) @@ -795,7 +761,7 @@ void singular_define_ideals(jlcxx::Module & Singular) a.push_back(n_Int(n,coeffs_BIGINT)); } delete v; - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); }); Singular.method("scHilbWeighted", [](ideal I, ring r, jlcxx::ArrayRef weights, @@ -803,7 +769,7 @@ void singular_define_ideals(jlcxx::Module & Singular) intvec * w = to_intvec(weights); intvec * sh = to_intvec(shifts); const ring origin = currRing; - rChangeCurrRing_wo_options(r); + rChangeCurrRing(r); bigintmat * v = hFirstSeries0b(I, r->qideal, w, sh,r,coeffs_BIGINT); delete sh; delete w; @@ -813,23 +779,23 @@ void singular_define_ideals(jlcxx::Module & Singular) a.push_back(n_Int(n,coeffs_BIGINT)); } delete v; - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); }); Singular.method("scHilbPoly", [](ideal I, ring r, ring Qt) { const ring origin = currRing; - rChangeCurrRing_wo_options(r); + rChangeCurrRing(r); poly h = hFirstSeries0p(I, r->qideal, NULL, r, Qt); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return h; }); Singular.method("scHilbPolyWeighted", [](ideal I, ring r, jlcxx::ArrayRef weights, ring Qt) { intvec * w = to_intvec(weights); const ring origin = currRing; - rChangeCurrRing_wo_options(r); + rChangeCurrRing(r); poly h = hFirstSeries0p(I, r->qideal, w, r, Qt); delete w; - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return h; }); Singular.method("id_Homogen", id_Homogen); diff --git a/deps/src/ideals.h b/deps/src/ideals.h index e437bec11..8f596d3c2 100644 --- a/deps/src/ideals.h +++ b/deps/src/ideals.h @@ -4,6 +4,5 @@ #include "includes.h" void singular_define_ideals(jlcxx::Module &); -void rChangeCurrRing_wo_options(ring R); #endif diff --git a/deps/src/rings.cpp b/deps/src/rings.cpp index 6efeac177..83e91d6b4 100644 --- a/deps/src/rings.cpp +++ b/deps/src/rings.cpp @@ -1,5 +1,4 @@ #include "rings.h" -#include "ideals.h" auto rDefault_helper(coeffs cf, jlcxx::ArrayRef vars, rRingOrder_t ord) { @@ -177,7 +176,7 @@ ring weylAlgebra(ring r) ring make_qring(ring r, ideal id) { const ring origin = currRing; - rChangeCurrRing_wo_options(r); + rChangeCurrRing(r); coeffs newcf = currRing->cf; @@ -189,7 +188,7 @@ ring make_qring(ring r, ideal id) newcf = n_CoeffRingQuot1(p_GetCoeff(id->m[cpos], currRing), currRing->cf); if (newcf == NULL) { - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return NULL; } } @@ -257,7 +256,7 @@ ring make_qring(ring r, ideal id) } #endif - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return qr; } @@ -479,9 +478,9 @@ void singular_define_rings(jlcxx::Module & Singular) ideal I = idInit(1, 1); const ring origin = currRing; I->m[0] = q; - rChangeCurrRing_wo_options(r); + rChangeCurrRing(r); res = kNF(I, NULL, p, 0, KSTD_NF_LAZY); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); I->m[0] = NULL; id_Delete(&I, r); if (res == NULL) @@ -510,7 +509,7 @@ void singular_define_rings(jlcxx::Module & Singular) Singular.method("singclap_sqrfree", [](spolyrec * p, jlcxx::ArrayRef a, ip_sring * r) { const ring origin = currRing; - rChangeCurrRing_wo_options(r); + rChangeCurrRing(r); intvec * v = NULL; ideal I = singclap_sqrfree(pCopy(p), &v, 0, currRing); int * content = v->ivGetVec(); @@ -518,14 +517,14 @@ void singular_define_rings(jlcxx::Module & Singular) { a.push_back(content[i]); } - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); delete v; return I; }); Singular.method("singclap_factorize", [](spolyrec * p, jlcxx::ArrayRef a, ip_sring * r) { const ring origin = currRing; - rChangeCurrRing_wo_options(r); + rChangeCurrRing(r); intvec * v = NULL; ideal I = singclap_factorize(p_Copy(p, r), &v, 0, r); int * content = v->ivGetVec(); @@ -533,7 +532,7 @@ void singular_define_rings(jlcxx::Module & Singular) { a.push_back(content[i]); } - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); delete v; return I; }); @@ -545,30 +544,30 @@ void singular_define_rings(jlcxx::Module & Singular) Singular.method("p_SetExpVLV_internal", p_SetExpVLV); Singular.method("p_Reduce", [](spolyrec * p, sip_sideal * G, ip_sring * R) { const ring origin = currRing; - rChangeCurrRing_wo_options(R); + rChangeCurrRing(R); poly res = kNF(G, R->qideal, p); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return res; }); Singular.method("p_Reduce", [](sip_sideal * p, sip_sideal * G, ip_sring * R) { const ring origin = currRing; - rChangeCurrRing_wo_options(R); + rChangeCurrRing(R); ideal res = kNF(G, R->qideal, p); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return res; }); Singular.method("p_Reduce", [](spolyrec * p, sip_sideal * G, ip_sring * R, int flag) { const ring origin = currRing; - rChangeCurrRing_wo_options(R); + rChangeCurrRing(R); poly res = kNF(G, R->qideal, p, 0, flag); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return res; }); Singular.method("p_Reduce", [](sip_sideal * p, sip_sideal * G, ip_sring * R, int flag) { const ring origin = currRing; - rChangeCurrRing_wo_options(R); + rChangeCurrRing(R); ideal res = kNF(G, R->qideal, p, 0, flag); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return res; }); diff --git a/deps/src/singular.cpp b/deps/src/singular.cpp index d063b81ed..14b369847 100644 --- a/deps/src/singular.cpp +++ b/deps/src/singular.cpp @@ -380,9 +380,9 @@ JLCXX_MODULE define_julia_module(jlcxx::Module & Singular) Singular.method("res_Copy", [](syStrategy ra, ring o) { const ring origin = currRing; - rChangeCurrRing_wo_options(o); + rChangeCurrRing(o); syStrategy temp = syCopy(ra); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return temp; }); @@ -396,20 +396,20 @@ JLCXX_MODULE define_julia_module(jlcxx::Module & Singular) Singular.method("syMinimize", [](syStrategy ra, ring o) { const ring origin = currRing; - rChangeCurrRing_wo_options(o); + rChangeCurrRing(o); syStrategy result = syCopy(ra); syMinimize(result); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return result; }); Singular.method("syMinimize_map", [](syStrategy ra, ring o) { const ring origin = currRing; - rChangeCurrRing_wo_options(o); + rChangeCurrRing(o); ideal T=NULL; syMinimize_with_map(ra,T); matrix TT=id_Module2Matrix(T,o); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); return TT; }); @@ -445,11 +445,11 @@ JLCXX_MODULE define_julia_module(jlcxx::Module & Singular) Singular.method("syBetti_internal", [](void * ra, int len, ring o) { const ring origin = currRing; - rChangeCurrRing_wo_options(o); + rChangeCurrRing(o); int dummy; intvec * iv = syBetti(reinterpret_cast(ra), len, &dummy, NULL, FALSE, NULL); - rChangeCurrRing_wo_options(origin); + rChangeCurrRing(origin); int nrows = iv->rows(); int ncols = iv->cols(); auto betti = (int *)malloc(ncols * nrows * sizeof(int)); diff --git a/test/ideal/freealg-test.jl b/test/ideal/freealg-test.jl index 58fccb938..8f0dbb6b3 100644 --- a/test/ideal/freealg-test.jl +++ b/test/ideal/freealg-test.jl @@ -15,7 +15,7 @@ cs3 = u13 + u23 + u33 + u43 - 1 cs4 = u14 + u24 + u34 + u44 - 1 - Singular.libSingular.set_option("OPT_REDTAIL",false) + Singular.libSingular.set_option("OPT_REDTAIL",false,R.ptr) J1 = Ideal(R,[rs2,rs3,rs4,cs1,cs2,cs3,cs4]) J1=std(J1)