21 bool Init(
const char *libName)
noexcept override
60 char *
SimpleEstimate(
const char *jsonCircuit,
const char *observableStr,
const char *jsonConfig)
71 unsigned long int handle = 0;
90 bool Init(
const char *libName)
noexcept override
126 std::complex<double>
ExpectationValueOperators(
const std::vector<unsigned long> &qubits,
const std::vector<std::array<std::complex<double>, 4>> &matrices)
195 unsigned long long int Measure(
const unsigned long int *qubits,
unsigned long int nrQubits)
203 int ApplyReset(
const unsigned long int *qubits,
unsigned long int nrQubits)
242 double *
Probabilities(
const unsigned long long int *qubits,
unsigned long int nrQubits)
249 unsigned long long int *
SampleCounts(
const unsigned long long int *qubits,
unsigned long int nrQubits,
unsigned long int shots)
468 int ApplyU(
int qubit,
double theta,
double phi,
double lambda,
double gamma)
475 int ApplyCX(
int controlQubit,
int targetQubit)
482 int ApplyCY(
int controlQubit,
int targetQubit)
489 int ApplyCZ(
int controlQubit,
int targetQubit)
496 int ApplyCH(
int controlQubit,
int targetQubit)
517 int ApplyCP(
int controlQubit,
int targetQubit,
double theta)
524 int ApplyCRx(
int controlQubit,
int targetQubit,
double theta)
531 int ApplyCRy(
int controlQubit,
int targetQubit,
double theta)
538 int ApplyCRz(
int controlQubit,
int targetQubit,
double theta)
545 int ApplyCCX(
int controlQubit1,
int controlQubit2,
int targetQubit)
566 int ApplyCU(
int controlQubit,
int targetQubit,
double theta,
double phi,
double lambda,
double gamma)
574 unsigned long int handle = 0;
575 void *simulatorPtr =
nullptr;
int ApplyCCX(void *sim, int controlQubit1, int controlQubit2, int targetQubit)
int ResetSimulator(void *sim)
void * GetSimulator(unsigned long int simHandle)
int ApplyGenericThreeQubitGate(void *sim, unsigned long q0, unsigned long q1, unsigned long q2, const double *matrix)
int IsGateFusionEnabled(void *sim)
int ApplyCZ(void *sim, int controlQubit, int targetQubit)
unsigned long int AllocateQubits(void *sim, unsigned long int nrQubits)
int ConfigureSimulator(void *sim, const char *key, const char *value)
int ApplyGenericTwoQubitGate(void *sim, unsigned long q0, unsigned long q1, const double *matrix)
unsigned long long int * SampleCounts(void *sim, const unsigned long long int *qubits, unsigned long int nrQubits, unsigned long int shots)
int ApplySXDG(void *sim, int qubit)
int ApplyS(void *sim, int qubit)
int GetSimulationType(void *sim)
std::string ValidateRequestJson(const std::string &request)
int GetSimulatorType(void *sim)
int ApplyH(void *sim, int qubit)
double * AllProbabilities(void *sim)
unsigned long long int Measure(void *sim, const unsigned long int *qubits, unsigned long int nrQubits)
int ApplySDG(void *sim, int qubit)
int RemoveAllOptimizationSimulatorsAndAdd(unsigned long int simHandle, int simType, int simExecType)
int ApplyT(void *sim, int qubit)
int ApplyY(void *sim, int qubit)
int ApplySX(void *sim, int qubit)
int ApplyX(void *sim, int qubit)
int ApplyCY(void *sim, int controlQubit, int targetQubit)
int ApplyCX(void *sim, int controlQubit, int targetQubit)
void DestroySimpleSimulator(unsigned long int simHandle)
int ApplyCRx(void *sim, int controlQubit, int targetQubit, double theta)
int ApplyGenericOneQubitGate(void *sim, unsigned long q0, const double *matrix)
int ClearSimulator(void *sim)
int ApplyCSX(void *sim, int controlQubit, int targetQubit)
int ApplyK(void *sim, int qubit)
char * SimpleExecute(unsigned long int simpleSim, const char *jsonCircuit, const char *jsonConfig)
int RestoreState(void *sim)
std::complex< double > ExpectationValueOperators(void *sim, const std::vector< unsigned long > &qubits, const std::vector< std::array< std::complex< double >, 4 > > &matrices)
int ApplyCRz(void *sim, int controlQubit, int targetQubit, double theta)
unsigned GetGateFusionMaxQubits(void *sim)
double * Amplitude(void *sim, unsigned long long int outcome)
std::vector< std::complex< double > > ExpectationValuesComplex(void *sim, const std::vector< std::string > &paulis, bool normalized=true)
int AddOptimizationSimulator(unsigned long int simHandle, int simType, int simExecType)
virtual unsigned long int CreateSimpleSimulator(int nrQubits)
char * SimpleEstimate(unsigned long int simpleSim, const char *jsonCircuit, const char *observableStr, const char *jsonConfig)
double Probability(void *sim, unsigned long long int outcome)
int ApplyCH(void *sim, int controlQubit, int targetQubit)
int GetGateFusionStatistics(void *sim, MaestroGateFusionStatistics *statistics)
int ApplyCSwap(void *sim, int controlQubit, int qubit1, int qubit2)
virtual void FreeULLIVector(unsigned long long int *vec)
virtual unsigned long int CreateSimulator(int simType, int simExecType)
int ApplyCSXDG(void *sim, int controlQubit, int targetQubit)
int SaveStateToInternalDestructive(void *sim)
virtual void FreeDoubleVector(double *vec)
int ApplyCRy(void *sim, int controlQubit, int targetQubit, double theta)
double * Probabilities(void *sim, const unsigned long long int *qubits, unsigned long int nrQubits)
int ApplyRz(void *sim, int qubit, double theta)
MaestroLibrary(const MaestroLibrary &)=delete
int ApplySwap(void *sim, int qubit1, int qubit2)
void DestroySimulator(unsigned long int simHandle)
int ApplyU(void *sim, int qubit, double theta, double phi, double lambda, double gamma)
int ApplyZ(void *sim, int qubit)
std::string RunRequestJson(const std::string &request)
int RestoreInternalDestructiveSavedState(void *sim)
int ApplyCU(void *sim, int controlQubit, int targetQubit, double theta, double phi, double lambda, double gamma)
int ApplyReset(void *sim, const unsigned long int *qubits, unsigned long int nrQubits)
int InitializeSimulator(void *sim)
int ApplyP(void *sim, int qubit, double theta)
int ApplyRy(void *sim, int qubit, double theta)
bool Init(const char *libName) noexcept override
int ApplyCP(void *sim, int controlQubit, int targetQubit, double theta)
int FlushSimulator(void *sim)
int GetMultithreading(void *sim)
void MoveAtBeginningOfChain(void *sim, const std::vector< unsigned long > &qubits)
virtual void FreeResult(char *result)
std::vector< std::complex< double > > GetStateVector(void *sim)
int ApplyRx(void *sim, int qubit, double theta)
unsigned long int GetNumberOfQubits(void *sim)
char * GetConfiguration(void *sim, const char *key)
int ApplyTDG(void *sim, int qubit)
std::vector< double > ExpectationValues(void *sim, const std::vector< std::string > &paulis)
unsigned long long int MeasureNoCollapse(void *sim)
int SetMultithreading(void *sim, int multithreading)
SimpleSimulator() noexcept
bool AddOptimizationSimulator(int simType, int simExecType)
virtual ~SimpleSimulator()
char * SimpleEstimate(const char *jsonCircuit, const char *observableStr, const char *jsonConfig)
unsigned long int CreateSimpleSimulator(int nrQubits) override
char * SimpleExecute(const char *jsonCircuit, const char *jsonConfig)
void FreeResult(char *result) override
bool Init(const char *libName) noexcept override
bool RemoveAllOptimizationSimulatorsAndAdd(int simType, int simExecType)
int ApplyCSXDG(int controlQubit, int targetQubit)
std::vector< std::complex< double > > ExpectationValuesComplex(const std::vector< std::string > &paulis, bool normalized=true)
bool Init(const char *libName) noexcept override
unsigned long int AllocateQubits(unsigned long int nrQubits)
int ApplyCH(int controlQubit, int targetQubit)
int ApplyCSwap(int controlQubit, int qubit1, int qubit2)
int ApplyCY(int controlQubit, int targetQubit)
int ApplyCZ(int controlQubit, int targetQubit)
int ApplyGenericThreeQubitGate(unsigned long q0, unsigned long q1, unsigned long q2, const double *matrix)
int SaveStateToInternalDestructive()
unsigned long int CreateSimulator(int simType, int simExecType) override
double * Probabilities(const unsigned long long int *qubits, unsigned long int nrQubits)
double * AllProbabilities()
int ApplyCRy(int controlQubit, int targetQubit, double theta)
std::vector< std::complex< double > > GetStateVector()
int ApplyP(int qubit, double theta)
void FreeULLIVector(unsigned long long int *vec) override
int InitializeSimulator()
int ApplyCP(int controlQubit, int targetQubit, double theta)
double * Amplitude(unsigned long long int outcome)
std::complex< double > ExpectationValueOperators(const std::vector< unsigned long > &qubits, const std::vector< std::array< std::complex< double >, 4 > > &matrices)
char * GetConfiguration(const char *key)
int ApplyCRz(int controlQubit, int targetQubit, double theta)
int ApplyGenericTwoQubitGate(unsigned long q0, unsigned long q1, const double *matrix)
void FreeResult(char *result) override
void FreeDoubleVector(double *vec) override
void MoveAtBeginningOfChain(const std::vector< unsigned long > &qubits)
int ApplySwap(int qubit1, int qubit2)
int ApplyRy(int qubit, double theta)
int RestoreInternalDestructiveSavedState()
int ApplyRz(int qubit, double theta)
double Probability(unsigned long long int outcome)
int ApplyCX(int controlQubit, int targetQubit)
int ApplyCSX(int controlQubit, int targetQubit)
int ApplyCRx(int controlQubit, int targetQubit, double theta)
int IsGateFusionEnabled()
int GetGateFusionStatistics(MaestroGateFusionStatistics *statistics)
std::vector< double > ExpectationValues(const std::vector< std::string > &paulis)
unsigned GetGateFusionMaxQubits()
unsigned long long int MeasureNoCollapse()
int ConfigureSimulator(const char *key, const char *value)
unsigned long long int Measure(const unsigned long int *qubits, unsigned long int nrQubits)
unsigned long long int * SampleCounts(const unsigned long long int *qubits, unsigned long int nrQubits, unsigned long int shots)
int ApplyU(int qubit, double theta, double phi, double lambda, double gamma)
int ApplyGenericOneQubitGate(unsigned long q0, const double *matrix)
int ApplyRx(int qubit, double theta)
int ApplyReset(const unsigned long int *qubits, unsigned long int nrQubits)
unsigned long int GetNumberOfQubits()
int SetMultithreading(int multithreading)
int ApplyCCX(int controlQubit1, int controlQubit2, int targetQubit)
int ApplyCU(int controlQubit, int targetQubit, double theta, double phi, double lambda, double gamma)