|
Maestro 0.2.5
Unified interface for quantum circuit simulation
|
#include <RandomOp.h>
Inheritance diagram for Circuits::Random< Time >:
Collaboration diagram for Circuits::Random< Time >:Public Member Functions | |
| Random (const std::vector< size_t > &ind={}, size_t seed=0, Time delay=0) | |
| Construct a new Random object. | |
| std::vector< size_t > | AffectedBits () const override |
| Get 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. | |
| const std::vector< size_t > & | GetBitsIndices () const |
| Get the indices of the classical bits affected by this operation. | |
| Time | GetDelay () const |
| Get the delay of the operation. | |
| std::shared_ptr< IOperation< Time > > | getptr () |
| Get a shared pointer to this object. | |
| OperationType | GetType () const override |
| 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 | Seed (size_t sd) |
| Seeds the random generator. | |
| void | SetBitsIndices (const std::vector< size_t > &ind) |
| Set the indices of the classical bits affected by this operation. | |
| void | SetDelay (Time d) |
| Set the delay of the operation. | |
Protected Member Functions | |
| void | SetBit (size_t index, Types::qubit_t bit) |
| Set the classical bit to index. | |
Random operation.
Implements an operation that can generate random classical bits that are stored in the classical state/register.
| Time | The data type used for operation time. |
Definition at line 34 of file RandomOp.h.
|
inline |
Construct a new Random object.
Constructs a new Random object.
| ind | The indices of the classical bits to be set by the generator. |
| seed | The seed used for the random number generator. |
| delay | The excution time. |
Definition at line 44 of file RandomOp.h.
|
inlineoverridevirtual |
Get the affected bits.
Returns the indices of the classical bits affected by this operation.
Reimplemented from Circuits::IOperation< Time >.
Definition at line 114 of file RandomOp.h.
References Circuits::Random< Time >::GetBitsIndices().
|
inlinevirtualinherited |
Returns the affected qubits.
Returns the affected qubits by the operation.
Reimplemented in Circuits::Circuit< Time >, Circuits::Circuit< Types::time_type >, Circuits::IConditionalOperation< Time >, Circuits::IConditionalOperation< Types::time_type >, Circuits::ConditionalRandomGen< Time >, Circuits::MeasurementOperation< Time >, Circuits::SingleQubitGate< Time >, Circuits::SingleQubitGate< Types::time_type >, Circuits::TwoQubitsGate< Time >, Circuits::TwoQubitsGate< Types::time_type >, Circuits::ThreeQubitsGate< Time >, Circuits::ThreeQubitsGate< Types::time_type >, and Circuits::Reset< Time >.
Definition at line 470 of file Operations.h.
Referenced by Circuits::IOperation< Time >::NeedsEntanglementForDistribution().
|
inlinevirtualinherited |
Find if the operation can affect the quantum state.
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.
|
inlineoverridevirtual |
Get a shared pointer to a clone of this object.
Returns a shared pointer to a copy of this object.
Implements Circuits::IOperation< Time >.
Definition at line 103 of file RandomOp.h.
References Circuits::Random< Time >::GetBitsIndices(), and Circuits::IOperation< Time >::GetDelay().
|
inlineoverridevirtual |
Execute the operation.
Executes the operation.
| sim | The simulator to be used for the execution. |
| state | The state of the simulator. |
Implements Circuits::IOperation< Time >.
Definition at line 56 of file RandomOp.h.
References Circuits::OperationState::SetBit().
|
inline |
Get the indices of the classical bits affected by this operation.
Returns the indices of the classical bits affected by this operation.
Definition at line 75 of file RandomOp.h.
Referenced by Circuits::Random< Time >::AffectedBits(), and Circuits::Random< Time >::Clone().
|
inlineinherited |
Get the delay of the operation.
Returns the delay due of the execution time 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==().
|
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.
Definition at line 487 of file Operations.h.
|
inlineoverridevirtual |
Get the type of the operation.
Returns the type of the operation, in this case, random.
Reimplemented from Circuits::IOperation< Time >.
Definition at line 67 of file RandomOp.h.
References Circuits::kRandomGen.
|
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.
Reimplemented from Circuits::IOperation< Time >.
Definition at line 150 of file RandomOp.h.
|
inlinevirtualinherited |
Find if the operation is a conditional operation.
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.
|
inlinevirtualinherited |
Find if the operation needs entanglement for distribution.
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.
|
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< Time >.
Definition at line 126 of file RandomOp.h.
|
inline |
Seeds the random generator.
Seeds the random generator using the specified seed.
| sd | The seed to be used. |
Definition at line 91 of file RandomOp.h.
|
inlineprotected |
Set the classical bit to index.
This method sets the classical bit index at the specified index.
| index | The index of the classical bit index. |
| bit | The classical bit index to set. |
Definition at line 160 of file RandomOp.h.
|
inline |
Set the indices of the classical bits affected by this operation.
Sets the indices of the classical bits affected by this operation.
| ind | The indices of the classical bits affected by this operation. |
Definition at line 83 of file RandomOp.h.
|
inlineinherited |
Set the delay of the operation.
Sets the delay due of the execution time of the operation.
| d | The delay of the operation. |
Definition at line 505 of file Operations.h.