Version 0.6.0: performance improvement, modern C++20 and matrices
Almost a complete rewrite. No functional change except:
- error models don't work anymore :( they will come better and stronger later on
- classical not gate doesn't work anymore :( it's just an omission, will be fixed soon
- get_measurement_outcome and get_state don't exist anymore :( they've been superseeded by json output
- it's faster and using a single core \o/ and less memory on average
Added
- Ability to easily implement any quantum gate by simply giving an arbitrary unitary matrix in Gates.h
- Performance speedup using a single thread
- Some proper linear algebra primitives using template metaprogramming
- Abseil-cpp dependency for flat_hash_map
- Ability to compile the simulator with an set maximum number of qubits - in the future this will
be using templates as well to switch data structures based on the input quantum circuit
Changed
- Quantum state is stored as a sparse array implemented using a flat_hash_map from Abseil-cpp
- C++20 in place of C++14,
- Code style: camel case
Removed
- OpenMP and multithreading.
- SSE, AVX and other intrinsics.
- get_measurement_outcome and get_state methods. Now accessible via JSON output.