@@ -84,6 +84,10 @@ function get_den(x::BasicSymbolic)
84
84
x. impl. den
85
85
end
86
86
87
+ function get_base (x:: BasicSymbolic )
88
+ x. impl. base
89
+ end
90
+
87
91
# Same but different error messages
88
92
@noinline error_on_type () = error (" Internal error: unreachable reached!" )
89
93
@noinline error_sym () = error (" Sym doesn't have a operation or arguments!" )
@@ -313,7 +317,7 @@ function _isequal(a, b, E)
313
317
elseif E === DIV
314
318
isequal (get_num (a), get_num (b)) && isequal (get_den (a), get_den (b))
315
319
elseif E === POW
316
- isequal (a. impl. exp, b. impl. exp) && isequal (a . impl . base, b . impl . base )
320
+ isequal (a. impl. exp, b. impl. exp) && isequal (get_base (a), get_base (b) )
317
321
elseif E === TERM
318
322
a1 = arguments (a)
319
323
a2 = arguments (b)
@@ -359,7 +363,7 @@ function Base.hash(s::BasicSymbolic, salt::UInt)::UInt
359
363
elseif E === DIV
360
364
return hash (get_num (s), hash (get_den (s), salt ⊻ DIV_SALT))
361
365
elseif E === POW
362
- hash (s. impl. exp, hash (s . impl . base , salt ⊻ POW_SALT))
366
+ hash (s. impl. exp, hash (get_base (s) , salt ⊻ POW_SALT))
363
367
elseif E === TERM
364
368
! iszero (salt) && return hash (hash (s, zero (UInt)), salt)
365
369
h = s. hash[]
@@ -562,7 +566,7 @@ function toterm(t::BasicSymbolic{T}) where {T}
562
566
elseif E === DIV
563
567
_Term (T, / , [get_num (t), get_den (t)])
564
568
elseif E === POW
565
- _Term (T, ^ , [t . impl . base , t. impl. exp])
569
+ _Term (T, ^ , [get_base (t) , t. impl. exp])
566
570
else
567
571
error_on_type ()
568
572
end
605
609
function makemul (coeff, xs... ; d = Dict {BasicSymbolic, Any} ())
606
610
for x in xs
607
611
if ispow (x) && x. impl. exp isa Number
608
- d[x . impl . base ] = x. impl. exp + get (d, x . impl . base , 0 )
612
+ d[get_base (x) ] = x. impl. exp + get (d, get_base (x) , 0 )
609
613
elseif x isa Number
610
614
coeff *= x
611
615
elseif ismul (x)
@@ -629,7 +633,7 @@ function makepow(a, b)
629
633
base = a
630
634
exp = b
631
635
if ispow (a)
632
- base = a . impl . base
636
+ base = get_base (a)
633
637
exp = a. impl. exp * b
634
638
end
635
639
base, exp
@@ -1311,7 +1315,7 @@ function *(a::SN, b::SN)
1311
1315
if b. impl. exp isa Number
1312
1316
_Mul (mul_t (a, b),
1313
1317
get_coeff (a),
1314
- _merge (+ , get_dict (a), Base. ImmutableDict (b . impl . base => b. impl. exp),
1318
+ _merge (+ , get_dict (a), Base. ImmutableDict (get_base (b) => b. impl. exp),
1315
1319
filter = _iszero))
1316
1320
else
1317
1321
_Mul (mul_t (a, b), get_coeff (a),
0 commit comments