Skip to main content

Aleph - 0.37.0

✨ New Features

  • New mathematical functions for arithmetic types: bessel_j, bessel_y, bessel_i, and bessel_k for computing Bessel functions of the first kind, second kind, modified Bessel functions of the first kind, and modified Bessel functions of the second kind, respectively.
  • The Fermionic operator PairHopSum(tensor) represents a Hermitian sum of pair hopping terms: i,j,k,lVijklaiajakal\sum_{i,j,k,l} V_{ijkl} a_{i}^\dagger a_{j}^\dagger a_{k} a_{l}. It differs from CoulombSum in that the pair hopping terms do not include spin indices (which introduces an additional constraint).
  • Added adjointed() member function to quantum Operators to dynamically compute the Hermitian conjugate.
  • Quantum Operators support .is_hermitian(), .is_unitary(), and .is_real() dynamic introspection properties.
  • Expanded the library of symbolic SpinHalf operators in Aleph, adding standardized factory functions for new parameter interactions:
    • PhaseShift(angle, i): Single-qubit phase gate operator.
  • Model can now be initialized from .lattice_model files by passing the path to the file to the model constructor (e.g. model("path/to/model.lattice_model")).
  • the Model class now has a method to inspect labels that need to be registered model.unregistered_labels().
  • The set_coefficient method can now also take an aleph function that takes a coordinate and returns a complex number.

🐛 Fixes

  • Fixed data service downloads and uploads for files whose paths contain spaces or other URL-special characters.
  • Fixed an error in PairRotation where sparse vectors were not correctly multiplied, causing incorrect results.

⚠️ Breaking Changes

  • To align with the standard for CoefficientFunction, Model::set_coefficient now expects a complex number instead of a real number.