Skip to content

Commit 2376b55

Browse files
fix QNumber addition a-b=a+(-1)*b
1 parent 95499fa commit 2376b55

File tree

2 files changed

+28
-4
lines changed

2 files changed

+28
-4
lines changed

src/qnumber.jl

+4-4
Original file line numberDiff line numberDiff line change
@@ -240,10 +240,10 @@ SymbolicUtils.metadata(q::QAdd) = q.metadata
240240

241241
Base.adjoint(q::QAdd) = QAdd(map(adjoint, q.arguments))
242242

243-
-(a::QNumber) = -1*a
244-
-(a,b::QNumber) = a + (-b)
245-
-(a::QNumber,b) = a + (-b)
246-
-(a::QNumber,b::QNumber) = a + (-b)
243+
-(a::QNumber) = (-1)*a
244+
-(a,b::QNumber) = a + (-1)*b
245+
-(a::QNumber,b) = a + (-1)*b
246+
-(a::QNumber,b::QNumber) = a + (-1)*b
247247

248248
function +(a::QNumber, b::SNuN)
249249
SymbolicUtils._iszero(b) && return a

test/test_average.jl

+24
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,28 @@ d = Destroy(h,:d,4)
5353
average(b)*average(a*c) - average(c)*average(a*b))))
5454
@test isequal(simplify(average(a*b*c*d) - cumulant(a*b*c*d)), cumulant_expansion(average(a*b*c*d),3))
5555

56+
# cumulant expansion test with function of moments
57+
# https://en.wikipedia.org/wiki/Cumulant#First_several_cumulants_as_functions_of_the_moments
58+
hf1 = FockSpace(:c1)
59+
hf2 = FockSpace(:c2)
60+
hf3 = FockSpace(:c3)
61+
hf4 = FockSpace(:c4)
62+
hf_all = hf1hf2hf3hf4
63+
64+
a1 = Destroy(hf_all,:a1,1)
65+
a2 = Destroy(hf_all,:a2,2)
66+
a3 = Destroy(hf_all,:a3,3)
67+
a4 = Destroy(hf_all,:a4,4)
68+
69+
Δa1 = a1 - average(a1)
70+
Δa2 = a2 - average(a2)
71+
Δa3 = a3 - average(a3)
72+
Δa4 = a4 - average(a4)
73+
74+
@test isequal(average(Δa1*Δa2), average(a1*a2) - average(a1)*average(a2))
75+
@test isequal(average(Δa1*Δa2*Δa3), cumulant(a1*a2*a3))
76+
@test iszero(average(Δa1*Δa2*Δa3)-cumulant(a1*a2*a3))
77+
@test iszero(expand(cumulant(a1^4) - ( average(Δa1^4) - 3*(average(Δa1^2))^2 ) ))
78+
@test iszero(expand(cumulant(a1*a2*a3*a4) - ( average(Δa1*Δa2*Δa3*Δa4) - ( average(Δa1*Δa2)*average(Δa3*Δa4) + average(Δa1*Δa3)*average(Δa2*Δa4) + average(Δa1*Δa4)*average(Δa3*Δa2) ) ) ))
79+
5680
end # testset

0 commit comments

Comments
 (0)