This updates the native simulator to participate in BinSkim checks by ensuring that it produces symbols even when built in release mode. Any further BinSkim fixes will be added if necessary.
This fixes the operation of `SpreadZ` when running on lists of more than 3 qubits. It adds tests that operate on lists of 1 to 4 qubits.
Fixes#1021 Bug in the internal `SpreadZ` operation (used in `Exp` decomposition)
The `ApplyUncontrolledSWAP` operation was mistakenly left public instead of being marked as internal. This should not be part of the public API surface and callers should instead use `SWAP` directly.
Fixes Cannot find ApplyUncontrolledSWAP in original package #1029
* Began adding LU decomposition support.
* Improve error handling structure.
* Code quality improvements.
* Added more docs, ported feature docs to document-features.
* Reformat Cargo.toml.
* Fix a few warnings and add new macro to simplify tests.
* More test cases for inv<c64>.
* Add microbenchmark for inv.
* Added matrix inverses.
* Fix missing link.
* Start adding expm from Padé and explicit diagonalization.
* Address feedback.
* Addressing feedback.
* Work towards propagating rx through qdk_sim_rs and C# runtime.
* Modified noise model for tests.
* Addressing feedback and reducing warnings.
* Propagate Generator and GeneratorCoset through C#.
* Add generator to noise model serialization tests.
* Add write support for Generator.
* Trivial commit to invalidate builds.
* Fix submodule issue.
* Propagate ry, rz as well.
* Update src/Simulation/qdk_sim_rs/src/math/sp_func.rs
Co-authored-by: Robin Kuzmin <9372582+kuzminrobin@users.noreply.github.com>
* Fix build issues.
* Improve null checks.
* Fix Rust-side serialization test.
* Improve JsonException throws.
* More verbosity in tests.
* Fix test issue, add additional test.
* Slight code cleanups.
* More code cleanup.
* Fixed false positive in tests.
* Restore CI build.
* Added missing fields to noise model serialization.
* Fix warnings and clippies.
* Fixed generator definitions.
* Fixed noise model literal in unit tests.
* Propagate Exp through decompositions.
* Use singly controlled decompositions.
* Resolved minor todos.
* First implementation of super(density) apply.
* Demote pub(crate) fns to private.
* Simplify match arm.
* Update comment.
* Progress on fixing and expanding eig / expm unit tests.
* More unit test fixes.
* Fix clippies.
* Update ideal noise model tests.
* Fixed broken tests.
* Minor code cleanups.
* Minor code cleanup.
* Enable Rz test on open systems simulator.
* Add missing intrinsic overrides.
* Update cargo benchmarks.
* Minor code cleanup.
* Minor docs improvements.
* Resolving TODOs and cleaning up code.
* Try to catch panics in C API.
* Add more error messages to extend_two_to_n.
* Enable rust backtraces in testing.
* Add temporary debug statement to Rz.
* Expand C API tests.
* Propagate backtraces through to C# callers.
* Allow tracing C API calls with compile time feature.
* Fix bugs in native interface.
* Disable tracing C API.
* Fix Cargo.toml.
* Fix C# error in native interface.
* Fix rustdoc issues.
* Update src/Simulation/Simulators.Tests/OpenSystemsSimulatorTests/NativeInterfaceTests.cs
Co-authored-by: Robin Kuzmin <9372582+kuzminrobin@users.noreply.github.com>
* Update src/Simulation/Simulators/OpenSystemsSimulator/DataModel/ArrayConverter.cs
Co-authored-by: Robin Kuzmin <9372582+kuzminrobin@users.noreply.github.com>
* Addressing feedback.
* Invalidating builds.
* Fix issue with parameter rename.
* Trivial change to invalidate builds.
* Trivial change to invalidate builds.
* Update src/Simulation/Simulators/OpenSystemsSimulator/DataModel/State.cs
Co-authored-by: Robin Kuzmin <9372582+kuzminrobin@users.noreply.github.com>
* Address feedback.
* Fix typo.
* Fix a couple typos.
* Added better error messages.
* Removed a source of panic.
* Increase test coverage.
* Remove experimental from DLL and namespace names.
* Reduced panic.
* Copy native DLLs with new name.
* Remove one more instanceo f M.Q.Experimental namespace.
* Fix accidental inclusion of build artifact.
* Use M.Q.Simulation.OpenSystems.DataModel namespace.
* Minor change to invalidate builds.
* Trivial change to invalidate builds.
* Remove a few warnings.
* Spell check to invalidate builds.
* Fix minor typo.
* Remove warning from Utils.
* Revert "Remove warning from Utils."
This reverts commit 9aa29b2527.
* Update global.json.
* Update QDK version elsewhere as well.
* Trivial change to invalidate builds.
* Trivial change to invalidate build.
* Trivial change to invalidate build.
* Fix error introduced by refactoring code action.
* Move generator into DataModel.
* Trivial change to invalidate builds.
* Minor fix to tests.
* Trivial change to invalidate build.
* Trivial change to invalidate build.
* Trivial change to invalidate build.
* Trivial change to invalidate build.
Co-authored-by: Robin Kuzmin <9372582+kuzminrobin@users.noreply.github.com>
* Changed the instructions to install the spectre mitigated libs for VS2022.
* Prereqs version change.
Co-authored-by: César Zaragoza Cortés <cesarzc@microsoft.com>
* ResourceEstimator can now use QubitManagerWithRestrictedReuse
* Added tests, fixed statistics
Co-authored-by: Dmitry Vasilevsky <dmitryv@microsoft.com>
* Update decompositions for latest compiler
This change updates the decompositions for the latest compiler features, allowing for iteration through ranges, allowing extension to arbitrary controls.
* Add comments, optimize qubit use
* Add Type4 target package, update `Measure` decomp
This change adds a Type4 package that avoids qubit reuse, and updates the Type2 package to use similar patterns. It adds tests, packaging and publishing for Type4.
In addition, this updates the decomposition of `Measure` in terms of single qubit Pauli-Z measurement to be limited to 8 qubits, updating all the target packages in the process.
* Use MZ pattern in Type2
* Remove unused M
* Updates for PR feedback
* Refactoring decompositions for hardware patterns
This change refactors the decompositions to avoid specific patterns. Namely recursion, array concatenation and slicing, and complex mathematical operations. It uses the new decomposition tests to validate the refactor across controlled and adjoint specializations with up to 8 controls. This should make the decompositions more compatible with future hardware targeting transformations.
Note that this updatest to a beta version of the QDK to pick up a compiler fix that is required to compile the decompositions.
* Update formatting, use loop for tests
This change adds an explicit decomposition test infrastructure based off of `AssertOperationsEqualReferenced` and wrappers around the native simulator intrinsics as references. This allows for verification tests of decompositions against the simulator written directly in Q#.
* Fix Type2 Exp decomposition
Corrects the angle convention used when calling the Ising gates as part of the `Exp` decomposition.
Fixes Decomposition of `Exp` operation uses incorrect angle convention on IonQ targets #967
* Add decomposition Exp test
* Include Exp test in target package tests
* Add comment to new test
* Update test to check sign consistency
Co-authored-by: Cassandra Granade <chgranad@microsoft.com>