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

Uploaded Source

Built Distributions

pyqrack_cpu-1.32.15-py3-none-win_amd64.whl (688.8 kB view details)

Uploaded Python 3 Windows x86-64

pyqrack_cpu-1.32.15-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.15-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.15-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.15-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.15-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.15.tar.gz.

File metadata

  • Download URL: pyqrack_cpu-1.32.15.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.15.tar.gz
Algorithm Hash digest
SHA256 71973b83fe93caa968cb876cb854bbdd77f69459c346a4622ebe7136b1ccbfa0
MD5 0f798beecb90a1b2a1139654d031431a
BLAKE2b-256 99958cc20adafe4257ba56376cdcc9a4b0e241f181999e320e9632ac2bda7cb7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.15-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 ad8068c71d140aa1fd8454d5404c48f583d16b27e4cc65e62cd1b00a0c819bc5
MD5 04002bd25fb4e9a5749bd2bd65a2fdbf
BLAKE2b-256 a15603a3df01cc3737b5da8151b5dd949cbae0021a0fa6d8c5f8bcd507cc904d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.15-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 cda73a668ee4bf0ab9096f0e0de250c64de64a948bf88c5e53e721babcd051ce
MD5 35f4d966ea47a89a4732ad1e069ef1cb
BLAKE2b-256 a8a2ff34a12bfd6a790b577c6f57ae01d48b5563e6307200e2c11ce20607ee6a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.15-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 075e4ad63f9250fd4f36d081d07cdf1c81163a6a7cafa908e5e1114b10e84fac
MD5 b6a23c1e912b044c4934b23bf22df809
BLAKE2b-256 07baf0a3b15f569a5265ad4acb011f695b59d41f065f81cc57b000e142d148ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.15-py3-none-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 89cd729d2bd0f944f50673789d522c00dee3f2ea21b6dc2fc45fb5413aa18bdf
MD5 f5a4d7fa893ff2246332a9c49402f71b
BLAKE2b-256 cf0127ac933727e1da5e8f7c07868fefee005daef0cef3a301b071f3935515c7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.15-py3-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 007c313d6f6e35bac07a2c7c4fdd603412b937ab0848250f03ef3b5781925558
MD5 b2c317f083b6ba025b6e2b063d1b5111
BLAKE2b-256 d0c421c8a9ce4af8f3aef3634118662482d905ef6d8f5a794782228a53cf73b5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.15-py3-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 3bb1af17b1d4adc2bfae9f2cf265888a8bab0e542fca05510c1f28ef6508d3cf
MD5 e94ca80792c29ac44beb47a3f3c0f8c9
BLAKE2b-256 75946cadb7c6183d67b35005722a026bfb54f7e8a61d2772ffb8074873ee160a

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