unitaryfund / qrack

Comprehensive, GPU accelerated framework for developing universal virtual quantum processors
https://qrack.readthedocs.io/en/latest/
GNU Lesser General Public License v3.0
164 stars 36 forks source link

"Big integer" replacement #1001

Closed WrathfulSpatula closed 7 months ago

WrathfulSpatula commented 7 months ago

Qrack's only external dependencies are OpenCL and the Boost libraries; this PR removes dependence on Boost for "arbitrary precision" or "big integers." (Qrack still depends on Boost for quad floating-point precision builds.)

WrathfulSpatula commented 7 months ago

This PR touched pretty much every usage of bitCapInt throughout the library. Hence, it prompted even to revisit very old tooling code in tests.hpp, but a few of the tests are just "flaky," when I clean up kludges in the header, and, looking at the test logic, it's hard to tell whether even the original tests were exact, or just guessing for cases. Particularly since this doesn't seem to affect PyQrack and the shared library, I've simplified or cut these tests.