dq.fidelity
fidelity(x: ArrayLike, y: ArrayLike) -> Array
Returns the fidelity of two states, kets or density matrices.
The fidelity is computed
- as \(F(\ket\psi,\ket\varphi)=\left|\braket{\psi|\varphi}\right|^2\) if both arguments are kets,
- as \(F(\ket\psi,\rho)=\lvert\braket{\psi|\rho|\psi}\rvert\) if one arguments is a ket and the other is a density matrix,
- as \(F(\rho,\sigma)=\tr{\sqrt{\sqrt\rho\sigma\sqrt\rho}}^2\) if both arguments are density matrices.
Warning
This definition is different from qutip.fidelity()
which uses the square root
fidelity \(F_\text{qutip} = \sqrt{F}\).
Parameters
-
x
(array_like of shape (..., n, 1) or (..., n, n))
–
Ket or density matrix.
-
y
(array_like of shape (..., n, 1) or (..., n, n))
–
Ket or density matrix.
Returns
(array of shape (...)) Real-valued fidelity.
Examples
>>> fock0 = dq.fock(3, 0)
>>> dq.fidelity(fock0, fock0)
Array(1., dtype=float32)
>>> fock01_dm = 0.5 * (dq.fock_dm(3, 1) + dq.fock_dm(3, 0))
>>> dq.fidelity(fock01_dm, fock01_dm)
Array(1., dtype=float32)
>>> dq.fidelity(fock0, fock01_dm)
Array(0.5, dtype=float32)