Maestro 0.2.5
Unified interface for quantum circuit simulation
Loading...
Searching...
No Matches
Interface.h
Go to the documentation of this file.
1
10#pragma once
11
12#ifndef _MAESTRO_INTERFACE_H_
13#define _MAESTRO_INTERFACE_H_
14
15extern "C" {
16#ifdef _WIN32
17__declspec(dllexport)
18#endif
19 void *GetMaestroObject();
20
21#ifdef _WIN32
22__declspec(dllexport)
23#endif
25
26#ifdef _WIN32
27__declspec(dllexport)
28#endif
29 unsigned long int CreateSimpleSimulator(int nrQubits);
30#ifdef _WIN32
31__declspec(dllexport)
32#endif
33 void DestroySimpleSimulator(unsigned long int simHandle);
34#ifdef _WIN32
35__declspec(dllexport)
36#endif
37 int RemoveAllOptimizationSimulatorsAndAdd(unsigned long int simHandle,
38 int simType, int simExecType);
39#ifdef _WIN32
40__declspec(dllexport)
41#endif
42 int AddOptimizationSimulator(unsigned long int simHandle, int simType,
43 int simExecType);
44#ifdef _WIN32
45__declspec(dllexport)
46#endif
47 char *SimpleExecute(unsigned long int simpleSim, const char *circuitStr,
48 const char *jsonConfig);
49#ifdef _WIN32
50__declspec(dllexport)
51#endif
52 char *SimpleEstimate(unsigned long int simpleSim, const char *circuitStr,
53 const char *observableStr, const char *jsonConfig);
54#ifdef _WIN32
55__declspec(dllexport)
56#endif
57 void FreeResult(char *result);
58
59#ifdef _WIN32
60__declspec(dllexport)
61#endif
62 unsigned long int CreateSimulator(int simType, int simExecType);
63#ifdef _WIN32
64__declspec(dllexport)
65#endif
66 void *GetSimulator(unsigned long int simHandle);
67#ifdef _WIN32
68__declspec(dllexport)
69#endif
70 void DestroySimulator(unsigned long int simHandle);
71#ifdef _WIN32
72__declspec(dllexport)
73#endif
74 int InitializeSimulator(void *sim);
75#ifdef _WIN32
76__declspec(dllexport)
77#endif
78 int ResetSimulator(void *sim);
79#ifdef _WIN32
80__declspec(dllexport)
81#endif
82 int ConfigureSimulator(void *sim, const char *key, const char *value);
83#ifdef _WIN32
84__declspec(dllexport)
85#endif
86 char *GetConfiguration(void *sim, const char *key);
87#ifdef _WIN32
88__declspec(dllexport)
89#endif
90 unsigned long int AllocateQubits(void *sim, unsigned long int nrQubits);
91#ifdef _WIN32
92__declspec(dllexport)
93#endif
94 unsigned long int GetNumberOfQubits(void *sim);
95#ifdef _WIN32
96__declspec(dllexport)
97#endif
98 int ClearSimulator(void *sim);
99#ifdef _WIN32
100__declspec(dllexport)
101#endif
102 unsigned long long int Measure(void *sim, const unsigned long int *qubits,
103 unsigned long int nrQubits);
104#ifdef _WIN32
105__declspec(dllexport)
106#endif
107 int ApplyReset(void *sim, const unsigned long int *qubits,
108 unsigned long int nrQubits);
109#ifdef _WIN32
110__declspec(dllexport)
111#endif
112 double Probability(void *sim, unsigned long long int outcome);
113#ifdef _WIN32
114__declspec(dllexport)
115#endif
116 void FreeDoubleVector(double *vec);
117#ifdef _WIN32
118__declspec(dllexport)
119#endif
120 void FreeULLIVector(unsigned long long int *vec);
121#ifdef _WIN32
122__declspec(dllexport)
123#endif
124 double *Amplitude(void *sim, unsigned long long int outcome);
125#ifdef _WIN32
126__declspec(dllexport)
127#endif
128 double *AllProbabilities(void *sim);
129#ifdef _WIN32
130__declspec(dllexport)
131#endif
132 double *Probabilities(void *sim, const unsigned long long int *qubits,
133 unsigned long int nrQubits);
134#ifdef _WIN32
135__declspec(dllexport)
136#endif
137 unsigned long long int *SampleCounts(void *sim,
138 const unsigned long long int *qubits,
139 unsigned long int nrQubits,
140 unsigned long int shots);
141#ifdef _WIN32
142__declspec(dllexport)
143#endif
144 int GetSimulatorType(void *sim);
145#ifdef _WIN32
146__declspec(dllexport)
147#endif
148 int GetSimulationType(void *sim);
149#ifdef _WIN32
150__declspec(dllexport)
151#endif
152 int FlushSimulator(void *sim);
153#ifdef _WIN32
154__declspec(dllexport)
155#endif
156 int SaveStateToInternalDestructive(void *sim);
157#ifdef _WIN32
158__declspec(dllexport)
159#endif
161#ifdef _WIN32
162__declspec(dllexport)
163#endif
164 int SaveState(void *sim);
165#ifdef _WIN32
166__declspec(dllexport)
167#endif
168 int RestoreState(void *sim);
169#ifdef _WIN32
170__declspec(dllexport)
171#endif
172 int SetMultithreading(void *sim, int multithreading);
173#ifdef _WIN32
174__declspec(dllexport)
175#endif
176 int GetMultithreading(void *sim);
177#ifdef _WIN32
178__declspec(dllexport)
179#endif
180 int IsQcsim(void *sim);
181#ifdef _WIN32
182__declspec(dllexport)
183#endif
184 unsigned long long int MeasureNoCollapse(void *sim);
185
186#ifdef _WIN32
187__declspec(dllexport)
188#endif
189 int ApplyX(void *sim, int qubit);
190#ifdef _WIN32
191__declspec(dllexport)
192#endif
193 int ApplyY(void *sim, int qubit);
194#ifdef _WIN32
195__declspec(dllexport)
196#endif
197 int ApplyZ(void *sim, int qubit);
198#ifdef _WIN32
199__declspec(dllexport)
200#endif
201 int ApplyH(void *sim, int qubit);
202#ifdef _WIN32
203__declspec(dllexport)
204#endif
205 int ApplyS(void *sim, int qubit);
206#ifdef _WIN32
207__declspec(dllexport)
208#endif
209 int ApplySDG(void *sim, int qubit);
210#ifdef _WIN32
211__declspec(dllexport)
212#endif
213 int ApplyT(void *sim, int qubit);
214#ifdef _WIN32
215__declspec(dllexport)
216#endif
217 int ApplyTDG(void *sim, int qubit);
218#ifdef _WIN32
219__declspec(dllexport)
220#endif
221 int ApplySX(void *sim, int qubit);
222#ifdef _WIN32
223__declspec(dllexport)
224#endif
225 int ApplySXDG(void *sim, int qubit);
226#ifdef _WIN32
227__declspec(dllexport)
228#endif
229 int ApplyK(void *sim, int qubit);
230#ifdef _WIN32
231__declspec(dllexport)
232#endif
233 int ApplyP(void *sim, int qubit, double theta);
234#ifdef _WIN32
235__declspec(dllexport)
236#endif
237 int ApplyRx(void *sim, int qubit, double theta);
238#ifdef _WIN32
239__declspec(dllexport)
240#endif
241 int ApplyRy(void *sim, int qubit, double theta);
242#ifdef _WIN32
243__declspec(dllexport)
244#endif
245 int ApplyRz(void *sim, int qubit, double theta);
246#ifdef _WIN32
247__declspec(dllexport)
248#endif
249 int ApplyU(void *sim, int qubit, double theta, double phi, double lambda,
250 double gamma);
251#ifdef _WIN32
252__declspec(dllexport)
253#endif
254 int ApplyCX(void *sim, int controlQubit, int targetQubit);
255#ifdef _WIN32
256__declspec(dllexport)
257#endif
258 int ApplyCY(void *sim, int controlQubit, int targetQubit);
259#ifdef _WIN32
260__declspec(dllexport)
261#endif
262 int ApplyCZ(void *sim, int controlQubit, int targetQubit);
263#ifdef _WIN32
264__declspec(dllexport)
265#endif
266 int ApplyCH(void *sim, int controlQubit, int targetQubit);
267#ifdef _WIN32
268__declspec(dllexport)
269#endif
270 int ApplyCSX(void *sim, int controlQubit, int targetQubit);
271#ifdef _WIN32
272__declspec(dllexport)
273#endif
274 int ApplyCSXDG(void *sim, int controlQubit, int targetQubit);
275#ifdef _WIN32
276__declspec(dllexport)
277#endif
278 int ApplyCP(void *sim, int controlQubit, int targetQubit, double theta);
279#ifdef _WIN32
280__declspec(dllexport)
281#endif
282 int ApplyCRx(void *sim, int controlQubit, int targetQubit, double theta);
283#ifdef _WIN32
284__declspec(dllexport)
285#endif
286 int ApplyCRy(void *sim, int controlQubit, int targetQubit, double theta);
287#ifdef _WIN32
288__declspec(dllexport)
289#endif
290 int ApplyCRz(void *sim, int controlQubit, int targetQubit, double theta);
291#ifdef _WIN32
292__declspec(dllexport)
293#endif
294 int ApplyCCX(void *sim, int controlQubit1, int controlQubit2,
295 int targetQubit);
296#ifdef _WIN32
297__declspec(dllexport)
298#endif
299 int ApplySwap(void *sim, int qubit1, int qubit2);
300#ifdef _WIN32
301__declspec(dllexport)
302#endif
303 int ApplyCSwap(void *sim, int controlQubit, int qubit1, int qubit2);
304#ifdef _WIN32
305__declspec(dllexport)
306#endif
307 int ApplyCU(void *sim, int controlQubit, int targetQubit, double theta,
308 double phi, double lambda, double gamma);
309}
310
311#endif
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()
Definition Interface.cpp:54
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()
Definition Interface.cpp:34
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)
Definition Interface.cpp:82
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)
Definition Interface.cpp:73
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 IsQcsim(void *sim)
int RemoveAllOptimizationSimulatorsAndAdd(unsigned long int simHandle, int simType, int simExecType)
Definition Interface.cpp:91
void FreeULLIVector(unsigned long long int *vec)
int SaveState(void *sim)