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.)

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.)

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.9.tar.gz (34.0 kB view details)

Uploaded Source

Built Distributions

pyqrack_cpu-1.32.9-py3-none-win_amd64.whl (681.7 kB view details)

Uploaded Python 3 Windows x86-64

pyqrack_cpu-1.32.9-py3-none-manylinux_2_39_x86_64.whl (2.1 MB view details)

Uploaded Python 3 manylinux: glibc 2.39+ x86-64

pyqrack_cpu-1.32.9-py3-none-manylinux_2_35_x86_64.whl (2.1 MB view details)

Uploaded Python 3 manylinux: glibc 2.35+ x86-64

pyqrack_cpu-1.32.9-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.9-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.9-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.9.tar.gz.

File metadata

  • Download URL: pyqrack_cpu-1.32.9.tar.gz
  • Upload date:
  • Size: 34.0 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.9.tar.gz
Algorithm Hash digest
SHA256 69e7cd4f58a22cfa4b43075b3a7254ead4b555b17c489e27cf1d570440c62ae8
MD5 ce4d97916e5eabc58d7c1656c177a983
BLAKE2b-256 c6c982fcd761787cf65b71d2a22c2b1be1071439d05580c175235103a7cecce8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.9-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 a4078d0b7f39156868510380a1f5cbed14ef272dc45c08bdf2d371c41989cd30
MD5 7f23c86a8a222be53e4961fae799c1e1
BLAKE2b-256 8790a6a1ac612f719b245dd17cf832a7176098ac7e55a6f9477ce2b39f9ac0f8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.9-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 7e3c15c0ece3d63ef0bf4623a2d0ad81730daa55d84ea7033cdb651eafc44476
MD5 d2ded8d7433770e63721824409825349
BLAKE2b-256 b7056d81f297e4fb97445e2f865525c9de6a1a3ada0877be1d3c475d5922f61a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.9-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 4cf03609404311963b548192746aecfe5785a5174f7d40d44c8dc6312214c197
MD5 0478c52033735195471cdbea3574e59f
BLAKE2b-256 2c2e17d8bbfa8e0f4f55959ed6a8150807b6df9104e42565cc6bf6bff93d9ab9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.9-py3-none-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 4bc88b311fc700d26d45e69b918eb21e4a7e8dae7d5e558b2f9475575ae49b68
MD5 5e106b9c6a44d57bee1ff002ca7ae95f
BLAKE2b-256 5e81ac8606132800a640f90fc177b4997169740e57d75cf9d488f60846753bc0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.9-py3-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 fe5dff27a53a5eab4be9d23ee51a86042e6d396c63f41b662c573aee58dcebbe
MD5 c191671941f3c238131222acac1ca69b
BLAKE2b-256 75dee934459ddd93345af3705dc2864cf44bb7a63fb0c99e23ed202b16c890e2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.9-py3-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 7ccf010102be40c06101ff470dd1e28baed2d589b7e455e6cad23822619c40fe
MD5 1869fdaf2900f984e2de8e9e9b5332d8
BLAKE2b-256 4491ad1e8118fc6a0a2a262800babbfd2b619dc2b5a7e1411fb433eee2ef0790

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