The new features of this release are purely at the experimental stage and have not been integrated into a full pipeline, but it is theoretically possible to use the Clifford+RZ improvements of v8.12 to compile for hardware.
In v8.13, it is now possible to output `QStabilizerHybrid` state to file, (not while using `QUnit`). The files have the following format, by line:
[Logical qubit count]
[Stabilizer qubit count, including ancillae]
[Stabilizer x/z/r generators, one row per line, "tableau" format, repeated for logical qubit count of rows x2]
[Per-qubit MPS buffers, 2x2 complex matrices, row-major order, one matrix per line, repeated for stabilizer qubit count of rows]
For example:
3
3
1 1 0 0 1 0 2
0 1 0 1 0 0 0
0 0 0 0 0 1 0
0 0 0 1 0 1 2
0 0 0 1 1 0 0
1 1 1 0 1 0 0
(1,0) (0,0) (0,0) (1,0)
(1,0) (0,0) (0,0) (1,0)
(0,0) (0.707107,-0.707107) (0,1) (0,0)
is a valid file, with 0 ancillae. It is theoretically relatively easy to prepare this result of unitary circuit simulation on a quantum hardware device: first prepare the stabilizer state, (with purely Clifford gates,) then apply the (potentially non-Clifford) 2x2 matrices over the same sequential qubit index order. This can represent a _universal_ quantum state of the _logical_ qubits.
`QrackSimulator` now has a method `set_hardware_encoded()`. The default value of this setting is `false`, which causes ancilla "magic state" qubit "channels" to be encoded depending on _post-selection_. If this setting is `false`, hardware decoding depends on the ancilla qubits all measuring as |0>, for the correct overall state preparation. However, if this setting is `true`, then every other ancilla qubit (starting with the second-occurring ancilla) is an "open channel" that starts out coding an identity gate, (or "no operation,") but can be re-encoded to avoid the post-selection requirement. To do so, after preparing the state as described in the file, perform `H` gate on all auxiliary, identity-encoding ancilla channels, act `CZ` from each "coding" ancilla to its "identity" partner, then act `H` again on the auxiliary, identity-encoding ancilla. Now, terminal measurement can occur without post-selection, and all logical qubits are deterministically in the intended state, in the ideal.
File SHA-1 sums:
1d3af0940fa756d942befec42cd51b641089c760 pyqrack-1.15.0-py3-none-any.whl
8218f731a441ed97ae35708eedb7899c0aef5f14 pyqrack-1.15.0-py3-none-linux_aarch64.whl
f2a690a24a550ea8417781db4e98b6668b261239 pyqrack-1.15.0-py3-none-linux_armv7l.whl
9107dfc517dfef2156d0577c71db77fb88aa1da6 pyqrack-1.15.0-py3-none-macosx_10_4_x86_64.whl
3bebff7e80682265c19eff19a20a5b0294385ec9 pyqrack-1.15.0-py3-none-manylinux2014_x86_64.whl
c62ea636bda71092dbe6e12715fe1961100091af pyqrack-1.15.0-py3-none-manylinux_2_35_x86_64.whl
a4c0f6621bc262761b142cd3304bda5555d5a94c pyqrack-1.15.0-py3-none-win32.whl
3a8289dccf26d960c2271c50ea216564b7b4c6ec pyqrack-1.15.0-py3-none-win_amd64.whl
add4a7601d0d11172fe54a4b04a3a0e853fc8ceb pyqrack-1.15.0.tar.gz