Maestro 0.1.0
Unified interface for quantum circuit simulation
Loading...
Searching...
No Matches
Interface.h
Go to the documentation of this file.
1
8
9#pragma once
10
11#ifndef _MAESTRO_INTERFACE_H_
12#define _MAESTRO_INTERFACE_H_
13
14extern "C" {
15
16void *GetMaestroObject();
18
19unsigned long int CreateSimpleSimulator(int nrQubits);
20void DestroySimpleSimulator(unsigned long int simHandle);
21
22int RemoveAllOptimizationSimulatorsAndAdd(unsigned long int simHandle,
23 int simType, int simExecType);
24int AddOptimizationSimulator(unsigned long int simHandle, int simType,
25 int simExecType);
26
27char *SimpleExecute(unsigned long int simpleSim, const char *circuitStr,
28 const char *jsonConfig);
29void FreeResult(char *result);
30
31unsigned long int CreateSimulator(int simType, int simExecType);
32void *GetSimulator(unsigned long int simHandle);
33void DestroySimulator(unsigned long int simHandle);
34
35int InitializeSimulator(void *sim);
36int ResetSimulator(void *sim);
37int ConfigureSimulator(void *sim, const char *key, const char *value);
38char *GetConfiguration(void *sim, const char *key);
39unsigned long int AllocateQubits(void *sim, unsigned long int nrQubits);
40unsigned long int GetNumberOfQubits(void *sim);
41int ClearSimulator(void *sim);
42unsigned long long int Measure(void *sim, const unsigned long int *qubits,
43 unsigned long int nrQubits);
44int ApplyReset(void *sim, const unsigned long int *qubits,
45 unsigned long int nrQubits);
46double Probability(void *sim, unsigned long long int outcome);
47void FreeDoubleVector(double *vec);
48void FreeULLIVector(unsigned long long int *vec);
49double *Amplitude(void *sim, unsigned long long int outcome);
50double *AllProbabilities(void *sim);
51double *Probabilities(void *sim, const unsigned long long int *qubits,
52 unsigned long int nrQubits);
53unsigned long long int *SampleCounts(void *sim,
54 const unsigned long long int *qubits,
55 unsigned long int nrQubits,
56 unsigned long int shots);
57int GetSimulatorType(void *sim);
58int GetSimulationType(void *sim);
59int FlushSimulator(void *sim);
62int SaveState(void *sim);
63int RestoreState(void *sim);
64int SetMultithreading(void *sim, int multithreading);
65int GetMultithreading(void *sim);
66int IsQcsim(void *sim);
67unsigned long long int MeasureNoCollapse(void *sim);
68
69int ApplyX(void *sim, int qubit);
70int ApplyY(void *sim, int qubit);
71int ApplyZ(void *sim, int qubit);
72int ApplyH(void *sim, int qubit);
73int ApplyS(void *sim, int qubit);
74int ApplySDG(void *sim, int qubit);
75int ApplyT(void *sim, int qubit);
76int ApplyTDG(void *sim, int qubit);
77int ApplySX(void *sim, int qubit);
78int ApplySXDG(void *sim, int qubit);
79int ApplyK(void *sim, int qubit);
80int ApplyP(void *sim, int qubit, double theta);
81int ApplyRx(void *sim, int qubit, double theta);
82int ApplyRy(void *sim, int qubit, double theta);
83int ApplyRz(void *sim, int qubit, double theta);
84int ApplyU(void *sim, int qubit, double theta, double phi, double lambda,
85 double gamma);
86int ApplyCX(void *sim, int controlQubit, int targetQubit);
87int ApplyCY(void *sim, int controlQubit, int targetQubit);
88int ApplyCZ(void *sim, int controlQubit, int targetQubit);
89int ApplyCH(void *sim, int controlQubit, int targetQubit);
90int ApplyCSX(void *sim, int controlQubit, int targetQubit);
91int ApplyCSXDG(void *sim, int controlQubit, int targetQubit);
92int ApplyCP(void *sim, int controlQubit, int targetQubit, double theta);
93int ApplyCRx(void *sim, int controlQubit, int targetQubit, double theta);
94int ApplyCRy(void *sim, int controlQubit, int targetQubit, double theta);
95int ApplyCRz(void *sim, int controlQubit, int targetQubit, double theta);
96int ApplyCCX(void *sim, int controlQubit1, int controlQubit2, int targetQubit);
97int ApplySwap(void *sim, int qubit1, int qubit2);
98int ApplyCSwap(void *sim, int controlQubit, int qubit1, int qubit2);
99int ApplyCU(void *sim, int controlQubit, int targetQubit, double theta,
100 double phi, double lambda, double gamma);
101}
102
103#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)
Definition Interface.cpp:89
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)
Definition Interface.cpp:99
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:48
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:32
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:71
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)
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:64
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:79
void FreeULLIVector(unsigned long long int *vec)
int SaveState(void *sim)