Sequential Quantum Gate Decomposer  v1.9.3
Powerful decomposition of general unitarias into one- and two-qubit gates gates
Classes | Macros | Functions | Variables
qgd_VQE_Base_Wrapper.cpp File Reference
#include <Python.h>
#include <numpy/arrayobject.h>
#include "structmember.h"
#include <stdio.h>
#include "Variational_Quantum_Eigensolver_Base.h"
#include "numpy_interface.h"
Include dependency graph for qgd_VQE_Base_Wrapper.cpp:

Go to the source code of this file.

Classes

struct  qgd_Circuit_Wrapper
 Type definition of the qgd_Circuit_Wrapper Python class of the qgd_Circuit_Wrapper module. More...
 
struct  qgd_Variational_Quantum_Eigensolver_Base_Wrapper
 Type definition of the qgd_N_Qubit_Decomposition_Wrapper Python class of the qgd_N_Qubit_Decomposition_Wrapper module. More...
 

Macros

#define PY_SSIZE_T_CLEAN
 

Functions

Variational_Quantum_Eigensolver_Basecreate_qgd_Variational_Quantum_Eigensolver_Base (Matrix_sparse Hamiltonian, int qbit_num, std::map< std::string, Config_Element > &config, int accelerator_num)
 Creates an instance of class N_Qubit_Decomposition and return with a pointer pointing to the class instance (C++ linking is needed) More...
 
PyMODINIT_FUNC PyInit_qgd_Variational_Quantum_Eigensolver_Base_Wrapper (void)
 Method called when the Python module is initialized. More...
 
static PyObject * qgd_Variational_Quantum_Eigensolver_Base_Wrapper_apply_to (qgd_Variational_Quantum_Eigensolver_Base_Wrapper *self, PyObject *args)
 
static void qgd_Variational_Quantum_Eigensolver_Base_Wrapper_dealloc (qgd_Variational_Quantum_Eigensolver_Base_Wrapper *self)
 Method called when a python instance of the class qgd_N_Qubit_Decomposition_Wrapper is destroyed. More...
 
static PyObject * qgd_Variational_Quantum_Eigensolver_Base_Wrapper_Generate_Circuit (qgd_Variational_Quantum_Eigensolver_Base_Wrapper *self, PyObject *args)
 
static PyObject * qgd_Variational_Quantum_Eigensolver_Base_Wrapper_get_circuit (qgd_Variational_Quantum_Eigensolver_Base_Wrapper *self)
 Wrapper function to retrieve the circuit (Squander format) incorporated in the instance. More...
 
static PyObject * qgd_Variational_Quantum_Eigensolver_Base_Wrapper_get_Optimized_Parameters (qgd_Variational_Quantum_Eigensolver_Base_Wrapper *self)
 Extract the optimized parameters. More...
 
static PyObject * qgd_Variational_Quantum_Eigensolver_Base_Wrapper_get_Parameter_Num (qgd_Variational_Quantum_Eigensolver_Base_Wrapper *self)
 Get the number of free parameters in the gate structure used for the decomposition. More...
 
static PyObject * qgd_Variational_Quantum_Eigensolver_Base_Wrapper_get_Qbit_Num (qgd_Variational_Quantum_Eigensolver_Base_Wrapper *self)
 Call to retrieve the number of qubits in the circuit. More...
 
static PyObject * qgd_Variational_Quantum_Eigensolver_Base_Wrapper_get_Second_Renyi_Entropy (qgd_Variational_Quantum_Eigensolver_Base_Wrapper *self, PyObject *args)
 Wrapper function to evaluate the second Rényi entropy of a quantum circuit at a specific parameter set. More...
 
static int qgd_Variational_Quantum_Eigensolver_Base_Wrapper_init (qgd_Variational_Quantum_Eigensolver_Base_Wrapper *self, PyObject *args, PyObject *kwds)
 Method called when a python instance of the class qgd_N_Qubit_Decomposition_Wrapper is initialized. More...
 
static PyObject * qgd_Variational_Quantum_Eigensolver_Base_Wrapper_new (PyTypeObject *type, PyObject *args, PyObject *kwds)
 Method called when a python instance of the class qgd_N_Qubit_Decomposition_Wrapper is allocated. More...
 
static PyObject * qgd_Variational_Quantum_Eigensolver_Base_Wrapper_Optimization_Problem (qgd_Variational_Quantum_Eigensolver_Base_Wrapper *self, PyObject *args)
 
static PyObject * qgd_Variational_Quantum_Eigensolver_Base_Wrapper_Optimization_Problem_Batch (qgd_Variational_Quantum_Eigensolver_Base_Wrapper *self, PyObject *args)
 Wrapper function to evaluate the cost function for many input paramaters at once. More...
 
