@@ -88,6 +88,10 @@ function get_base(x::BasicSymbolic)
88
88
x. impl. base
89
89
end
90
90
91
+ function get_exp (x:: BasicSymbolic )
92
+ x. impl. exp
93
+ end
94
+
91
95
# Same but different error messages
92
96
@noinline error_on_type () = error (" Internal error: unreachable reached!" )
93
97
@noinline error_sym () = error (" Sym doesn't have a operation or arguments!" )
@@ -317,7 +321,7 @@ function _isequal(a, b, E)
317
321
elseif E === DIV
318
322
isequal (get_num (a), get_num (b)) && isequal (get_den (a), get_den (b))
319
323
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))
321
325
elseif E === TERM
322
326
a1 = arguments (a)
323
327
a2 = arguments (b)
@@ -363,7 +367,7 @@ function Base.hash(s::BasicSymbolic, salt::UInt)::UInt
363
367
elseif E === DIV
364
368
return hash (get_num (s), hash (get_den (s), salt ⊻ DIV_SALT))
365
369
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))
367
371
elseif E === TERM
368
372
! iszero (salt) && return hash (hash (s, zero (UInt)), salt)
369
373
h = s. hash[]
@@ -566,7 +570,7 @@ function toterm(t::BasicSymbolic{T}) where {T}
566
570
elseif E === DIV
567
571
_Term (T, / , [get_num (t), get_den (t)])
568
572
elseif E === POW
569
- _Term (T, ^ , [get_base (t), t . impl . exp ])
573
+ _Term (T, ^ , [get_base (t), get_exp (t) ])
570
574
else
571
575
error_on_type ()
572
576
end
608
612
609
613
function makemul (coeff, xs... ; d = Dict {BasicSymbolic, Any} ())
610
614
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 )
613
617
elseif x isa Number
614
618
coeff *= x
615
619
elseif ismul (x)
@@ -634,7 +638,7 @@ function makepow(a, b)
634
638
exp = b
635
639
if ispow (a)
636
640
base = get_base (a)
637
- exp = a . impl . exp * b
641
+ exp = get_exp (a) * b
638
642
end
639
643
base, exp
640
644
end
@@ -1312,10 +1316,10 @@ function *(a::SN, b::SN)
1312
1316
_Mul (mul_t (a, b), get_coeff (a) * get_coeff (b),
1313
1317
_merge (+ , get_dict (a), get_dict (b), filter = _iszero))
1314
1318
elseif ismul (a) && ispow (b)
1315
- if b . impl . exp isa Number
1319
+ if get_exp (b) isa Number
1316
1320
_Mul (mul_t (a, b),
1317
1321
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) ),
1319
1323
filter = _iszero))
1320
1324
else
1321
1325
_Mul (mul_t (a, b), get_coeff (a),
0 commit comments