Maestro 0.1.0
Unified interface for quantum circuit simulation
Loading...
Searching...
No Matches
Simulator Class Reference

#include <Simulator.hpp>

+ Inheritance diagram for Simulator:
+ Collaboration diagram for Simulator:

Public Member Functions

 Simulator () noexcept
 
virtual ~Simulator ()
 
bool Init (const char *libName) noexcept override
 
unsigned long int CreateSimulator (int simType, int simExecType) override
 
void * GetSimulator ()
 
void FreeResult (char *result)
 
int InitializeSimulator ()
 
int ResetSimulator ()
 
int ConfigureSimulator (const char *key, const char *value)
 
char * GetConfiguration (const char *key)
 
unsigned long int AllocateQubits (unsigned long int nrQubits)
 
unsigned long int GetNumberOfQubits ()
 
int ClearSimulator ()
 
unsigned long long int Measure (const unsigned long int *qubits, unsigned long int nrQubits)
 
int ApplyReset (const unsigned long int *qubits, unsigned long int nrQubits)
 
double Probability (unsigned long long int outcome)
 
void FreeDoubleVector (double *vec) override
 
void FreeULLIVector (unsigned long long int *vec) override
 
double * Amplitude (unsigned long long int outcome)
 
double * AllProbabilities ()
 
double * Probabilities (const unsigned long long int *qubits, unsigned long int nrQubits)
 
unsigned long long int * SampleCounts (const unsigned long long int *qubits, unsigned long int nrQubits, unsigned long int shots)
 
int GetSimulatorType ()
 
int GetSimulationType ()
 
int FlushSimulator ()
 
int SaveStateToInternalDestructive ()
 
int RestoreInternalDestructiveSavedState ()
 
int SaveState ()
 
int RestoreState ()
 
int SetMultithreading (int multithreading)
 
int GetMultithreading ()
 
int IsQcsim ()
 
unsigned long long int MeasureNoCollapse ()
 
int ApplyX (int qubit)
 
int ApplyY (int qubit)
 
int ApplyZ (int qubit)
 
int ApplyH (int qubit)
 
int ApplyS (int qubit)
 
int ApplySDG (int qubit)
 
int ApplyT (int qubit)
 
int ApplyTDG (int qubit)
 
int ApplySX (int qubit)
 
int ApplySXDG (int qubit)
 
int ApplyK (int qubit)
 
int ApplyP (int qubit, double theta)
 
int ApplyRx (int qubit, double theta)
 
int ApplyRy (int qubit, double theta)
 
int ApplyRz (int qubit, double theta)
 
int ApplyU (int qubit, double theta, double phi, double lambda, double gamma)
 
int ApplyCX (int controlQubit, int targetQubit)
 
int ApplyCY (int controlQubit, int targetQubit)
 
int ApplyCZ (int controlQubit, int targetQubit)
 
int ApplyCH (int controlQubit, int targetQubit)
 
int ApplyCSX (int controlQubit, int targetQubit)
 
int ApplyCSXDG (int controlQubit, int targetQubit)
 
int ApplyCP (int controlQubit, int targetQubit, double theta)
 
int ApplyCRx (int controlQubit, int targetQubit, double theta)
 
int ApplyCRy (int controlQubit, int targetQubit, double theta)
 
int ApplyCRz (int controlQubit, int targetQubit, double theta)
 
int ApplyCCX (int controlQubit1, int controlQubit2, int targetQubit)
 
int ApplySwap (int qubit1, int qubit2)
 
int ApplyCSwap (int controlQubit, int qubit1, int qubit2)
 
int ApplyCU (int controlQubit, int targetQubit, double theta, double phi, double lambda, double gamma)
 

Additional Inherited Members

- Protected Member Functions inherited from MaestroLibrary
 MaestroLibrary (const MaestroLibrary &)=delete
 
MaestroLibraryoperator= (const MaestroLibrary &)=delete
 
 MaestroLibrary (MaestroLibrary &&)=default
 
