Skip to main content

pyqrack - Pure Python vm6502q/qrack Wrapper

Project description

pyqrack

Downloads Downloads Downloads

Pure Python bindings for the pure C++11 Qrack quantum computer simulator library

(PyQrack is just pure Qrack.)

<<<<<<< HEAD This is the purely CPU-based variant of PyQrack (with module name pyqrack-cpu). This alternate build of PyQrack is provided so that systems that won't use OpenCL anyway (such as because they lack any GPUs or other accelerators like the Intel HD) do not need to install the OpenCL library in order to use PyQrack. In this form, both the PyQrack module and the underlying C++ Qrack library are entirely external dependency-free.

(If you installing from source, it doesn't matter whether you use pyqrack or pyqrack-cpu, because the build version of C++ Qrack you intend to use must already be installed locally.)

Note, if building from source: You must build and install unitaryfund/qrack to build the main branch from source. CI/CD builds wheels that contain pre-compiled Qrack binaries, and that is the form published on PyPi. You must also install OpenCL.

main

Import and instantiate QrackSimulator instances. This simulator can perform arbitrary single qubit and controlled-single-qubit gates, as well as other specific gates like SWAP.

Any 2x2 bit operator matrix is represented by a list of 4 complex floating point numbers, in row-major order.

Single and array "b" parameters represent Pauli operator bases. They are specified according to the enumeration of the Pauli class.

MC[x] and MAC[x] methods are controlled single bit gates, with as many control qubits as you specify via Python list c argument. MCX is multiply-controlled Pauli X, and MACX is "anti-"controlled Pauli X, i.e. "anti-control" activates the gate if all control bits are specifically off, as opposed to on.

To load the required unitaryfund/qrack libraries from a different location, set the PYQRACK_SHARED_LIB_PATH environment variable.

PyQrack has experimental support for PyZX Circuit definitions as an intermediate representation for QrackSimulator. To try this, load a Circuit in PyZX, (use that module to optimize your circuit, as you like,) and create a QrackSimulator() instance using the pyzxCircuit named argument of the constructor, like so:

sim = QrackSimulator(pyzxCircuit=c)

where c is a PyZX circuit object. The circuit will automatically be simulated in the constructed QrackSimulator instance. This also allows loading from QASM and other intermediate representations supported by PyZX.

See https://pyqrack.readthedocs.io/en/latest/ for an API reference.

For custom Qrack build floating-point precision, where options are half, float, double, and quad, set an environment variable via export QRACK_FPPOW=[n] (or as appropriate to your shell) where [n] is the logarithm base 2 of the number of bits in the systemic floating point type (4, 5, 6, or 7, with 5 or float as default, i.e. 2**5=32 for 32-bit float).

Please feel welcome to open an issue, if you'd like help. 😃

Special thanks go to Zeeshan Ahmed, for bug fixes and design suggestions, Ashish Panigrahi, for documentation and design suggestions, WingCode, for documentation, and to the broader community of Qrack contributors, for years of happy Qracking! You rock!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyqrack_cpu-1.32.10.tar.gz (34.3 kB view details)

Uploaded Source

Built Distributions

pyqrack_cpu-1.32.10-py3-none-win_amd64.whl (685.7 kB view details)

Uploaded Python 3 Windows x86-64

pyqrack_cpu-1.32.10-py3-none-manylinux_2_39_x86_64.whl (2.2 MB view details)

Uploaded Python 3 manylinux: glibc 2.39+ x86-64

pyqrack_cpu-1.32.10-py3-none-manylinux_2_35_x86_64.whl (2.2 MB view details)

Uploaded Python 3 manylinux: glibc 2.35+ x86-64

pyqrack_cpu-1.32.10-py3-none-manylinux_2_31_x86_64.whl (2.1 MB view details)

Uploaded Python 3 manylinux: glibc 2.31+ x86-64

pyqrack_cpu-1.32.10-py3-none-macosx_13_0_x86_64.whl (1.7 MB view details)

Uploaded Python 3 macOS 13.0+ x86-64

pyqrack_cpu-1.32.10-py3-none-macosx_12_0_x86_64.whl (1.6 MB view details)

Uploaded Python 3 macOS 12.0+ x86-64

File details

Details for the file pyqrack_cpu-1.32.10.tar.gz.

File metadata

  • Download URL: pyqrack_cpu-1.32.10.tar.gz
  • Upload date:
  • Size: 34.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for pyqrack_cpu-1.32.10.tar.gz
Algorithm Hash digest
SHA256 ad67964b0790e506cf6c473b2b5e21395baddf6090af698a5c5756cd197151a2
MD5 ebb5483ac64a2175273ff1e29260dbc7
BLAKE2b-256 c964cbeeb0b353a2204724590cb2ddafabe4ce065296763e5ae2f0c8c42cb8a4

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-1.32.10-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.10-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 8d7293c1538153cb2c1104a82f82c583410a06784b44c324462c726a43675409
MD5 78e14157c65ae84ad9eb129e6e62acd2
BLAKE2b-256 481381f8274006d7c76ae36153c2e6c599e8398879a8b3e94f286863f05a748f

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-1.32.10-py3-none-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.10-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 78a38fb093a4e7dc1c7ddf76696c512852005a8e0a04a5398bc11d8dd08d7797
MD5 8b148744597383aeef6dd7dd658932ce
BLAKE2b-256 f76b71487cf767810dd4ba39d451a6e45d5797602945cb9e9b925265438cb61b

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-1.32.10-py3-none-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.10-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 c6f779464c6ae309fbf3b00455ea9de720d9359359be429dfcbcdce84da6e0a9
MD5 f5f2d40a1bdfd057eb07e7ca21432dd7
BLAKE2b-256 041050806a3df2a337d0a904ce9027077e3a97b60db4983aed51bd50102b88af

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-1.32.10-py3-none-manylinux_2_31_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.10-py3-none-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 1ad5cb7759a77bdc43bc08691cd1b03f5fad0c94c4c6d541173a632384d9a11c
MD5 de83d91e7a923afb91dfda7d324653cb
BLAKE2b-256 cc138f93142a28780a6fb26c0111c3a8446e1ab134845f807f4791ae8c9de0f9

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-1.32.10-py3-none-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.10-py3-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 5ffebec836f5f567d20d6d51dc299af2ef34c0d6a81ad66962400bb78f86544a
MD5 77d81234ef1bb75b3128d6a2aa693485
BLAKE2b-256 afc629b45f4ceedc50f2d8c43380fa434c4b09e0842ea55cc2dc127db7c72d39

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-1.32.10-py3-none-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.10-py3-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 4fe78e7969bae8dc1df9b4ce405057d7f06e6ee8a2952af1ac7c9f11fb1daf47
MD5 ec01fdc371cc2b3fe4c915636579506e
BLAKE2b-256 6d143d01210fd43d948b439c7971887825489bd332848ea21e20f4a83eb5e0d0

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page