static PyObject * qgd_Variational_Quantum_Eigensolver_Base_Wrapper_Optimization_Problem_Grad (qgd_Variational_Quantum_Eigensolver_Base_Wrapper *self, PyObject *args)
 Wrapper function to evaluate the cost function an dthe gradient components. More...
 
static PyObject * qgd_Variational_Quantum_Eigensolver_Base_Wrapper_set_Ansatz (qgd_Variational_Quantum_Eigensolver_Base_Wrapper *self, PyObject *args, PyObject *kwds)
 
static PyObject * qgd_Variational_Quantum_Eigensolver_Base_Wrapper_set_Gate_Structure (qgd_Variational_Quantum_Eigensolver_Base_Wrapper *self, PyObject *args)
 Wrapper function to set custom gate structure for the decomposition. More...
 
static PyObject * qgd_Variational_Quantum_Eigensolver_Base_Wrapper_set_Gate_Structure_From_Binary (qgd_Variational_Quantum_Eigensolver_Base_Wrapper *self, PyObject *args)
 Wrapper function to set custom layers to the gate structure that are intended to be used in the decomposition. More...
 
static PyObject * qgd_Variational_Quantum_Eigensolver_Base_Wrapper_set_Initial_State (qgd_Variational_Quantum_Eigensolver_Base_Wrapper *self, PyObject *args)
 Set the initial state used in the VQE process. More...
 
static PyObject * qgd_Variational_Quantum_Eigensolver_Base_Wrapper_set_Optimization_Tolerance (qgd_Variational_Quantum_Eigensolver_Base_Wrapper *self, PyObject *args)
 
static PyObject * qgd_Variational_Quantum_Eigensolver_Base_Wrapper_set_Optimized_Parameters (qgd_Variational_Quantum_Eigensolver_Base_Wrapper *self, PyObject *args)
 Set parameters for the solver. More...
 
static PyObject * qgd_Variational_Quantum_Eigensolver_Base_Wrapper_set_Optimizer (qgd_Variational_Quantum_Eigensolver_Base_Wrapper *self, PyObject *args, PyObject *kwds)
 
static PyObject * qgd_Variational_Quantum_Eigensolver_Base_Wrapper_set_Project_Name (qgd_Variational_Quantum_Eigensolver_Base_Wrapper *self, PyObject *args)
 Call to set a project name. More...
 
static PyObject * qgd_Variational_Quantum_Eigensolver_Base_Wrapper_Start_Optimization (qgd_Variational_Quantum_Eigensolver_Base_Wrapper *self)
 
void release_Variational_Quantum_Eigensolver_Base (Variational_Quantum_Eigensolver_Base *instance)
 Call to deallocate an instance of N_Qubit_Decomposition class. More...
 

Variables

static PyMemberDef qgd_Variational_Quantum_Eigensolver_Base_Wrapper_members []
 Structure containing metadata about the members of class qgd_N_Qubit_Decomposition_Wrapper. More...
 
static PyMethodDef qgd_Variational_Quantum_Eigensolver_Base_Wrapper_methods []
 Structure containing metadata about the methods of class qgd_N_Qubit_Decomposition_Wrapper. More...
 
static PyModuleDef qgd_Variational_Quantum_Eigensolver_Base_Wrapper_Module
 Structure containing metadata about the module. More...
 
static PyTypeObject qgd_Variational_Quantum_Eigensolver_Base_Wrapper_Type
 A structure describing the type of the class qgd_N_Qubit_Decomposition_Wrapper. More...
 

Macro Definition Documentation

◆ PY_SSIZE_T_CLEAN

#define PY_SSIZE_T_CLEAN

Definition at line 23 of file qgd_VQE_Base_Wrapper.cpp.

Function Documentation

◆ create_qgd_Variational_Quantum_Eigensolver_Base()

Variational_Quantum_Eigensolver_Base* create_qgd_Variational_Quantum_Eigensolver_Base ( Matrix_sparse  Hamiltonian,
int  qbit_num,
std::map< std::string, Config_Element > &  config,
int  accelerator_num 
)

Creates an instance of class N_Qubit_Decomposition and return with a pointer pointing to the class instance (C++ linking is needed)

Parameters
UmtxAn instance of class Matrix containing the unitary to be decomposed
qbit_numNumber of qubits spanning the unitary
optimize_layer_numLogical value. Set true to optimize the number of decomposing layers during the decomposition procedure, or false otherwise.
initial_guessType to guess the initial values for the optimization. Possible values: ZEROS=0, RANDOM=1, CLOSE_TO_ZERO=2
Returns
Return with a void pointer pointing to an instance of N_Qubit_Decomposition class.