MaestroLibraryoperator= (MaestroLibrary &&)=default
 
 MaestroLibrary () noexcept
 
virtual ~MaestroLibrary ()
 
bool IsValid () const
 
virtual unsigned long int CreateSimpleSimulator (int nrQubits)
 
void DestroySimpleSimulator (unsigned long int simHandle)
 
int RemoveAllOptimizationSimulatorsAndAdd (unsigned long int simHandle, int simType, int simExecType)
 
int AddOptimizationSimulator (unsigned long int simHandle, int simType, int simExecType)
 
char * SimpleExecute (unsigned long int simpleSim, const char *jsonCircuit, const char *jsonConfig)
 
char * SimpleEstimate (unsigned long int simpleSim, const char *jsonCircuit, const char *observableStr, const char *jsonConfig)
 
void * GetSimulator (unsigned long int simHandle)
 
void DestroySimulator (unsigned long int simHandle)
 
int InitializeSimulator (void *sim)
 
int ResetSimulator (void *sim)
 
int ConfigureSimulator (void *sim, const char *key, const char *value)
 
char * GetConfiguration (void *sim, const char *key)
 
unsigned long int AllocateQubits (void *sim, unsigned long int nrQubits)
 
unsigned long int GetNumberOfQubits (void *sim)
 
int ClearSimulator (void *sim)
 
unsigned long long int Measure (void *sim, const unsigned long int *qubits, unsigned long int nrQubits)
 
int ApplyReset (void *sim, const unsigned long int *qubits, unsigned long int nrQubits)
 
double Probability (void *sim, unsigned long long int outcome)
 
double * Amplitude (void *sim, unsigned long long int outcome)
 
double * AllProbabilities (void *sim)
 
double * Probabilities (void *sim, const unsigned long long int *qubits, unsigned long int nrQubits)
 
unsigned long long int * SampleCounts (void *sim, const unsigned long long int *qubits, unsigned long int nrQubits, unsigned long int shots)
 
int GetSimulatorType (void *sim)
 
int GetSimulationType (void *sim)
 
int FlushSimulator (void *sim)
 
int SaveStateToInternalDestructive (void *sim)
 
int RestoreInternalDestructiveSavedState (void *sim)
 
int SaveState (void *sim)
 
int RestoreState (void *sim)
 
int SetMultithreading (void *sim, int multithreading)
 
int GetMultithreading (void *sim)
 
int IsQcsim (void *sim)
 
unsigned long long int MeasureNoCollapse (void *sim)
 
int ApplyX (void *sim, int qubit)
 
int ApplyY (void *sim, int qubit)
 
int ApplyZ (void *sim, int qubit)
 
int ApplyH (void *sim, int qubit)
 
int ApplyS (void *sim, int qubit)
 
int ApplySDG (void *sim, int qubit)
 
int ApplyT (void *sim, int qubit)
 
int ApplyTDG (void *sim, int qubit)
 
int ApplySX (void *sim, int qubit)
 
int ApplySXDG (void *sim, int qubit)
 
int ApplyK (void *sim, int qubit)
 
int ApplyP (void *sim, int qubit, double theta)
 
int ApplyRx (void *sim, int qubit, double theta)
 
int ApplyRy (void *sim, int qubit, double theta)
 
int ApplyRz (void *sim, int qubit, double theta)
 
int ApplyU (void *sim, int qubit, double theta, double phi, double lambda, double gamma)
 
int ApplyCX (void *sim, int controlQubit, int targetQubit)
 
int ApplyCY (void *sim, int controlQubit, int targetQubit)
 
int ApplyCZ (void *sim, int controlQubit, int targetQubit)
 
int ApplyCH (void *sim, int controlQubit, int targetQubit)
 
int ApplyCSX (void *sim, int controlQubit, int targetQubit)
 
int ApplyCSXDG (void *sim, int controlQubit, int targetQubit)
 
