# IsPPT

IsPPT | |

Determines whether or not a matrix has positive partial transpose | |

Other toolboxes required | none |
---|---|

Related functions | IsPSD PartialTranspose |

Function category | Entanglement and separability |

` IsPPT` is a function that determines whether or not a given matrix has positive partial transpose (PPT), which is a quick and easy separability criterion. This function works on both full and sparse matrices, and if desired a witness can be provided that verifies that the input matrix is not PPT.

## Syntax

`PPT = IsPPT(X)``PPT = IsPPT(X,SYS)``PPT = IsPPT(X,SYS,DIM)``PPT = IsPPT(X,SYS,DIM,TOL)``[PPT,WIT] = IsPPT(X,SYS,DIM,TOL)`

## Argument descriptions

### Input arguments

`X`: A square matrix.`SYS`(optional, default 2): A scalar or vector indicating which subsystem(s) the transpose should be applied on.`DIM`(optional, default has`X`living on two subsystems of equal size): A vector containing the dimensions of the (possibly more than 2) subsystems on which`X`lives.`TOL`(optional, default`sqrt(eps)`): The numerical tolerance used when determining positive semidefiniteness. The matrix will be determined to have positive partial transpose if its partial transpose's minimal eigenvalue is computed to be at least`-TOL`.

### Output arguments

`PPT`: A flag (either 1 or 0) indicating that`X`does or does not have positive partial transpose.`WIT`(optional): An eigenvector corresponding to the minimal eigenvalue of`PartialTranspose(X)`. When`PPT = 0`, this serves as a witness that verifies that`X`does not have positive partial transpose, since`WIT'*PartialTranspose(X)*WIT < 0`.

## Examples

The following code verifies that the 9-by-9 identity operator (thought of as an operator in $M_3 \otimes M_3$) has positive partial transpose:

```
>> IsPPT(eye(9))
ans =
1
```

## Notes

Do not request the `WIT` output argument unless you need it. If `WIT` is not requested, positive semidefiniteness is determined by attempting a Cholesky decomposition of `X`, which is both faster and more accurate than computing its minimum eigenvalue/eigenvector pair.

## Source code

Click here to view this function's source code on github.