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.1.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.1-py3-none-win_amd64.whl (836.8 kB view details)

Uploaded Python 3Windows x86-64

pyqrack_cpu_complex128-2.17.1-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.1-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.1-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.1-py3-none-macosx_15_0_arm64.whl (1.9 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_cpu_complex128-2.17.1-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.1.tar.gz.

File metadata

  • Download URL: pyqrack_cpu_complex128-2.17.1.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.1.tar.gz
Algorithm Hash digest
SHA256 8433c087218e5c62daab9ecd26cf2eddd1fb434d3b57cf021e9685526d23eab1
MD5 fa1a3a47f68e4d8f90ce9df3b810a5af
BLAKE2b-256 83fd5ac6cf86d83aae79de76cb84375c8dec527422423029fae050bf6a5bcc92

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-2.17.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 42b7d2e03621ca7809ee2447d4581cfa52c89f3c3409a79c49d524a55fe2853f
MD5 1052bcafb1ee56e4e496f78e39a59689
BLAKE2b-256 ee1de0c62aa0d191310db21e96980caeb4a0cfdc93c5007c50efafb1cdd58958

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-2.17.1-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 455e066835727d269d20d760576f792b00d504a23fd843e9c5aafc198dd18974
MD5 a2cb7d2496d7df3e100162750475fb6f
BLAKE2b-256 6457ba400cb6a1b458732a8bcf82228e7cf0dd1ce78540df95086d3b944e8204

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-2.17.1-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 a4e09d822a197186eff27f75eef3eb9f0cdbab579e432564a6b793b7a804e641
MD5 425cab95b147f2c57b921d7b8e00a819
BLAKE2b-256 92fcf3a61fd2c916585296efca51272d8ae154f3518c28adadfd346a7f8061f3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-2.17.1-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 a4faf5236b35965c7f4dcdf8000e7e2dd2c0c43b45c56cb6b56ee87dd7e7a87d
MD5 d2cb206b5115be22d93c0426c9a4a6a6
BLAKE2b-256 57ab0ad9de34a727c36873efb5163e7a99fed949bb0af76c8e4af289670630fa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-2.17.1-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 cb4dd9e9fd4afe382522168389d83443aac061c473c874ec6967b1653f811019
MD5 b019833c9db04806aa896a5408e46189
BLAKE2b-256 38c0e928d6d053a10727f1455dbe0473648bbcf8a24a662bd83bc5da3f38893c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-2.17.1-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 f4b4c99997d3e555d54874857ff5a9be4c760c25af9737ebdb078a9185b50396
MD5 506625e2e37b7c74606eecbb483c2df0
BLAKE2b-256 bf4180c6f9f7612c888aff3d95c590bc93d10fa52762205e3bbde9ac587007c8

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