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

The no operation. More...

#include <Operations.h>

+ Inheritance diagram for Circuits::NoOperation< Time >:
+ Collaboration diagram for Circuits::NoOperation< Time >:

Public Member Functions

 NoOperation (Time delay=0)
 Construct a new NoOperation object.
 
virtual std::vector< size_t > AffectedBits () const
 Returns the affected bits.
 
virtual Types::qubits_vector AffectedQubits () const
 Returns the affected qubits.
 
virtual bool CanAffectQuantumState () const
 Find if the operation can affect the quantum state.
 
std::shared_ptr< IOperation< Time > > Clone () const override
 Get a shared pointer to a clone of this object.
 
void Execute (const std::shared_ptr< Simulators::ISimulator > &sim, OperationState &state) const override
 Execute the operation.
 
Time GetDelay () const
 Get the delay of the operation.
 
std::shared_ptr< IOperation< Time > > getptr ()
 Get a shared pointer to this object.
 
virtual OperationType GetType () const
 Get the type of the operation.
 
bool IsClifford () const override
 Checks if the operation is a Clifford one.
 
virtual bool IsConditional () const
 Find if the operation is a conditional operation.
 
virtual bool NeedsEntanglementForDistribution () const
 Find if the operation needs entanglement for distribution.
 
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.
 
void SetDelay (Time d)
 Set the delay of the operation.
 

Detailed Description

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

The no operation.

This a an operation that does nothing.

Template Parameters
TimeThe type of the delay time parameter.
See also
IOperation

Definition at line 531 of file Operations.h.

Constructor & Destructor Documentation

◆ NoOperation()

template<typename Time = Types::time_type>
Circuits::NoOperation< Time >::NoOperation ( Time  delay = 0)
inline

Construct a new NoOperation object.

Construct a new NoOperation object with the specified execution time.

Parameters
delayThe execution time of the operation.

Definition at line 539 of file Operations.h.

Member Function Documentation

◆ AffectedBits()

template<typename Time = Types::time_type>
virtual std::vector< size_t > Circuits::IOperation< Time >::AffectedBits ( ) const
inlinevirtualinherited

Returns the affected bits.

Returns the affected classical bits.

Returns
The affected bits.

Reimplemented in Circuits::Circuit< Time >, Circuits::Circuit< Types::time_type >, Circuits::IConditionalOperation< Time >, Circuits::IConditionalOperation< Types::time_type >, Circuits::MeasurementOperation< Time >, and Circuits::Random< Time >.

Definition at line 478 of file Operations.h.

◆ AffectedQubits()

◆ CanAffectQuantumState()

template<typename Time = Types::time_type>
virtual bool Circuits::IOperation< Time >::CanAffectQuantumState ( ) const
inlinevirtualinherited

Find if the operation can affect the quantum state.

Returns true if the operation can affect the quantum state, false otherwise.

Returns
True if the operation can affect the quantum state, false otherwise.

Reimplemented in Circuits::Circuit< Time >, and Circuits::Circuit< Types::time_type >.

Definition at line 429 of file Operations.h.

References Circuits::IOperation< Time >::GetType(), Circuits::kComposite, Circuits::kConditionalGate, Circuits::kConditionalMeasurement, Circuits::kGate, Circuits::kMeasurement, and Circuits::kReset.

◆ Clone()

template<typename Time = Types::time_type>
std::shared_ptr< IOperation< Time > > Circuits::NoOperation< Time >::Clone ( ) const
inlineoverridevirtual

Get a shared pointer to a clone of this object.

Returns a shared pointer to a copy of this object.

Returns
A shared pointer to this object.

Implements Circuits::IOperation< Time >.

Definition at line 562 of file Operations.h.

References Circuits::IOperation< Time >::GetDelay().

Referenced by Circuits::NoOperation< Time >::Remap().

◆ Execute()

template<typename Time = Types::time_type>
void Circuits::NoOperation< Time >::Execute ( const std::shared_ptr< Simulators::ISimulator > &  sim,
OperationState state 
) const
inlineoverridevirtual

Execute the operation.

Execute the operation on the specified simulator. The execution does nothing, except adding the delay for the execution if a discrete event simulator is used. To not be confused with the simulator passed here as a parameter, which is a quantum simulator.

Parameters
simThe simulator to execute the operation on.
stateThe state of the operation.
See also
ISimulator
OperationState

Implements Circuits::IOperation< Time >.

Definition at line 553 of file Operations.h.

◆ GetDelay()