Definition at line 70 of file qgd_VQE_Base_Wrapper.cpp.

Here is the caller graph for this function:

◆ PyInit_qgd_Variational_Quantum_Eigensolver_Base_Wrapper()

PyMODINIT_FUNC PyInit_qgd_Variational_Quantum_Eigensolver_Base_Wrapper ( void  )

Method called when the Python module is initialized.

Definition at line 1269 of file qgd_VQE_Base_Wrapper.cpp.

◆ qgd_Variational_Quantum_Eigensolver_Base_Wrapper_apply_to()

static PyObject* qgd_Variational_Quantum_Eigensolver_Base_Wrapper_apply_to ( qgd_Variational_Quantum_Eigensolver_Base_Wrapper self,
PyObject *  args 
)
static

Definition at line 461 of file qgd_VQE_Base_Wrapper.cpp.

Here is the call graph for this function:

◆ qgd_Variational_Quantum_Eigensolver_Base_Wrapper_dealloc()

static void qgd_Variational_Quantum_Eigensolver_Base_Wrapper_dealloc ( qgd_Variational_Quantum_Eigensolver_Base_Wrapper self)
static

Method called when a python instance of the class qgd_N_Qubit_Decomposition_Wrapper is destroyed.

Parameters
selfA pointer pointing to an instance of class qgd_N_Qubit_Decomposition_Wrapper.

Definition at line 100 of file qgd_VQE_Base_Wrapper.cpp.

Here is the call graph for this function:

◆ qgd_Variational_Quantum_Eigensolver_Base_Wrapper_Generate_Circuit()

static PyObject* qgd_Variational_Quantum_Eigensolver_Base_Wrapper_Generate_Circuit ( qgd_Variational_Quantum_Eigensolver_Base_Wrapper self,
PyObject *  args 
)
static

Definition at line 760 of file qgd_VQE_Base_Wrapper.cpp.

◆ qgd_Variational_Quantum_Eigensolver_Base_Wrapper_get_circuit()

static PyObject* qgd_Variational_Quantum_Eigensolver_Base_Wrapper_get_circuit ( qgd_Variational_Quantum_Eigensolver_Base_Wrapper self)
static

Wrapper function to retrieve the circuit (Squander format) incorporated in the instance.

Parameters
selfA pointer pointing to an instance of the class qgd_N_Qubit_Decomposition_custom_Wrapper.

Definition at line 949 of file qgd_VQE_Base_Wrapper.cpp.

Here is the call graph for this function:

◆ qgd_Variational_Quantum_Eigensolver_Base_Wrapper_get_Optimized_Parameters()

static PyObject* qgd_Variational_Quantum_Eigensolver_Base_Wrapper_get_Optimized_Parameters ( qgd_Variational_Quantum_Eigensolver_Base_Wrapper self)
static

Extract the optimized parameters.

Parameters
start_indexThe index of the first inverse gate

Definition at line 235 of file qgd_VQE_Base_Wrapper.cpp.

Here is the call graph for this function:

◆ qgd_Variational_Quantum_Eigensolver_Base_Wrapper_get_Parameter_Num()

static PyObject* qgd_Variational_Quantum_Eigensolver_Base_Wrapper_get_Parameter_Num ( qgd_Variational_Quantum_Eigensolver_Base_Wrapper self)
static

Get the number of free parameters in the gate structure used for the decomposition.

Definition at line 933 of file qgd_VQE_Base_Wrapper.cpp.

◆ qgd_Variational_Quantum_Eigensolver_Base_Wrapper_get_Qbit_Num()

static PyObject* qgd_Variational_Quantum_Eigensolver_Base_Wrapper_get_Qbit_Num ( qgd_Variational_Quantum_Eigensolver_Base_Wrapper self)
static

Call to retrieve the number of qubits in the circuit.

Definition at line 282 of file qgd_VQE_Base_Wrapper.cpp.

◆ qgd_Variational_Quantum_Eigensolver_Base_Wrapper_get_Second_Renyi_Entropy()

static PyObject* qgd_Variational_Quantum_Eigensolver_Base_Wrapper_get_Second_Renyi_Entropy ( qgd_Variational_Quantum_Eigensolver_Base_Wrapper self,
PyObject *  args 
)
static

Wrapper function to evaluate the second Rényi entropy of a quantum circuit at a specific parameter set.

Definition at line 670 of file qgd_VQE_Base_Wrapper.cpp.

Here is the call graph for this function:

