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). Your Qrack installation floating-point build option must match this specific value, which might require a custom Qrack build.

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

Uploaded Source

Built Distributions

pyqrack_cpu-1.32.25-py3-none-win_amd64.whl (687.3 kB view details)

Uploaded Python 3 Windows x86-64

pyqrack_cpu-1.32.25-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.25-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.25-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.25-py3-none-macosx_13_0_x86_64.whl (1.7 MB view details)

Uploaded Python 3 macOS 13.0+ x86-64

File details

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

File metadata

  • Download URL: pyqrack_cpu-1.32.25.tar.gz
  • Upload date:
  • Size: 34.7 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.25.tar.gz
Algorithm Hash digest
SHA256 a96e05ce31f85c244edd2730ab13fb56b98cfb1d7ddaf8ec83030efef59d7ded
MD5 8ff31fb6173504268dc571bf209ea088
BLAKE2b-256 4e66d88dbe4722fa8a3b3139354400a7220936d3e1e3c32afc0f67af3e75022e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.25-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 a634b43e5752876ec90065743a58accdb49e5087bfb7498b9c44d470b585be00
MD5 e40cbd0d69e5091dca19a4b0bc3fd7ec
BLAKE2b-256 9cd062ce37be2dcece7f00070c5410848de65db1281b5a06e91047eac3fdc6f8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.25-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 bdd7b423cfc6ee76d039abe1239845bbb6f788671156d9ff47e2cca418621813
MD5 6cc22157db270b10471fff43e0ce76e8
BLAKE2b-256 d4b3d26318e4b1a21b323fb079c3db58d948637de67659317dcc02ce5a8aba0a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.25-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 265f921920bf78185bfd1e4fc3b660f68b4b4048330cb890b95fa8972b1c5091
MD5 1d1221d1486ba43950371d4824640415
BLAKE2b-256 8aaf8b8ccfdae1e0dfcdf09d93892fdf66f788f5f44463a38e76e040254c8fab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.25-py3-none-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 aebcecef1686d3a167106408db3a66af0dd0b5c39f3c72bb50684bad71189f87
MD5 bdd0dacff10abf82a26982b0e3916993
BLAKE2b-256 c6fd9fa908c2314c11f2c17caf641571c20682af44d19dfc454c84052695e5c3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.25-py3-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 22f6729699d69d1f27172d99dc8978012e9c41e5165490705ba2392997d2acf4
MD5 3d4173aff6a7545ad8ba64a88db4c42a
BLAKE2b-256 6c5d58c072acecec600ad8009df9d4487bb4f0d850136a66642c5f0ed2999e3d

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