Releases: Mowstyl/QSimov
Fixed sympy requirement, Rzz gate and density simulation
New license, new name.
The module is now published under "qsimov" instead of "qsimov-Mowstyl" and it's now under the GNU GPL v3+ license.
The setup.py has been replaced with a pyproject.toml.
Feel free to contribute!
QSystem bloch bug fixed
Fixed QSystem.bloch always returning None for certain values of "key".
QSimov 5, now with classical registries support and lots of bugs fixed
Some bugs that used to happen when inverting a special kind of SimpleGates have been fixed. Hopefully, there is no bug left with the gates, lots of tests have been performed against them (they will be automated in a future update).
Also, a weird error that happened when cloning a QSystem has been fixed too.
QGates and QCircuits now work with classical bits along with the usual quantum bits. Measurements now have to be outputted to a classical bit of the classical registry and they can be used to control gates/measurements. When using Doki, the value of all the classical bits will always be outputted after executing a circuit, no more lists of lists of lists of... (ended looking like ((((LISP))))).
The Wiki has also been updated, feel free to take a look.
Increased QSystem performance with high number of qubits
Cloning all registries inside a QSystem on each operation was taking too long.
Now we just copy the reference to them instead of creating a new registry with the same values.
This means the free method is unsafe when used with deep=False.
Always prefer using python's del.
This means you can use QSystems with a higher number of qubits (like in QSimov v3).
Version 4.0.0, rewritten almost everything
Rewritten lots of things, the API should be more stable from now on.
Added Drewom, a submodule that will handle the translation from the list of operations used in a QDesign to anything another simulator may need to execute them, serving as a middleware.
The core is now a module following Doki 1.3.0 API (doki-Mowstyl 1.3.0 by default).
It can be provided when creating a QStructure and as an argument to Drewom.
Added samples, more fixes
Additions:
- Samples submodule with
- An implementation of the Deutsch-Jozsa algorithm circuit for the specified oracle
- Gate with specified values as its first column (currently not working for negative and complex numbers), based on an article with DOI: 10.1103/PhysRevA.64.014303
Fixes:
- Designs ignoring offsets when using anti/controlled qubits
Fixes and changes
Additions:
- Method get_seed() added to main module. Use it to get the seed
Changes:
- The current seed is no longer printed on import
Fixes:
- Empty QGates causing errors. They'll be treated as a 2x2 identity matrix
- Fixed error when adding gates after a measure in a circuit (due to the last update)
- Negative numbers can now be used as parameters for parametrized gates
Not naïve addLine methods
Fixed some errors in Linux systems.
Now the addLine method automatically optimizes the circuit/gate by removing gates applied after its inverse (and the inverse).
Fixed errors, reported or not
Updated libqsimov to fix a potential error.
Fixed an error related with addLine of both QGate and QCircuit. controls and anticontrols weren't being saved well.