Releases: qutip/qutip
QuTiP 4.7.6
QuTiP 5.0.1
Patch release fixing small issues, mostly with the migration from self hosting the documentation to using readthedocs.
- Fix broken links in the documentation when migrating to readthedocs
- Fix readthedocs search feature
- Add setuptools to runtime compilation requirements
- Fix mcsolve documentation for open systems
- Fix OverFlowError in progress bars
QuTiP 5.0.0
QuTiP 5.0.0
QuTiP 5 is a redesign of many of the core components of QuTiP (Qobj
,
QobjEvo
, solvers) to make them more consistent and more flexible.
Qobj
may now be stored in either sparse or dense representations,
and the two may be mixed sensibly as needed. QobjEvo
is now used
consistently throughout QuTiP, and the implementation has been
substantially cleaned up. A new Coefficient
class is used to
represent the time-dependent factors inside QobjEvo
.
The solvers have been rewritten to work well with the new data layer
and the concept of Integrators
which solve ODEs has been introduced.
In future, new data layers may provide their own Integrators
specialized to their representation of the underlying data.
Much of the user-facing API of QuTiP remains familiar, but there have
had to be many small breaking changes. If we can make changes to
easy migrating code from QuTiP 4 to QuTiP 5, please let us know.
A notebook to help with migration is available on colab.
An extensive list of changes follows.
Contributors
QuTiP 5 has been a large effort by many people over the last three years.
In particular:
- Jake Lishman led the implementation of the new data layer and coefficients.
- Eric Giguère led the implementation of the new QobjEvo interface and solvers.
- Boxi Li led the updating of QuTiP's QIP support and the creation of
qutip_qip
.
Other members of the QuTiP Admin team have been heavily involved in reviewing,
testing and designing QuTiP 5:
- Alexander Pitchford
- Asier Galicia
- Nathan Shammah
- Shahnawaz Ahmed
- Neill Lambert
- Simon Cross
- Paul Menczel
Two Google Summer of Code contributors updated the tutorials and benchmarks to
QuTiP 5:
- Christian Staufenbiel updated many of the tutorials.
- Xavier Sproken update the benchmarks.
During an internship at RIKEN, Patrick Hopf created a new quantum control method and
improved the existing methods interface:
- Patrick Hopf created new quantum control package.
Four experimental data layers backends were written either as part of Google Summer
of Code or as separate projects. While these are still alpha quality, they helped
significantly to test the data layer API:
qutip-tensorflow
: a TensorFlow backend by Asier Galicia (https://github.com/qutip/qutip-tensorflow)qutip-cupy
: a CuPy GPU backend by Felipe Bivort Haiek (https://github.com/qutip/qutip-cupy/)qutip-tensornetwork
: a TensorNetwork backend by Asier Galicia (https://github.com/qutip/qutip-tensornetwork)qutip-jax
: a JAX backend by Eric Giguère (https://github.com/qutip/qutip-jax/)
Finally, Yuji Tamakoshi updated the visualization function and added animation
functions as part of Google Summer of Code project.
We have also had many other contributors, whose specific contributions are
detailed below:
- Pieter Eendebak (updated the required SciPy to 1.5+, #1982)
- Pieter Eendebak (reduced import times by setting logger names, #1981)
- Pieter Eendebak (Allow scipy 1.12 to be used with qutip, #2354)
- Xavier Sproken (included C header files in the source distribution, #1971)
- Christian Staufenbiel (added support for multiple collapse operators to the Floquet solver, #1962)
- Christian Staufenbiel (fixed the basis used in the Floquet Master Equation solver, #1952)
- Christian Staufenbiel (allowed the
bloch_redfield_tensor
function to accept strings and callables fora_ops
, #1951) - Christian Staufenbiel (Add a guide on Superoperators, Pauli Basis and Channel Contraction, #1984)
- Henrique Silvéro (allowed
qutip_qip
to be imported asqutip.qip
, #1920) - Florian Hopfmueller (added a vastly improved implementations of
process_fidelity
andaverage_gate_fidelity
, #1712, #1748 , #1788) - Felipe Bivort Haiek (fixed inaccuracy in docstring of the dense implementation of negation, #1608)
- Rajath Shetty (added support for specifying colors for individual points, vectors and states display by
qutip.Bloch
, #1335) - Rochisha Agarwal (Add dtype to printed ouput of qobj, #2352)
- Kosuke Mizuno (Add arguments of plot_wigner() and plot_wigner_fock_distribution() to specify parameters for wigner(), #2057)
- Matt Ord (Only pre-compute density matrices if keep_runs_results is False, #2303)
- Daniel Moreno Galán (Add the possibility to customize point colors as in V4 and fix point plot behavior for 'l' style, #2303)
- Sola85 (Fixed simdiag not returning orthonormal eigenvectors, #2269)
- Edward Thomas (Fix LaTeX display of Qobj state in Jupyter cell outputs, #2272)
- Bogdan Reznychenko (Rework
kraus_to_choi
making it faster, #2284) - gabbence95 (Fix typos in
expect
documentation, #2331) - lklivingstone (Added repr to QobjEvo, #2111)
- Yuji Tamakoshi (Improve print(qutip.settings) by make it shorter, #2113)
- khnikhil (Added fermionic annihilation and creation operators, #2166)
- Daniel Weiss (Improved sampling algorithm for mcsolve, #2218)
- SJUW (Increase missing colorbar padding for matrix_histogram_complex() from 0 to 0.05, #2181)
- Valan Baptist Mathuranayagam (Changed qutip-notebooks to qutip-tutorials and fixed the typo in the link redirecting to the changelog section in the PR template, #2107)
- Gerardo Jose Suarez (Added information on sec_cutoff to the documentation, #2136)
- Cristian Emiliano Godinez Ramirez (Added inherited members to API doc of MESolver, SMESolver, SSESolver, NonMarkovianMCSolver, #2167)
- Andrey Rakhubovsky (Corrected grammar in Bloch-Redfield master equation documentation, #2174)
- Rushiraj Gadhvi (qutip.ipynbtools.version_table() can now be called without Cython installed, #2110)
- Harsh Khilawala (Moved HTMLProgressBar from qutip/ipynbtools.py to qutip/ui/progressbar.py, #2112)
- Avatar Srinidhi P V (Added new argument bc_type to take boundary conditions when creating QobjEvo, #2114)
- Andrey Rakhubovsky (Fix types in docstring of projection(), #2363)
Qobj changes
Previously Qobj
data was stored in a SciPy-like sparse matrix. Now the
representation is flexible. Implementations for dense and sparse formats are
included in QuTiP and custom implementations are possible. QuTiP's performance
on dense states and operators is significantly improved as a result.
Some highlights:
- The data is still acessible via the
.data
attribute, but is now an
instance of the underlying data type instead of a SciPy-like sparse matrix.
The operations available inqutip.core.data
may be used on.data
,
regardless of the data type. Qobj
with different data types may be mixed in arithmetic and other
operations. A sensible output type will be automatically determined.- The new
.to(...)
method may be used to convert aQobj
from one data type
to another. E.g..to("dense")
will convert to the dense representation and
.to("csr")
will convert to the sparse type. - Many
Qobj
methods and methods that createQobj
now accepted adtype
parameter that allows the data type of the returnedQobj
to specified. - The new
&
operator may be used to obtain the tensor product. - The new
@
operator may be used to obtain the matrix / operator product.
bar @ ket
returns a scalar. - The new
.contract()
method will collapse 1D subspaces of the dimensions of
theQobj
. - The new
.logm()
method returns the matrix logarithm of an operator. - The methods
.set_data
,.get_data
,.extract_state
,.eliminate_states
,
.evaluate
and.check_isunitary
have been removed. - The property
dtype
return the representation of the data used. - The new
data_as
allow to obtain the data as a common python formats:
numpy array, scipy sparse matrix, JAX Array, etc.
QobjEvo changes
The QobjEvo
type for storing time-dependent quantum objects has been
significantly expanded, standardized and extended. The time-dependent
coefficients are now represented using a new Coefficient
type that
may be independently created and manipulated if required.
Some highlights:
- The
.compile()
method has been removed. Coefficients specified as
strings are automatically compiled if possible and the compilation is
cached across different Python runs and instances. - Mixing coefficient types within a single
Qobj
is now supported. - Many new attributes were added to
QobjEvo
for convenience. Examples
include.dims
,.shape
,.superrep
and.isconstant
. - Many old attributes such as
.cte
,.use_cython
,.type
,.const
,
and.coeff_file
were removed. - A new
Spline
coefficient supports spline interpolations of different
orders. The oldCubic_Spline
coefficient has been removed. - The new
.arguments(...)
method allows additional arguments to the
underlying coefficient functions to be updated. - The
_step_func_coeff
argument has been replaced by theorder
parameter._step_func_coeff=False
is equivalent toorder=3
.
_step_func_coeff=True
is equivalent toorder=0
. Higher values
oforder
gives spline interpolations of higher orders. - The spline type can take
bc_type
to control the boundary conditions. - QobjEvo can be creating from the multiplication of a Qobj with a coefficient:
oper * qutip.coefficient(f, args=args)
is equivalent to
qutip.QobjEvo([[oper, f]], args=args)
. - Coefficient function can be defined in a pythonic manner:
def f(t, A, w)
.
The dictionaryargs
second argument is no longer needed.
Function using the exactf(t, args)
signature will use the old method for
backward compatibility.
Solver changes
The sol...
QuTiP 5.0.0b1
Features
- Create a Dimension class (#1996)
- Add arguments of plot_wigner() and plot_wigner_fock_distribution() to specify parameters for wigner(). (#2057, by Kosuke Mizuno)
- Restore feedback to solvers (#2210)
- Added mpi_pmap, which uses the mpi4py module to run computations in parallel through the MPI interface. (#2296, by Paul)
- Only pre-compute density matrices if keep_runs_results is False (#2303, by Matt Ord)
Bug Fixes
- Add the possibility to customize point colors as in V4 and fix point plot behavior for 'l' style (#1974, by Daniel Moreno Galán)
- Disabled broken "improved sampling" for
nm_mcsolve
. (#2234, by Paul) - Fixed result objects storing a reference to the solver through options._feedback. (#2262, by Paul)
- Fixed simdiag not returning orthonormal eigenvectors. (#2269, by Sola85)
- Fix LaTeX display of Qobj state in Jupyter cell outputs (#2272, by Edward Thomas)
- Improved behavior of
parallel_map
andloky_pmap
in the case of timeouts, errors or keyboard interrupts (#2280, by Paul) - Ignore deprecation warnings from cython 0.29.X in tests. (#2288)
- Fixed two problems with the steady_state() solver in the HEOM method. (#2333)
Miscellaneous
- Improve fidelity doc-string (#2257)
- Improve documentation in guide/dynamics (#2271)
- Improve states and operator parameters documentation. (#2289)
- Rework
kraus_to_choi
making it faster (#2284, by Bogdan Reznychenko) - Remove Bloch3D: redundant to Bloch (#2306)
- Allow tests to run without matplotlib and ipython. (#2311)
- Add too small step warnings in fixed dt SODE solver (#2313)
- Add
dtype
toQobj
andQobjEvo
(#2325) - Fix typos in
expect
documentation (#2331, by gabbence95) - Allow measurement functions to support degenerate operators. (#2342)
QuTiP 4.7.5
The is a patch for QuTiP 4.7.X to support scipy 1.12.
Bug Fixes
- Remove use of scipy. in parallel.py, incompatible with scipy==1.12 (#2305 by Evan McKinney)
QuTiP 4.7.4
This is a bugfix release for QuTiP 4.7.X.
Bug Fixes
- Adapt to deprecation from matplotlib 3.8 (#2243, reported by Bogdan Reznychenko)
- Fix name of temp files for removal after use. (#2251, reported by Qile Su)
- Avoid integer overflow in Qobj creation. (#2252, reported by KianHwee-Lim)
- Ignore DeprecationWarning from pyximport (#2287)
- Add partial support and tests for python 3.12. (#2294)
Miscellaneous
QuTiP 5.0.0a2
This is a pre-release.
Continuation of the QuTiP 5 redesign.
It include fixing bugs and polishing features introduced in the alpha 1 release, updated stochastic solvers, a new solver: nm_mcsolve
and animation functions.
Features
- Add support for different spectra types for
bloch_redfield_tensor
(#1951) - Improve qutip import times by setting logger names explicitly. (#1981, by Pieter Eendebak)
- Change the order of parameters in
expand_operator
(#1991) - Add
svn
andsolve
to dispatched (#2002) - Added
nm_mcsolve
to provide support for Monte-Carlo simulations of master equations with possibly negative rates. The method implemented here is described in arXiv:2209.08958 [quant-ph]. (#2070 by pmenczel) - Add support for combining bosinic and fermionic HEOM baths (#2089)
- Added
__repr__
to QobjEvo (#2111 by lklivingstone) - Improve
print(qutip.settings)
by make it shorter (#2113 by tamakoshi2001) - Create the
trace_oper_ket
operation (#2126) - Speed up the construction of the RHS of the HEOM solver by a factor of 4x by converting the final step to Cython. (#2128)
- Rewrite the stochastic solver to use the v5 solver interface. (#2131)
- Add
Qobj.data_as
to extract underlying data in original format. (#2141) - Add
qeye_like
andqzero_like
(#2153) - Add capacity to dispatch on Data (#2157)
- Added fermionic annihilation and creation operators. (#2166 by khnikhil)
- Changed arguments and applied colorblind_safe to functions in visualization.py (#2170 by Yuji Tamakoshi)
- Changed arguments and applied colorblind_safe to plot_wigner_sphere and matrix_histogram in visualization.py (#2193 by Yuji Tamakoshi)
- Added Dia data layer which represents operators as multi-diagonal matrices. (#2196)
- Added support for animated plots. (#2203 by Yuji Tamakoshi)
- Improved sampling algorithm for
mcsolve
(#2218 by Daniel Weiss) - Added support for early termination of map functions. (#2222)
Bug Fixes
- Add missing state transformation to
floquet_markov_mesolve
(#1952 by christian512) - Added default _isherm value (True) for momentum and position operators. (#2032 by Asier Galicia)
- Changed qutip-notebooks to qutip-tutorials and fixed the typo in the link redirecting to the changelog section in the PR template. (#2107 by Valan Baptist Mathuranayagam)
- Increase missing colorbar padding for matrix_histogram_complex() from 0 to 0.05. (#2181 by SJUW)
- Raise error on insufficient memory. (#2224)
- Fixed fallback to
fsesolve
call infmmesolve
(#2225)
Removals
- Remove
qutip.control
and replace with qutip_qtrl. (#2116) - Deleted
_solve
in countstat.py and used_data.solve
. (#2120 by Yuji Tamakoshi) - Deprecate
three_level_atom
(#2221) - Deprecate
orbital
(#2223)
Documentation
- Add a guide on Superoperators, Pauli Basis and Channel Contraction. (#1984 by christian512)
- Added information on
sec_cutoff
to the documentation (#2136 by Gerardo Jose Suarez) - Added inherited members to API doc of
MESolver
,SMESolver
,SSESolver
,NonMarkovianMCSolver
(#2167 by Cristian Emiliano Godinez Ramirez) - Corrected grammar in Bloch-Redfield master equation documentation (#2174 by Andrey Rakhubovsky)
Miscellaneous
- Update scipy version requirement to 1.5+ (#1982 by Pieter Eendebak)
- Added all to qutip/measurements.py and qutip/core/semidefinite.py (#2103 by Rushiraj Gadhvi)
- Restore towncrier check (#2105)
- qutip.ipynbtools.version_table() can now be called without Cython installed (#2110 by Rushiraj Gadhvi)
- Moved
HTMLProgressBar
from qutip/ipynbtools.py to qutip/ui/progressbar.py (#2112 by Harsh Khilawala) - Added new argument
bc_type
to take boundary conditions when creatingQobjEvo
(#2114 by Avatar Srinidhi P V ) - Remove Windows build warning suppression. (#2119)
- Optimize dispatcher by dispatching on positional only args. (#2135)
- Clean
semidefinite
(#2138) - Migrate transfertensor.py to solver (#2142)
- Add a test for progress_bar (#2150)
- Enable cython 3 (#2151)
- Added tests for visualization.py (#2192 by Yuji Tamakoshi)
- Sorted arguments of
sphereplot
so that the order is similar to those ofplot_spin_distribution
(#2219 by Yuji Tamakoshi)
QuTiP 4.7.3
This is a bugfix release for QuTiP 4.7.X.
Bug Fixes
- Non-oper qobj + scalar raise an error. (#2208 reported by vikramkashyap)
- Fixed issue where extract_states did not preserve hermiticity.
Fixed issue where rand_herm did not set the private attribute _isherm to True. (#2214 by AGaliciaMartinez) - ssesolve average states to density matrices (#2216 reported by BenjaminDAnjou)
Miscellaneous
QuTiP 4.7.2
This is a bugfix release for QuTiP 4.7.X. It adds support for numpy 1.25 and scipy 1.11.
Bug Fixes
- Fix setting of sso.m_ops in heterodyne smesolver and passing through of sc_ops to photocurrent solver. (#2081 by Bogdan Reznychenko and Simon Cross)
- Update calls to SciPy eigvalsh and eigsh to pass the range of eigenvalues to return using
subset_by_index=
. (#2081 by Simon Cross) - Fixed bug where some matrices were wrongly found to be hermitian. (#2082 by AGaliciaMartinez)
Miscellaneous
QuTiP 5.0.0a1
This is a pre-release.
QuTiP 5 is a redesign of many of the core components of QuTiP (Qobj
, QobjEvo
, solvers) to make them more consistent and more flexible.
Qobj
may now be stored in either sparse or dense representations, and the two may be mixed sensibly as needed. QobjEvo
is now used consistently throughout QuTiP, and the implementation has been substantially cleaned up. A new Coefficient
class is used to represent the time-dependent factors inside QobjEvo
.
The solvers have been rewritten to work well with the new data layer and the concept of Integrators
which solve ODEs has been introduced. In future, new data layers may provide their own Integrators
specialized to their representation of the underlying data.
Much of the user-facing API of QuTiP remains familiar, but there have had to be many small breaking changes. If we can make changes to easy migrating code from QuTiP 4 to QuTiP 5, please let us know.
Any extensive list of changes follows.
Contributors
QuTiP 5 has been a large effort by many people over the last three years.
In particular:
- Jake Lishman led the implementation of the new data layer and coefficients.
- Eric Giguère led the implementation of the new QobjEvo interface and solvers.
- Boxi Li led the updating of QuTiP's QIP support and the creation of
qutip_qip
.
Other members of the QuTiP Admin team have been heavily involved in reviewing, testing and designing QuTiP 5:
- Alexander Pitchford
- Asier Galicia
- Nathan Shammah
- Shahnawaz Ahmed
- Neill Lambert
- Simon Cross
Two Google Summer of Code contributors updated the tutorials and benchmarks to QuTiP 5:
- Christian Staufenbiel updated many of the tutorials (https://github.com/qutip/qutip-tutorials/).
- Xavier Sproken update the benchmarks (https://github.com/qutip/qutip-benchmark/).
Four experimental data layers backends were written either as part of Google Summer of Code or as separate projects. While these are still alpha quality, the helped significantly to test the data layer API:
qutip-tensorflow
: a TensorFlow backend by Asier Galicia (https://github.com/qutip/qutip-tensorflow)qutip-cupy
: a CuPy GPU backend by Felipe Bivort Haiek (https://github.com/qutip/qutip-cupy)qutip-tensornetwork
: a TensorNetwork backend by Asier Galicia (https://github.com/qutip/qutip-tensornetwork)qutip-jax
: a JAX backend by Eric Giguère (https://github.com/qutip/qutip-jax)
We have also had many other contributors, whose specific contributions are detailed below:
- Pieter Eendebak (updated the required SciPy to 1.4+, #1982).
- Pieter Eendebak (reduced import times by setting logger names, #1981)
- Xavier Sproken (included C header files in the source distribution, #1971)
- Christian Staufenbiel (added support for multiple collapse operators to the Floquet solver, #1962)
- Christian Staufenbiel (fixed the basis used in the Floquet Master Equation solver, #1952)
- Christian Staufenbiel (allowed the
bloch_redfield_tensor
function to accept strings and callables fora_ops
, #1951) - Henrique Silvéro (allowed
qutip_qip
to be imported asqutip.qip
, #1920) - Florian Hopfmueller (added a vastly improved implementations of
process_fidelity
andaverage_gate_fidelity
, #1712, #1748, #1788) - Felipe Bivort Haiek (fixed inaccuracy in docstring of the dense implementation of negation, #1608)
- Rajath Shetty (added support for specifying colors for individual points, vectors and states display by
qutip.Bloch
, #1335)
Qobj changes
Previously Qobj
data was stored in a SciPy-like sparse matrix. Now the representation is flexible. Implementations for dense and sparse formats are included in QuTiP and custom implementations are possible. QuTiP's performance on dense states and operators is significantly improved as a result.
Some highlights:
- The data is still acessible via the
.data
attribute, but is now an instance of the underlying data type instead of a SciPy-like sparse matrix. The operations available inqutip.core.data
may be used on.data
, regardless of the data type. Qobj
with different data types may be mixed in arithmetic and other operations. A sensible output type will be automatically determined.- The new
.to(...)
method may be used to convert aQobj
from one data type to another. E.g..to("dense")
will convert to the dense representation and.to("csr")
will convert to the sparse type. - Many
Qobj
methods and methods that createQobj
now accepted adtype
parameter that allows the data type of the returnedQobj
to specified. - The new
&
operator may be used to obtain the tensor product. - The new
@
operator may be used to obtain the matrix / operator product.bar @ ket
returns a scalar. - The new
.contract()
method will collapse 1D subspaces of the dimensions of theQobj
. - The new
.logm()
method returns the matrix logarithm of an operator. - The methods
.set_data
,.get_data
,.extract_state
,.eliminate_states
,.evaluate
and.check_isunitary
have been removed.
QobjEvo changes
The QobjEvo
type for storing time-dependent quantum objects has been significantly expanded, standardized and extended. The time-dependent coefficients are now represented using a new Coefficient
type that may be independently created and manipulated if required.
Some highlights:
- The
.compile()
method has been removed. Coefficients specified as strings are automatically compiled if possible and the compilation is cached across different Python runs and instances. - Mixing coefficient types within a single
Qobj
is now supported. - Many new attributes were added to
QobjEvo
for convenience. Examples include.dims
,.shape
,.superrep
and.isconstant
. - Many old attributes such as
.cte
,.use_cython
,.type
,.const
, and.coeff_file
were removed. - A new
Spline
coefficient supports spline interpolations of different orders. The oldCubic_Spline
coefficient has been removed. - The new
.arguments(...)
method allows additional arguments to the underlying coefficient functions to be updated. - The
_step_func_coeff
argument has been replaced by theorder
parameter._step_func_coeff=False
is equivalent toorder=3
._step_func_coeff=True
is equivalent toorder=0
. Higher values oforder
gives spline interpolations of higher orders.
Solver changes
The solvers in QuTiP have been heavily reworked and standardized. Under the hood solvers now make use of swappable ODE Integrators
. Many Integrators
are included (see the list below) and custom implementations are possible. Solvers now consistently accept a QobjEvo
instance at the Hamiltonian or Liouvillian, or any object which can be passed to the QobjEvo
constructor.
A breakdown of highlights follows.
All solvers:
- Solver options are now supplied in an ordinary Python dict.
qutip.Options
is deprecated and returns a dict for backwards compatibility. - A specific ODE integrator may be selected by supplying a
method
option. - Each solver provides a class interface. Creating an instance of the class allows a solver to be run multiple times for the same system without having to repeatedly reconstruct the right-hand side of the ODE to be integrated.
- A
QobjEvo
instance is accepted for most operators, e.g.,H
,c_ops
,e_ops
,a_ops
. - The progress bar is now selected using the
progress_bar
option. A new progess bar using thetqdm
Python library is provided. - Dynamic arguments, where the value of an operator depends on the current state of the evolution, have been removed. They may be re-implemented later if there is demand for them.
Integrators:
- The SciPy zvode integrator is available with the BDF and Adams methods as
bdf
andadams
. - The SciPy dop853 integrator (an eighth order Runge-Kutta method by Dormand & Prince) is available as
dop853
. - The SciPy lsoda integrator is available as
lsoda
. - QuTiP's own implementation of Verner's "most efficient" Runge-Kutta methods of order 7 and 9 are available as
vern7
andvern9
. See http://people.math.sfu.ca/~jverner/ for a description of the methods. - QuTiP's own implementation of a solver that directly diagonalizes the the system to be integrated is available as
diag
. It only works on time-independent systems and is slow to setup, but once the diagonalization is complete, it generates solutions very quickly. - QuTiP's own implementatoin of an approximate Krylov subspace integrator is available as
krylov
. This integrator is only usable withsesolve
.
Result class:
- A new
.e_data
attribute provides expectation values as a dictionary. Unlike.expect
, the values are provided in a Python list rather than a numpy array, which better supports non-numeric types. - The contents of the
.stats
attribute changed significantly and is now more consistent across solvers.
Monte-Carlo Solver (mcsolve):
- The system, H, may now be a super-operator.
- The
seed
parameter now supports supplying numpySeedSequence
orGenerator
types. - The new
timeout
andtarget_tol
parameters allow the solver to exit early if...