Skip to content

Release v1.0.0

Latest

Choose a tag to compare

@krivenko krivenko released this 06 Dec 17:21

Significant changes in this release:

  • Enable support for Python 3.11, 3.12, 3.13 and 3.14.
  • Drop support for Python 3.6 and 3.7.
  • It is now possible to define new algebras by extending the base class expression.Generator. This functionality has been documented in the API reference, and a new example has been added.
  • New auxiliary type expression.LinearFunctionGen that is used to define commutation relations and simplification rules for user-defined algebras.
  • The property expression.Generator.algebra_id has been turned into a method.
  • Added methods __copy__() and __deepcopy__() to a few mutable objects: expression.Monomial, expression.Expression[R|C],
    loperator.HilbertSpace and loperator.SpacePartition.
  • New read-only attribute loperator.ElementarySpace.dim also inherited by loperator.ESpace(Fermion|Boson|Spin).
  • Dimension of loperator.ESpaceBoson had to be a power of 2. Now this restriction is lifted. Arguments of its constructor and of
    loperator.make_space_boson() have been adjusted accordingly: They now expect the dimension argument dim instead of its binary logarithm n_bits.
  • Constructors of loperator.HilbertSpace are changed to accept the argument dim_boson instead of its binary logarithm bits_per_boson.
  • New read-only attribute loperator.HilbertSpace.is_sparse that is True if some of the constituent elementary spaces have non-power-of-two dimensions (see also the discussion about the sparse Hilbert spaces in libcommute's online documentation).
  • New read-only attribute loperator.HilbertSpace.vec_size that is equal to the minimal size of a state vector container compatible with this Hilbert space.
  • Semantics of the existing attribute loperator.HilbertSpace.dim has been changed. Now it is equal to the exact dimension of the Hilbert space, which is smaller than loperator.HilbertSpace.vec_size if the Hilbert space is sparse.
  • New method loperator.HilbertSpace.es_dim(es) that returns dimension of a constituent elementary space.
  • New method loperator.HilbertSpace.foreach_elementary_space(f) that applies a given function to each constituent elementary space.
  • New classes CompressedStateView(R|C). These objects are LOperator(R|C)-compatible views that perform basis state index translation from a (possibly) sparse Hilbert space of dimension dim to the continuous range [0; dim-1].
  • Methods loperator.SpacePartition.merge_subspaces() and loperator.SpacePartition.find_connections() no longer accept the hs argument and instead use the loperator.HilbertSpace object provided upon construction.
  • setup.py has been updated to look for the libcommute header files in the src/libcommute subdirectory of pycommute's source tree in addition to the location specified via the LIBCOMMUTE_INCLUDEDIR environment variable. This change makes it easier to distribute both libraries in one archive.