Skip to main content

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 or CUDA 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're looking for Mac ARM support, use the package pyqrack, not pyqrack-cpu. Mac officially "deprecated" OpenCL years ago. Hence, accelerator support is not included in ARM-based Mac wheels, and OpenCL installation is not required on these systems, but, if you have a CUDA accelerator on ARM-based Mac, you could try the package pyqrack-cuda instead.

Performance can benefit greatly from following the Qrack repository "Quick Start" and "Power user considerations."

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, Or Golan, for CI build pipeline tooling, and to the broader community of Qrack contributors, for years of happy Qracking! You rock!

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_complex128-2.17.2.tar.gz (71.6 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pyqrack_cpu_complex128-2.17.2-py3-none-win_amd64.whl (839.3 kB view details)

Uploaded Python 3Windows x86-64

pyqrack_cpu_complex128-2.17.2-py3-none-manylinux_2_39_x86_64.whl (3.1 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

pyqrack_cpu_complex128-2.17.2-py3-none-manylinux_2_35_x86_64.whl (3.1 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

pyqrack_cpu_complex128-2.17.2-py3-none-macosx_15_0_x86_64.whl (2.1 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

pyqrack_cpu_complex128-2.17.2-py3-none-macosx_15_0_arm64.whl (1.9 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_cpu_complex128-2.17.2-py3-none-macosx_14_0_arm64.whl (2.0 MB view details)

Uploaded Python 3macOS 14.0+ ARM64

File details

Details for the file pyqrack_cpu_complex128-2.17.2.tar.gz.

File metadata

  • Download URL: pyqrack_cpu_complex128-2.17.2.tar.gz
  • Upload date:
  • Size: 71.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.4

File hashes

Hashes for pyqrack_cpu_complex128-2.17.2.tar.gz
Algorithm Hash digest
SHA256 5527c7a17c22684c317cc2396df59916b77085deaab680c08df753781a152110
MD5 1ceed74c0028b0353bb5400ef9b80812
BLAKE2b-256 492fdab7e983295417f3c54505208c4a6db58323dcefdad61591d86f7901bfb6

See more details on using hashes here.

File details

Details for the file pyqrack_cpu_complex128-2.17.2-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-2.17.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 e43ecbdfd2662b1833bea235b1deb0475d94bdab59b75cd56baa76493398562d
MD5 20855cd59b1ae7684ba99753cca81ae0
BLAKE2b-256 ac51841392830339fa4f62982381c558cf0eb2b83b7f986a8cf880cdf690224e

See more details on using hashes here.

File details

Details for the file pyqrack_cpu_complex128-2.17.2-py3-none-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-2.17.2-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 5a50a140bb57d00b63c526f240e358f8f5b2700f32bcc208260d89704b45a630
MD5 98ada620e9e9696c15cce993a3d9a33e
BLAKE2b-256 a626b81233f367d791b796fbd5e07653665169213d386432419e704ddea2cfcd

See more details on using hashes here.

File details

Details for the file pyqrack_cpu_complex128-2.17.2-py3-none-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-2.17.2-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 40528066e0c4e232e0eb8a9a49d156f32c78901a363cf1cb7244acbafca29b1f
MD5 d6378812907cce427a95effdcbc46d2e
BLAKE2b-256 5db85e754ca9e89920678a7bc148c09bd93c981f3a6a51e88d3ff7bda75b2a5f

See more details on using hashes here.

File details

Details for the file pyqrack_cpu_complex128-2.17.2-py3-none-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-2.17.2-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 7b760b79912e640c1e1d2ce4e79c3ea2c72d616c3a19fb8497f9038ffc93aee6
MD5 9d2ac6686e4267e04277dfc9203d3f08
BLAKE2b-256 e749cde053dcef33e6dfa20ff3c4a6253d44ebea2f87780d9d632c04054ef434

See more details on using hashes here.

File details

Details for the file pyqrack_cpu_complex128-2.17.2-py3-none-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-2.17.2-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 1b9ef6cdcf8d21a876f25ef8bb5cdd5a2c2bb1cf822cca3bae2b6a25c987d747
MD5 ac08fb8ca1fe1dc610dae10e03357ea0
BLAKE2b-256 61883d38776f038c7c2be71108588263d4ddf6607463930bb8690fa43c8074b1

See more details on using hashes here.

File details

Details for the file pyqrack_cpu_complex128-2.17.2-py3-none-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-2.17.2-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 e62285a07f5552ceaa7ae3381b8385903f09b9d4525bed8bbdd81372841a5be1
MD5 25614aca65ecce39eb858140a2256f15
BLAKE2b-256 47cdea18c4f39bdea9fb013b9e581c8b77fd34f79569f7780c74877c26c761e3

See more details on using hashes here.

Release history Release notifications | RSS feed

Supported by

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