-
Fix: Bug in
swap.py
. Added test to cover bug found. -
Fix: Bug in
ppt_distinguishability.py
that prevented checking for higher dimensions. Added test to cover bug found. -
Fix: Bug in
ppt_distinguishability.py
that prevented checking 2-dimensional cases. -
Fix: Bug in
state_distinguishability.py
. Value returned was being multiplied by an unnecessary factor. Added other tests that would have caught this. -
Fix: Bug in
partial_trace.py
. Added test to cover bug found. -
Fix: Bug in
partial_transpose.py
for non-square matrices. Adding test cases to cover this previously failing case. -
Fix: Bug in
purity.py
. Squaring matrix was using**2
instead ofnp.linalg.matrix_power
-
Fix: Bug in
random_state_vector.py
. Added tests to cover. -
Fix: Bug in
schmidt_rank.py
. Added tests to cover. -
Feature: Added in
symmetric_extension_hierarchy.py
. The function is a hierarchy of semidefinite programs that eventually converge to the separable value for distinguishing an ensemble of quantum states. The first level is just the standard PPT distinguishability probability. Computing higher levels of this hierarchy can become intractable quite quickly. -
Feature: Added in ability to perform both minimum-error and unambiguous state discrimination in
state_distinguishability.py
. Adding additional tests totest_state_distinguishability.py
to cover this extra feature. -
Feature: Added
majorizes.py
; a function to determine whether a vector or matrix majorizes another. This is used as a criterion to determine whether a quantum state can be converted to another via LOCC. Addedtest_majorizes.py
for unit testing. -
Feature: Added
perfect_matchings.py
; a function that calculates all the perfect matchings of a given list of objects. Addedtest_perfect_matchings.py
for unit testing. -
Feature: Added
breuer.py
understates/
; a specific bound-entangled state of interest. Added intest_breuer.py
for unit testing. -
Feature: Added
brauer.py
understates/
. Added intest_brauer.py
for unit testing. -
Feature: Added
entanglement_of_formation.py
understate_props/
. Added intest_entanglement_of_formation.py
for unit testing. -
Feature: Added
l1_norm_coherence.py
understate_props/
. Addedtest_l1_norm_coherence.py
for unit testing. -
Enhancement: Adding further tests for
symmetric_projection.py
. -
Enhancement: Adding further tests for
ppt_distinguishability.py
. -
Enhancement: Adding further tests for
reduction.py
-
Enhancement: Consolidating
conclusive_state_exclusion.py
andunambiguous_state_exclusion.py
to juststate_exclusion.py
. Adding in optional parameter to specify method of exclusion. Consolidated tests intest_state_exclusion.py
.
-
Feature: Added
in_separable_ball.py
understate_props/
. Knowing whether a density matrix (quantum state) is contained in the separable ball centered at the maximally-mixed state is useful for separability testing. Addedtest_in_separable_ball.py
for unit testing. -
Feature: Added in ability to perform both minimum-error and unambiguous state discrimination in
ppt_distinguishability.py
. Adding additional tests toppt_state_distinguishability.py
to cover this extra feature. -
Feature: Added in ability to compute both primal and dual optimization problems in
ppt_distinguishability.py
. This gives the user the capability to obtain the measurement operators and also to use the computationally efficiency of the dual problem to make quicker numeric calculations. -
Feature: Added
unvec.py
undermatrix_ops/
. This feature is the inverse of pre-existing "vec" operation found invec.py
. That is, it allows one to take a vector and transform it to a (possibly square) matrix. -
Feature: Added
choi_to_kraus.py
underchannel_ops/
. This feature allows the user to convert a Choi matrix to a list of Kraus operators. This is the inverse of the existingkraus_to_choi.py
functionality thattoqito
currently offers. -
Feature: Add
is_mutually_orthogonal.py
understate_props/
. This feature allows the user to determine whether a given set of states (vectors) are mutually orthogonal with each other. -
Feature: Add
has_symmetric_extension.py
understate_props/
. This feature is very useful for determining whether a given state is entangled by checking whether there exists a symmetric extension for that state. -
Feature: Add
cvx_kron.py
underhelper/
. This feature allows one to compute the Kronecker product between two entities, where either two may be of typenp.ndarray
or acvxpy
expression. -
Feature: Add
is_identity.py
tostate_props/
. This feature allows one to check if a given matrix is equal to the identity matrix. -
Enhancement: Previously ignore tests for
channel_props/
are now being run as part of the testing suite. -
Enhancement: More robust error checking and adding tolerance arguments for various matrix properties found in
matrix_props/
. -
Doc-Fix: Trailing back-tick quotes removed in
li_norm_coherence.py
. -
Fix: Bug in
symmetric_extension_hierarchy.py
forlevel=1
case. Added test to cover this bug. -
Fix: Bug in
states/tile.py
produced 3-dimensional vectors when they should have in fact been 9-dimensional vectors. -
Fix: Warning in testing suite for
test_symmetric_projection.py
for previously using the deprecatednumpy.matrix
class has since been fixed and the warning hence resolved. -
Fix: The
states/isotropic.py
file no longer requires the use of the deprecatednumpy.matrix
class.
-
Feature: Added
is_unital.py
underchannel_props/
. This feature allows the user to determine whether a given channel (specified by either its Choi matrix or by its Kraus operators) is unital. -
Feature: Added
is_trace_preserving.py
underchannel_props/
. This feature allows the user to determine whether a given channel (specified by either its Choi matrix or by its Kraus operators) is trace-preserving. -
Feature: Added
log_negativity.py
understate_props
. This feature allows the user to calculate the log negativty of a quantum state. -
Feature: Added
channel_fidelity.py
underchannel_metrics/
. This feature allows the user to calculate the channel fidelity between the Choi representations of two quantum channels. -
Feature: Added
is_idempotent.py
undermatrix_props/
. This feature allows the user to determine whether a given matrix is idempotent. -
Enhancement: Adding
rtol
andatol
tolerance parameters foris_herm_preserving.py
. -
Enhancement: Improving speed of calculating the classical value of nonlocal game. This enhancement is taken from QETLAB which was inspired by pre-print arxiv:2005.13418.
-
Enhancement: Parallel repetitions for the classical value of a nonlocal game is now supported.
-
Fix: The
partial_channel.py
function has been enhanced to deal with completely positive maps specified by Kraus operators as input. -
Fix: The GHZ state now supports either dimension or parameter
1
instead of it previously being2
-
Fix: Various documentation fixes and updates.
-
Fix: Index error for unambiguous quantum state distinguishability.
-
Feature: Added
bures_distance.py
understate_metrics/
. This feature allows the user to determine whether a given matrix is idempotent. -
Feature: Added
singlet.py
understates/
. This feature allows one to yield a singlet state of dimensiondim
. -
Feature: Added
is_quantum_channel
underchannel_props
. This feature allows one to check whether a given input provided as either a list of Kraus operators, or, a Choi matrix constitutes a valid quantum channel. -
Fix: Permute systems had a bug where if the
inv_perm
option inpermute_systems.py
was selected, the standard permutation was calculated (not the inverse permutation). Further unit tests are included to catch similar failures. -
Fix: The
partial_transpose.py
function did not accurately calculate the partial transpose on matrices of certain dimension. The fix forpermute_systems.py
fixes the issue withpartial_transpose.py
. Further unit tests are included to catch similar failures. -
Fix: The
partial_trace.py
function was not accurately calculating the partial trace when the argument was specified as a list of dimensions for certain cases. This has been fixed and further test cases have been included to prevent this from occurring. -
Fix: The
swap.py
function was not accurately swapping on all sub-systems. Further unit tests are included to catch similar failures. -
Fix: The
hadamard.py
function was not yielding Hadamard matrices of proper size and value. Fixed and added tests to cover this case. -
Fix: The
schmidt_decomposition.py
function was taking an incorrect argument into the SVD function. Fixed and added further tests cases to cover. -
Fix: The
is_product_vector.py
was making use of theschmidt_decomposition.py
function incorrectly. Fixed and added further test cases. -
Enhancement: Adding ability for
schmidt_rank.py
function to process not just vectors, but also matrices. Adding in unit tests to cover this case. -
Enhancement: Adding the ability for
is_product.py
function to process not just vectors, but also matrices. Adding in unit tests to cover this case. -
Enhancement: Simplified code for
nonlocal_game.py
andextended_nonlocal_game.py
-
Enhancement: Some general documentation clean-up.
-
Enhancement: Update to Python 3.9 from 3.7.
-
Feature: Added
dual_channel.py
underchannel_ops
. This feature allows one to calculate the dual channel of a given input provided as either a list of Kraus operators, or, a Choi matrix that represents a valid quantum channel. -
Fix: Thanks to Jake Xuereb for a fix in the
concurrence.py
function that was incorrectly not taking the transpose. -
Feature: Thanks to Joseph Li (@jli0108) for the ability to calculate the Schmidt decomposition.
-
Feature: Added
diamond_norm.py
underchannel_metrics/
. This feature allows the user to calculate the diamond norm between the Choi representations of two quantum channels. -
Feature: Added
is_npt.py
understate_props/
. This feature allows the user to determine whether a given state is has negative partial transpose (is NPT). -
Fix: Thanks to @iftachyakar for the state distinguishability docs update
-
Fix: Thanks to @georgios-ts for the fix to
symmetric_extension_hierarchy
. -
Feature: Thanks to @georgios-ts for the feature of the
sk_vector_norm
. -
Feature: Thanks to @georgios-ts for the extended nonlocal game version of the NPA hierarchy in
extended_nonlocal_games
. -
Fix: Thanks to @georgios-ts for a fix in the
partial_transpose.py
function. -
Feature: Thanks to @georgios-ts for the
block_positive.py
feature that allows the user to detect if a matrix is block positive. -
Feature: Thanks to @meandmytram for the
is_separable.py
feature that allows the user to test whether a quantum state represented as a density operator is entangled or separable. -
Feature: Added
standard_basis.py
undermatrices/
that allows one to construct the standard basis of dimension "d". -
Feature: Added
is_orthonormal.py
undermatrix_props/
that allows one to determine if a collection of vectors or matrices are orthonormal. -
Feature: Thanks to @AdithyaSireesh for
hilbert_schmidt_inner_product.py
understate_metrics/
that allows one to calculate the Hilbert-Schmidt inner product between two linear operators. -
Enhancement: Updating
Union
syntax using the|
operator instead ofUnion
fromtyping
. -
Enhancement: Linting and stylistic improvements.
- Version bump to fix Python package versioning issue.
-
Version bump to fix Python package versioning issue.
-
Adding
outer_product
andinner_product
functions inmatrix_ops
(thanks to @juliusw352) -
Fixing random number generation in
random_density_matrix
function to be obtained from Haar measure (thanks to @BCasale) -
Adding
to_nonlocal_game
function inXORGame
that converts an XOR game definition to aNonlocalGame
object (thanks to @juliusw352) -
Adding
nonsignaling
function inXORGame
that calculates the nonsignaling value of anXORGame
object (thanks to @juliusw352)
-
Adding ability to perform parallel repetition for
XORGame
objects (thanks to @juliusw352) PR-143 -
Thanks to @puva-thakre for updating the installation and contribution guidelines. PR-153
-
Thanks to @ryanprior for providing a CI/CD testing and linting pipeline PR-154
-
Thanks to @georgios-ts for fixing a bug in
apply_channel
PR-155 -
Thanks to @georgios-ts for fixing a bug in
sk_norm
. PR-156 -
Thanks to @georgios-ts for fixing a bug in
is_unitary
for channels. PR-164 -
Thanks to @georgios-ts for fixing an issue in
choi_to_kraus
for non-CP maps. PR-162 -
Thanks for @georgios-ts for adding the
channel_dim
feature to allow one to extract the dimensions of a quantum channel. PR-161 -
Thanks to @AmanieOxana for integrating the completely bounded trace and spectral norms. PR-157
-
Thanks to @ErikQQY for refactoring and simplifying the partial trace and partial transpose functions. PR-158
-
Thanks to @purva-thakre for adding SDPs for calculating the fidelity of separability in
fidelity_of_separability
PR-165 -
Thanks to @elads888 for adding the
is_diagonally_dominant
feature to allow one to determine if a matrix is diagonally dominant. PR-176 -
Thanks to @epelaaez for adding the
bures_angle
feature. PR-181 -
Refactor of
state_exclusion
to take advantage of thepicos
SDP solver with to return both the optimal value and optimal measurements. PR-182 -
Adding feature to determine if a given matrix is circulant with
is_circulant
. PR-184 -
Numerous improvements to linting and overall improvement in project structure (PR-190, PR-192, PR-193, PR-195, PR-200, PR-205, PR-206 PR-212, PR-223, and others). Thanks to @purva-thakre for a bunch of work here!
-
Improved test coverage in channel fidelity(PR-232), CB norm (PR-234), and KP-norm (PR-246), and more. Thanks to @purva-thakre!
-
Fixed RTD failing builds. PR-253.
-
Optimizations to checking if set of vectors are mutually orthogonal. Improvement from O(n^2) to O(n). PR-250.
-
Feature to generate a set of mutually unbiased bases for a given prime dimension. PR-272.
-
Feature to check whether a given collection of quantum states described as vectors are antidistinguishable. PR-271.
-
Feature to check whether a set of quantum states constitute an unextendible product basis or not. (thanks to @Newtech66 and @smtsjhr).
-
Feature to check if matrix is totally positive PR-274
-
Fix: Bug in state exclusion code PR-292
-
Feature: Determine whether a collection of vectors are linearly independent or not PR-324
-
Feature: Adding the BB84 states PR-327
-
Feature: Integrating the functionality to determine whether a collection of states comprise an unextendible product basis PR-328
-
Feature: Adding the PBR states PR-382
-
Feature: Adding cyclic permutation (thanks to @Bchass) PR-390
-
Feature: Adding support for density matrix and vector input for state distinguishability and exclusion PR-462
- Patch for 1.0.7 as prior version was not including new files.