QStabilizerHybrid
Major changes in this release include a “hybridized” Gottesman-Knill stabilizer simulation type, adapted from the basis of Aaronson’s CHP, suitable for general purpose use under QUnit. When operations outside of Clifford set gates are invoked, this QInterface type transparently converts (base simulation unit or selective QUnit sub-units) to “ket” simulation, without any required user code action, which is further “hybridized” by default between CPU and GPU QEngine types.
QUnit “Decompose()” variants have finally been adapted to separate sub-units without first maximally entangling representation within the group of qubits to “Decompose().”
“TryDecompose()” and “TrySeparate()” have been restored, (except in QUnitMulti, with "dummy" implementations there,) and “SumSqrDiff()” has been broken out as a separate public method from “ApproxCompare(),” in order to allow users to measure a quantitative difference between (happenstance numerical) raw “kets.” The point of this set of changes is to start to allow user experimentation with “approximate separability” of qubits, such as by trading off between error and efficiency by “Decompose()-ing” bits that introduce only small but non-zero overall “SumSqrDiff()” changes.
Many miscellaneous bug fixes have been made, as the library continues to be tested for stability and correctness on a rolling basis. Builds have been tested on x64 Linux, Windows, and Mac, as well as Android and iOS, and also Raspberry Pi 3 and 4. Qiskit, Q#, and ProjectQ integrations remain available and supported, with unit tests. Windows and mobile builds are now also officially supported as plugins for the Unity video game development engine, as integrated with WrathfulSpatula’s unaffiliated personal fork of the OpenRelativity physics module by the MIT Game Lab, for education, game development, and general modern physics simulation qualitative proof-of-concept.