Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
5120a28
deprecate angle
1ucian0 Apr 28, 2020
e8b8663
Merge branch 'master' into c3x_angle
1ucian0 Apr 30, 2020
ccc6345
pi/8 case
1ucian0 May 1, 2020
bb08b5e
Merge branch 'master' into c3x_angle
1ucian0 May 1, 2020
ddca571
C3XGate renamed to C3RXGate. Then, C3XGate and C3SqrtXGate as C3RXGat…
1ucian0 May 1, 2020
742c705
deprecation warnings
1ucian0 May 2, 2020
8e0d938
C3RXGate in init
1ucian0 May 2, 2020
a3800b8
angle=0 should be honored
1ucian0 May 2, 2020
f8760f3
typo
1ucian0 May 2, 2020
9c0ff26
move to_matrix to C3XGate
1ucian0 May 2, 2020
ca67c00
C3RXGate factors subclasses
1ucian0 May 2, 2020
ba8b1fb
Update qiskit/circuit/library/standard_gates/x.py
1ucian0 May 7, 2020
b29d150
Merge branch 'master' into c3x_angle
1ucian0 May 7, 2020
844228e
message
1ucian0 May 7, 2020
0f3195b
spacing
1ucian0 May 7, 2020
bfa820b
more spacing
1ucian0 May 7, 2020
c6cca52
unused impoirt
1ucian0 May 7, 2020
f433536
Merge branch 'master' of github.com:Qiskit/qiskit-terra into c3x_angle
1ucian0 May 26, 2020
85a7178
docstring
1ucian0 May 26, 2020
27b7aa4
C3RXGate is a controlled RXGate
1ucian0 May 26, 2020
454464e
Merge branch 'master' of github.com:Qiskit/qiskit-terra into c3x_angle
1ucian0 May 27, 2020
750504e
Merge branch 'master' into c3x_angle
Cryoris May 31, 2020
470e2dc
remove C3RX, add V^4 decomposition function
Cryoris May 31, 2020
53f9671
Merge branch 'master' into c3x_angle
1ucian0 May 31, 2020
3dbf97e
Merge branch 'c3x_angle' of github.com:1ucian0/qiskit-terra into c3x_…
Cryoris Jun 5, 2020
388ed6c
Merge branch 'master' into c3x_angle
Cryoris Jun 5, 2020
1f9a3e5
Merge branch 'master' into c3x_angle
Cryoris Jun 5, 2020
98d07c1
fix lint
Cryoris Jun 26, 2020
748dd8e
Merge branch 'master' into c3x_angle
Cryoris Jun 26, 2020
86ade4e
Merge branch 'c3x_angle' of github.com:1ucian0/qiskit-terra into c3x_…
Cryoris Jun 26, 2020
f464b2c
fix merge
Cryoris Jun 29, 2020
904635e
Merge branch 'master' into c3x_angle
Cryoris Jun 29, 2020
8ede2ee
add c3-sqrt-x decomp to SEL
Cryoris Jun 29, 2020
f9ec6bc
Merge branch 'c3x_angle' of github.com:1ucian0/qiskit-terra into c3x_…
Cryoris Jun 29, 2020
0e329a5
use _compute_control_matrix in C3XGate.to_matrix
Cryoris Jun 29, 2020
7d54362
Merge branch 'master' into c3x_angle
Cryoris Jun 30, 2020
4390fa7
Merge branch 'master' into c3x_angle
1ucian0 Jul 2, 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: 2 additions & 1 deletion qiskit/circuit/library/standard_gates/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
CSwapGate
CU1Gate
CU3Gate
C3SqrtXGate
CXGate
CYGate
CZGate
Expand Down Expand Up @@ -80,7 +81,7 @@
from .u1 import U1Gate, CU1Gate, MCU1Gate
from .u2 import U2Gate
from .u3 import U3Gate, CU3Gate
from .x import XGate, CXGate, CCXGate, C3XGate, C4XGate, RCCXGate, RC3XGate
from .x import XGate, CXGate, CCXGate, C3XGate, C4XGate, RCCXGate, RC3XGate, C3SqrtXGate
from .x import MCXGate, MCXGrayCode, MCXRecursive, MCXVChain
from .y import YGate, CYGate
from .z import ZGate, CZGate
Expand Down
119 changes: 119 additions & 0 deletions qiskit/circuit/library/standard_gates/equivalence_library.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,10 @@
XGate,
CXGate,
CCXGate,
C3XGate,
C4XGate,
RC3XGate,
C3SqrtXGate,
YGate,
CYGate,
RYYGate,
Expand Down Expand Up @@ -126,6 +130,121 @@
def_rccx.append(inst, qargs, cargs)
_sel.add_equivalence(RCCXGate(), def_rccx)

# RC3XGate

