Skip to content

Commit

Permalink
in Groebner Ext, partially fix ordering
Browse files Browse the repository at this point in the history
  • Loading branch information
sumiya11 committed Oct 25, 2024
1 parent fbf13ec commit 463b472
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 3 deletions.
2 changes: 1 addition & 1 deletion Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ DocStringExtensions = "0.9"
DomainSets = "0.6, 0.7"
DynamicPolynomials = "0.5, 0.6"
ForwardDiff = "0.10.36"
Groebner = "0.5, 0.6, 0.7"
Groebner = "0.8"
IfElse = "0.1"
LaTeXStrings = "1.3"
LambertW = "1.0.0"
Expand Down
11 changes: 9 additions & 2 deletions ext/SymbolicsGroebnerExt.jl
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,16 @@ julia> @variables x y;
julia> groebner_basis([x*y^2 + x, x^2*y + y])
```
"""
function Symbolics.groebner_basis(polynomials::Vector{Num}; kwargs...)
function Symbolics.groebner_basis(polynomials::Vector{Num}; ordering=InputOrdering(), kwargs...)
polynoms, pvar2sym, sym2term = Symbolics.symbol_to_poly(polynomials)
basis = Groebner.groebner(polynoms; kwargs...)
sym2term_for_groebner = Dict{Any,Any}(v1 => k for (k, (v1, v2)) in sym2term)
all_sym_vars = Groebner.ordering_variables(ordering)
missed = setdiff(all_sym_vars, Set(collect(keys(sym2term_for_groebner))))
for k in missed
sym2term_for_groebner[k] = k
end
ordering = Groebner.ordering_transform(ordering, sym2term_for_groebner )
basis = Groebner.groebner(polynoms; ordering=ordering, kwargs...)
PolyType = symtype(first(polynomials))
Symbolics.poly_to_symbol(basis, pvar2sym, sym2term, PolyType)
end
Expand Down

0 comments on commit 463b472

Please sign in to comment.