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