packages feed

lapack-0.3.2: test/DocTest/Numeric/LAPACK/Permutation/Private.hs

-- Do not edit! Automatically created with doctest-extract from src/Numeric/LAPACK/Permutation/Private.hs
{-# LINE 47 "src/Numeric/LAPACK/Permutation/Private.hs" #-}

module DocTest.Numeric.LAPACK.Permutation.Private where

import qualified Test.DocTest.Driver as DocTest

{-# LINE 48 "src/Numeric/LAPACK/Permutation/Private.hs" #-}
import     qualified Test.QuickCheck as QC
import     Test.Permutation (genPerm, genPivots)

import     qualified Numeric.LAPACK.Permutation as Perm
import     Numeric.LAPACK.Permutation (Permutation, Inversion(NonInverted), determinant, multiply, transpose)
import     Numeric.LAPACK.Matrix (ShapeInt)

import     qualified Data.Array.Comfort.Storable as Array
import     Data.Eq.HT (equating)
import     Data.Semigroup ((<>))

import     Control.Applicative (liftA2)

genPerm2     :: QC.Gen (Permutation ShapeInt, Permutation ShapeInt)
genPerm2     = do
       nat <- QC.arbitrary
       liftA2 (,) (genPerm nat) (genPerm nat)

test :: DocTest.T ()
test = do
 DocTest.printPrefix "Numeric.LAPACK.Permutation.Private:87: "
{-# LINE 87 "src/Numeric/LAPACK/Permutation/Private.hs" #-}
 DocTest.property
{-# LINE 87 "src/Numeric/LAPACK/Permutation/Private.hs" #-}
     (QC.forAll QC.arbitraryBoundedEnum $ \inv -> QC.forAll (QC.arbitrary >>= genPivots) $ \xs -> Array.toList xs == Array.toList (Perm.toPivots inv (Perm.fromPivots inv xs)))
 DocTest.printPrefix "Numeric.LAPACK.Permutation.Private:168: "
{-# LINE 168 "src/Numeric/LAPACK/Permutation/Private.hs" #-}
 DocTest.property
{-# LINE 168 "src/Numeric/LAPACK/Permutation/Private.hs" #-}
     (QC.forAll genPerm2 $ \(p0,p1) -> determinant (multiply p0 p1) == determinant p0 <> determinant p1)
 DocTest.printPrefix "Numeric.LAPACK.Permutation.Private:197: "
{-# LINE 197 "src/Numeric/LAPACK/Permutation/Private.hs" #-}
 DocTest.property
{-# LINE 197 "src/Numeric/LAPACK/Permutation/Private.hs" #-}
     (QC.forAll genPerm2 $ \(p0,p1) -> equating (Array.toList . Perm.toPivots NonInverted) (transpose $ multiply p0 p1) (multiply (transpose p1) (transpose p0)))