HABQT-0.1.0.0: test/FidelityTests.hs
module FidelityTests
( testFidelity
) where
import HABQTlib.Data
import qualified Test.QuickCheck as QC
import TestHelpers
fidProp :: QC.Positive Dim -> QC.Property
fidProp (QC.Positive dim) =
let gen = do
v1 <- QC.resize dim QC.arbitrary
v2 <- QC.resize dim QC.arbitrary
return (v1, v2)
fidMatch :: (PureStateVector, PureStateVector) -> QC.Property
fidMatch (sv1, sv2) =
QC.property $
abs (fidelity sv1 sv2 - fidelityDM (svToDM sv1) (svToDM sv2)) <= 1e-12
in QC.forAll gen fidMatch
testFidelity :: IO ()
testFidelity = do
putStrLn "Testing density matrix fidelity:"
QC.quickCheckWith QC.stdArgs {QC.maxSuccess = 1000} fidProp