q = QuantumRegister(4, 'q')
def_rc3x = QuantumCircuit(q)
for inst, qargs, cargs in [
(HGate(), [q[3]], []),
(TGate(), [q[3]], []),
(CXGate(), [q[2], q[3]], []),
(TdgGate(), [q[3]], []),
(HGate(), [q[3]], []),
(CXGate(), [q[0], q[3]], []),
(TGate(), [q[3]], []),
(CXGate(), [q[1], q[3]], []),
(TdgGate(), [q[3]], []),
(CXGate(), [q[0], q[3]], []),
(TGate(), [q[3]], []),
(CXGate(), [q[1], q[3]], []),
(TdgGate(), [q[3]], []),
(HGate(), [q[3]], []),
(TGate(), [q[3]], []),
(CXGate(), [q[2], q[3]], []),
(TdgGate(), [q[3]], []),
(HGate(), [q[3]], []),
]:
def_rc3x.append(inst, qargs, cargs)
_sel.add_equivalence(RC3XGate(), def_rc3x)

# C3XGate

q = QuantumRegister(4, 'q')
def_c3x = QuantumCircuit(q)
for inst, qargs, cargs in [
(HGate(), [q[3]], []),
(CU1Gate(-pi/4), [q[0], q[3]], []),
(HGate(), [q[3]], []),
(CXGate(), [q[0], q[1]], []),
(HGate(), [q[3]], []),
(CU1Gate(pi/4), [q[1], q[3]], []),
(HGate(), [q[3]], []),
(CXGate(), [q[0], q[1]], []),
(HGate(), [q[3]], []),
(CU1Gate(-pi/4), [q[1], q[3]], []),
(HGate(), [q[3]], []),
(CXGate(), [q[1], q[2]], []),
(HGate(), [q[3]], []),
(CU1Gate(pi/4), [q[2], q[3]], []),
(HGate(), [q[3]], []),
(CXGate(), [q[0], q[2]], []),
(HGate(), [q[3]], []),
(CU1Gate(-pi/4), [q[2], q[3]], []),
(HGate(), [q[3]], []),
(CXGate(), [q[1], q[2]], []),
(HGate(), [q[3]], []),
(CU1Gate(pi/4), [q[2], q[3]], []),
(HGate(), [q[3]], []),
(CXGate(), [q[0], q[2]], []),
(HGate(), [q[3]], []),
(CU1Gate(-pi/4), [q[2], q[3]], []),
(HGate(), [q[3]], [])
]:
def_c3x.append(inst, qargs, cargs)
_sel.add_equivalence(C3XGate(), def_c3x)

q = QuantumRegister(4, 'q')
def_c3sqrtx = QuantumCircuit(4)
for inst, qargs, cargs in [
(HGate(), [q[3]], []),
(CU1Gate(-pi/8), [q[0], q[3]], []),
(HGate(), [q[3]], []),
(CXGate(), [q[0], q[1]], []),
(HGate(), [q[3]], []),
(CU1Gate(pi/8), [q[1], q[3]], []),
(HGate(), [q[3]], []),
(CXGate(), [q[0], q[1]], []),
(HGate(), [q[3]], []),
(CU1Gate(-pi/8), [q[1], q[3]], []),
(HGate(), [q[3]], []),
(CXGate(), [q[1], q[2]], []),
(HGate(), [q[3]], []),
(CU1Gate(pi/8), [q[2], q[3]], []),
(HGate(), [q[3]], []),
(CXGate(), [q[0], q[2]], []),
(HGate(), [q[3]], []),
(CU1Gate(-pi/8), [q[2], q[3]], []),
(HGate(), [q[3]], []),
(CXGate(), [q[1], q[2]], []),
(HGate(), [q[3]], []),
(CU1Gate(pi/8), [q[2], q[3]], []),
(HGate(), [q[3]], []),
(CXGate(), [q[0], q[2]], []),
(HGate(), [q[3]], []),
(CU1Gate(-pi/8), [q[2], q[3]], []),
(HGate(), [q[3]], [])
]:
def_c3sqrtx.append(inst, qargs, cargs)
_sel.add_equivalence(C3SqrtXGate(), def_c3sqrtx)

# C4XGate

q = QuantumRegister(5, 'q')
def_c4x = QuantumCircuit(q)
for inst, qargs, cargs in [
(HGate(), [q[4]], []),
(CU1Gate(-pi / 2), [q[3], q[4]], []),
(HGate(), [q[4]], []),
(C3XGate(), [q[0], q[1], q[2], q[3]], []),
(HGate(), [q[4]], []),
(CU1Gate(pi / 2), [q[3], q[4]], []),
(HGate(), [q[4]], []),
(C3XGate(), [q[0], q[1], q[2], q[3]], []),
(C3SqrtXGate(), [q[0], q[1], q[2], q[4]], []),
]:
def_c4x.append(inst, qargs, cargs)
_sel.add_equivalence(C4XGate(), def_c4x)

# RXGate

q = QuantumRegister(1, 'q')
Expand Down
Loading