Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
214d880
add sqrt x and controlled version
Cryoris Jul 2, 2020
f958aae
add to inits
Cryoris Jul 2, 2020
e32cc98
add to equivalence lib
Cryoris Jul 2, 2020
8826707
add to qelib
Cryoris Jul 2, 2020
7a60a5e
add circuit methods
Cryoris Jul 2, 2020
8dd8b78
add to label test
Cryoris Jul 2, 2020
2fd9221
Merge branch 'master' into sx
Cryoris Jul 2, 2020
e3f600a
add reno
Cryoris Jul 2, 2020
ea0a329
fix missing qubit in qelub
Cryoris Jul 2, 2020
6d62d0e
change SX definition to use only one H
Cryoris Jul 3, 2020
25452ce
update decomp in gate and add default label
Cryoris Jul 3, 2020
be6221b
fix test by accounting for global phase diff
Cryoris Jul 3, 2020
22b84e1
handle case of 1 ctrl qubit separately
Cryoris Jul 3, 2020
df9269c
account for global phase in CSX test
Cryoris Jul 6, 2020
c575589
Merge branch 'master' into sx
Cryoris Jul 6, 2020
fe5c2d5
change to new gate def
Cryoris Jul 6, 2020
7b3876a
ignore cyclic import
Cryoris Jul 6, 2020
6cb5812
add SXdg gate
Cryoris Jul 13, 2020
621d781
fix U3 equivalence, add rz to sx ry
Cryoris Jul 14, 2020
010e50c
equivalences: replace RX by SX, add SX->RX
Cryoris Jul 15, 2020
30c5074
Merge branch 'master' into sx
Cryoris Jul 15, 2020
faa28a9
Apply suggestions from code review
Cryoris Jul 25, 2020
caa95c8
Merge branch 'master' into sx
Cryoris Jul 25, 2020
5481928
update to accomodate global phases
Cryoris Jul 25, 2020
8d6c200
change to case where phase is not 1
Cryoris Jul 25, 2020
7cd4b71
mention SXdg in the reno
Cryoris Jul 25, 2020
b5e291d
Merge branch 'master' into sx
Cryoris Jul 27, 2020
d4279e9
Merge branch 'master' into sx
Cryoris Jul 28, 2020
575702f
ignore global phase for now
Cryoris Jul 28, 2020
5483125
Merge branch 'sx' of github.com:Cryoris/qiskit-terra into sx
Cryoris Jul 28, 2020
f4cd163
update text and mpl drawer
Cryoris Jul 28, 2020
58e897a
add sx and sxdg to standard gates in matplotlib.py
Cryoris Jul 28, 2020
117f16d
Merge branch 'master' into sx
Cryoris Jul 28, 2020
03d0945
dagger is unsupported ascii char
Cryoris Jul 29, 2020
36067ad
Merge branch 'sx' of github.com:Cryoris/qiskit-terra into sx
Cryoris Jul 29, 2020
872123b
Merge branch 'master' into sx
Cryoris Jul 29, 2020
54836c0
use mathmode in qcstyle
Cryoris Jul 29, 2020
3359e4e
Merge branch 'master' into sx
Cryoris Jul 30, 2020
ad7b92a
add u2 to u1/sx equivalence
Cryoris Jul 31, 2020
8fce279
Merge branch 'master' into sx
Cryoris Aug 3, 2020
ec40da9
Merge branch 'master' into sx
Cryoris Aug 4, 2020
f50d47e
Merge branch 'master' into sx
Cryoris Aug 4, 2020
76329f4
Merge branch 'sx' of github.com:Cryoris/qiskit-terra into sx
Cryoris Aug 4, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions qiskit/circuit/library/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
CRYGate
CRZGate
CSwapGate
CSXGate
CUGate
CU1Gate
CU3Gate
Expand All @@ -62,6 +63,8 @@
SdgGate
SwapGate
iSwapGate
SXGate
SXdgGate
TGate
TdgGate
UGate
Expand Down
4 changes: 4 additions & 0 deletions qiskit/circuit/library/standard_gates/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
CRYGate
CRZGate
CSwapGate
CSXGate
CUGate
CU1Gate
CU3Gate
Expand All @@ -54,6 +55,8 @@
SdgGate
SwapGate
iSwapGate
SXGate
SXdgGate
TGate
TdgGate
UGate
Expand Down Expand Up @@ -81,6 +84,7 @@
from .s import SGate, SdgGate
from .swap import SwapGate, CSwapGate
from .iswap import iSwapGate
from .sx import SXGate, SXdgGate, CSXGate
from .dcx import DCXGate
from .t import TGate, TdgGate
from .u import UGate, CUGate
Expand Down
79 changes: 69 additions & 10 deletions qiskit/circuit/library/standard_gates/equivalence_library.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@
SwapGate,
CSwapGate,
iSwapGate,
SXGate,
SXdgGate,
CSXGate,
DCXGate,
TGate,
TdgGate,
Expand Down Expand Up @@ -261,12 +264,11 @@
_sel.add_equivalence(RZGate(theta), def_rz)