int ApplyCP (void *sim, int controlQubit, int targetQubit, double theta)
 
int ApplyCRx (void *sim, int controlQubit, int targetQubit, double theta)
 
int ApplyCRy (void *sim, int controlQubit, int targetQubit, double theta)
 
int ApplyCRz (void *sim, int controlQubit, int targetQubit, double theta)
 
int ApplyCCX (void *sim, int controlQubit1, int controlQubit2, int targetQubit)
 
int ApplySwap (void *sim, int qubit1, int qubit2)
 
int ApplyCSwap (void *sim, int controlQubit, int qubit1, int qubit2)
 
int ApplyCU (void *sim, int controlQubit, int targetQubit, double theta, double phi, double lambda, double gamma)
 
- Protected Member Functions inherited from Utils::Library
 Library (const Library &)=delete
 
Libraryoperator= (const Library &)=delete
 
 Library (Library &&)=default
 
Libraryoperator= (Library &&)=default
 
 Library () noexcept
 
virtual ~Library ()
 
void * GetFunction (const char *funcName) noexcept
 
const void * GetHandle () const noexcept
 
bool IsMuted () const noexcept
 
void SetMute (bool m) noexcept
 
- Static Protected Member Functions inherited from MaestroLibrary
static void CheckFunction (void *func, int line) noexcept
 

Detailed Description

Definition at line 59 of file Simulator.hpp.

Constructor & Destructor Documentation

◆ Simulator()

Simulator::Simulator ( )
inlinenoexcept

Definition at line 61 of file Simulator.hpp.

◆ ~Simulator()

virtual Simulator::~Simulator ( )
inlinevirtual

Definition at line 63 of file Simulator.hpp.

Member Function Documentation

◆ AllocateQubits()

unsigned long int Simulator::AllocateQubits ( unsigned long int  nrQubits)
inline

Definition at line 109 of file Simulator.hpp.

◆ AllProbabilities()

double * Simulator::AllProbabilities ( )
inline

Definition at line 158 of file Simulator.hpp.

◆ Amplitude()

double * Simulator::Amplitude ( unsigned long long int  outcome)
inline

Definition at line 153 of file Simulator.hpp.

◆ ApplyCCX()

int Simulator::ApplyCCX ( int  controlQubit1,
int  controlQubit2,
int  targetQubit 
)
inline

Definition at line 387 of file Simulator.hpp.

◆ ApplyCH()

int Simulator::ApplyCH ( int  controlQubit,
int  targetQubit 
)
inline

Definition at line 340 of file Simulator.hpp.

◆ ApplyCP()

int Simulator::ApplyCP ( int  controlQubit,
int  targetQubit,
double  theta 
)
inline

Definition at line 359 of file Simulator.hpp.

◆ ApplyCRx()

int Simulator::ApplyCRx ( int  controlQubit,
int  targetQubit,
double  theta 
)
inline

Definition at line 366 of file Simulator.hpp.

◆ ApplyCRy()

int Simulator::ApplyCRy ( int  controlQubit,
int  targetQubit,
double  theta 
)
inline

Definition at line 373 of file Simulator.hpp.

◆ ApplyCRz()

int Simulator::ApplyCRz ( int  controlQubit,
int  targetQubit,
double  theta 
)
inline

Definition at line 380 of file Simulator.hpp.

◆ ApplyCSwap()

int Simulator::ApplyCSwap ( int  controlQubit,
int  qubit1,
int  qubit2 
)
inline

Definition at line 400 of file Simulator.hpp.

◆ ApplyCSX()

int Simulator::ApplyCSX ( int  controlQubit,
int  targetQubit 
)
inline

Definition at line 346 of file Simulator.hpp.

◆ ApplyCSXDG()

int Simulator::ApplyCSXDG ( int  controlQubit,
int  targetQubit 
)
inline

Definition at line 352 of file Simulator.hpp.

◆ ApplyCU()

