A new layer called `QTensorNetwork` has been added at "top" of the "optimal stack." This layer represents quantum state as a vector of sub-circuits and vector of measurement layers. The circuits are optimized "just-in-time" as the state evolves. When "physically observable" output values are requested by the user, they are calculated with recourse to the original default "layer stack" of simulators. Depending on circuit width, observable outputs might be calculated on the "past light cone" of single qubits.
`QTensorNetwork` does not implement `Compose()`, `Decompose()`, `Dispose()`, or the `QAlu` and `QParity` interfaces. (Some ALU operations are still available, through "decompositions" in `QInterface`. "Schmidt decomposition" API is not necessary internally for optimization in this case, since `QUnit` resides "below" `QTensorNetwork` in the suggested simulation layer stack.)
A follow-up release will implement NVIDIA's `cuTensorNet` API in CUDA builds of `QTensorNetwork`.
File SHA-1 sums:
ffddc95369e89d6373a0718b55a55cc1ceb6708b pyqrack-1.21.0-py3-none-any.whl
47ced0b31cf21c8132a6f212cc43bdf9657df892 pyqrack-1.21.0-py3-none-linux_aarch64.whl
588097c43e8dce4849aea9f90e5fb6ecb25449a6 pyqrack-1.21.0-py3-none-linux_armv7l.whl
35c2fada5bac1e62330c31aed2cde7dcfd74c6b2 pyqrack-1.21.0-py3-none-macosx_10_4_x86_64.whl
0ec9fce32af50f37543a77b3520085a4fe716099 pyqrack-1.21.0-py3-none-manylinux2014_x86_64.whl
65f823eb70b8e1e6fdceb34b5e28f429dcbcee58 pyqrack-1.21.0-py3-none-manylinux_2_35_x86_64.whl
532bae4fb36ab1731630257281252645d453145f pyqrack-1.21.0-py3-none-win32.whl
4cb73409ad59064781df581e75b54e65019a5233 pyqrack-1.21.0-py3-none-win_amd64.whl
739ba8d11f6bb23ba104c65ea810631ed1654e8c pyqrack-1.21.0.tar.gz
**Full Changelog**: https://github.com/unitaryfund/pyqrack/compare/v1.20.10...v1.21.0