q = QuantumRegister(1, 'q')
theta = Parameter('theta')
rz_to_rxry = QuantumCircuit(q)
rz_to_rxry.append(RXGate(pi/2), [q[0]], [])
rz_to_rxry.append(RYGate(-theta), [q[0]], [])
rz_to_rxry.append(RXGate(-pi/2), [q[0]], [])
_sel.add_equivalence(RZGate(theta), rz_to_rxry)
rz_to_sxry = QuantumCircuit(q)
rz_to_sxry.sx(0)
rz_to_sxry.ry(-theta, 0)
rz_to_sxry.sxdg(0)
_sel.add_equivalence(RZGate(theta), rz_to_sxry)

# CRZGate

Expand Down Expand Up @@ -336,6 +338,52 @@
def_iswap.append(inst, qargs, cargs)
_sel.add_equivalence(iSwapGate(), def_iswap)

# SXGate

q = QuantumRegister(1, 'q')
def_sx = QuantumCircuit(q, global_phase=pi / 4)
for inst, qargs, cargs in [
(SdgGate(), [q[0]], []),
(HGate(), [q[0]], []),
(SdgGate(), [q[0]], [])
]:
def_sx.append(inst, qargs, cargs)
_sel.add_equivalence(SXGate(), def_sx)

q = QuantumRegister(1, 'q')
sx_to_rx = QuantumCircuit(q, global_phase=pi / 4)
sx_to_rx.rx(pi / 2, 0)
_sel.add_equivalence(SXGate(), sx_to_rx)

# SXdgGate

q = QuantumRegister(1, 'q')
def_sxdg = QuantumCircuit(q, global_phase=-pi / 4)
for inst, qargs, cargs in [
(SGate(), [q[0]], []),
(HGate(), [q[0]], []),
(SGate(), [q[0]], [])
]:
def_sxdg.append(inst, qargs, cargs)
_sel.add_equivalence(SXdgGate(), def_sxdg)

q = QuantumRegister(1, 'q')
sxdg_to_rx = QuantumCircuit(q, global_phase=-pi / 4)
sxdg_to_rx.rx(-pi / 2, 0)
_sel.add_equivalence(SXdgGate(), sxdg_to_rx)

# CSXGate

q = QuantumRegister(2, 'q')
def_csx = QuantumCircuit(q)
for inst, qargs, cargs in [
(HGate(), [q[1]], []),
(CU1Gate(pi / 2), [q[0], q[1]], []),
(HGate(), [q[1]], [])
]:
def_csx.append(inst, qargs, cargs)
_sel.add_equivalence(CSXGate(), def_csx)

# DCXGate

q = QuantumRegister(2, 'q')
Expand Down Expand Up @@ -451,7 +499,7 @@
def_cu1.append(inst, qargs, cargs)
_sel.add_equivalence(CU1Gate(theta), def_cu1)

# U2Gate
# U1Gate

q = QuantumRegister(1, 'q')
phi = Parameter('phi')
Expand All @@ -460,17 +508,28 @@
def_u2.append(U3Gate(pi / 2, phi, lam), [q[0]], [])
_sel.add_equivalence(U2Gate(phi, lam), def_u2)

# U2Gate

q = QuantumRegister(1, 'q')
phi = Parameter('phi')
lam = Parameter('lam')
u2_to_u1sx = QuantumCircuit(q, global_phase=-pi / 4)
u2_to_u1sx.u1(lam - pi/2, 0)
u2_to_u1sx.sx(0)
u2_to_u1sx.u1(phi + pi/2, 0)
_sel.add_equivalence(U2Gate(phi, lam), u2_to_u1sx)

# U3Gate

q = QuantumRegister(1, 'q')
theta = Parameter('theta')
phi = Parameter('phi')
lam = Parameter('lam')
u3_qasm_def = QuantumCircuit(q, global_phase=(lam + phi) / 2)
u3_qasm_def = QuantumCircuit(q, global_phase=(lam + phi - pi) / 2)
u3_qasm_def.rz(lam, 0)
u3_qasm_def.rx(pi/2, 0)
u3_qasm_def.sx(0)
u3_qasm_def.rz(theta+pi, 0)
u3_qasm_def.rx(pi/2, 0)
u3_qasm_def.sx(0)
u3_qasm_def.rz(phi+3*pi, 0)
_sel.add_equivalence(U3Gate(theta, phi, lam), u3_qasm_def)

Expand Down
2 changes: 1 addition & 1 deletion qiskit/circuit/library/standard_gates/s.py
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ class SdgGate(Gate):
Equivalent to a :math:`\pi/2` radian rotation about the Z axis.
"""

def __init__(self, label=None):
def __init__(self, label='S_dg'):
"""Create new Sdg gate."""
super().__init__('sdg', 1, [], label=label)

Expand Down
Loading