Skip to content

Commit 85efc31

Browse files
committed
Fix -(a) for Const
1 parent 8d18d9d commit 85efc31

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

src/types.jl

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1231,9 +1231,19 @@ end
12311231
+(a::SN) = a
12321232

12331233
function -(a::SN)
1234-
!issafecanon(*, a) && return term(-, a)
1235-
isadd(a) ? _Add(sub_t(a), -a.impl.coeff, mapvalues((_, v) -> -v, a.impl.dict)) :
1236-
_Add(sub_t(a), makeadd(-1, 0, a)...)
1234+
if isconst(a)
1235+
v = a.impl.val
1236+
mv = -v
1237+
return _Const(mv)
1238+
end
1239+
if !issafecanon(*, a)
1240+
return term(-, a)
1241+
end
1242+
if isadd(a)
1243+
_Add(sub_t(a), -a.impl.coeff, mapvalues((_, v) -> -v, a.impl.dict))
1244+
else
1245+
_Add(sub_t(a), makeadd(-1, 0, a)...)
1246+
end
12371247
end
12381248
function -(a::SN, b::SN)
12391249
(!issafecanon(+, a) || !issafecanon(*, b)) && return term(-, a, b)

0 commit comments

Comments
 (0)