File NoiseFunctionality.hpp¶
Stochastic and deterministic noise functionality.
Self-contained copy of the MQT Core dd::NoiseFunctionality that was removed alongside the density-matrix support. The stochastic noise operation cache is now owned by StochasticNoiseFunctionality (instead of the DD package), and the removed noise qc::OpTypes (ATrue/AFalse/MultiATrue/MultiAFalse) are replaced by a local enumeration used only for cache keys and noise-operation selection.
-
namespace dd
-
namespace ddsim
Typedefs
-
using ArrayOfEdges = std::array<dCachedEdge, NrEdges::value>¶
Enums
Functions
-
void sanityCheckOfNoiseProbabilities(double noiseProbability, double amplitudeDampingProb, double multiQubitGateFactor)¶
-
class DeterministicNoiseFunctionality¶
Public Functions
-
DeterministicNoiseFunctionality(DensityDDPackage &dd, std::size_t nq, double noiseProbabilitySingleQubit, double noiseProbabilityMultiQubit, double ampDampProbSingleQubit, double ampDampProbMultiQubit, const std::string &cNoiseEffects)¶
Protected Functions
-
inline std::size_t getNumberOfQubits() const¶
Protected Attributes
-
DensityDDPackage *package¶
-
std::size_t nQubits¶
-
double noiseProbSingleQubit¶
-
double noiseProbMultiQubit¶
-
double ampDampingProbSingleQubit¶
-
double ampDampingProbMultiQubit¶
-
std::vector<NoiseOperations> noiseEffects¶
Private Functions
-
dCachedEdge applyNoiseEffects(dEdge &originalEdge, const std::set<qc::Qubit> &usedQubits, bool firstPathEdge, dd::Qubit level)¶
-
void applyAmplitudeDampingToEdges(ArrayOfEdges &e, double probability) const¶
-
void applyDepolarisationToEdges(ArrayOfEdges &e, double probability) const¶
Private Static Functions
-
static void applyPhaseFlipToEdges(ArrayOfEdges &e, double probability)¶
-
DeterministicNoiseFunctionality(DensityDDPackage &dd, std::size_t nq, double noiseProbabilitySingleQubit, double noiseProbabilityMultiQubit, double ampDampProbSingleQubit, double ampDampProbMultiQubit, const std::string &cNoiseEffects)¶
-
class StochasticNoiseFunctionality¶
Public Functions
-
StochasticNoiseFunctionality(dd::Package &dd, std::size_t nq, double gateNoiseProbability, double amplitudeDampingProb, double multiQubitGateFactor, const std::string &cNoiseEffects)¶
-
inline ~StochasticNoiseFunctionality()¶
Protected Types
-
enum StochasticNoiseKind¶
Local identifiers for cached stochastic noise operations, replacing the removed noise
qc::OpTypes.Values:
-
enumerator StochX¶
-
enumerator StochY¶
-
enumerator StochZ¶
-
enumerator StochATrue¶
-
enumerator StochAFalse¶
-
enumerator StochMultiATrue¶
-
enumerator StochMultiAFalse¶
-
enumerator StochIdentity¶
-
enumerator StochasticNoiseKindEnd¶
-
enumerator StochX¶
Protected Functions
-
inline std::size_t getNumberOfQubits() const¶
-
double getNoiseProbability(bool multiQubitNoiseFlag) const¶
-
dd::GateMatrix getAmplitudeDampingOperationMatrix(bool multiQubitNoiseFlag, bool amplitudeDampingFlag) const¶
-
dd::mEdge stackOperation(const dd::mEdge &operation, qc::Qubit target, StochasticNoiseKind noiseOperation, const dd::GateMatrix &matrix)¶
-
dd::mEdge generateNoiseOperation(dd::mEdge operation, qc::Qubit target, std::mt19937_64 &generator, bool amplitudeDamping, bool multiQubitOperation)¶
-
StochasticNoiseKind returnNoiseOperation(NoiseOperations noiseOperation, double prob, bool multiQubitNoiseFlag) const¶
Protected Attributes
-
std::size_t nQubits¶
-
double noiseProbability¶
-
double noiseProbabilityMulti¶
-
std::vector<NoiseOperations> noiseEffects¶
-
StochasticNoiseOperationTable<dd::mEdge> stochasticNoiseOperationCache¶
Protected Static Functions
-
static StochasticNoiseKind getAmplitudeDampingOperationType(bool multiQubitNoiseFlag, bool amplitudeDampingFlag)¶
-
StochasticNoiseFunctionality(dd::Package &dd, std::size_t nq, double gateNoiseProbability, double amplitudeDampingProb, double multiQubitGateFactor, const std::string &cNoiseEffects)¶
-
using ArrayOfEdges = std::array<dCachedEdge, NrEdges::value>¶
-
namespace ddsim