Strawberryfields

Latest version: v0.23.0

Safety actively analyzes 629765 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 3 of 5

0.14.0

<h3>New features since last release</h3>

* The `"tf"` backend now supports TensorFlow 2.0 and above. [(283)](https://github.com/XanaduAI/strawberryfields/pull/283) [(#320)](https://github.com/XanaduAI/strawberryfields/pull/320) [(#323)](https://github.com/XanaduAI/strawberryfields/pull/323) [(#361)](https://github.com/XanaduAI/strawberryfields/pull/361) [(#372)](https://github.com/XanaduAI/strawberryfields/pull/372) [(#373)](https://github.com/XanaduAI/strawberryfields/pull/373) [(#374)](https://github.com/XanaduAI/strawberryfields/pull/374) [(#375)](https://github.com/XanaduAI/strawberryfields/pull/375) [(#377)](https://github.com/XanaduAI/strawberryfields/pull/377)

For more details and demonstrations of the new TensorFlow 2.0-compatible backend, see our [optimization and machine learning tutorials](https://strawberryfields.readthedocs.io/en/stable/introduction/tutorials.html#optimization-and-machine-learning).

For example, using TensorFlow 2.0 to train a variational photonic circuit:

python
eng = sf.Engine(backend="tf", backend_options={"cutoff_dim": 7})
prog = sf.Program(1)

with prog.context as q:
Apply a single mode displacement with free parameters
Dgate(prog.params("a"), prog.params("p")) | q[0]

opt = tf.keras.optimizers.Adam(learning_rate=0.1)

alpha = tf.Variable(0.1)
phi = tf.Variable(0.1)

for step in range(50):
reset the engine if it has already been executed
if eng.run_progs:
eng.reset()

with tf.GradientTape() as tape:
execute the engine
results = eng.run(prog, args={'a': alpha, 'p': phi})
get the probability of fock state |1>
prob = results.state.fock_prob([1])
negative sign to maximize prob
loss = -prob

gradients = tape.gradient(loss, [alpha, phi])
opt.apply_gradients(zip(gradients, [alpha, phi]))
print("Value at step {}: {}".format(step, prob))


* Adds the method `number_expectation` that calculates the expectation value of the product of the number operators of a given set of modes. [(348)](https://github.com/XanaduAI/strawberryfields/pull/348/)

python
prog = sf.Program(3)
with prog.context as q:
ops.Sgate(0.5) | q[0]
ops.Sgate(0.5) | q[1]
ops.Sgate(0.5) | q[2]
ops.BSgate(np.pi/3, 0.1) | (q[0], q[1])
ops.BSgate(np.pi/3, 0.1) | (q[1], q[2])


Executing this on the Fock backend,

python
>>> eng = sf.Engine("fock", backend_options={"cutoff_dim": 10})
>>> state = eng.run(prog).state


we can compute the expectation value `<n_0 n_2>`:

python
>>> state.number_expectation([0, 2])


<h3>Improvements</h3>

* Add details to the error message for failed remote jobs. [(370)](https://github.com/XanaduAI/strawberryfields/pull/370)

* The required version of The Walrus was increased to version 0.12, for
tensor number expectation support. [(380)](https://github.com/XanaduAI/strawberryfields/pull/380)

<h3>Contributors</h3>

This release contains contributions from (in alphabetical order):

Tom Bromley, Theodor Isacsson, Josh Izaac, Nathan Killoran, Filippo Miatto, Nicolás Quesada, Antal Száva, Paul Tan.

0.13.0

<h3>New features since last release</h3>

* Adds initial support for the Xanadu's photonic quantum hardware. [(101)](https://github.com/XanaduAI/strawberryfields/pull/101) [(#148)](https://github.com/XanaduAI/strawberryfields/pull/148) [(#294)](https://github.com/XanaduAI/strawberryfields/pull/294) [(#327)](https://github.com/XanaduAI/strawberryfields/pull/327) [(#328)](https://github.com/XanaduAI/strawberryfields/pull/328) [(#329)](https://github.com/XanaduAI/strawberryfields/pull/329) [(#330)](https://github.com/XanaduAI/strawberryfields/pull/330) [(#334)](https://github.com/XanaduAI/strawberryfields/pull/334) [(#336)](https://github.com/XanaduAI/strawberryfields/pull/336) [(#337)](https://github.com/XanaduAI/strawberryfields/pull/337) [(#339)](https://github.com/XanaduAI/strawberryfields/pull/339)

Jobs can now be submitted to the Xanadu Quantum Cloud platform to be run on supported hardware using the new `RemoteEngine`:

python
import strawberryfields as sf
from strawberryfields import ops
from strawberryfields.utils import random_interferometer

replace AUTH_TOKEN with your Xanadu Quantum Cloud access token
con = sf.api.Connection(token="AUTH_TOKEN")
eng = sf.RemoteEngine("X8", connection=con)
prog = sf.Program(8)

U = random_interferometer(4)

with prog.context as q:
ops.S2gate(1.0) | (q[0], q[4])
ops.S2gate(1.0) | (q[1], q[5])
ops.S2gate(1.0) | (q[2], q[6])
ops.S2gate(1.0) | (q[3], q[7])

ops.Interferometer(U) | q[:4]
ops.Interferometer(U) | q[4:]
ops.MeasureFock() | q

result = eng.run(prog, shots=1000)


For more details, see the [photonic hardware quickstart](https://strawberryfields.readthedocs.io/en/latest/introduction/photonic_hardware.html) and [tutorial](https://strawberryfields.readthedocs.io/en/latest/tutorials/tutorial_X8.html).

* Significantly speeds up the Fock backend of Strawberry Fields, through a variety of changes:

- The Fock backend now uses The Walrus high performance implementations of the displacement, squeezing, two-mode squeezing, and beamsplitter operations. [(287)](https://github.com/XanaduAI/strawberryfields/pull/287) [(#289)](https://github.com/XanaduAI/strawberryfields/pull/289)

- Custom tensor contractions which make use of symmetry relations for the beamsplitter and the two-mode squeeze gate have been added, as well as more efficient contractions for diagonal operations in the Fock basis. [(292)](https://github.com/XanaduAI/strawberryfields/pull/292)

<br>

* New `sf` command line program for configuring Strawberry Fields for access to the Xanadu cloud platform, as well as submitting and executing jobs from the command line. [(146)](https://github.com/XanaduAI/strawberryfields/pull/146) [(#312)](https://github.com/XanaduAI/strawberryfields/pull/312)

The new Strawberry Fields command line program `sf` provides several utilities including:

* `sf configure [--token] [--local]`: configure the connection to the cloud platform

* `sf run input [--output FILE]`: submit and execute quantum programs from the command line

* `sf --ping`: verify your connection to the Xanadu cloud platform

For more details, see the [documentation](https://strawberryfields.readthedocs.io/en/stable/code/sf_cli.html).

* New configuration functions to load configuration from keyword arguments, environment variables, and configuration files. [(298)](https://github.com/XanaduAI/strawberryfields/pull/298) [(#306)](https://github.com/XanaduAI/strawberryfields/pull/306)

This includes the ability to automatically store Xanadu cloud platform credentials in a configuration file using the new function

python
sf.store_account("AUTHENTICATION_TOKEN")


as well as from the command line,

bash
$ sf configure --token AUTHENTICATION_TOKEN


Configuration files can be saved globally, or locally on a per-project basis. For more details, see the [configuration documentation](https://strawberryfields.readthedocs.io/en/stable/introduction/configuration.html)

* Adds configuration functions for resetting, deleting configurations, as well as displaying available configuration files. [(359)](https://github.com/XanaduAI/strawberryfields/pull/359)

* Adds the `x_quad_values` and `p_quad_values` methods to the `state` class. This allows calculation of x and p quadrature probability distributions by integrating across the Wigner function. [(270)](https://github.com/XanaduAI/strawberryfields/pull/270)

* Adds support in the applications layer for node-weighted graphs.

Sample from graphs with node weights using a special-purpose encoding [(295)](https://github.com/XanaduAI/strawberryfields/pull/295):

python
from strawberryfields.apps import sample

generate a random graph
g = nx.erdos_renyi_graph(20, 0.6)
a = nx.to_numpy_array(g)

define node weights
and encode into the adjacency matrix
w = [i for i in range(20)]
a = sample.waw_matrix(a, w)

s = sample.sample(a, n_mean=10, n_samples=10)
s = sample.postselect(s, min_count=4, max_count=20)
s = sample.to_subgraphs(s, g)


Node weights can be input to search algorithms in the `clique` and `subgraph` modules [(296)](https://github.com/XanaduAI/strawberryfields/pull/296) [(#297)](https://github.com/XanaduAI/strawberryfields/pull/297):

python
from strawberryfields.apps import clique
c = [clique.shrink(s_, g, node_select=w) for s_ in s]
[clique.search(c_, g, iterations=10, node_select=w) for c_ in c]


python
from strawberryfields.apps import subgraph
subgraph.search(s, g, min_size=5, max_size=8, node_select=w)


<h3>Improvements</h3>

* Moved Fock backend apply-gate functions to `Circuit` class, and removed `apply_gate_einsum` and `Circuits._apply_gate`, since they were no longer used. [(293)](https://github.com/XanaduAI/strawberryfields/pull/293/)

* Results returned from all backends now have a unified type and shape. In addition, attempting to use batching, post-selection and feed-foward together with multiple shots now raises an error. [(300)](https://github.com/XanaduAI/strawberryfields/pull/300)

* Modified the rectangular decomposition to ensure that identity-like unitaries are implemented with no swaps. [(311)](https://github.com/XanaduAI/strawberryfields/pull/311)

<h3>Bug fixes</h3>

* Symbolic Operation parameters are now compatible with TensorFlow 2.0 objects. [(282)](https://github.com/XanaduAI/strawberryfields/pull/282)

* Added `sympy>=1.5` to the list of dependencies. Removed the `sympy.functions.atan2` workaround now that SymPy has been fixed. [(280)](https://github.com/XanaduAI/strawberryfields/pull/280)

* Removed two unnecessary else statements that pylint complained about. [(290)](https://github.com/XanaduAI/strawberryfields/pull/290)

* Fixed a bug in the `MZgate`, where the internal and external phases were in the wrong order in both the docstring and the argument list. The new signature is `MZgate(phase_in, phase_ex)`, matching the existing `rectangular_symmetric` decomposition. [(301)](https://github.com/XanaduAI/strawberryfields/pull/301)

* Updated the relevant methods in `RemoteEngine` and `Connection` to derive `shots` from the Blackbird script or `Program` if not explicitly specified. [(327)](https://github.com/XanaduAI/strawberryfields/pull/327)

* Fixed a bug in homodyne measurements in the Fock backend, where computed probability values could occasionally include small negative values due to floating point precision error. [(364)](https://github.com/XanaduAI/strawberryfields/pull/364)

* Fixed a bug that caused an exception when printing results with no state. [(367)](https://github.com/XanaduAI/strawberryfields/pull/367)

* Improves the Takagi decomposition, by making explicit use of the eigendecomposition of real symmetric matrices. [(352)](https://github.com/XanaduAI/strawberryfields/pull/352)

<h3>Contributors</h3>

This release contains contributions from (in alphabetical order):

Ville Bergholm, Tom Bromley, Jack Ceroni, Theodor Isacsson, Josh Izaac, Nathan Killoran, Shreya P Kumar,
Leonhard Neuhaus, Nicolás Quesada, Jeremy Swinarton, Antal Száva, Paul Tan, Zeid Zabaneh.

0.13.0.rc0

<h3>New features since last release</h3>

* Adds initial support for the Xanadu's photonic quantum hardware. [(101)](https://github.com/XanaduAI/strawberryfields/pull/101) [(#148)](https://github.com/XanaduAI/strawberryfields/pull/148) [(#294)](https://github.com/XanaduAI/strawberryfields/pull/294) [(#327)](https://github.com/XanaduAI/strawberryfields/pull/327) [(#328)](https://github.com/XanaduAI/strawberryfields/pull/328) [(#329)](https://github.com/XanaduAI/strawberryfields/pull/329) [(#330)](https://github.com/XanaduAI/strawberryfields/pull/330) [(#334)](https://github.com/XanaduAI/strawberryfields/pull/334) [(#336)](https://github.com/XanaduAI/strawberryfields/pull/336) [(#337)](https://github.com/XanaduAI/strawberryfields/pull/337) [(#339)](https://github.com/XanaduAI/strawberryfields/pull/339)

Jobs can now be submitted to the Xanadu cloud platform to be run on supported hardware using the new `RemoteEngine`:

python
import strawberryfields as sf
from strawberryfields import ops
from strawberryfields.utils import random_interferometer

replace AUTHENTICATION_TOKEN with your Xanadu cloud access token
con = sf.api.Connection(token="AUTH_TOKEN")
eng = sf.RemoteEngine("X8", connection=con)
prog = sf.Program(8)

U = random_interferometer(4)

with prog.context as q:
ops.S2gate(1.0) | (q[0], q[4])
ops.S2gate(1.0) | (q[1], q[5])
ops.S2gate(1.0) | (q[2], q[6])
ops.S2gate(1.0) | (q[3], q[7])

ops.Interferometer(U) | q[:4]
ops.Interferometer(U) | q[4:]
ops.MeasureFock() | q

result = eng.run(prog, shots=1000)


For more details, see the [photonic hardware quickstart](https://strawberryfields.readthedocs.io/en/latest/introduction/photonic_hardware.html) and [tutorial](https://strawberryfields.readthedocs.io/en/latest/tutorials/tutorial_X8.html).

* Significantly speeds up the Fock backend of Strawberry Fields, through a variety of changes:

- The Fock backend now uses The Walrus high performance implementations of the displacement, squeezing, two-mode squeezing, and beamsplitter operations. [(287)](https://github.com/XanaduAI/strawberryfields/pull/287) [(#289)](https://github.com/XanaduAI/strawberryfields/pull/289)

- Custom tensor contractions which make use of symmetry relations for the beamsplitter and the two-mode squeeze gate have been added, as well as more efficient contractions for diagonal operations in the Fock basis. [(292)](https://github.com/XanaduAI/strawberryfields/pull/292)

<br>

* New `sf` command line program for configuring Strawberry Fields for access to the Xanadu cloud platform, as well as submitting and executing jobs from the command line. [(146)](https://github.com/XanaduAI/strawberryfields/pull/146) [(#312)](https://github.com/XanaduAI/strawberryfields/pull/312)

The new Strawberry Fields command line program `sf` provides several utilities including:

* `sf configure [--token] [--local]`: configure the connection to the cloud platform

* `sf run input [--output FILE]`: submit and execute quantum programs from the command line

* `sf --ping`: verify your connection to the Xanadu cloud platform

For more details, see the [documentation](https://strawberryfields.readthedocs.io/en/stable/code/sf_cli.html).

* New configuration functions to load configuration from keyword arguments, environment variables, and configuration files. [(298)](https://github.com/XanaduAI/strawberryfields/pull/298) [(#306)](https://github.com/XanaduAI/strawberryfields/pull/306)

This includes the ability to automatically store Xanadu cloud platform credentials in a configuration file using the new function

python
sf.store_account("AUTHENTICATION_TOKEN")


as well as from the command line,

bash
$ sf configure --token AUTHENTICATION_TOKEN


Configuration files can be saved globally, or locally on a per-project basis. For more details, see the [configuration documentation](https://strawberryfields.readthedocs.io/en/stable/introduction/configuration.html)

* Adds the `x_quad_values` and `p_quad_values` methods to the `state` class. This allows calculation of x and p quadrature probability distributions by integrating across the Wigner function. [(270)](https://github.com/XanaduAI/strawberryfields/pull/270)

* Adds support in the applications layer for node-weighted graphs.

Sample from graphs with node weights using a special-purpose encoding [(295)](https://github.com/XanaduAI/strawberryfields/pull/295):

python
from strawberryfields.apps import sample

generate a random graph
g = nx.erdos_renyi_graph(20, 0.6)
a = nx.to_numpy_array(g)

define node weights
and encode into the adjacency matrix
w = [i for i in range(20)]
a = sample.waw_matrix(a, w)

s = sample.sample(a, n_mean=10, n_samples=10)
s = sample.postselect(s, min_count=4, max_count=20)
s = sample.to_subgraphs(s, g)


Node weights can be input to search algorithms in the `clique` and `subgraph` modules [(296)](https://github.com/XanaduAI/strawberryfields/pull/296) [(#297)](https://github.com/XanaduAI/strawberryfields/pull/297):

python
from strawberryfields.apps import clique
c = [clique.shrink(s_, g, node_select=w) for s_ in s]
[clique.search(c_, g, iterations=10, node_select=w) for c_ in c]


python
from strawberryfields.apps import subgraph
subgraph.search(s, g, min_size=5, max_size=8, node_select=w)


<h3>Improvements</h3>

* Moved Fock backend apply-gate functions to `Circuit` class, and removed `apply_gate_einsum` and `Circuits._apply_gate`, since they were no longer used. [(293)](https://github.com/XanaduAI/strawberryfields/pull/293/)

* Results returned from all backends now have a unified type and shape. In addition, attempting to use batching, post-selection and feed-foward together with multiple shots now raises an error. [(300)](https://github.com/XanaduAI/strawberryfields/pull/300)

* Modified the rectangular decomposition to ensure that identity-like unitaries are implemented with no swaps. [(311)](https://github.com/XanaduAI/strawberryfields/pull/311)

<h3>Bug fixes</h3>

* Symbolic Operation parameters are now compatible with TensorFlow 2.0 objects. [(282)](https://github.com/XanaduAI/strawberryfields/pull/282)

* Added `sympy>=1.5` to the list of dependencies. Removed the `sympy.functions.atan2` workaround now that SymPy has been fixed. [(280)](https://github.com/XanaduAI/strawberryfields/pull/280)

* Removed two unnecessary else statements that pylint complained about. [(290)](https://github.com/XanaduAI/strawberryfields/pull/290)

* Fixed a bug in the `MZgate`, where the internal and external phases were in the wrong order in both the docstring and the argument list. The new signature is `MZgate(phase_in, phase_ex)`, matching the existing `rectangular_symmetric` decomposition. [(301)](https://github.com/XanaduAI/strawberryfields/pull/301)

* Updated the relevant methods in `RemoteEngine` and `Connection` to derive `shots` from the Blackbird script or `Program` if not explicitly specified. [(327)](https://github.com/XanaduAI/strawberryfields/pull/327)

<h3>Contributors</h3>

This release contains contributions from (in alphabetical order):

Ville Bergholm, Tom Bromley, Jack Ceroni, Theodor Isacsson, Josh Izaac, Nathan Killoran, Shreya P Kumar,
Leonhard Neuhaus, Nicolás Quesada, Jeremy Swinarton, Antal Száva, Paul Tan, Zeid Zabaneh.

0.12.1

This is a very minor bugfix release, to address some installation issues with the previous v0.12.0.

* Add new Strawberry Fields applications paper to documentation [274](https://github.com/XanaduAI/strawberryfields/pull/274)

* Update figure for GBS device in documentation [275](https://github.com/XanaduAI/strawberryfields/pull/275)

* Fix installation issue with incorrect minimum version number for `thewalrus`, fix an incorrect URL in the `README`, and add the applications data to the `MANIFEST.in` file. [272](https://github.com/XanaduAI/strawberryfields/pull/272) [#277](https://github.com/XanaduAI/strawberryfields/pull/277) [#273](https://github.com/XanaduAI/strawberryfields/pull/273) [#278](https://github.com/XanaduAI/strawberryfields/pull/278)

Contributors

This release contains contributions from (in alphabetical order):

Ville Bergholm, Tom Bromley, Nicolás Quesada, Paul Tan

0.12.0

New features

* A new applications layer, allowing users to interface samples generated from near-term photonic devices with problems of practical interest. The `apps` package consists of the following modules:

- The `apps.sample` module, for encoding graphs and molecules into Gaussian boson sampling (GBS) and generating corresponding samples.

- The `apps.subgraph` module, providing a heuristic algorithm for finding dense subgraphs from GBS samples.

- The `apps.clique` module, providing tools to convert subgraphs sampled from GBS into cliques and a heuristic to search for larger cliques.

- The `apps.similarity` module, allowing users to embed graphs into high-dimensional feature spaces using GBS. Resulting feature vectors provide measures of graph similarity for machine learning tasks.

- The `apps.points` module, allowing users to sample subsets of points according to new point process that can be generated from a GBS device.

- The `apps.vibronic` module, providing functionality to construct the vibronic absorption spectrum of a molecule from GBS samples.

Improvements

* The documentation was improved and refactored. Changes include:

- A brand new theme, now matching PennyLane [262](https://github.com/XanaduAI/strawberryfields/pull/262)

- The documentation has been restructured to make it easier to navigate [266](https://github.com/XanaduAI/strawberryfields/pull/266)

Contributors

This release contains contributions from (in alphabetical order):

Juan Miguel Arrazola, Tom Bromley, Josh Izaac, Soran Jahangiri, Nicolás Quesada

0.11.2

New features

* Adds the MZgate to ops.py, representing a Mach-Zehnder interferometer. This is not a primitive of the existing simulator backends; rather, `_decompose()` is defined, decomposing it into an external phase shift, two 50-50 beamsplitters, and an internal phase shift. [127](https://github.com/XanaduAI/strawberryfields/pull/127)

* The `Chip0Spec` circuit class now defines a `compile` method, allowing arbitrary unitaries comprised of `{Interferometer, BSgate, Rgate, MZgate}` operations to be validated and compiled to match the topology of chip0. [127](https://github.com/XanaduAI/strawberryfields/pull/127)

* `strawberryfields.ops.BipartiteGraphEmbed` quantum decomposition now added, allowing a bipartite graph to be embedded on a device that allows for initial two-mode squeezed states, and block diagonal unitaries.

* Added threshold measurements, via the new operation `MeasureThreshold`, and provided implementation of this operation in the Gaussian backend. [152](https://github.com/XanaduAI/strawberryfields/pull/152)

* Programs can now have free parameters/arguments which are only bound to numerical values when the Program is executed, by supplying the actual argument values to the `Engine.run` method. [163](https://github.com/XanaduAI/strawberryfields/pull/163)

API Changes

* The `strawberryfields.ops.Measure` shorthand has been deprecated in favour of `strawberryfields.ops.MeasureFock()`. [145](https://github.com/XanaduAI/strawberryfields/pull/145)

* Several changes to the `strawberryfields.decompositions` module: [127](https://github.com/XanaduAI/strawberryfields/pull/127)

- The name `clements` has been replaced with `rectangular` to correspond with the shape of the resulting decomposition.

- All interferometer decompositions (`rectangular`, `rectangular_phase_end`, `rectangular_symmetric`, and `triangular`) now have standardized outputs `(tlist, diag, tilist)`, so they can easily be swapped.

* Several changes to `ops.Interferometer`: [127](https://github.com/XanaduAI/strawberryfields/pull/127)

- The calculation of the ops.Interferometer decomposition has been moved from `__init__` to `_decompose()`, allowing the interferometer decomposition type to be set by a `CircuitSpec` during compilation.

- `**kwargs` is now passed through from `Operation.decompose` -> `Gate.decompose` -> `SpecificOp._decompose`, allowing decomposition options to be passed during compilation.

- `ops.Interferometer` now accepts the keyword argument `mesh` to be set during initialization, allowing the user to specify the decomposition they want.

* Moves the `Program.compile_seq` method to `CircuitSpecs.decompose`. This allows it to be accessed from the `CircuitSpec.compile` method. Furthermore, it now must also be passed the program registers, as compilation may sometimes require this. [127](https://github.com/XanaduAI/strawberryfields/pull/127)

* Parameter class is replaced by `MeasuredParameter` and `FreeParameter`, both inheriting from `sympy.Symbol`. Fixed numeric parameters are handled by the built-in Python numeric classes and numpy arrays. [163](https://github.com/XanaduAI/strawberryfields/pull/163)

* `Parameter`, `RegRefTransform` and `convert` are removed. [163](https://github.com/XanaduAI/strawberryfields/pull/163)

Improvements

* Photon-counting measurements can now be done in the Gaussian backend for states with nonzero displacement. [154](https://github.com/XanaduAI/strawberryfields/pull/154)

* Added a new test for the cubic phase gate [160](https://github.com/XanaduAI/strawberryfields/pull/160)

* Added new integration tests for the Gaussian gates that are not primitive, i.e., P, CX, CZ, and S2. [173](https://github.com/XanaduAI/strawberryfields/pull/173)

Bug fixes

* Fixed bug in `strawberryfields.decompositions.rectangular_symmetric` so its returned phases are all in the interval [0, 2*pi), and corrects the function docstring. [196](https://github.com/XanaduAI/strawberryfields/pull/196)

* When using the `'gbs'` compilation target, the measured registers are now sorted in ascending order in the resulting compiled program. [144](https://github.com/XanaduAI/strawberryfields/pull/144)

* Fixed typo in the Gaussian Boson Sampling example notebook. [133](https://github.com/XanaduAI/strawberryfields/pull/133)

* Fixed a bug in the function `smeanxp` of the Gaussian Backend simulator. [154](https://github.com/XanaduAI/strawberryfields/pull/154)

* Clarified description of matrices that are accepted by graph embed operation. [147](https://github.com/XanaduAI/strawberryfields/pull/147)

* Fixed typos in the documentation of the CX gate and BSgate [166](https://github.com/XanaduAI/strawberryfields/pull/166) [#167](https://github.com/XanaduAI/strawberryfields/pull/167) [#169](https://github.com/XanaduAI/strawberryfields/pull/169)

Page 3 of 5

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.