Unitary Function¶
Given a $2^{n}\times2^{n}$ unitary matrix, the unitary-gate function constructs an equivalent unitary function that acts on $n$ qubits accordingly. For $n>2$, the synthesis process implementation is based on [1].
Function: unitary
Arguments:
elements: CArray[CArray[CReal]]
- A 2d array of complex numbers representing the unitary matrix.target: QArray[QBit]
- The quantum state to apply the unitary on. Should be of corresponding size.
Example¶
This example shows a $2$-qubit unitary function application in the formed $4$-dimensional space.
In [10]:
Copied!
from classiq import Output, QArray, QBit, allocate, create_model, qfunc, unitary
UNITARY = [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, -1j, 0], [0, 0, 0, 1j]]
@qfunc
def main(x: Output[QArray[QBit]]):
allocate(2, x)
unitary(UNITARY, x)
qmod = create_model(main)
from classiq import Output, QArray, QBit, allocate, create_model, qfunc, unitary
UNITARY = [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, -1j, 0], [0, 0, 0, 1j]]
@qfunc
def main(x: Output[QArray[QBit]]):
allocate(2, x)
unitary(UNITARY, x)
qmod = create_model(main)
In [9]:
Copied!
from classiq import synthesize, write_qmod
write_qmod(qmod, "unitary_example")
qprog = synthesize(qmod)
from classiq import synthesize, write_qmod
write_qmod(qmod, "unitary_example")
qprog = synthesize(qmod)
References¶
[1] R. Iten et al, Quantum Circuits for Isometries, Phys. Rev. A 93 (2016). https://link.aps.org/doi/10.1103/PhysRevA.93.032318