Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,10 @@ set(BUILD_SHARED_LIBS TRUE)
add_subdirectory(QuEST)
# To get proper exception/error handling, we must override `invalidQuESTInputError()`
# in QuEST, which we can do by adding `pyquest/quest_exception.c` to its sources.
target_include_directories(QuEST PRIVATE ${CMAKE_SOURCE_DIR}/pyquest)
target_include_directories(QuEST PRIVATE
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/pyquest>
$<INSTALL_INTERFACE:include>
)
target_sources(QuEST PRIVATE ${CMAKE_SOURCE_DIR}/pyquest/quest_exception.cpp)
# For Win32 `dll`s every exported symbol must usually be marked explicitly
# as such. Fortunately, CMake supports automatic export of all symbols (yay).
Expand Down
4 changes: 2 additions & 2 deletions pyquest/core.pxd
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ from libc.stdint cimport uintptr_t
from cpython.ref cimport PyObject, Py_XDECREF
from cpython.pycapsule cimport PyCapsule_New, PyCapsule_GetPointer
cimport pyquest.quest_interface as quest
from pyquest.quest_interface cimport qreal, qcomp, Complex
from pyquest.quest_interface cimport qreal, qcomp
from pyquest.quest_interface cimport OP_TYPES, Qureg, QuESTEnv
from pyquest.operators cimport BaseOperator, GlobalOperator
from pyquest.gates cimport M
Expand All @@ -30,7 +30,7 @@ cdef class Register:
cdef Qureg c_register
cdef object _borrowed_from
cdef object _borrowers
cdef Complex _scaling_factor
cdef qcomp _scaling_factor
cpdef init_blank_state(self)
cpdef apply_circuit(self, Circuit circ)
cpdef apply_operator(self, BaseOperator op)
Expand Down
209 changes: 100 additions & 109 deletions pyquest/core.pyx

Large diffs are not rendered by default.

2 changes: 0 additions & 2 deletions pyquest/decoherence.pxd
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
from libc.stdlib cimport malloc, free
cimport pyquest.quest_interface as quest
from pyquest.quest_interface cimport qreal, Qureg
from pyquest.quest_interface cimport ComplexMatrix2, ComplexMatrix4, ComplexMatrixN
from pyquest.quest_interface cimport createComplexMatrixN, destroyComplexMatrixN
from pyquest.operators cimport SingleQubitOperator, MultiQubitOperator, GlobalOperator
from pyquest.core cimport OP_TYPES, Register

Expand Down
5 changes: 2 additions & 3 deletions pyquest/decoherence.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ cdef class PauliNoise(SingleQubitOperator):
self._prob_z = probs[2]

cdef int apply_to(self, Qureg c_register) except -1:
quest.mixPauli(c_register, self._target,
quest.mixPaulis(c_register, self._target,
self._prob_x, self._prob_y, self._prob_z)


Expand All @@ -76,5 +76,4 @@ cdef class MixDensityMatrix(GlobalOperator):
self._other_register = density_matrix

cdef int apply_to(self, Qureg c_register) except -1:
quest.mixDensityMatrix(c_register, self._prob,
self._other_register.c_register)
quest.mixQureg(c_register, self._other_register.c_register, self._prob)
4 changes: 2 additions & 2 deletions pyquest/gates.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -97,10 +97,10 @@ cdef class M(MultiQubitOperator):
self._probabilities[k] = -1
for k in range(self._num_targets):
if self._force == NULL or self._force[k] == -1:
self._results[k] = quest.measureWithStats(
self._results[k] = quest.applyQubitMeasurementAndGetProb(
c_register, self._targets[k], &(self._probabilities[k]))
else:
self._probabilities[k] = quest.collapseToOutcome(
self._probabilities[k] = quest.applyForcedQubitMeasurement(
c_register, self._targets[k], self._force[k])
self._results[k] = self._force[k]

Expand Down
20 changes: 12 additions & 8 deletions pyquest/operators.pxd
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
from libcpp cimport bool
from libc.stdlib cimport malloc, calloc, free
from libc.math cimport sqrt, sin, cos
from cpython.pycapsule cimport PyCapsule_GetPointer
cimport pyquest.quest_interface as quest
from pyquest.quest_interface cimport qreal, qcomp, OP_TYPES, Qureg, pauliOpType
from pyquest.quest_interface cimport phaseFunc, bitEncoding
from pyquest.quest_interface cimport QuESTEnv, Complex
from pyquest.quest_interface cimport ComplexMatrix2, ComplexMatrix4, ComplexMatrixN
from pyquest.quest_interface cimport createComplexMatrixN, destroyComplexMatrixN
from pyquest.quest_interface cimport qreal, qcomp, qindex, OP_TYPES, Qureg, pauliOpType
from pyquest.quest_interface cimport QuESTEnv
from pyquest.quest_interface cimport CompMatr1, CompMatr2, CompMatr
from pyquest.quest_interface cimport DiagMatr1, DiagMatr2, DiagMatr, FullStateDiagMatr
cimport numpy as np


Expand Down Expand Up @@ -47,10 +47,12 @@ cdef class MatrixOperator(MultiQubitOperator):
cdef _copy_csingle_array(self, float complex[:, :] arr)
cdef _copy_cdouble_array(self, double complex[:, :] arr)
cdef _copy_clongdouble_array(self, long double complex[:, :] arr)
cdef qcomp _get_matrix_element(self, size_t k, size_t n)
cdef void _set_matrix_element(self, size_t k, size_t n, qcomp val)


cdef class DiagonalOperator(GlobalOperator):
cdef quest.DiagonalOp _diag_op
cdef FullStateDiagMatr _diag_op


cdef class PauliProduct(GlobalOperator):
Expand All @@ -74,9 +76,9 @@ cdef class TrotterCircuit(GlobalOperator):


cdef class PhaseFunc(GlobalOperator):
cdef phaseFunc _phase_func_type
cdef int _phase_func_type
cdef bool _is_poly
cdef bitEncoding _bit_encoding
cdef int _bit_encoding
cdef int _num_overrides
cdef long long int *_override_inds
cdef qreal *_override_phases
Expand All @@ -88,6 +90,8 @@ cdef class PhaseFunc(GlobalOperator):
cdef int *_num_terms_per_reg
cdef qreal *_coeffs
cdef qreal *_exponents
cdef qcomp _compute_for_indices_c(self, qindex* indices)
cdef int apply_to(self, Qureg c_register) except -1


cdef class QFT(MultiQubitOperator):
Expand Down
Loading