template<typename Time = Types::time_type>
Time Circuits::IOperation< Time >::GetDelay ( ) const
inlineinherited

Get the delay of the operation.

Returns the delay due of the execution time of the operation.

Returns
The delay of the operation.

Definition at line 497 of file Operations.h.

Referenced by Circuits::ConditionalGate< Time >::Clone(), Circuits::MeasurementOperation< Time >::Clone(), Circuits::NoOperation< Time >::Clone(), Circuits::PhaseGate< Time >::Clone(), Circuits::XGate< Time >::Clone(), Circuits::YGate< Time >::Clone(), Circuits::ZGate< Time >::Clone(), Circuits::HadamardGate< Time >::Clone(), Circuits::SGate< Time >::Clone(), Circuits::SdgGate< Time >::Clone(), Circuits::TGate< Time >::Clone(), Circuits::TdgGate< Time >::Clone(), Circuits::SxGate< Time >::Clone(), Circuits::SxDagGate< Time >::Clone(), Circuits::KGate< Time >::Clone(), Circuits::RxGate< Time >::Clone(), Circuits::RyGate< Time >::Clone(), Circuits::RzGate< Time >::Clone(), Circuits::UGate< Time >::Clone(), Circuits::SwapGate< Time >::Clone(), Circuits::CXGate< Time >::Clone(), Circuits::CYGate< Time >::Clone(), Circuits::CZGate< Time >::Clone(), Circuits::CPGate< Time >::Clone(), Circuits::CRxGate< Time >::Clone(), Circuits::CRyGate< Time >::Clone(), Circuits::CRzGate< Time >::Clone(), Circuits::CHGate< Time >::Clone(), Circuits::CSxGate< Time >::Clone(), Circuits::CSxDagGate< Time >::Clone(), Circuits::CUGate< Time >::Clone(), Circuits::CCXGate< Time >::Clone(), Circuits::CSwapGate< Time >::Clone(), Circuits::Random< Time >::Clone(), Circuits::Reset< Time >::Clone(), and Circuits::ComparableCircuit< Time >::operator==().

◆ getptr()

template<typename Time = Types::time_type>
std::shared_ptr< IOperation< Time > > Circuits::IOperation< Time >::getptr ( )
inlineinherited

Get a shared pointer to this object.

Returns a shared pointer to this object. The object needs to be already wrapped in a shared pointer.

Returns
A shared pointer to this object.

Definition at line 487 of file Operations.h.

◆ GetType()

◆ IsClifford()

template<typename Time = Types::time_type>
bool Circuits::NoOperation< Time >::IsClifford ( ) const
inlineoverridevirtual

Checks if the operation is a Clifford one.

Checks if the operation is a Clifford one, allowing to be simulated in a stabilizers simulator.

Returns
True if it can be applied in a stabilizers simulator, false otherwise.

Reimplemented from Circuits::IOperation< Time >.

Definition at line 592 of file Operations.h.

◆ IsConditional()

template<typename Time = Types::time_type>
virtual bool Circuits::IOperation< Time >::IsConditional ( ) const
inlinevirtualinherited

Find if the operation is a conditional operation.

Returns true if the operation is conditional, false otherwise.

Returns
True if the operation is conditional, false otherwise.

Definition at line 458 of file Operations.h.

References Circuits::IOperation< Time >::GetType(), Circuits::kConditionalGate, Circuits::kConditionalMeasurement, and Circuits::kConditionalRandomGen.

◆ NeedsEntanglementForDistribution()

template<typename Time = Types::time_type>
virtual bool Circuits::IOperation< Time >::NeedsEntanglementForDistribution ( ) const
inlinevirtualinherited

Find if the operation needs entanglement for distribution.

Returns true if the operation needs entanglement for distribution, false otherwise.

Returns
True if the operation needs entanglement for distribution, false otherwise.

Reimplemented in Circuits::Circuit< Time >, and Circuits::Circuit< Types::time_type >.

Definition at line 446 of file Operations.h.

References Circuits::IOperation< Time >::AffectedQubits(), Circuits::IOperation< Time >::GetType(), Circuits::kConditionalGate, and Circuits::kGate.

◆ Remap()

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

Definition at line 576 of file Operations.h.

References Circuits::NoOperation< Time >::Clone().

◆ SetDelay()

template<typename Time = Types::time_type>
void Circuits::IOperation< Time >::SetDelay ( Time  d)
inlineinherited

Set the delay of the operation.

Sets the delay due of the execution time of the operation.

Parameters
dThe delay of the operation.

Definition at line 505 of file Operations.h.


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