Published August 4, 2026
| Version v5.3.1
Software
Open
qutip/qutip: QuTiP 5.3.1
Authors/Creators
- Robert Johansson
- Paul Nation1
- Eric Giguère2
- Simon Cross3
- Jake Lishman4
- Anubhav Vardhan5
- Paul
- Alexander Pitchford6
- Cassandra Granade7
- Gerardo Jose Suarez
- Asier Galicia
- Boxi Li8
- Veronika Kurth
- Yuji TAMAKOSHI9
- MathiB123
- Emi
- christian512
- Nathan Shammah10
- trolldemort9
- Maximilian MM
- Arne Løhre Grimsmo
- Piotr Migdał11
- Markus Baden
- Shahnawaz Ahmed12
- Neill Lambert
- Denis Vasilyev13
- Kevin Fischer
- Purva Thakre14
- Mudit Maheshwari
- 1. IBM
- 2. Calcul Québec, Université de Sherbrooke
- 3. Zurich Instruments
- 4. @IBM
- 5. IIT Kanpur / RIKEN
- 6. Aberystwyth University
- 7. Dual Space Solutions, LLC
- 8. RIKEN
- 9. University of Tokyo
- 10. Unitary Fund
- 11. ex: Quantum Flytrap CTO & cofounder
- 12. @embedl Chalmers, Riken @qutip @pyquantum @qgrad
- 13. IQOQI
- 14. Southern Illinois University
Description
Release Notes
Features
Qobj.data_asnow 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
mcsolveso 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,_istpand_iscptponQobj, and invalidate all affected caches whendims,superrepordataare mutated. Fixes stale-cache bug where accessingtypebefore reassigningdims/superrepwould cause subsequent calls to return incorrect results. (#2886, by Alexis Le Gall (@QubitGoblin31)) - Fix
to_choiandto_chiraisingAttributeErrorinstead ofTypeErrorfor unsupported Qobj types. (#2930, by Mike German (@steps-re)) - Fix a batch of small correctness bugs:
Qobj.logmnow reports "logm" in its non-square error,HEOMResult.final_ado_statereturns the ADO state instead of the density matrix,qdiagsno longer marks sub-unit-modulus diagonals as unitary,qzero/qzero_likeno 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_stateno longer raises anAttributeErrorwhenstore_adosis not set; the attribute is now always initialized and returnsNonewhen ADOs were not stored. (#2933, by Mike German (@steps-re)) - Fix an integer overflow in
qutip.piqs.energy_degeneracyandqutip.piqs.state_degeneracy. Degeneracies larger thanint64are now returned asfloatso arrays keep a numeric (float64) dtype instead of falling back toobject(e.g.piqs.block_matrix(80, elements="degeneracy")no longer raises). (#2948, by Udit Jain (@uditjainstjis)) - Fixed
clebschsilently returning wrong values (and laternanor 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_contractindices map to flattenedQobj.dimsentries. (#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.*_matrixtypes toscipy.sparse.*_arraytypes internally while keeping user-facing behavior (viaQobj.data_asandextractfunctions) 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_diaginqutip/piqs/piqs.pyand its tests stays of typescipy.sparse.spmatrixto prevent a premature switch toscipy.sparse.sparrayoutput before thesparraymigration is complete. (#2925, by Veronika Kurth (@veronikakurth)) - Tighten the absolute tolerance of
sesolveby 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
- Repository URL
- https://github.com/qutip/qutip