Question on whether sign of eigenvalues is preserved in block encoding of non-Hermitian matrix

Hi,

I’ve been studying the HHL algorithm demo at Solving systems of linear equations via HHL using Qrisp and Catalyst | PennyLane Demos. I see that the algorithm starts with a constraint on the matrix, i.e. Given an N-by- N Hermitian matrix A.

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?

Also, the standard QPE routine qml.QuantumPhaseEstimation — PennyLane 0.41.1 documentation doesn’t encode the sign of the eigenvalues in the register?

Thank you.

Hi, @jag
We’re glad you been using that demo.

  1. 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.
  2. 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.

Hi @daniela.murcillo ,

  1. 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?

Ah! I see. Thanks for the explanation.

Great question! :smiley:
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.

1 Like

Thank you for the assistance. :slight_smile: