C++ API Index
The Simulator
provides basic functions for the derived simulators to use.
-
template<class Config = dd::DDPackageConfig>
class Simulator Public Functions
-
inline explicit Simulator(const std::uint64_t randomSeed)
-
inline explicit Simulator()
-
virtual ~Simulator() = default
-
virtual std::map<std::string, std::size_t> simulate(std::size_t shots) = 0
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
-
inline virtual std::map<std::string, std::string> additionalStatistics()
-
inline std::string measureAll(bool collapse = false)
-
inline std::map<std::string, std::size_t> measureAllNonCollapsing(std::size_t shots)
-
inline char measureOneCollapsing(const qc::Qubit index, const bool assumeProbabilityNormalization = true)
-
std::map<std::string, std::size_t> sampleFromAmplitudeVectorInPlace(std::vector<std::complex<dd::fp>> &litudes, std::size_t shots)
-
template<class ReturnType = dd::ComplexValue>
inline std::vector<ReturnType> getVector() const
-
inline virtual std::size_t getActiveNodeCount() const
-
inline virtual std::size_t getMaxNodeCount() const
-
inline virtual std::size_t getMaxMatrixNodeCount() const
-
inline virtual std::size_t getMatrixActiveNodeCount() const
-
inline virtual std::size_t countNodesFromRoot()
-
inline std::string getSeed() const
-
virtual std::size_t getNumberOfQubits() const = 0
-
virtual std::size_t getNumberOfOps() const = 0
-
virtual std::string getName() const = 0
-
std::vector<std::priority_queue<std::pair<double, dd::vNode*>, std::vector<std::pair<double, dd::vNode*>>>> getNodeContributions(const dd::vEdge &edge) const
Calculate the contributions of each node and return as vector of priority queues (each queue corresponds to a level in the decision diagram)
- Template Parameters:
Config – Configuration for the underlying DD package
- Parameters:
edge – root edge to the decision diagram
- Returns:
vector of priority queues with each queue corresponding to a level of the decision diagram
-
double approximateByFidelity(std::unique_ptr<dd::Package<Config>> &localDD, dd::vEdge &edge, double targetFidelity, bool allLevels, bool actuallyRemoveNodes, bool verbose = false)
Approximate a quantum state to a given fidelity.
- Template Parameters:
Config – Configuration for the underlying DD package
- Parameters:
localDD – pointer to the DD package where the quantum state lives
edge – reference to the root node of the quantum state, will point to the new state afterwards if removeNodes is true
targetFidelity – the fidelity that should be achieved
allLevels – if true, apply approximation to targetFidely to each level, if false, only apply to the most suitable level
actuallyRemoveNodes – if true, actually remove the nodes that are identified as unnecessary for the targetFidelity, if false, don’t remove anything
verbose – output information about the process and result
- Returns:
fidelity of the resulting quantum state
-
inline double approximateByFidelity(double targetFidelity, bool allLevels, bool removeNodes, bool verbose = false)
-
double approximateBySampling(std::unique_ptr<dd::Package<Config>> &localDD, dd::vEdge &edge, std::size_t nSamples, std::size_t threshold, bool actuallyRemoveNodes, bool verbose = false)
-
inline double approximateBySampling(std::size_t nSamples, std::size_t threshold, bool removeNodes, bool verbose = false)
Public Members
Public Static Functions
-
static inline std::string toBinaryString(const std::size_t value, const std::size_t numberOfQubits)
Protected Static Functions
-
static void nextPath(std::string &s)
-
inline explicit Simulator(const std::uint64_t randomSeed)