Author kungfugo
4 Stars
Updated Last
1 Year Ago
Started In
June 2022

CI codecov DOI DOI


Generate and analyze Bell diagonal Qudits with Julia

A package for generation and entanglement classification of Bell diagonal quantum states.

Bell diagonal states are generated as mixtures maximally entangled Bell states, which are related by Weyl transformations. The special propterties of these states, e.g. symmetries, allow efficient methods to be leveraged for the detection of entanglement, including its generally hard to detect form of PPT/bound entanglement.

This package provides methods to sample states, to numerically generate entanglement witnesses and to apply and extend further criteria to detect entanglement or separability in general dimension. For a precise description of implemented methods and related research results see [1], [2], [3] and the references therein.

Package Features

  • Create mixtures of maximally entangled Bell states based on Weyl transformations in any dimension
  • Classify Bell diagonal states as separable, PPT/bound entangled or NPT/free entangled
  • Generate numerical entanglement witnesses for Bell diagonal states
  • Generate entanglement conserving symmetries and use them for entanglement classification


BellDiagonalQudits can be installed using the Julia package manager. From the Julia REPL, type ] to enter the Pkg REPL mode and run

pkg> add BellDiagonalQudits

The package can be loaded via

julia> using BellDiagonalQudits


Documentation is available at


[1] Popp, C., Hiesmayr, B.C., Almost complete solution for the NP-hard separability problem of Bell diagonal qutrits, Sci Rep 12, 12472 (2022),

[2] Baumgartner, B., Hiesmayr, B.C., Narrenhofer, H. A special simplex in the state space for entangled qudits, J. Phys. A Math. Theor. 40, 7919 (2007), [] (

[3] Popp, C., Hiesmayr, B.C., Bound Entanglement of Bell Diagonal Pairs of Qutrits and Ququarts: A Comparison, arXiv (2022), [] (


Any contribution to BellDiagonalQudits.jl is welcome in the following ways:

  • Reporting bugs and suggestions in the issues section of the project's Github.
  • Modifying the code or documentation with a pull request. To contribute to the package, fork the repository on GitHub, clone it and make modifications on a new branch. Once your changes are made, push them on your fork and create the Pull Request on the main repository.

Used By Packages

No packages found.