Skip to content

Commit

Permalink
CPU-based fixed-point math :godmode:
Browse files Browse the repository at this point in the history
  • Loading branch information
WrathfulSpatula committed Jun 24, 2024
1 parent 89c4366 commit cb75956
Show file tree
Hide file tree
Showing 5 changed files with 714 additions and 26 deletions.
10 changes: 5 additions & 5 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -79,10 +79,6 @@ if (ENABLE_PTHREAD)
endif (NOT ANDROID AND NOT MSVC)
endif (ENABLE_PTHREAD)

if (FPPOW GREATER 6)
set(QRACK_LIBS ${QRACK_LIBS} quadmath)
endif (FPPOW GREATER 6)

target_link_libraries (qrack_pinvoke ${QRACK_LIBS})
if (EMSCRIPTEN)
target_link_libraries (qrack_wasm ${QRACK_LIBS})
Expand Down Expand Up @@ -115,7 +111,7 @@ include ("cmake/Boost.cmake")
include ("cmake/Complex_x2.cmake")
include ("cmake/CppStd.cmake")
include ("cmake/EnvVars.cmake")
include ("cmake/FpPow.cmake")
include ("cmake/FpMath.cmake")
include ("cmake/OclMemGuards.cmake")
include ("cmake/Pstridepow.cmake")
include ("cmake/Pure32.cmake")
Expand Down Expand Up @@ -154,6 +150,10 @@ message ("Environment variable usage is: ${ENABLE_ENV_VARS}")
message ("VM6502Q disassembler support is: ${ENABLE_VM6502Q_DEBUG}")
message ("Compiling libraries to LLVM IR is: ${ENABLE_EMIT_LLVM}")

if (FPPOW GREATER 6)
set(QRACK_LIBS ${QRACK_LIBS} quadmath)
endif (FPPOW GREATER 6)

if (ENABLE_COMPLEX_X2)
set(COMPLEX_X2_MACRO "(!(defined(__GNUC__) || defined(__MINGW32__)) || ((FPPOW == 5) && __SSE__) || ((FPPOW == 6) && __SSE2__))")
else (ENABLE_COMPLEX_X2)
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -352,7 +352,7 @@ Prior to the Qrack v7 API, a larger set of convenience methods were included in

Copyright (c) Daniel Strano and the Qrack contributors 2017-2023. All rights reserved.

Daniel Strano would like to specifically note that Benn Bollay is almost entirely responsible for the initial implementation of `QUnit` and tooling, including unit tests, in addition to large amounts of work on the documentation and many other various contributions in intensive reviews. Special thanks go to Aryan Blaauw for his extensive systematic benchmark program, leading to much debugging and design feedback, while he spreads general good will about our community discussion space. Also, thank you to Marek Karcz for supplying an awesome base classical 6502 emulator for proof-of-concept. For unit tests and benchmarks, Qrack uses Catch v2.13.7 under the Boost Software License, Version 1.0. The `QStabilizer` partial simulator "engine" is adapted from CHP by Scott Aaronson, for non-commercial use. `QBdt` is Qrack's "hand-rolled" take on "quantum binary decision diagrams" ("QBDD," or "quantum binary decision trees") inspired largely by a talk Dan attended from Jülich Supercomputing Center at IEEE Quantum Week, in 2021, and later followed up with reading into work of authors including Robert Wille. Half precision floating point headers are provided by [http://half.sourceforge.net/](http://half.sourceforge.net/), with our thanks. GitHub user [paniash](https://github.com/paniash) has kindly contributed `README.md` styling and standardization. Some commits might be written with the assistance of OpenAI's ChatGPT, though the commit messages should note all such specific cases, and 0 commits used direct ChatGPT assistance or any direct AI assistance for authorship before April 15, 2023. Thank you to all our PR contributors, tracked in GitHub, and thank you to the OSS community in general for supporting code, including [Adam Kelly](https://github.com/libtangle/qcgpu) and the [qulacs team](https://github.com/qulacs/qulacs), for Qiskit and Cirq interfaces. (Additionally, the font for the Qrack logo is "Electrickle," distributed as "Freeware" from [https://www.fontspace.com/fontastic/electrickle](https://www.fontspace.com/fontastic/electrickle).)
Daniel Strano would like to specifically note that Benn Bollay is almost entirely responsible for the initial implementation of `QUnit` and tooling, including unit tests, in addition to large amounts of work on the documentation and many other various contributions in intensive reviews. Special thanks go to Aryan Blaauw for his extensive systematic benchmark program, leading to much debugging and design feedback, while he spreads general good will about our community discussion space. Also, thank you to Marek Karcz for supplying an awesome base classical 6502 emulator for proof-of-concept. For unit tests and benchmarks, Qrack uses Catch v2.13.7 under the Boost Software License, Version 1.0. The `QStabilizer` partial simulator "engine" is adapted from CHP by Scott Aaronson, for non-commercial use. `QBdt` is Qrack's "hand-rolled" take on "quantum binary decision diagrams" ("QBDD," or "quantum binary decision trees") inspired largely by a talk Dan attended from Jülich Supercomputing Center at IEEE Quantum Week, in 2021, and later followed up with reading into work of authors including Robert Wille. The half precision floating point header is provided by [http://half.sourceforge.net/](http://half.sourceforge.net/), and the fixed-point header is provided by [https://github.com/eteran/cpp-utilities](https://github.com/eteran/cpp-utilities), with our thanks and appreciation. GitHub user [paniash](https://github.com/paniash) has kindly contributed `README.md` styling and standardization. Some commits might be written with the assistance of OpenAI's ChatGPT, though the commit messages should note all such specific cases, and 0 commits used direct ChatGPT assistance or any direct AI assistance for authorship before April 15, 2023. Thank you to all our PR contributors, tracked in GitHub, and thank you to the OSS community in general for supporting code, including [Adam Kelly](https://github.com/libtangle/qcgpu) and the [qulacs team](https://github.com/qulacs/qulacs), for Qiskit and Cirq interfaces. (Additionally, the font for the Qrack logo is "Electrickle," distributed as "Freeware" from [https://www.fontspace.com/fontastic/electrickle](https://www.fontspace.com/fontastic/electrickle).)

We thank the Unitary Fund for its generous support, in a project to help standardize benchmarks across quantum computer simulator software! Thank you to any and all contributors!

Expand Down
13 changes: 0 additions & 13 deletions cmake/FpPow.cmake

This file was deleted.

Loading

0 comments on commit cb75956

Please sign in to comment.