@@ -88,6 +88,10 @@ function get_base(x::BasicSymbolic)
8888 x. impl. base
8989end
9090
91+ function get_exp (x:: BasicSymbolic )
92+ x. impl. exp
93+ end
94+
9195# Same but different error messages
9296@noinline error_on_type () = error (" Internal error: unreachable reached!" )
9397@noinline error_sym () = error (" Sym doesn't have a operation or arguments!" )
@@ -317,7 +321,7 @@ function _isequal(a, b, E)
317321 elseif E === DIV
318322 isequal (get_num (a), get_num (b)) && isequal (get_den (a), get_den (b))
319323 elseif E === POW
320- isequal (a . impl . exp, b . impl . exp ) && isequal (get_base (a), get_base (b))
324+ isequal (get_exp (a), get_exp (b) ) && isequal (get_base (a), get_base (b))
321325 elseif E === TERM
322326 a1 = arguments (a)
323327 a2 = arguments (b)
@@ -363,7 +367,7 @@ function Base.hash(s::BasicSymbolic, salt::UInt)::UInt
363367 elseif E === DIV
364368 return hash (get_num (s), hash (get_den (s), salt ⊻ DIV_SALT))
365369 elseif E === POW
366- hash (s . impl . exp , hash (get_base (s), salt ⊻ POW_SALT))
370+ hash (get_exp (s) , hash (get_base (s), salt ⊻ POW_SALT))
367371 elseif E === TERM
368372 ! iszero (salt) && return hash (hash (s, zero (UInt)), salt)
369373 h = s. hash[]
@@ -566,7 +570,7 @@ function toterm(t::BasicSymbolic{T}) where {T}
566570 elseif E === DIV
567571 _Term (T, / , [get_num (t), get_den (t)])
568572 elseif E === POW
569- _Term (T, ^ , [get_base (t), t . impl . exp ])
573+ _Term (T, ^ , [get_base (t), get_exp (t) ])
570574 else
571575 error_on_type ()
572576 end
608612
609613function makemul (coeff, xs... ; d = Dict {BasicSymbolic, Any} ())
610614 for x in xs
611- if ispow (x) && x . impl . exp isa Number
612- d[get_base (x)] = x . impl . exp + get (d, get_base (x), 0 )
615+ if ispow (x) && get_exp (x) isa Number
616+ d[get_base (x)] = get_exp (x) + get (d, get_base (x), 0 )
613617 elseif x isa Number
614618 coeff *= x
615619 elseif ismul (x)
@@ -634,7 +638,7 @@ function makepow(a, b)
634638 exp = b
635639 if ispow (a)
636640 base = get_base (a)
637- exp = a . impl . exp * b
641+ exp = get_exp (a) * b
638642 end
639643 base, exp
640644end
@@ -1312,10 +1316,10 @@ function *(a::SN, b::SN)
13121316 _Mul (mul_t (a, b), get_coeff (a) * get_coeff (b),
13131317 _merge (+ , get_dict (a), get_dict (b), filter = _iszero))
13141318 elseif ismul (a) && ispow (b)
1315- if b . impl . exp isa Number
1319+ if get_exp (b) isa Number
13161320 _Mul (mul_t (a, b),
13171321 get_coeff (a),
1318- _merge (+ , get_dict (a), Base. ImmutableDict (get_base (b) => b . impl . exp ),
1322+ _merge (+ , get_dict (a), Base. ImmutableDict (get_base (b) => get_exp (b) ),
13191323 filter = _iszero))
13201324 else
13211325 _Mul (mul_t (a, b), get_coeff (a),
0 commit comments