int Simulator::ApplyCU ( int  controlQubit,
int  targetQubit,
double  theta,
double  phi,
double  lambda,
double  gamma 
)
inline

Definition at line 407 of file Simulator.hpp.

◆ ApplyCX()

int Simulator::ApplyCX ( int  controlQubit,
int  targetQubit 
)
inline

Definition at line 322 of file Simulator.hpp.

◆ ApplyCY()

int Simulator::ApplyCY ( int  controlQubit,
int  targetQubit 
)
inline

Definition at line 328 of file Simulator.hpp.

◆ ApplyCZ()

int Simulator::ApplyCZ ( int  controlQubit,
int  targetQubit 
)
inline

Definition at line 334 of file Simulator.hpp.

◆ ApplyH()

int Simulator::ApplyH ( int  qubit)
inline

Definition at line 252 of file Simulator.hpp.

◆ ApplyK()

int Simulator::ApplyK ( int  qubit)
inline

Definition at line 287 of file Simulator.hpp.

◆ ApplyP()

int Simulator::ApplyP ( int  qubit,
double  theta 
)
inline

Definition at line 292 of file Simulator.hpp.

◆ ApplyReset()

int Simulator::ApplyReset ( const unsigned long int *  qubits,
unsigned long int  nrQubits 
)
inline

Definition at line 133 of file Simulator.hpp.

◆ ApplyRx()

int Simulator::ApplyRx ( int  qubit,
double  theta 
)
inline

Definition at line 297 of file Simulator.hpp.

◆ ApplyRy()

int Simulator::ApplyRy ( int  qubit,
double  theta 
)
inline

Definition at line 303 of file Simulator.hpp.

◆ ApplyRz()

int Simulator::ApplyRz ( int  qubit,
double  theta 
)
inline

Definition at line 309 of file Simulator.hpp.

◆ ApplyS()

int Simulator::ApplyS ( int  qubit)
inline

Definition at line 257 of file Simulator.hpp.

◆ ApplySDG()

int Simulator::ApplySDG ( int  qubit)
inline

Definition at line 262 of file Simulator.hpp.

◆ ApplySwap()

int Simulator::ApplySwap ( int  qubit1,
int  qubit2 
)
inline

Definition at line 394 of file Simulator.hpp.

◆ ApplySX()

int Simulator::ApplySX ( int  qubit)
inline

Definition at line 277 of file Simulator.hpp.

◆ ApplySXDG()

int Simulator::ApplySXDG ( int  qubit)
inline

Definition at line 282 of file Simulator.hpp.

◆ ApplyT()

int Simulator::ApplyT ( int  qubit)
inline

Definition at line 267 of file Simulator.hpp.

◆ ApplyTDG()

int Simulator::ApplyTDG ( int  qubit)
inline

Definition at line 272 of file Simulator.hpp.

◆ ApplyU()

int Simulator::ApplyU ( int  qubit,
double  theta,
double  phi,
double  lambda,
double  gamma 
)
inline

Definition at line 315 of file Simulator.hpp.

◆ ApplyX()

int Simulator::ApplyX ( int  qubit)
inline

Definition at line 237 of file Simulator.hpp.

◆ ApplyY()

int Simulator::ApplyY ( int  qubit)
inline

Definition at line 242 of file Simulator.hpp.

◆ ApplyZ()

int Simulator::ApplyZ ( int  qubit)
inline

Definition at line 247 of file Simulator.hpp.

◆ ClearSimulator()

int Simulator::ClearSimulator ( )
inline

Definition at line 120 of file Simulator.hpp.

◆ ConfigureSimulator()

int Simulator::ConfigureSimulator ( const char *  key,
const char *  value 
)
inline

Definition at line 97 of file Simulator.hpp.

◆ CreateSimulator()

unsigned long int Simulator::CreateSimulator ( int  simType,
int  simExecType 
)
inlineoverridevirtual

Reimplemented from MaestroLibrary.

