Skip to content

Commit fd24998

Browse files
committed
update for SymbolicUtils v1.4
1 parent 388b2ff commit fd24998

File tree

2 files changed

+10
-22
lines changed

2 files changed

+10
-22
lines changed

Project.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ Compat = "0.63.0, 1, 2, 3, 4"
2222
RecipesBase = "0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 1.0"
2323
SpecialFunctions = "0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.10, 1, 2"
2424
SymEngine_jll = "0.9, 0.10"
25+
SymbolicUtils = "1.4"
2526
julia = "1.6"
2627

2728
[extras]

ext/SymEngineSymbolicUtilsExt.jl

Lines changed: 9 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -73,32 +73,19 @@ end
7373

7474
# Needed for some simplification routines
7575
# a total order <ₑ
76-
import SymbolicUtils: <ₑ, isterm, isadd, ismul, issym, cmp_mul_adds, cmp_term_term
76+
import SymbolicUtils: <ₑ, isterm, isadd, ismul, issym, get_degrees, monomial_lt, _arglen
7777
function SymbolicUtils.:<(a::SymEngine.Basic, b::SymEngine.Basic)
78-
if isterm(a) && !isterm(b)
79-
return false
80-
elseif isterm(b) && !isterm(a)
81-
return true
82-
elseif (isadd(a) || ismul(a)) && (isadd(b) || ismul(b))
83-
return cmp_mul_adds(a, b)
84-
elseif issym(a) && issym(b)
85-
nameof(a) < nameof(b)
86-
elseif !istree(a) && !istree(b)
87-
T = typeof(a)
88-
S = typeof(b)
89-
if T == S
90-
is_number(a) && is_number(b) && return N(a) < N(b)
91-
return hash(a) < hash(b)
78+
da, db = get_degrees(a), get_degrees(b)
79+
fw = monomial_lt(da, db)
80+
bw = monomial_lt(db, da)
81+
if fw === bw && !isequal(a, b)
82+
if _arglen(a) == _arglen(b)
83+
return (operation(a), arguments(a)...,) <ₑ (operation(b), arguments(b)...,)
9284
else
93-
return name(T) < nameof(S)
85+
return _arglen(a) < _arglen(b)
9486
end
95-
#return T===S ? (T <: Number ? isless(a, b) : hash(a) < hash(b)) : nameof(T) < nameof(S)
96-
elseif istree(b) && !istree(a)
97-
return true
98-
elseif istree(a) && istree(b)
99-
return cmp_term_term(a,b)
10087
else
101-
return !(b <ₑ a)
88+
return fw
10289
end
10390
end
10491

0 commit comments

Comments
 (0)