Skip to content

Release 0.8

Compare
Choose a tag to compare
@josh146 josh146 released this 02 Aug 05:27
· 1108 commits to master since this release

Summary of changes from 0.7

New features

  • You can now prepare multimode states in all backends, via the following new quantum operations in strawberryfields.ops:

    • Ket
    • DensityMatrix
    • Gaussian

    Both Ket and DensityMatrix work with the Fock backends, while Gaussian works with all three, applying the Williamson decomposition or, optionally, directly preparing the Gaussian backend with the provided Gaussian state.

  • Added Gaussian decompositions to the front-end; these can be accessed via the new quantum operations Interferometer, GaussianTransform, Gaussian. These allow you to apply interferometers, Gaussian symplectic transformations, and prepare a state based on a covariance matrix respectively. You can also query the engine to determine the CV gate decompositions applied.

  • Added the cross-Kerr interaction, accessible via the quantum operation CKgate().

  • Added utilities for creating random covariance, symplectic, and Gaussian unitary matrices in strawberryfields.utils.

  • States can now be compared directly for equality - this is defined separately for Gaussian states and Fock basis states.

Improvements

  • The engine logic and behaviour has been overhauled, making it simpler to use and understand.
    • eng.run() and eng.reset() now allow the user to alter parameters such as cutoff_dim between runs.
    • eng.reset_backend() has been renamed to eng.reset(), and now also implicitly resets the queue.
    • The engine can now be reset even in the case of modes having being added/deleted, with no side effects. This is due to the presence of register checkpoints, allowing the engine to keep track of register changes.
    • eng.print_applied() keeps track of multiple simulation runs, by using nested lists.
  • A new parameter class is introduced - this is a developmental change, and does not affect the user-facing parts of Strawberry Fields. All parameters passed to quantum operations are 'wrapped' in this parameter class, which also contains several high level mathematical and array/tensor manipulation functions and methods.

Contributors

This release contains contributions from:

Ville Bergholm, Christian Gogolin, Nicolás Quesada, Josh Izaac, and Nathan Killoran.