Definition at line 73 of file Simulator.hpp.

◆ FlushSimulator()

int Simulator::FlushSimulator ( )
inline

Definition at line 189 of file Simulator.hpp.

◆ FreeDoubleVector()

void Simulator::FreeDoubleVector ( double *  vec)
inlineoverridevirtual

Reimplemented from MaestroLibrary.

Definition at line 145 of file Simulator.hpp.

◆ FreeResult()

void Simulator::FreeResult ( char *  result)
inlinevirtual

Reimplemented from MaestroLibrary.

Definition at line 85 of file Simulator.hpp.

◆ FreeULLIVector()

void Simulator::FreeULLIVector ( unsigned long long int *  vec)
inlineoverridevirtual

Reimplemented from MaestroLibrary.

Definition at line 149 of file Simulator.hpp.

◆ GetConfiguration()

char * Simulator::GetConfiguration ( const char *  key)
inline

Definition at line 103 of file Simulator.hpp.

◆ GetMultithreading()

int Simulator::GetMultithreading ( )
inline

Definition at line 222 of file Simulator.hpp.

◆ GetNumberOfQubits()

unsigned long int Simulator::GetNumberOfQubits ( )
inline

Definition at line 115 of file Simulator.hpp.

◆ GetSimulationType()

int Simulator::GetSimulationType ( )
inline

Definition at line 184 of file Simulator.hpp.

◆ GetSimulator()

void * Simulator::GetSimulator ( )
inline

Definition at line 83 of file Simulator.hpp.

◆ GetSimulatorType()

int Simulator::GetSimulatorType ( )
inline

Definition at line 179 of file Simulator.hpp.

◆ Init()

bool Simulator::Init ( const char *  libName)
inlineoverridevirtualnoexcept

Reimplemented from MaestroLibrary.

Definition at line 67 of file Simulator.hpp.

◆ InitializeSimulator()

int Simulator::InitializeSimulator ( )
inline

Definition at line 87 of file Simulator.hpp.

◆ IsQcsim()

int Simulator::IsQcsim ( )
inline

Definition at line 227 of file Simulator.hpp.

◆ Measure()

unsigned long long int Simulator::Measure ( const unsigned long int *  qubits,
unsigned long int  nrQubits 
)
inline

Definition at line 125 of file Simulator.hpp.

◆ MeasureNoCollapse()

unsigned long long int Simulator::MeasureNoCollapse ( )
inline

Definition at line 232 of file Simulator.hpp.

◆ Probabilities()

double * Simulator::Probabilities ( const unsigned long long int *  qubits,
unsigned long int  nrQubits 
)
inline

Definition at line 163 of file Simulator.hpp.

◆ Probability()

double Simulator::Probability ( unsigned long long int  outcome)
inline

Definition at line 139 of file Simulator.hpp.

◆ ResetSimulator()

int Simulator::ResetSimulator ( )
inline

Definition at line 92 of file Simulator.hpp.

◆ RestoreInternalDestructiveSavedState()

int Simulator::RestoreInternalDestructiveSavedState ( )
inline

Definition at line 200 of file Simulator.hpp.

◆ RestoreState()

int Simulator::RestoreState ( )
inline

Definition at line 211 of file Simulator.hpp.

◆ SampleCounts()

unsigned long long int * Simulator::SampleCounts ( const unsigned long long int *  qubits,
unsigned long int  nrQubits,
unsigned long int  shots 
)
inline

Definition at line 170 of file Simulator.hpp.

◆ SaveState()

int Simulator::SaveState ( )
inline

Definition at line 206 of file Simulator.hpp.

◆ SaveStateToInternalDestructive()

int Simulator::SaveStateToInternalDestructive ( )
inline

Definition at line 194 of file Simulator.hpp.

◆ SetMultithreading()

int Simulator::SetMultithreading ( int  multithreading)
inline

Definition at line 216 of file Simulator.hpp.


The documentation for this class was generated from the following file: