= torch.tensor(unitary_group.rvs(8))
approx_U = torch.tensor(unitary_group.rvs(8)) target_U
Evaluation metrics
Different metrics used for evaluation.
Base norm
BaseNorm
BaseNorm ()
Base class for norms.
Unitary distances
UnitaryFrobeniusNorm
UnitaryFrobeniusNorm ()
The Frobenius-Norm for unitaries: defined in https://arxiv.org/pdf/2106.05649.pdf.
UnitaryInfidelityNorm
UnitaryInfidelityNorm ()
The Infidelity-Norm for unitaries: defined in https://link.aps.org/accepted/10.1103/PhysRevA.95.042318, TABLE I: 1.
Test the metrics on random unitaries:
print(UnitaryFrobeniusNorm.name())
UnitaryFrobeniusNorm.distance(target_U, target_U), UnitaryFrobeniusNorm.distance(approx_U, target_U)
Frobenius-Norm
(tensor(0., dtype=torch.float64), tensor(8.5523, dtype=torch.float64))
print(UnitaryInfidelityNorm.name())
UnitaryInfidelityNorm.distance(target_U, target_U), UnitaryInfidelityNorm.distance(approx_U, target_U)
Unitary-Infidelity
(tensor(4.4409e-16, dtype=torch.float64), tensor(0.9895, dtype=torch.float64))