◆ qgd_Variational_Quantum_Eigensolver_Base_Wrapper_init()

static int qgd_Variational_Quantum_Eigensolver_Base_Wrapper_init ( qgd_Variational_Quantum_Eigensolver_Base_Wrapper self,
PyObject *  args,
PyObject *  kwds 
)
static

Method called when a python instance of the class qgd_N_Qubit_Decomposition_Wrapper is initialized.

Parameters
selfA pointer pointing to an instance of the class qgd_N_Qubit_Decomposition_Wrapper.
argsA tuple of the input arguments: Umtx (numpy array), qbit_num (integer), optimize_layer_num (bool), initial_guess (string PyObject
kwdsA tuple of keywords

Definition at line 144 of file qgd_VQE_Base_Wrapper.cpp.

Here is the call graph for this function:

◆ qgd_Variational_Quantum_Eigensolver_Base_Wrapper_new()

static PyObject* qgd_Variational_Quantum_Eigensolver_Base_Wrapper_new ( PyTypeObject type,
PyObject *  args,
PyObject *  kwds 
)
static

Method called when a python instance of the class qgd_N_Qubit_Decomposition_Wrapper is allocated.

Parameters
typeA pointer pointing to a structure describing the type of the class qgd_N_Qubit_Decomposition_Wrapper.

Definition at line 124 of file qgd_VQE_Base_Wrapper.cpp.

◆ qgd_Variational_Quantum_Eigensolver_Base_Wrapper_Optimization_Problem()

static PyObject* qgd_Variational_Quantum_Eigensolver_Base_Wrapper_Optimization_Problem ( qgd_Variational_Quantum_Eigensolver_Base_Wrapper self,
PyObject *  args 
)
static

Definition at line 790 of file qgd_VQE_Base_Wrapper.cpp.

Here is the call graph for this function:

◆ qgd_Variational_Quantum_Eigensolver_Base_Wrapper_Optimization_Problem_Batch()

static PyObject* qgd_Variational_Quantum_Eigensolver_Base_Wrapper_Optimization_Problem_Batch ( qgd_Variational_Quantum_Eigensolver_Base_Wrapper self,
PyObject *  args 
)
static

Wrapper function to evaluate the cost function for many input paramaters at once.

Returns
Unitarty numpy matrix

Definition at line 851 of file qgd_VQE_Base_Wrapper.cpp.

Here is the call graph for this function:

◆ qgd_Variational_Quantum_Eigensolver_Base_Wrapper_Optimization_Problem_Grad()

static PyObject* qgd_Variational_Quantum_Eigensolver_Base_Wrapper_Optimization_Problem_Grad ( qgd_Variational_Quantum_Eigensolver_Base_Wrapper self,
PyObject *  args 
)
static

Wrapper function to evaluate the cost function an dthe gradient components.

Returns
Unitarty numpy matrix

Definition at line 993 of file qgd_VQE_Base_Wrapper.cpp.

Here is the call graph for this function:

◆ qgd_Variational_Quantum_Eigensolver_Base_Wrapper_set_Ansatz()

static PyObject* qgd_Variational_Quantum_Eigensolver_Base_Wrapper_set_Ansatz ( qgd_Variational_Quantum_Eigensolver_Base_Wrapper self,
PyObject *  args,
PyObject *  kwds 
)
static

Definition at line 600 of file qgd_VQE_Base_Wrapper.cpp.

◆ qgd_Variational_Quantum_Eigensolver_Base_Wrapper_set_Gate_Structure()

static PyObject* qgd_Variational_Quantum_Eigensolver_Base_Wrapper_set_Gate_Structure ( qgd_Variational_Quantum_Eigensolver_Base_Wrapper self,
PyObject *  args 
)
static

Wrapper function to set custom gate structure for the decomposition.

Parameters
selfA pointer pointing to an instance of the class qgd_N_Qubit_Decomposition_adaptive_Wrapper.
Returns
Returns with zero on success.

Definition at line 1080 of file qgd_VQE_Base_Wrapper.cpp.

◆ qgd_Variational_Quantum_Eigensolver_Base_Wrapper_set_Gate_Structure_From_Binary()

static PyObject* qgd_Variational_Quantum_Eigensolver_Base_Wrapper_set_Gate_Structure_From_Binary ( qgd_Variational_Quantum_Eigensolver_Base_Wrapper self,
PyObject *  args 
)
static

Wrapper function to set custom layers to the gate structure that are intended to be used in the decomposition.

Definition at line 405 of file qgd_VQE_Base_Wrapper.cpp.

◆ qgd_Variational_Quantum_Eigensolver_Base_Wrapper_set_Initial_State()

static PyObject* qgd_Variational_Quantum_Eigensolver_Base_Wrapper_set_Initial_State ( qgd_Variational_Quantum_Eigensolver_Base_Wrapper self,
PyObject *  args 
)
static

Set the initial state used in the VQE process.

Definition at line 357 of file qgd_VQE_Base_Wrapper.cpp.

Here is the call graph for this function:

◆ qgd_Variational_Quantum_Eigensolver_Base_Wrapper_set_Optimization_Tolerance()

static PyObject* qgd_Variational_Quantum_Eigensolver_Base_Wrapper_set_Optimization_Tolerance ( qgd_Variational_Quantum_Eigensolver_Base_Wrapper self,
PyObject *  args 
)
static

Definition at line 442 of file qgd_VQE_Base_Wrapper.cpp.

◆ qgd_Variational_Quantum_Eigensolver_Base_Wrapper_set_Optimized_Parameters()

static PyObject* qgd_Variational_Quantum_Eigensolver_Base_Wrapper_set_Optimized_Parameters ( qgd_Variational_Quantum_Eigensolver_Base_Wrapper self,
PyObject *  args 
)
static

Set parameters for the solver.

Definition at line 311 of file qgd_VQE_Base_Wrapper.cpp.

Here is the call graph for this function:

◆ qgd_Variational_Quantum_Eigensolver_Base_Wrapper_set_Optimizer()

static PyObject* qgd_Variational_Quantum_Eigensolver_Base_Wrapper_set_Optimizer ( qgd_Variational_Quantum_Eigensolver_Base_Wrapper self,
PyObject *  args,
PyObject *  kwds 
)
static

Definition at line 517 of file qgd_VQE_Base_Wrapper.cpp.

◆ qgd_Variational_Quantum_Eigensolver_Base_Wrapper_set_Project_Name()

static PyObject* qgd_Variational_Quantum_Eigensolver_Base_Wrapper_set_Project_Name ( qgd_Variational_Quantum_Eigensolver_Base_Wrapper self,
PyObject *  args 
)
static

Call to set a project name.

Definition at line 1054 of file qgd_VQE_Base_Wrapper.cpp.

◆ qgd_Variational_Quantum_Eigensolver_Base_Wrapper_Start_Optimization()

static PyObject* qgd_Variational_Quantum_Eigensolver_Base_Wrapper_Start_Optimization ( qgd_Variational_Quantum_Eigensolver_Base_Wrapper self)
static

Definition at line 253 of file qgd_VQE_Base_Wrapper.cpp.

◆ release_Variational_Quantum_Eigensolver_Base()

void release_Variational_Quantum_Eigensolver_Base ( Variational_Quantum_Eigensolver_Base instance)

Call to deallocate an instance of N_Qubit_Decomposition class.

Parameters
ptrA pointer pointing to an instance of N_Qubit_Decomposition class.

Definition at line 81 of file qgd_VQE_Base_Wrapper.cpp.

Here is the caller graph for this function:

Variable Documentation

◆ qgd_Variational_Quantum_Eigensolver_Base_Wrapper_members

PyMemberDef qgd_Variational_Quantum_Eigensolver_Base_Wrapper_members[]
static
Initial value:
= {
{NULL}
}

Structure containing metadata about the members of class qgd_N_Qubit_Decomposition_Wrapper.

Definition at line 1114 of file qgd_VQE_Base_Wrapper.cpp.

◆ qgd_Variational_Quantum_Eigensolver_Base_Wrapper_methods

PyMethodDef qgd_Variational_Quantum_Eigensolver_Base_Wrapper_methods[]
static

Structure containing metadata about the methods of class qgd_N_Qubit_Decomposition_Wrapper.

Definition at line 1121 of file qgd_VQE_Base_Wrapper.cpp.

◆ qgd_Variational_Quantum_Eigensolver_Base_Wrapper_Module

PyModuleDef qgd_Variational_Quantum_Eigensolver_Base_Wrapper_Module
static
Initial value:
= {
PyModuleDef_HEAD_INIT,
"qgd_N_Qubit_Decomposition_Wrapper",
"Python binding for QGD N_Qubit_Decomposition class",
-1,
}

Structure containing metadata about the module.

Definition at line 1257 of file qgd_VQE_Base_Wrapper.cpp.

◆ qgd_Variational_Quantum_Eigensolver_Base_Wrapper_Type

PyTypeObject qgd_Variational_Quantum_Eigensolver_Base_Wrapper_Type
static

A structure describing the type of the class qgd_N_Qubit_Decomposition_Wrapper.

Definition at line 1185 of file qgd_VQE_Base_Wrapper.cpp.