Sitemap

No, Quantum Mechanics does Not Need Complex Numbers

5 min readJun 12, 2025

--

No journal is perfect, and despite Nature being considered a high quality journal, I have recently come across a paper which is, to put it bluntly, is clickbait in paper form. It is easily debunkable by anyone who can do a tiny bit of linear algebra. I would be less critical of it if the title and claims to what it demonstrates are not misleading.

The paper is titled “Quantum theory based on real numbers can be experimentally falsified.” The entire paper is misleading because it presents a very specific representation of quantum mechanics based solely on real numbers, shows that it leads to different predictions than traditional quantum theory, and then concludes therefore complex numbers are a necessity for quantum theory.

This is obviously false. A complex number is just two real numbers stitched together. Classical computers can’t operate on complex numbers and so they just break them apart into two real floating point numbers and do the equivalent calculations in that form, but then display it as a complex number, and they can reproduce anything you can reproduce using complex numbers. Indeed, my quantum computer simulator I had put together myself uses its own complex matrix library for linear algebra, and each element of the matrix is specified by two real numbers.

It is clearly false that quantum theory cannot be represented using real numbers as any simulation of quantum mechanics implemented in computer code is de facto an implementation entirely using real numbers.

Of course, this might not seem very satisfactory. You are using real numbers but still with the purpose of representing complex numbers. Is it possible to formulate quantum mechanics in a way that not only uses real numbers exclusively, but that those real numbers clearly have their own independent meaning without being tied to anything imaginary?

Yes. Quantum mystics will insist that wave functions represent particles in “two places at once,” that they somehow represent an ever-branching multiverse, or that they experience mysterious nonlocal “collapses” that can never be measured. What these mystics always leave out is that the wave function is just a compressed list of expectation values.

I discussed that in this article here. We can take any wave function and expand it out into a list of expectation values. Expectation values are real-valued exclusively. We can also expand out all the operators to act directly on expectation values, and then evolve that list and get the right answer without ever invoking the wave function at all.

Here is the code I used to reproduce the same set of correlations in their paper. This code acts on wave functions to first verify that we can reproduce the same correlation using regular quantum mechanics.

psi = zeros(2^6, 1);
psi(1) = 1;

U = {
kron(eye(2^1), eye(2^1), H, eye(2^1), H, eye(2^1)),
kron(eye(2^2), CX, CX),
kron(eye(2^4), H, eye(2^1)),
kron(eye(2^3), CX, eye(2^1)),

kron(eye(2^3), SW, eye(2^1)),
kron(eye(2^2), SW, eye(2^2)),
kron(eye(2^1), CX, eye(2^3)),
kron(eye(2^2), SW, eye(2^2)),
kron(eye(2^3), SW, eye(2^1)),

kron(eye(2^2), SW, eye(2^2)),
kron(eye(2^1), SW, eye(2^3)),
kron(CX, eye(2^4)),
kron(eye(2^1), SW, eye(2^3)),
kron(eye(2^2), SW, eye(2^2))
};

for j=1:length(U)
psi = U{j} * psi;
end

Dzx = (Z + X)/sqrt(2);
Dzy = (Z + Y)/sqrt(2);
Dxy = (X + Y)/sqrt(2);
Ezx = (Z - X)/sqrt(2);
Ezy = (Z - Y)/sqrt(2);
Exy = (X - Y)/sqrt(2);

U1 = { X, Y, Z };
U2 = { Dzx, Dzy, Dxy, Ezx, Ezy, Exy };

E = zeros(3,6);
for ix = 1:3
for iz = 1:6
E(ix,iz) = psi' * (kron(eye(2^2),U1{ix},eye(2^2),U2{iz})) * psi;
end
end

S1 = E(1,1)+E(1,2)+E(2,1)-E(2,2);
S2 = E(1,3)+E(1,4)+E(3,3)-E(3,4);
S3 = E(2,5)+E(2,6)+E(3,5)-E(3,6);
CHSH3 = S1 + S2 + S3;

CHSH3 * 4

The reason I multiply it by 4 is because in the original paper they have Bob carry out four measurements which each collapse the wave function to different states and then compute CHSH3 four times and sum them together. What I have done above is, rather than collapsing the wave function, I have kept it completely unitary by representing the measurement with two additional qubits, allowing me to compute it using only a single pass, but then I need to multiply it by four to reproduce their same number: 8.4853.

