File CircuitSimulator.hpp¶
-
struct ApproximationInfo¶
Public Types
Public Functions
-
ApproximationInfo() = default¶
-
inline ApproximationInfo(const double stepFidelity_, const std::size_t stepNumber_, const ApproximationStrategy strategy_)¶
Public Members
-
double stepFidelity = 1.¶
-
std::size_t stepNumber = 1¶
-
ApproximationStrategy strategy = FidelityDriven¶
Public Static Functions
-
static inline ApproximationStrategy fromString(const std::string &str)¶
Friends
-
inline friend std::istream &operator>>(std::istream &in, ApproximationStrategy &strategy_)¶
-
ApproximationInfo() = default¶
-
class CircuitSimulator : public Simulator¶
Subclassed by DeterministicNoiseSimulator, HybridSchrodingerFeynmanSimulator, PathSimulator, StochasticNoiseSimulator, UnitarySimulator
Public Functions
-
inline explicit CircuitSimulator(std::unique_ptr<qc::QuantumComputation> &&qc_, const dd::DDPackageConfig &config = dd::DDPackageConfig())¶
-
inline CircuitSimulator(std::unique_ptr<qc::QuantumComputation> &&qc_, const std::uint64_t seed_, const dd::DDPackageConfig &config = dd::DDPackageConfig())¶
-
inline CircuitSimulator(std::unique_ptr<qc::QuantumComputation> &&qc_, const ApproximationInfo &approximationInfo_, const dd::DDPackageConfig &config = dd::DDPackageConfig())¶
-
inline CircuitSimulator(std::unique_ptr<qc::QuantumComputation> &&qc_, const ApproximationInfo &approximationInfo_, const std::uint64_t seed_, const dd::DDPackageConfig &config = dd::DDPackageConfig())¶
-
inline virtual std::map<std::string, std::size_t> measureAllNonCollapsing(std::size_t shots) override¶
-
virtual std::map<std::string, std::size_t> simulate(std::size_t shots) override¶
Run the simulation in the (derived) class.
- Parameters:
shots – number of shots to take from the final quantum state
- Returns:
a map from the strings representing basis states to the number of times they have been measured
-
virtual dd::fp expectationValue(const qc::QuantumComputation &observable)¶
-
inline virtual std::map<std::string, std::string> additionalStatistics() override¶
-
inline virtual std::size_t getNumberOfQubits() const override¶
-
inline virtual std::size_t getNumberOfOps() const override¶
-
inline virtual std::string getName() const override¶
Protected Functions
-
CircuitAnalysis analyseCircuit()¶
-
virtual std::map<std::size_t, bool> singleShot(bool ignoreNonUnitaries)¶
-
virtual void initializeSimulation(std::size_t nQubits)¶
-
virtual void reset(qc::NonUnitaryOperation *nonUnitaryOp)¶
Protected Attributes
-
std::unique_ptr<qc::QuantumComputation> qc¶
-
std::size_t singleShots = {0}¶
-
ApproximationInfo approximationInfo¶
-
std::size_t approximationRuns = {0}¶
-
long double finalFidelity = {1.0L}¶
-
struct CircuitAnalysis¶
-
inline explicit CircuitSimulator(std::unique_ptr<qc::QuantumComputation> &&qc_, const dd::DDPackageConfig &config = dd::DDPackageConfig())¶