This release makes the dense and streaming variants of maxcut_tfim(G) proceed to find the best cut or energy via differential with the previous best solution. (In v9.8, this was only done in spin_glass_solver(G).) With all dense and streaming cut searches now proceeding via differentials rather than absolutes, while there is a performance penalty when precision ceiling effect is reached, we eliminate the architectural barrier of relying on specific maximum precision to search for the optimal cut or energy: so long as the sign of the differential can be resolved, even for ceiling-effect differentials in themselves, we can tell the difference between a better cut and a worse-or-neutral one.
This release also fixes some confusion from v9.8 about how spin_glass_solver(G) cut and energy differentials should be handled. Further, the prior spin-glass mode conventions might have been confused and bugged: from a performance standpoint, it makes more sense if like-like connection is always interpreted as tending negative while like-unlike connections tends positive, then energy values just report with reversed sign convention on output, such that you might need to reverse your expected sign convention on edge weights, but the code should now be fully consistent in this convention.
Full Changelog: v9.8.1...v9.9.0
sha1sum results:
6ac04d5acc3dfe77ab824d5d024f4c63e3c26fe6 pyqrackising-9.9.0-py3-none-macosx_14_0_arm64.whl
33605f936c6e852d8b4b538d3f95eb0ba1192eb2 pyqrackising-9.9.0-py3-none-macosx_15_0_arm64.whl
70aecf9704882d590b6cd761ea5a1111c6fdc679 pyqrackising-9.9.0-py3-none-manylinux_2_35_x86_64.whl
f32b3600f1d482dcbd3e19ef93b411c87eb32910 pyqrackising-9.9.0-py3-none-manylinux_2_39_x86_64.whl
9e8e9c24a82df3b9746a42d5420196dbbce23bce pyqrackising-9.9.0-py3-none-win_amd64.whl
375154949035cb2526d0a304ebd26840abb69acb pyqrackising-9.9.0.tar.gz