If it’s possible to carry out a quantum computation without complex numbers, then we should be able to repeat this using the same method I mentioned in my other article. I used my own library “Weak” which implements functions like R(U) and S(U) as also mentioned in that article.

RU = {
kron(Weak.R(eye(2^1)), Weak.R(eye(2^1)), Weak.R(H), Weak.R(eye(2^1)), Weak.R(H), Weak.R(eye(2^1))),
kron(Weak.R(eye(2^2)), Weak.R(CX), Weak.R(CX)),
kron(Weak.R(eye(2^4)), Weak.R(H), Weak.R(eye(2^1))),
kron(Weak.R(eye(2^3)), Weak.R(CX), Weak.R(eye(2^1))),

kron(Weak.R(eye(2^3)), Weak.R(SW), Weak.R(eye(2^1))),
kron(Weak.R(eye(2^2)), Weak.R(SW), Weak.R(eye(2^2))),
kron(Weak.R(eye(2^1)), Weak.R(CX), Weak.R(eye(2^3))),
kron(Weak.R(eye(2^2)), Weak.R(SW), Weak.R(eye(2^2))),
kron(Weak.R(eye(2^3)), Weak.R(SW), Weak.R(eye(2^1))),

kron(Weak.R(eye(2^2)), Weak.R(SW), Weak.R(eye(2^2))),
kron(Weak.R(eye(2^1)), Weak.R(SW), Weak.R(eye(2^3))),
kron(Weak.R(CX), Weak.R(eye(2^4))),
kron(Weak.R(eye(2^1)), Weak.R(SW), Weak.R(eye(2^3))),
kron(Weak.R(eye(2^2)), Weak.R(SW), Weak.R(eye(2^2)))
};

w = kron(Weak.avg(0), Weak.avg(0), Weak.avg(0), Weak.avg(0), Weak.avg(0), Weak.avg(0));
for j=1:length(RU)
w = RU{j} * w;
end


E = zeros(3,6);
for ix = 1:3
ix
iz
for iz = 1:6
S = Weak.S(kron(eye(2^2),U1{ix},eye(2^2),U2{iz}));
E(ix,iz) = (w' * S * w) / (w' * w)
end
end

S1 = E(1,1)+E(1,2)+E(2,1)-E(2,2);
S2 = E(1,3)+E(1,4)+E(3,3)-E(3,4);
S3 = E(2,5)+E(2,6)+E(3,5)-E(3,6);
CHSH3 = S1 + S2 + S3

CHSH3 * 4

When I run this, it does indeed produce the exact same output of 8.4853.

The real numbers used all just represent expectation values tied to different observables, which are manipulated directly, rather than using a wave function, and the same results can be reproduced.

I am currently working on a book on this, but I will probably never finish it. But if I do, the book presents three different models.

The first is a model that only acts on strong values, where the vector only contains +1 or -1 for each observable, and only the observables of the individual qubits are valid, so joint observables (like XY) are not used in the model because particles only possess individual observables. This simple model is completely classical and can be shown to replicate many aspects of quantum mechanics, from complementarity to the double-slit experiment to the “bomb tester” paradox to quantum superdense coding to the Deutsch algorithm to quantum encryption and key distribution and much more.

The second model extends it to universal quantum computation by using an epistemic vector populated by expectation values. This is referred also referred to as the average values. The average values allows you to keep track of things like joint observables because this is describing knowledge and not something physical (you can know that XY=+1 without knowing either X or Y). This is then a sufficient extension to reproduce universal quantum computation.

The third model extends it further, showing that you can compute from the average values the weak values. The first model is physical, while the second deals with knowledge. The weak values return to a physical description in a way that is sufficient to explain violations of Bell inequalities as well as to explain why the average values are the way they are, hence completing a local realist picture of quantum mechanics, not one entirely original to me but largely just a reframing of ideas already scattered in the literature which the sources for those will be referenced.

--

--

艾米心amihart
艾米心amihart

Written by 艾米心amihart

Professional software developer (B.S CompSci), quantum computing enthusiast.

Responses (6)