12#ifndef _MAESTRO_INTERFACE_H_
13#define _MAESTRO_INTERFACE_H_
52 int ApplyGenericThreeQubitGate(
void *sim,
unsigned long qubit0,
unsigned long qubit1,
unsigned long qubit2,
const double *matrix);
101 __declspec(dllexport)
103 char *
SimpleExecute(
unsigned long int simpleSim,
const char *circuitStr,
const char *jsonConfig);
105 __declspec(dllexport)
107 char *
SimpleEstimate(
unsigned long int simpleSim,
const char *circuitStr,
const char *observableStr,
const char *jsonConfig);
109 __declspec(dllexport)
114 __declspec(dllexport)
118 __declspec(dllexport)
122 __declspec(dllexport)
126 __declspec(dllexport)
130 __declspec(dllexport)
134 __declspec(dllexport)
138 __declspec(dllexport)
142 __declspec(dllexport)
144 unsigned long int AllocateQubits(
void *sim,
unsigned long int nrQubits);
146 __declspec(dllexport)
150 __declspec(dllexport)
154 __declspec(dllexport)
156 unsigned long long int Measure(
void *sim,
const unsigned long int *qubits,
unsigned long int nrQubits);
158 __declspec(dllexport)
160 int ApplyReset(
void *sim,
const unsigned long int *qubits,
unsigned long int nrQubits);
162 __declspec(dllexport)
164 double Probability(
void *sim,
unsigned long long int outcome);
166 __declspec(dllexport)
170 __declspec(dllexport)
174 __declspec(dllexport)
176 double *
Amplitude(
void *sim,
unsigned long long int outcome);
178 __declspec(dllexport)
182 __declspec(dllexport)
184 double *
Probabilities(
void *sim,
const unsigned long long int *qubits,
unsigned long int nrQubits);
186 __declspec(dllexport)
188 unsigned long long int *
SampleCounts(
void *sim,
const unsigned long long int *qubits,
unsigned long int nrQubits,
unsigned long int shots);
190 __declspec(dllexport)
194 __declspec(dllexport)
198 __declspec(dllexport)
202 __declspec(dllexport)
206 __declspec(dllexport)
210 __declspec(dllexport)
214 __declspec(dllexport)
218 __declspec(dllexport)
222 __declspec(dllexport)
226 __declspec(dllexport)
230 __declspec(dllexport)
235 __declspec(dllexport)
237 int ApplyX(
void *sim,
int qubit);
239 __declspec(dllexport)
241 int ApplyY(
void *sim,
int qubit);
243 __declspec(dllexport)
245 int ApplyZ(
void *sim,
int qubit);
247 __declspec(dllexport)
249 int ApplyH(
void *sim,
int qubit);
251 __declspec(dllexport)
253 int ApplyS(
void *sim,
int qubit);
255 __declspec(dllexport)
259 __declspec(dllexport)
261 int ApplyT(
void *sim,
int qubit);
263 __declspec(dllexport)
267 __declspec(dllexport)
269 int ApplySX(
void *sim,
int qubit);
271 __declspec(dllexport)
275 __declspec(dllexport)
277 int ApplyK(
void *sim,
int qubit);
279 __declspec(dllexport)
281 int ApplyP(
void *sim,
int qubit,
double theta);
283 __declspec(dllexport)
285 int ApplyRx(
void *sim,
int qubit,
double theta);
287 __declspec(dllexport)
289 int ApplyRy(
void *sim,
int qubit,
double theta);
291 __declspec(dllexport)
293 int ApplyRz(
void *sim,
int qubit,
double theta);
295 __declspec(dllexport)
297 int ApplyU(
void *sim,
int qubit,
double theta,
double phi,
double lambda,
double gamma);
299 __declspec(dllexport)
301 int ApplyCX(
void *sim,
int controlQubit,
int targetQubit);
303 __declspec(dllexport)
305 int ApplyCY(
void *sim,
int controlQubit,
int targetQubit);
307 __declspec(dllexport)
309 int ApplyCZ(
void *sim,
int controlQubit,
int targetQubit);
311 __declspec(dllexport)
313 int ApplyCH(
void *sim,
int controlQubit,
int targetQubit);
315 __declspec(dllexport)
317 int ApplyCSX(
void *sim,
int controlQubit,
int targetQubit);
319 __declspec(dllexport)
321 int ApplyCSXDG(
void *sim,
int controlQubit,
int targetQubit);
323 __declspec(dllexport)
325 int ApplyCP(
void *sim,
int controlQubit,
int targetQubit,
double theta);
327 __declspec(dllexport)
329 int ApplyCRx(
void *sim,
int controlQubit,
int targetQubit,
double theta);
331 __declspec(dllexport)
333 int ApplyCRy(
void *sim,
int controlQubit,
int targetQubit,
double theta);
335 __declspec(dllexport)
337 int ApplyCRz(
void *sim,
int controlQubit,
int targetQubit,
double theta);
339 __declspec(dllexport)
341 int ApplyCCX(
void *sim,
int controlQubit1,
int controlQubit2,
int targetQubit);
343 __declspec(dllexport)
345 int ApplySwap(
void *sim,
int qubit1,
int qubit2);
347 __declspec(dllexport)
349 int ApplyCSwap(
void *sim,
int controlQubit,
int qubit1,
int qubit2);
351 __declspec(dllexport)
353 int ApplyCU(
void *sim,
int controlQubit,
int targetQubit,
double theta,
double phi,
double lambda,
double gamma);
360 __declspec(dllexport)
364 __declspec(dllexport)
368 __declspec(dllexport)
372 __declspec(dllexport)
382 __declspec(dllexport)
386 __declspec(dllexport)
393 __declspec(dllexport)
401 __declspec(dllexport)
405 __declspec(dllexport)
409 __declspec(dllexport)
411 int MaestroApplyOperator(
void *sim,
const unsigned long int *qubits,
size_t count,
const double *interleaved,
int normalize);
413 __declspec(dllexport)
418 __declspec(dllexport)
420 int MaestroSampleCountsBits(
void *sim,
const unsigned long int *qubits,
size_t width,
size_t shots,
unsigned char *outcomes,
unsigned long long *counts,
421 size_t capacity,
size_t *written);
423 __declspec(dllexport)
425 int MaestroMeasureBits(
void *sim,
const unsigned long int *qubits,
size_t width,
unsigned char *outcomes);
int MaestroGetStateVector(void *sim, double *interleaved, size_t capacity)
int ApplyK(void *sim, int qubit)
double Probability(void *sim, unsigned long long int outcome)
char * GetConfiguration(void *sim, const char *key)
int GetGateFusionStatistics(void *sim, MaestroGateFusionStatistics *statistics)
int MaestroMoveAtBeginningOfChain(void *sim, const unsigned long int *qubits, size_t count)
int MaestroMeasureBits(void *sim, const unsigned long int *qubits, size_t width, unsigned char *outcomes)
int InitializeSimulator(void *sim)
int RestoreState(void *sim)
char * MaestroRunRequestJson(const char *request)
char * MaestroValidateRequestJson(const char *request)
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 MaestroExpectationValues(void *sim, const char *const *paulis, size_t count, double *values, size_t capacity)
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)
int MaestroProbabilityBits(void *sim, const unsigned char *bits, size_t width, double *result)
void FreeResult(char *result)
int ApplyS(void *sim, int qubit)
int MaestroDensityMatrixElementBits(void *sim, const unsigned char *row, const unsigned char *col, size_t width, double *real, double *imag)
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 ApplyGenericThreeQubitGate(void *sim, unsigned long qubit0, unsigned long qubit1, unsigned long qubit2, const double *matrix)
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 MaestroGetDensityMatrix(void *sim, int normalized, double *interleaved, size_t capacity)
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 MaestroExpectationValueOperators(void *sim, const unsigned long int *qubits, size_t count, const double *matrices, double *real, double *imag)
int ApplyY(void *sim, int qubit)
double * Amplitude(void *sim, unsigned long long int outcome)
char * MaestroFinalizeDistributedMpiGpuJson(void)
int ApplyZ(void *sim, int qubit)
int ApplyH(void *sim, int qubit)
int ApplyCY(void *sim, int controlQubit, int targetQubit)
char * MaestroGetCapabilitiesJson(void)
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)
int IsGateFusionEnabled(void *sim)
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 MaestroExpectationValuesComplex(void *sim, const char *const *paulis, size_t count, int normalized, double *real, double *imag, size_t capacity)
int FlushSimulator(void *sim)
int ApplyGenericOneQubitGate(void *sim, unsigned long qubit, const double *matrix)
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 ApplyGenericTwoQubitGate(void *sim, unsigned long qubit0, unsigned long qubit1, const double *matrix)
int GetSimulatorType(void *sim)
int RestoreInternalDestructiveSavedState(void *sim)
int MaestroExpectationValueComplex(void *sim, const char *pauli, int normalized, double *real, double *imag)
int ApplyT(void *sim, int qubit)
int MaestroSampleCountsBits(void *sim, const unsigned long int *qubits, size_t width, size_t shots, unsigned char *outcomes, unsigned long long *counts, size_t capacity, size_t *written)
int ApplyCRx(void *sim, int controlQubit, int targetQubit, double theta)
int MaestroDensityMatrixTrace(void *sim, double *real, double *imag)
int ConfigureSimulator(void *sim, const char *key, const char *value)
int ApplyCSX(void *sim, int controlQubit, int targetQubit)
int ClearSimulator(void *sim)
unsigned GetGateFusionMaxQubits(void *sim)
int RemoveAllOptimizationSimulatorsAndAdd(unsigned long int simHandle, int simType, int simExecType)
void FreeULLIVector(unsigned long long int *vec)
int MaestroApplyOperator(void *sim, const unsigned long int *qubits, size_t count, const double *interleaved, int normalize)