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

Uploaded Source

Built Distributions

pyqrack_cpu-1.32.16-py3-none-win_amd64.whl (689.1 kB view details)

Uploaded Python 3 Windows x86-64

pyqrack_cpu-1.32.16-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.16-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.16-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.16-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.16-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.16.tar.gz.

File metadata

  • Download URL: pyqrack_cpu-1.32.16.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.16.tar.gz
Algorithm Hash digest
SHA256 d5d4cacb51fc32f20eb45f353398bfddd16f1581555c78f051ed6332ec045566
MD5 35d7b4593914d7fee8ecc753241e4795
BLAKE2b-256 aecbc8824d5c7b4eb445de7866566900930a00dfad05d837e4bd5326ab6de7f3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.16-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 e1be4d0f3bca907a3d7423cb835e6cf81f2229b21e444ff28cfa3c93c0e4357a
MD5 ddcacc57cdb4aa7321a958d284a14486
BLAKE2b-256 9a50d973213f4143d40f3d617a2bcaa65bf5357a26d551aefb7cbde781ff6417

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.16-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 b701fc3b7b76aa09983a639e9306aed28cd54621ade609ca6bde89d545436e1c
MD5 57e07f7ea1b36a7f5ec5ffc60dd9da27
BLAKE2b-256 49a8f15b33e6016b40072ffc1dfa136f83e8df591df6fd204d8296451efa0fe9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.16-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 78b8e5bf1c207498f32a99a08ea8ec2579a0e2f42e8be697bd4a799bac8f034b
MD5 a052856a449c7791f9caa4e59b6ba485
BLAKE2b-256 4b160ca3b11f7b65e012dc529ceb5e0eb6ea207830a01376f121fdc51bbc847f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.16-py3-none-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 be69d087ec7ac51513e4f853c998f94872a7bc3e209d21995b7547e7b0b1df2c
MD5 622762ab5d4c2d6054cb894e4e0d5898
BLAKE2b-256 395b38c4d9e17f9900e9300142069759d33da102fe773a3959d07a30db1615f9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.16-py3-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 cfaf674cb1e92c9de3c4a144025a6e9569a0139ea5f59bf9e9eca9bac2913d30
MD5 7be48c0f830708979488bd5b6f2594e4
BLAKE2b-256 2cecf4c2fb62e406274d9bcc5f0337330387c70f275dc5ab9be2bfee00122f45

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.16-py3-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 143153e798b2689db045e649d869d655898d6afb423634f477577e5bd071c740
MD5 7ab1a2a21c8738e7571e2d3c00ec41dc
BLAKE2b-256 8182a720e4796581889fc6d5b683af7071e726b5fcbadabb5975e58cf8091d82

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