Maestro 0.1.0
Unified interface for quantum circuit simulation
Loading...
Searching...
No Matches
Circuits::SingleQubitGate< Time > Class Template Reference

The interface for single qubit quantum gates. More...

#include <QuantumGates.h>

Inheritance diagram for Circuits::SingleQubitGate< Time >:
Circuits::IQuantumGate< Types::time_type > Circuits::IGateOperation< Types::time_type > Circuits::IOperation< Types::time_type >

Public Member Functions

 SingleQubitGate (Types::qubit_t qubit=0, Time delay=0)
 SingleQubitGate constructor.
virtual ~SingleQubitGate ()
 The SingleQubitGate 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.

Detailed Description

template<typename Time = Types::time_type>
class Circuits::SingleQubitGate< Time >

The interface for single qubit quantum gates.

The interface for single qubit quantum gates. Single qubit quantum gates are quantum operations that can be applied to a single qubit. This class is abstract and will be derived from.

Template Parameters
TimeThe type of the execution delay.
See also
IQuantumGate

Definition at line 112 of file QuantumGates.h.

Constructor & Destructor Documentation

◆ SingleQubitGate()

template<typename Time = Types::time_type>
Circuits::SingleQubitGate< Time >::SingleQubitGate ( Types::qubit_t qubit = 0,
Time delay = 0 )
inline

SingleQubitGate constructor.

Constructs the SingleQubitGate object. If specified, the delay is the time the quantum gate takes to execute.

Parameters
qubitThe qubit the quantum gate is applied to.
delayThe time the quantum gate takes to execute.
See also
IQuantumGate

Definition at line 123 of file QuantumGates.h.

◆ ~SingleQubitGate()

template<typename Time = Types::time_type>
virtual Circuits::SingleQubitGate< Time >::~SingleQubitGate ( )
inlinevirtual

The SingleQubitGate destructor.

The SingleQubitGate destructor, virtual because this is an abstract class that will be derived from.

Definition at line 132 of file QuantumGates.h.

Member Function Documentation

◆ AffectedQubits()

template<typename Time = Types::time_type>
Types::qubits_vector Circuits::SingleQubitGate< Time >::AffectedQubits ( ) const
inlineoverridevirtual

Get the qubits the quantum gate is applied to.

Returns the qubits the quantum gate is applied to, in this case a single qubit.

Returns
The qubits the quantum gate is applied to.

Reimplemented from Circuits::IOperation< Types::time_type >.

Definition at line 175 of file QuantumGates.h.

◆ GetNumQubits()

template<typename Time = Types::time_type>
unsigned int Circuits::SingleQubitGate< Time >::GetNumQubits ( ) const
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 1.

Returns
The number of qubits the quantum gate is applied to: 1.

Implements Circuits::IGateOperation< Types::time_type >.

Definition at line 141 of file QuantumGates.h.

◆ GetQubit()

template<typename Time = Types::time_type>
Types::qubit_t Circuits::SingleQubitGate< Time >::GetQubit ( unsigned int index = 0) const
inlineoverridevirtual

Get the qubit the quantum gate is applied to.

Returns the qubit the quantum gate is applied to. Either specify zero for the index or leave it default. The parameter value is ignored anyway.

Parameters
indexThe index of the qubit to get (ignored, default 0).
Returns
The qubit the quantum gate is applied to.

Implements Circuits::IGateOperation< Types::time_type >.

Definition at line 164 of file QuantumGates.h.

◆ Remap()

template<typename Time = Types::time_type>
std::shared_ptr< IOperation< Time > > Circuits::SingleQubitGate< 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
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.

Parameters
qubitsMapThe map of qubits to remap.
bitsMapThe map of classical bits to remap.
Returns
A shared pointer to the remapped object.

Implements Circuits::IOperation< Types::time_type >.

Definition at line 188 of file QuantumGates.h.

◆ SetQubit()

template<typename Time = Types::time_type>
void Circuits::SingleQubitGate< Time >::SetQubit ( Types::qubit_t q,
unsigned long index = 0 )
inlineoverridevirtual

Set the qubit the quantum gate is applied to.

Sets the qubit the quantum gate is applied to. Either specify zero for the index or leave it default.

Parameters
qThe qubit the quantum gate is applied to.
indexThe index of the qubit to set (ignored, default 0).

Implements Circuits::IGateOperation< Types::time_type >.

Definition at line 151 of file QuantumGates.h.


The documentation for this class was generated from the following file: