11#ifndef _MAESTRO_INTERFACE_H_
12#define _MAESTRO_INTERFACE_H_
37 int simType,
int simExecType);
46 char *
SimpleExecute(
unsigned long int simpleSim,
const char *circuitStr,
47 const char *jsonConfig);
51 char *
SimpleEstimate(
unsigned long int simpleSim,
const char *circuitStr,
52 const char *observableStr,
const char *jsonConfig);
89 unsigned long int AllocateQubits(
void *sim,
unsigned long int nrQubits);
101 unsigned long long int Measure(
void *sim,
const unsigned long int *qubits,
102 unsigned long int nrQubits);
106 int ApplyReset(
void *sim,
const unsigned long int *qubits,
107 unsigned long int nrQubits);
111 double Probability(
void *sim,
unsigned long long int outcome);
123 double *
Amplitude(
void *sim,
unsigned long long int outcome);
131 double *
Probabilities(
void *sim,
const unsigned long long int *qubits,
132 unsigned long int nrQubits);
137 const unsigned long long int *qubits,
138 unsigned long int nrQubits,
139 unsigned long int shots);
188 int ApplyX(
void *sim,
int qubit);
192 int ApplyY(
void *sim,
int qubit);
196 int ApplyZ(
void *sim,
int qubit);
200 int ApplyH(
void *sim,
int qubit);
204 int ApplyS(
void *sim,
int qubit);
212 int ApplyT(
void *sim,
int qubit);
220 int ApplySX(
void *sim,
int qubit);
228 int ApplyK(
void *sim,
int qubit);
232 int ApplyP(
void *sim,
int qubit,
double theta);
236 int ApplyRx(
void *sim,
int qubit,
double theta);
240 int ApplyRy(
void *sim,
int qubit,
double theta);
244 int ApplyRz(
void *sim,
int qubit,
double theta);
248 int ApplyU(
void *sim,
int qubit,
double theta,
double phi,
double lambda,
253 int ApplyCX(
void *sim,
int controlQubit,
int targetQubit);
257 int ApplyCY(
void *sim,
int controlQubit,
int targetQubit);
261 int ApplyCZ(
void *sim,
int controlQubit,
int targetQubit);
265 int ApplyCH(
void *sim,
int controlQubit,
int targetQubit);
269 int ApplyCSX(
void *sim,
int controlQubit,
int targetQubit);
273 int ApplyCSXDG(
void *sim,
int controlQubit,
int targetQubit);
277 int ApplyCP(
void *sim,
int controlQubit,
int targetQubit,
double theta);
281 int ApplyCRx(
void *sim,
int controlQubit,
int targetQubit,
double theta);
285 int ApplyCRy(
void *sim,
int controlQubit,
int targetQubit,
double theta);
289 int ApplyCRz(
void *sim,
int controlQubit,
int targetQubit,
double theta);
293 int ApplyCCX(
void *sim,
int controlQubit1,
int controlQubit2,
298 int ApplySwap(
void *sim,
int qubit1,
int qubit2);
302 int ApplyCSwap(
void *sim,
int controlQubit,
int qubit1,
int qubit2);
306 int ApplyCU(
void *sim,
int controlQubit,
int targetQubit,
double theta,
307 double phi,
double lambda,
double gamma);
int ApplyK(void *sim, int qubit)
double Probability(void *sim, unsigned long long int outcome)
char * GetConfiguration(void *sim, const char *key)
int InitializeSimulator(void *sim)
int RestoreState(void *sim)
void FreeDoubleVector(double *vec)
int ApplyRx(void *sim, int qubit, double theta)
int ApplyReset(void *sim, const unsigned long int *qubits, unsigned long int nrQubits)
int ApplyX(void *sim, int qubit)
int ApplyU(void *sim, int qubit, double theta, double phi, double lambda, double gamma)
int AddOptimizationSimulator(unsigned long int simHandle, int simType, int simExecType)
unsigned long int CreateSimulator(int simType, int simExecType)
int ApplyCRy(void *sim, int controlQubit, int targetQubit, double theta)
int ApplyTDG(void *sim, int qubit)
int ApplyCSXDG(void *sim, int controlQubit, int targetQubit)
void FreeResult(char *result)
int ApplyS(void *sim, int qubit)
int ApplyCX(void *sim, int controlQubit, int targetQubit)
unsigned long int AllocateQubits(void *sim, unsigned long int nrQubits)
char * SimpleExecute(unsigned long int simpleSim, const char *circuitStr, const char *jsonConfig)
int ApplyCRz(void *sim, int controlQubit, int targetQubit, double theta)
unsigned long int GetNumberOfQubits(void *sim)
double * AllProbabilities(void *sim)
void * GetMaestroObjectWithMute()
unsigned long long int MeasureNoCollapse(void *sim)
int ApplyCP(void *sim, int controlQubit, int targetQubit, double theta)
int ApplySXDG(void *sim, int qubit)
void * GetMaestroObject()
int GetMultithreading(void *sim)
int ApplySDG(void *sim, int qubit)
unsigned long long int Measure(void *sim, const unsigned long int *qubits, unsigned long int nrQubits)
int ApplyCSwap(void *sim, int controlQubit, int qubit1, int qubit2)
void DestroySimpleSimulator(unsigned long int simHandle)
int ApplyCCX(void *sim, int controlQubit1, int controlQubit2, int targetQubit)
int ApplyY(void *sim, int qubit)
double * Amplitude(void *sim, unsigned long long int outcome)
int ApplyZ(void *sim, int qubit)
int ApplyH(void *sim, int qubit)
int ApplyCY(void *sim, int controlQubit, int targetQubit)
char * SimpleEstimate(unsigned long int simpleSim, const char *circuitStr, const char *observableStr, const char *jsonConfig)
double * Probabilities(void *sim, const unsigned long long int *qubits, unsigned long int nrQubits)
int SetMultithreading(void *sim, int multithreading)
int ApplyCU(void *sim, int controlQubit, int targetQubit, double theta, double phi, double lambda, double gamma)
void DestroySimulator(unsigned long int simHandle)
int ApplySwap(void *sim, int qubit1, int qubit2)
void * GetSimulator(unsigned long int simHandle)
int ApplyRy(void *sim, int qubit, double theta)
int ApplyP(void *sim, int qubit, double theta)
int SaveStateToInternalDestructive(void *sim)
int ApplyCH(void *sim, int controlQubit, int targetQubit)
int FlushSimulator(void *sim)
unsigned long int CreateSimpleSimulator(int nrQubits)
int GetSimulationType(void *sim)
int ResetSimulator(void *sim)
unsigned long long int * SampleCounts(void *sim, const unsigned long long int *qubits, unsigned long int nrQubits, unsigned long int shots)
int ApplySX(void *sim, int qubit)
int ApplyCZ(void *sim, int controlQubit, int targetQubit)
int ApplyRz(void *sim, int qubit, double theta)
int GetSimulatorType(void *sim)
int RestoreInternalDestructiveSavedState(void *sim)
int ApplyT(void *sim, int qubit)
int ApplyCRx(void *sim, int controlQubit, int targetQubit, double theta)
int ConfigureSimulator(void *sim, const char *key, const char *value)
int ApplyCSX(void *sim, int controlQubit, int targetQubit)
int ClearSimulator(void *sim)
int RemoveAllOptimizationSimulatorsAndAdd(unsigned long int simHandle, int simType, int simExecType)
void FreeULLIVector(unsigned long long int *vec)