BlockEncoding user defined type

Warning

This documentation refers to the Classic QDK, which has been replaced by the Modern QDK.

Please see https://aka.ms/qdk.api for the API documentation for the Modern QDK.

Namespace: Microsoft.Quantum.Simulation

Package: Microsoft.Quantum.Standard

Represents a unitary where an arbitrary operator of interest is encoded in the top-left block.


newtype BlockEncoding = (((Qubit[], Qubit[]) => Unit is Adj + Ctl));

Description

A unitary operation that can be represented by a unitary matrix $U$ where an arbitrary operator $H$ of interest that acts on the system register s is encoded in the top- left block corresponding to auxiliary state $\ket{0}_a$. That is,

$$ \begin{align} (\bra{0}_a\otimes I_s)U(\ket{0}_a\otimes I_s) = H \end{align} $$.

The inputs to this callable are:

  • An array of qubits representing the auxiliary register acted on by $U$. Note that the action of $U$ is only defined when this register is in the state $\ket{0}_a$.
  • An array of qubits representing the system register acted on by $H$.

See Also