Assuming I have an arbitrary matrix A, i.e. not necessarily Hermitian, can I block encode it using qml.BlockEncode — PennyLane 0.41.1 documentation and would this preserve the sign of the eigenvalues?
Yes, I don’t see a reason why BlockEncode shouldn’t preserve the sign of the eigenvalues. Is there a reason why you suspect this might be the case? See this module for more information about extracting the eigenvalues given the unitary encoding and QPE.
We don’t encode the sign because the eigenvalues are given in the form e^{i2\pi\theta} with \theta being a number between 0 and 1. Look at this demo for more on this explanation regarding QPE.
I got into the confusion of assuming that block encoding causes the sign of the eigenvalues to. be “lost” because I came across it in the context of QSVT in this demo Intro to QSVT | PennyLane Demos. Since singular values are non-negative real-numbers, I thought the block-encoding is the cause for the sign to be lost in the singular value transformation. But again, it’s just misunderstanding from my part.
I have a question on this module you linked Hamiltonian Simulation | Qubitization and energy levels | PennyLane Codebook . What is the difference between qml.BlockEncode and qml.Qubitization routine as to me both seems to be encoding methods to embed arbitrary matrix into unitaries for quantum operations to be performed on?
Great question!
You are exactly right, they are both block-encoding methods. See the documentation for qml.qsvt, the part where you have to specify the type of block encoding to use. That piece gives you a general idea of what the methods are and how they differ.