Published August 4, 2026 | Version v5.3.1

qutip/qutip: QuTiP 5.3.1

Description

Release Notes

Features

  • Qobj.data_as now accepts "csr_array" and "dia_array", returning modern SciPy sparse arrays alongside the existing matrix formats. (#2938, by Veronika Kurth (@veronikakurth))

Performance

  • Optimize "rouchon" method for stochastic solvers. (#2936, by Eric Giguère (@Ericgig))

Bug Fixes

  • Use normalized mixed-state weights for trajectory allocation in mcsolve so that unnormalized density matrices correctly allocate the requested number of trajectories while preserving the original state trace. (#2927, by Rahul Shastri (@RahulShastri003))
  • Cache _ishp, _iscp, _istp and _iscptp on Qobj, and invalidate all affected caches when dims, superrep or data are mutated. Fixes stale-cache bug where accessing type before reassigning dims/superrep would cause subsequent calls to return incorrect results. (#2886, by Alexis Le Gall (@QubitGoblin31))
  • Fix to_choi and to_chi raising AttributeError instead of TypeError for unsupported Qobj types. (#2930, by Mike German (@steps-re))
  • Fix a batch of small correctness bugs: Qobj.logm now reports "logm" in its non-square error, HEOMResult.final_ado_state returns the ADO state instead of the density matrix, qdiags no longer marks sub-unit-modulus diagonals as unitary, qzero/qzero_like no longer mark non-square operators as Hermitian, and the scipy lsoda excess-work message has a missing space restored. (#2931, by Mike German (@steps-re))
  • Increase qfunc validity range to show coherent(alpha>=13) properly. (#2937, by Eric Giguère (@EricGig), reported by Dong-Sheng Liu (@DS-Liu) in #2932)
  • Accessing HEOMResult.final_ado_state no longer raises an AttributeError when store_ados is not set; the attribute is now always initialized and returns None when ADOs were not stored. (#2933, by Mike German (@steps-re))
  • Fix an integer overflow in qutip.piqs.energy_degeneracy and qutip.piqs.state_degeneracy. Degeneracies larger than int64 are now returned as float so arrays keep a numeric (float64) dtype instead of falling back to object (e.g. piqs.block_matrix(80, elements="degeneracy") no longer raises). (#2948, by Udit Jain (@uditjainstjis))
  • Fixed clebsch silently returning wrong values (and later nan or raising) for large angular momenta, caused by negative exponents turning exact integer factorial products into underflowing floats. (#2954, by Udit Jain (@uditjainstjis))
  • Restore unintentionally dropped support of tuples for specifying outer dimensions. List stays the preferred data structure for this, but tuples are allowed. (#2955, by Veronika Kurth (@veronikakurth))
  • Fix typehint for tensor() when passing iterables like lists, tuples, etc. (#2949, by Mayank Goel (@Mayank447))

Documentation

  • Document how tensor_contract indices map to flattened Qobj.dims entries. (#2920, by Jeonghoon Lee (@jeonghoon-ad))
  • Minor typo correction in direct_sum_sparse's docstring explaining the list/tuple syntax for dimensions. (#2947, by Paul Menczel (@pmenczel))
  • Add a temporary link to the user survey in the navigation sidebar. (#2917, by Veronika Kurth (@veronikakurth))

Internal

  • Migrate QuTiP's data layer from scipy.sparse.*_matrix types to scipy.sparse.*_array types internally while keeping user-facing behavior (via Qobj.data_as and extract functions) backward compatible. Adds a forward-compatibility guard so QuTiP won't break when SciPy fully removes the legacy matrix classes. (#2938, by Veronika Kurth (@veronikakurth))
  • Ensure output of block_diag in qutip/piqs/piqs.py and its tests stays of type scipy.sparse.spmatrix to prevent a premature switch to scipy.sparse.sparray output before the sparray migration is complete. (#2925, by Veronika Kurth (@veronikakurth))
  • Tighten the absolute tolerance of sesolve by one order of magnitude to make Floquet solver tests with randomized inputs more robust. (#2913, by Veronika Kurth (@veronikakurth))

Build & CI

  • Add dependabot to update GitHub actions. (#2906, by Mayank Goel (@Mayank447))

Contributing

  • Refine the PR template and contribution guideline to request filling out the AI tools usage disclosure also for cases when no AI tools were used. (#2943, by Veronika Kurth (@veronikakurth))

Files

qutip/qutip-v5.3.1.zip

Files (3.6 MB)

Name Size Download all
md5:763e0c38029d44f2aa8c9d058a51af49
3.6 MB Preview Download

Additional details

Related works

Is supplement to
Software: https://github.com/qutip/qutip/tree/v5.3.1 (URL)

Software