|
Maestro 0.1.0
Unified interface for quantum circuit simulation
|
The interface for three qubits quantum gates. More...
#include <QuantumGates.h>
Public Member Functions | |
| ThreeQubitsGate (Types::qubit_t qubit1=0, Types::qubit_t qubit2=0, Types::qubit_t qubit3=0, Time delay=0) | |
| ThreeQubitsGate constructor. | |
| virtual | ~ThreeQubitsGate () |
| The ThreeQubitsGate destructor. | |
| unsigned int | GetNumQubits () const override |
| Get the number of qubits the quantum gate is applied to. | |
| void | SetQubit (Types::qubit_t q, unsigned long index=0) override |
| Set the qubit the quantum gate is applied to. | |
| Types::qubit_t | GetQubit (unsigned int index=0) const override |
| Get the qubit the quantum gate is applied to. | |
| Types::qubits_vector | AffectedQubits () const override |
| Get the qubits the quantum gate is applied to. | |
| std::shared_ptr< IOperation< Time > > | Remap (const std::unordered_map< Types::qubit_t, Types::qubit_t > &qubitsMap, const std::unordered_map< Types::qubit_t, Types::qubit_t > &bitsMap={}) const override |
| Get a shared pointer to a remapped operation. | |
| Public Member Functions inherited from Circuits::IQuantumGate< Types::time_type > | |
| IQuantumGate (Types::time_type delay=0) | |
| IQuantumGate constructor. | |
| virtual QuantumGateType | GetGateType () const=0 |
| Get the type of the quantum gate. | |
| virtual std::vector< double > | GetParams () const |
| Get the gate parameters. | |
| Public Member Functions inherited from Circuits::IGateOperation< Types::time_type > | |
| IGateOperation (Types::time_type delay=0) | |
| Construct a new IGateOperation object. | |
| OperationType | GetType () const override |
| Get the type of the operation. | |
| Public Member Functions inherited from Circuits::IOperation< Types::time_type > | |
| IOperation (Types::time_type delay=0) | |
| Construct a new IOperation object. | |
| virtual | ~IOperation ()=default |
| Destroy the IOperation object. | |
| virtual void | Execute (const std::shared_ptr< Simulators::ISimulator > &sim, OperationState &state) const=0 |
| Execute the operation. | |
| virtual std::shared_ptr< IOperation< Types::time_type > > | Clone () const=0 |
| Get a shared pointer to a clone of this object. | |
| virtual bool | CanAffectQuantumState () const |
| Find if the operation can affect the quantum state. | |
| virtual bool | NeedsEntanglementForDistribution () const |
| Find if the operation needs entanglement for distribution. | |
| virtual bool | IsConditional () const |
| Find if the operation is a conditional operation. | |
| virtual std::vector< size_t > | AffectedBits () const |
| Returns the affected bits. | |
| std::shared_ptr< IOperation< Types::time_type > > | getptr () |
| Get a shared pointer to this object. | |
| Types::time_type | GetDelay () const |
| Get the delay of the operation. | |
| void | SetDelay (Types::time_type d) |
| Set the delay of the operation. | |
| virtual bool | IsClifford () const |
| Checks if the operation is a Clifford one. | |
The interface for three qubits quantum gates.
The interface for three qubits quantum gates. Three qubits quantum gates are quantum operations that can be applied to three qubits.
| Time | The type of the execution delay. |
Definition at line 339 of file QuantumGates.h.
|
inline |
ThreeQubitsGate constructor.
Constructs the ThreeQubitsGate object. If specified, the delay is the time the quantum gate takes to execute. This gate is abstract and will be derived from.
| qubit1 | The first qubit the quantum gate is applied to. |
| qubit2 | The second qubit the quantum gate is applied to. |
| qubit3 | The third qubit the quantum gate is applied to. |
| delay | The time the quantum gate takes to execute. |
Definition at line 353 of file QuantumGates.h.
|
inlinevirtual |
The ThreeQubitsGate destructor.
The ThreeQubitsGate destructor, virtual because this is an abstract class that will be derived from.
Definition at line 364 of file QuantumGates.h.
|
inlineoverridevirtual |
Get the qubits the quantum gate is applied to.
Returns the qubits the quantum gate is applied to, in this case three qubits.
Reimplemented from Circuits::IOperation< Types::time_type >.
Definition at line 419 of file QuantumGates.h.
|
inlineoverridevirtual |
Get the number of qubits the quantum gate is applied to.
Returns the number of qubits the quantum gate is applied to, in this case 3.
Implements Circuits::IGateOperation< Types::time_type >.
Definition at line 373 of file QuantumGates.h.
|
inlineoverridevirtual |
Get the qubit the quantum gate is applied to.
Returns the qubit the quantum gate is applied to. Either specify zero, one or two for the index or leave it default (0). If anything else is used, it will return UINT_MAX.
| index | The index of the qubit to get (0, 1 or 2, default value 0). |
Implements Circuits::IGateOperation< Types::time_type >.
Definition at line 401 of file QuantumGates.h.
|
inlineoverridevirtual |
Get a shared pointer to a remapped operation.
Returns a shared pointer to a copy of the operation with qubits and classical bits changed according to the provided maps.
| qubitsMap | The map of qubits to remap. |
| bitsMap | The map of classical bits to remap. |
Implements Circuits::IOperation< Types::time_type >.
Definition at line 434 of file QuantumGates.h.
|
inlineoverridevirtual |
Set the qubit the quantum gate is applied to.
Sets the qubit the quantum gate is applied to. Either specify zero, one or two for the index or leave it default (0).
| q | The qubit the quantum gate is applied to. |
| index | The index of the qubit to set (0, 1 or 2, default value 0). |
Implements Circuits::IGateOperation< Types::time_type >.
Definition at line 383 of file QuantumGates.h.