Source code for toqito.state_props.is_npt

"""Checks if the quantum state has NPT (negative partial transpose) criterion."""

import numpy as np

from toqito.state_props import is_ppt


[docs] def is_npt(mat: np.ndarray, sys: int = 2, dim: int | list[int] | None = None, tol: float | None = None) -> bool: r"""Determine whether or not a matrix has negative partial transpose [@WikiPeresHorodecki]. Yields either `True` or `False`, indicating that `mat` does or does not have negative partial transpose (within numerical error). The variable `mat` is assumed to act on bipartite space. [@DiVincenzo_2000_Evidence] A state has negative partial transpose if it does not have positive partial transpose. Examples: To check if a matrix has negative partial transpose ```python exec="1" source="above" import numpy as np from toqito.state_props import is_npt from toqito.states import bell print(is_npt(bell(2) @ bell(2).conj().T, 2)) ``` Args: mat: A square matrix. sys: Scalar or vector indicating which subsystems the transpose should be applied on. Default value is `2`. dim: The dimension is a vector containing the dimensions of the subsystems on which `mat` acts. tol: Tolerance with which to check whether `mat` is PPT. Returns: Returns `True` if `mat` is NPT and `False` if not. """ return not is_ppt(mat, sys, dim, tol)