mimiqcircuits.operations.gates.standard.cnp¶
Controlled-Controlled-Phase (CCP) gate.
Functions
|
Three qubit Controlled-Controlled-Phase gate. |
- mimiqcircuits.operations.gates.standard.cnp.GateCCP(lmbda)[source]¶
Three qubit Controlled-Controlled-Phase gate.
By convention, the first two qubits are the controls and the third is the target
- Parameters:
lmbda – Phase angle.
Examples
>>> from mimiqcircuits import * >>> from symengine import * >>> lmbda = Symbol('lmbda') >>> GateCCP(lmbda), GateCCP(lmbda).num_controls, GateCCP(lmbda).num_targets, GateCCP(lmbda).num_qubits (C₂P(lmbda), 2, 1, 3) >>> GateCCP(lmbda).matrix() [1.0, 0, 0, 0, 0, 0, 0, 0] [0, 1.0, 0, 0, 0, 0, 0, 0] [0, 0, 1.0, 0, 0, 0, 0, 0] [0, 0, 0, 1.0, 0, 0, 0, 0] [0, 0, 0, 0, 1.0, 0, 0, 0] [0, 0, 0, 0, 0, 1.0, 0, 0] [0, 0, 0, 0, 0, 0, 1.0, 0] [0, 0, 0, 0, 0, 0, 0, exp(I*lmbda)] >>> c = Circuit().push(GateCCP(lmbda), 0, 1, 2) >>> c 3-qubit circuit with 1 instruction: └── C₂P(lmbda) @ q[0:1], q[2] >>> GateCCP(lmbda).power(2), GateCCP(lmbda).inverse() (C₂P(2*lmbda), C₂P(-lmbda)) >>> GateCCP(lmbda).decompose() 3-qubit circuit with 5 instructions: ├── CP((1/2)*lmbda) @ q[1], q[2] ├── CX @ q[0], q[1] ├── CP((-1/2)*lmbda) @ q[1], q[2] ├── CX @ q[0], q[1] └── CP((1/2)*lmbda) @ q[0], q[2]