Skip to content

Releases: unitaryfund/qook

prob_perm() method

23 Feb 15:21
Compare
Choose a tag to compare

In deciding to remove in_ket() and out_ket() from Qook, it became apparent that mirror circuit fidelity testing could still greatly benefit, in terms of reduced simulation overhead, from a method capable of returning single permutation basis eigenstate probabilities.

This release adds support for PermutationProb() in the Qrack shared library API, wrapped as prob_perm() in the Qook API, to allow single permutation basis eigenstate probability checks, (as well as probability checks of permutations of arbitrary qubit lists).

Remove raw ket manipulation methods

22 Feb 17:49
Compare
Choose a tag to compare

in_ket() and out_ket() have been removed from the API. This makes arbitrary floating-point precision Qrack shared library builds generally compatible with Qook, for any potential C++ build settings.

The Qrack project has basically maintained for half a decade that any reliance on direct query of probability amplitudes, including full ("naive") state vector read-out or read-in, is strictly an anti-pattern. This is because these values are effectively unknowable on any actual quantum computer hardware device; they can never be directly queried or directly changed on actual quantum hardware. Qrack also does not, in general, store and manipulate its own simulator state as a monolithic ket, as many beginner quantum software engineers mistakenly conceptualize the general simulation of an arbitrary pure quantum state. Unfortunately, direct amplitude manipulation is a ubiquitous anti-pattern in our interface with many or most other projects we interact with in the quantum open source ecosystem, because other projects demand this anti-pattern.

As in_ket() and out_ket() are the only methods broken in the build system by any C++ Qrack shared library build settings, we opt to simply remove them, since we already regard them as (universally) an anti-pattern, while we currently have no express need to support these methods for interface with other libraries. (This is admittedly an "experiment," but the Qrack developers have been confident for years that these methods should not be used by user code, as we don't.)

Note that it is still possible to use the raw "unsafe" bindings generated for these methods by bindgen. Use them at your own risk, as the caveats against using them are hopefully now obvious, but, at least, Qook itself will not break due to changes in the "unsafe" methods' signatures, when choosing any desired Qrack CMake build options.

Fix Cargo.toml warning; point README to Qrack installers

21 Feb 19:37
Compare
Choose a tag to compare

A warning about the license definition in Cargo.toml has been fixed.

The README has been updated to point users to the (newly-minted) Qrack library binary installers, on the Qrack releases page.

Fix build warnings; test mtrx gate in example

21 Feb 15:57
Compare
Choose a tag to compare

This fixes the only build warnings for Qook. It also tests the mtrx() gate in the simple.rs example.

Improve README

21 Feb 14:01
Compare
Choose a tag to compare

As I (Dan Strano) am new to Rust, I didn't understand its packaging and build systems well enough to document it correctly in the README.

A clear README for the crate is important; this release only updates the crate README.

Safe Rust bindings for Qrack

20 Feb 18:38
37970b6
Compare
Choose a tag to compare

A crate for Ubuntu 22.04 LTS has been published, but we highly recommend that you build and install both unitaryfund/qrack and Qook from source, to use this release.