Overview¶
The Walrus contains a Python interface, and low-level C++ libwalrus library.
Python interface¶
The
thewalrusPython interface provides access to various highly optimized hafnian, permanent, and torontonian algorithmsThe
thewalrus.quantumsubmodule provides access to various utility functions that act on Gaussian quantum statesThe
thewalrus.samplessubmodule provides access to algorithms to sample from the hafnian or the torontonian of Gaussian quantum statesThe
thewalrus.symplecticsubmodule provides access to a convenient set of symplectic matrices and utility functions to manipulate themThe
thewalrus.randomsubmodule provides access to random unitary, symplectic and covariance matricesThe
thewalrus.fock_gradientssubmodule provides access to the Fock representation of certain continuous-variable gates and their gradientsThe
thewalrus.referencesubmodule provides access to pure-Python reference implementations of the hafnian, loop hafnian, and torontonian
Low-level libraries¶
The low-level libwalrus C++ library is a header-only library containing various parallelized algorithms for computing the hafnian, loop hafnian, permanent, and Torontonian calculation of complex, real, and integer matrices. This library is used under-the-hood by the Python thewalrus module.
You can also use the libwalrus library directly in your C++ projects - just ensure that the include folder is in your include path, and add
#include <libwalrus.hpp>
at the top of your C++ source file. See the file example.cpp, as well as the corresponding Makefile, for an example of how the libwalrus library can be accessed directly from C++ code.
Alternatively, if you install the The Walrus package as a python wheel using pip, you can link against the static pre-built library provided.
Octave¶
In addition, two auxiallary Octave functions are provided: octave/hafnian.m and octave/loophafnian.m.
Contents
Downloads