packages feed

comfort-blas 0.0.0.1 → 0.0.1

raw patch · 11 files changed

+1234/−948 lines, 11 filesdep +semigroupsdep ~comfort-arraydep ~containersdep ~deepseqPVP ok

version bump matches the API change (PVP)

Dependencies added: semigroups

Dependency ranges changed: comfort-array, containers, deepseq

API changes (from Hackage documentation)

+ Numeric.BLAS.Vector: cyclicReverse :: (Integral n, Floating a) => Vector (Cyclic n) a -> Vector (Cyclic n) a
+ Numeric.BLAS.Vector: reverse :: (Integral n, Floating a) => Vector (ZeroBased n) a -> Vector (ZeroBased n) a

Files

comfort-blas.cabal view
@@ -1,6 +1,6 @@ Cabal-Version:    2.2 Name:             comfort-blas-Version:          0.0.0.1+Version:          0.0.1 License:          BSD-3-Clause License-File:     LICENSE Author:           Henning Thielemann <haskell@henning-thielemann.de>@@ -17,7 +17,7 @@   Makefile  Source-Repository this-  Tag:         0.0.0.1+  Tag:         0.0.1   Type:        darcs   Location:    https://hub.darcs.net/thielema/comfort-blas/ @@ -31,8 +31,9 @@     netlib-ffi >=0.1.1 && <0.2,     comfort-array >=0.5.2 && <0.6,     guarded-allocation >=0.0 && <0.1,-    containers >=0.4 && <0.7,-    deepseq >=1.3 && <1.5,+    containers >=0.4 && <0.8,+    semigroups >=0.19 && <0.21,+    deepseq >=1.3 && <1.6,     transformers >=0.4 && <0.7,     utility-ht >=0.0.13 && <0.1,     base >=4.5 && <5@@ -56,7 +57,7 @@   Build-Depends:     comfort-blas,     netlib-ffi,-    comfort-array,+    comfort-array >=0.5.3,     doctest-exitcode-stdio >=0.0 && <0.1,     doctest-lib >=0.1 && <0.2,     QuickCheck >=2.5 && <3,
src/Numeric/BLAS/Vector.hs view
@@ -11,6 +11,8 @@    CheckedArray.take, CheckedArray.drop,    CheckedArray.takeLeft, CheckedArray.takeRight,    swap,+   reverse,+   cyclicReverse,    CheckedArray.singleton,    constant,    zero,@@ -65,7 +67,7 @@ import Foreign.Marshal.Array (advancePtr) import Foreign.ForeignPtr (withForeignPtr, castForeignPtr) import Foreign.Ptr (Ptr)-import Foreign.Storable (Storable, peek, peekElemOff, pokeElemOff)+import Foreign.Storable (Storable, peek, peekElemOff, poke, pokeElemOff) import Foreign.C.Types (CInt)  import System.IO.Unsafe (unsafePerformIO)@@ -73,8 +75,8 @@ import Control.Monad.Trans.Cont (ContT(ContT), evalContT) import Control.Monad.IO.Class (liftIO) import Control.Monad.ST (runST)-import Control.Monad (fmap, return, (=<<))-import Control.Applicative (liftA3, (<$>))+import Control.Monad (when, fmap, return, (=<<))+import Control.Applicative (liftA3, (<$>), (*>))  import qualified Data.Array.Comfort.Storable.Mutable.Unchecked as UMutArray import qualified Data.Array.Comfort.Storable.Mutable as MutArray@@ -89,15 +91,16 @@ import Data.Maybe (Maybe(Nothing,Just), maybe) import Data.Tuple.HT (mapFst, uncurry3) import Data.Tuple (fst, snd)-import Data.Ord ((>=))+import Data.Ord ((>=), (>)) import Data.Eq (Eq, (==)) -import Prelude (Int, fromIntegral, (-), Char, error, IO)+import Prelude (Int, Integral, fromIntegral, (-), Char, error, IO)   {- $setup >>> import Test.NumberModule.Type (Number_) >>> import Test.Generator (genNumber)+>>> import Test.Slice (shapeInt) >>> import Test.Utility (approx) >>> import qualified Numeric.BLAS.Vector as Vector >>> import qualified Numeric.Netlib.Class as Class@@ -108,6 +111,8 @@ >>> import Numeric.BLAS.Scalar (RealOf, absolute, minusOne) >>> import Data.Array.Comfort.Storable (Array, (!)) >>> import Data.Complex (Complex((:+)))+>>> import Data.Monoid ((<>))+>>> import Data.Tuple.HT (mapPair) >>> import Control.Applicative (liftA2) >>> import Control.Monad (replicateM) >>>@@ -124,45 +129,67 @@ >>> maxDim :: Int >>> maxDim = 100 >>>->>> genVector :: (Class.Floating a) => Integer -> Int -> QC.Gen (Vector a)->>> genVector maxE dim =->>>    fmap (Vector.fromList (Shape.ZeroBased dim)) $->>>    replicateM dim $ genNumber maxE+>>> genVector ::+>>>    (Shape.C sh, Class.Floating a) =>+>>>    sh -> QC.Gen a -> QC.Gen (Vector.Vector sh a)+>>> genVector shape genElem =+>>>    fmap (Vector.fromList shape) $+>>>    replicateM (Shape.size shape) genElem >>>+>>> real_ :: QC.Gen Real_+>>> real_ = genNumber maxElem+>>>+>>> complex_ :: QC.Gen Complex_+>>> complex_ = genNumber maxElem+>>>+>>> number_ :: QC.Gen Number_+>>> number_ = genNumber maxElem+>>> >>> isNonEmpty :: Shape.C sh => Array sh a -> Bool >>> isNonEmpty xs = Shape.size (Array.shape xs) > 0 >>>->>> newtype ArbRealVector = ArbRealVector (Vector Real_)->>>    deriving (Show)+>>> forVector ::+>>>    (QC.Testable prop, QC.Arbitrary a, Class.Floating a, Show a) =>+>>>    QC.Gen a -> (Vector a -> prop) -> QC.Property+>>> forVector genElem =+>>>    QC.forAllShrink+>>>       (flip genVector genElem . shapeInt =<< QC.choose (0,maxDim))+>>>       (map Vector.autoFromList . QC.shrink . Vector.toList) >>>->>> instance QC.Arbitrary ArbRealVector where->>>    arbitrary = do->>>       dim <- QC.choose (0,maxDim)->>>       fmap ArbRealVector $ genVector maxElem dim->>>    shrink (ArbRealVector xs) =->>>       map (ArbRealVector . Vector.autoFromList) .->>>       QC.shrink . Vector.toList $ xs+>>> forVector2 ::+>>>    (QC.Testable prop, QC.Arbitrary a, Class.Floating a, Show a) =>+>>>    QC.Gen a -> (Vector a -> Vector a -> prop) -> QC.Property+>>> forVector2 genElem prop =+>>>    QC.forAllShrink+>>>       (do shape <- fmap shapeInt $ QC.choose (0,maxDim)+>>>           liftA2 (,) (genVector shape genElem) (genVector shape genElem))+>>>       (map (mapPair (Vector.autoFromList, Vector.autoFromList) . unzip) .+>>>        QC.shrink .+>>>        uncurry zip . mapPair (Vector.toList, Vector.toList))+>>>       (uncurry prop) >>>->>> newtype ArbVector = ArbVector (Vector Number_)->>>    deriving (Show)+>>> type CyclicVector = Vector.Vector (Shape.Cyclic Int) >>>->>> instance QC.Arbitrary ArbVector where->>>    arbitrary = do->>>       dim <- QC.choose (0,maxDim)->>>       fmap ArbVector $ genVector maxElem dim->>>    shrink (ArbVector xs) =->>>       map (ArbVector . Vector.autoFromList) .->>>       QC.shrink . Vector.toList $ xs+>>> genCyclicVector ::+>>>    (Class.Floating a) =>+>>>    Integer -> Int -> QC.Gen (CyclicVector a)+>>> genCyclicVector maxE dim =+>>>    fmap (Vector.fromList (Shape.Cyclic dim)) $+>>>    replicateM dim $ genNumber maxE >>>->>> data ArbVector2 =->>>       ArbVector2 (Vector Number_) (Vector Number_)->>>    deriving (Show)+>>> cyclicVectorFromListGen :: (Class.Floating a) => [a] -> CyclicVector a+>>> cyclicVectorFromListGen xs = Vector.fromList (Shape.Cyclic $ length xs) xs >>>->>> instance QC.Arbitrary ArbVector2 where->>>    arbitrary = do->>>       dim <- QC.choose (0,maxDim)->>>       liftA2 ArbVector2->>>          (genVector maxElem dim) (genVector maxElem dim)+>>> cyclicVectorFromList :: [Number_] -> CyclicVector Number_+>>> cyclicVectorFromList = cyclicVectorFromListGen+>>>+>>> forCyclicVector ::+>>>    (QC.Testable prop, QC.Arbitrary a, Class.Floating a, Show a) =>+>>>    QC.Gen a -> (CyclicVector a -> prop) -> QC.Property+>>> forCyclicVector genElem =+>>>    QC.forAllShrink+>>>       (flip genVector genElem . Shape.Cyclic =<< QC.choose (0,maxDim))+>>>       (map cyclicVectorFromListGen . QC.shrink . Vector.toList) -}  @@ -209,7 +236,7 @@   {- |-prop> \(ArbVector xs) (ArbVector ys) (ArbVector zs) -> Vector.toList ((xs +++ ys) +++ zs) == Vector.toList (xs +++ (ys +++ zs))+prop> forVector number_ $ \xs -> forVector number_ $ \ys -> forVector number_ $ \zs -> Vector.toList ((xs +++ ys) +++ zs) == Vector.toList (xs +++ (ys +++ zs)) -} (+++) ::    (Shape.C shx, Shape.C shy, Storable a) =>@@ -218,6 +245,49 @@   {- |+prop> Vector.autoFromList [] == (Vector.reverse $ Vector.autoFromList [] :: Vector Number_)+prop> Vector.autoFromList [1] == (Vector.reverse $ Vector.autoFromList [1] :: Vector Number_)+prop> Vector.autoFromList [3,2,1] == (Vector.reverse $ Vector.autoFromList [1,2,3] :: Vector Number_)++prop> forVector number_ $ \xs -> reverse (Vector.toList xs) == Vector.toList (Vector.reverse xs)+prop> forVector number_ $ \xs -> xs == Vector.reverse (Vector.reverse xs)+prop> forVector number_ $ \xs -> forVector number_ $ \ys -> Vector.reverse (xs <> ys) == Vector.reverse ys <> Vector.reverse xs+-}+reverse ::+   (Integral n, Class.Floating a) =>+   Vector (Shape.ZeroBased n) a -> Vector (Shape.ZeroBased n) a+reverse (Array sh x) =+   Array.unsafeCreateWithSize sh $ \n yPtr -> evalContT $ do+      nPtr <- Call.cint n+      xPtr <- ContT $ withForeignPtr x+      incxPtr <- Call.cint 1+      incyPtr <- Call.cint (-1)+      liftIO $ Blas.copy nPtr xPtr incxPtr yPtr incyPtr+++{- |+prop> cyclicVectorFromList [] == Vector.cyclicReverse (cyclicVectorFromList [])+prop> cyclicVectorFromList [1] == Vector.cyclicReverse (cyclicVectorFromList [1])+prop> cyclicVectorFromList [1,3,2] == Vector.cyclicReverse (cyclicVectorFromList [1,2,3])+prop> cyclicVectorFromList [1,6,5,4,3,2] == Vector.cyclicReverse (cyclicVectorFromList [1,2,3,4,5,6])++prop> forCyclicVector number_ $ \xs -> xs == Vector.cyclicReverse (Vector.cyclicReverse xs)+-}+cyclicReverse ::+   (Integral n, Class.Floating a) =>+   Vector (Shape.Cyclic n) a -> Vector (Shape.Cyclic n) a+cyclicReverse (Array sh x) =+   Array.unsafeCreateWithSize sh $ \n yPtr -> evalContT $ when (n>0) $ do+      nPtr <- Call.cint (n-1)+      xPtr <- ContT $ withForeignPtr x+      incxPtr <- Call.cint 1+      incyPtr <- Call.cint (-1)+      liftIO $ do+         poke yPtr =<< peek xPtr+         Blas.copy nPtr (advancePtr xPtr 1) incxPtr (advancePtr yPtr 1) incyPtr+++{- | prop> QC.forAll (QC.choose (1,100)) $ \dim -> QC.forAll (QC.choose (0, dim-1)) $ \i -> QC.forAll (QC.choose (0, dim-1)) $ \j -> Vector.unit (Shape.ZeroBased dim) i == (Vector.swap i j (Vector.unit (Shape.ZeroBased dim) j) :: Vector Number_) -} swap ::@@ -253,7 +323,7 @@       (Dot $ dotComplex 'T')  {- |-prop> \(ArbVector2 xs ys) -> Vector.inner xs ys == Vector.dot (Vector.conjugate xs) ys+prop> forVector2 number_ $ \xs ys -> Vector.inner xs ys == Vector.dot (Vector.conjugate xs) ys -} inner ::    (Shape.C sh, Eq sh, Class.Floating a) =>@@ -306,7 +376,7 @@       liftIO $ peek zPtr  {- |-prop> \(ArbVector xs) -> Vector.sum xs == List.sum (Vector.toList xs)+prop> forVector number_ $ \xs -> Vector.sum xs == List.sum (Vector.toList xs) -} sum :: (Shape.C sh, Class.Floating a) => Vector sh a -> a sum (Array sh x) = unsafePerformIO $@@ -366,7 +436,7 @@   {- |-prop> \(ArbVector xs) -> Vector.normInf xs == List.maximum (0 : List.map absolute (Vector.toList xs))+prop> forVector number_ $ \xs -> Vector.normInf xs == List.maximum (0 : List.map absolute (Vector.toList xs)) -} normInf :: (Shape.C sh, Class.Floating a) => Vector sh a -> RealOf a normInf arr = unsafePerformIO $@@ -393,9 +463,9 @@ >>> Vector.argAbsMaximum $ Vector.autoFromList [1:+2, 3:+4, 5, 6 :: Complex_] (3,6.0 :+ 0.0) -prop> \(ArbVector xs) -> isNonEmpty xs ==> let (xi,xm) = Vector.argAbsMaximum xs in xs!xi == xm-prop> \(ArbVector xs) -> isNonEmpty xs ==> let (_xi,xm) = Vector.argAbsMaximum xs in List.all (\x -> absolute x <= absolute xm) $ Vector.toList xs-prop> \(ArbVector xs, ArbVector ys) -> isNonEmpty xs && isNonEmpty ys ==> let (_xi,xm) = Vector.argAbsMaximum xs; (_yi,ym) = Vector.argAbsMaximum ys; (zi,zm) = Vector.argAbsMaximum (xs+++ys) in case zi of Left _ -> xm==zm && absolute xm >= absolute ym; Right _ -> ym==zm && absolute xm < absolute ym+prop> forVector number_ $ \xs -> isNonEmpty xs ==> let (xi,xm) = Vector.argAbsMaximum xs in xs!xi == xm+prop> forVector number_ $ \xs -> isNonEmpty xs ==> let (_xi,xm) = Vector.argAbsMaximum xs in List.all (\x -> absolute x <= absolute xm) $ Vector.toList xs+prop> forVector number_ $ \xs -> forVector number_ $ \ys -> isNonEmpty xs && isNonEmpty ys ==> let (_xi,xm) = Vector.argAbsMaximum xs; (_yi,ym) = Vector.argAbsMaximum ys; (zi,zm) = Vector.argAbsMaximum (xs+++ys) in case zi of Left _ -> xm==zm && absolute xm >= absolute ym; Right _ -> ym==zm && absolute xm < absolute ym -} argAbsMaximum ::    (Shape.InvIndexed sh, Class.Floating a) =>@@ -442,7 +512,7 @@ >>> Vector.argAbs1Maximum $ Vector.autoFromList [1:+2, 3:+4, 5, 6 :: Complex_] (1,3.0 :+ 4.0) -prop> \(ArbRealVector xs) -> isNonEmpty xs ==> Vector.argAbsMaximum xs == Vector.argAbs1Maximum xs+prop> forVector real_ $ \xs -> isNonEmpty xs ==> Vector.argAbsMaximum xs == Vector.argAbs1Maximum xs -} argAbs1Maximum ::    (Shape.InvIndexed sh, Class.Floating a) =>@@ -475,7 +545,7 @@   {- |-prop> QC.forAll (QC.choose (0,10)) $ \dim -> QC.forAll (genVector 3 dim) $ \xs -> approx 1e-2 (Vector.product xs) (List.product (Vector.toList (xs :: Vector Number_)))+prop> QC.forAll (QC.choose (0,10)) $ \dim -> QC.forAll (genVector (shapeInt dim) (genNumber 3)) $ \xs -> approx 1e-2 (Vector.product xs) (List.product (Vector.toList (xs :: Vector Number_))) -} product :: (Shape.C sh, Class.Floating a) => Vector sh a -> a product (Array sh x) = unsafePerformIO $@@ -485,9 +555,9 @@ {- | For restrictions see 'limits'. -prop> \(ArbRealVector xs) -> isNonEmpty xs ==> Vector.minimum xs == List.minimum (Vector.toList xs)-prop> \(ArbRealVector xs) -> isNonEmpty xs ==> Vector.maximum xs == List.maximum (Vector.toList xs)-prop> \(ArbRealVector xs) -> isNonEmpty xs ==> - Vector.maximum xs == Vector.minimum (Vector.negate xs)+prop> forVector real_ $ \xs -> isNonEmpty xs ==> Vector.minimum xs == List.minimum (Vector.toList xs)+prop> forVector real_ $ \xs -> isNonEmpty xs ==> Vector.maximum xs == List.maximum (Vector.toList xs)+prop> forVector real_ $ \xs -> isNonEmpty xs ==> - Vector.maximum xs == Vector.minimum (Vector.negate xs) -} minimum, maximum :: (Shape.C sh, Class.Real a) => Vector sh a -> a minimum = fst . limits@@ -503,7 +573,7 @@ argMaximum = snd . argLimits  {- |-prop> \(ArbRealVector xs) -> isNonEmpty xs ==> Vector.limits xs == Array.limits xs+prop> forVector real_ $ \xs -> isNonEmpty xs ==> Vector.limits xs == Array.limits xs  In contrast to 'Array.limits' this implementation is based on fast BLAS functions.@@ -533,8 +603,8 @@   {- |-prop> \(ArbVector xs) -> Vector.negate xs == Vector.scale minusOne xs-prop> \(ArbVector xs) -> Vector.scale 2 xs == xs |+| xs+prop> forVector number_ $ \xs -> Vector.negate xs == Vector.scale minusOne xs+prop> forVector number_ $ \xs -> Vector.scale 2 xs == xs |+| xs -} scale, _scale, (.*|) ::    (Shape.C sh, Class.Floating a) =>@@ -603,8 +673,8 @@   {- |-prop> \(ArbVector2 xs ys) -> xs |+| ys == ys |+| xs-prop> \(ArbVector2 xs ys) -> xs == xs |-| ys |+| ys+prop> forVector2 number_ $ \xs ys -> xs |+| ys == ys |+| xs+prop> forVector2 number_ $ \xs ys -> xs == xs |-| ys |+| ys -} add, sub, (|+|), (|-|) ::    (Shape.C sh, Eq sh, Class.Floating a) =>@@ -634,7 +704,7 @@   {- |-prop> \(ArbVector xs) -> xs == Vector.negate (Vector.negate xs)+prop> forVector number_ $ \xs -> xs == Vector.negate (Vector.negate xs) -} negate :: (Shape.C sh, Class.Floating a) => Vector sh a -> Vector sh a negate =@@ -647,7 +717,7 @@   {- |-prop> QC.forAll (genNumber maxElem) $ \d (ArbVector xs) -> xs == Vector.raise (-d) (Vector.raise d xs)+prop> QC.forAll (genNumber maxElem) $ \d -> forVector number_ $ \xs -> xs == Vector.raise (-d) (Vector.raise d xs) -} raise :: (Shape.C sh, Class.Floating a) => a -> Vector sh a -> Vector sh a raise c (Array shX x) =@@ -664,7 +734,7 @@   {- |-prop> \(ArbVector2 xs ys) -> Vector.mul xs ys == Vector.mul ys xs+prop> forVector2 number_ $ \xs ys -> Vector.mul xs ys == Vector.mul ys xs -} mul ::    (Shape.C sh, Eq sh, Class.Floating a) =>@@ -672,7 +742,7 @@ mul = mulConjugation NonConjugated  {- |-prop> \(ArbVector2 xs ys) -> Vector.mulConj xs ys == Vector.mul (Vector.conjugate xs) ys+prop> forVector2 number_ $ \xs ys -> Vector.mulConj xs ys == Vector.mul (Vector.conjugate xs) ys -} mulConj ::    (Shape.C sh, Eq sh, Class.Floating a) =>
src/Numeric/BLAS/Vector/Slice.hs view
@@ -88,6 +88,8 @@ >>> :set -XTypeOperators >>> :set -XGADTs >>> import qualified Test.Slice as TestSlice+>>> import Test.NumberModule.Numeric.BLAS.Vector+>>>    (maxElem, maxDim, genVector, number_, real_, complex_) >>> import Test.NumberModule.Type (Number_) >>> import Test.Generator (genNumber) >>> import Test.Utility (approx, approxReal)@@ -106,7 +108,6 @@ >>> import Data.Array.Comfort.Shape ((::+)((::+))) >>> import Data.Tuple.HT (mapPair) >>> import Data.Complex (Complex)->>> import Control.Monad (replicateM) >>> import Control.Applicative (liftA2) >>> >>> import qualified Test.QuickCheck as QC@@ -115,12 +116,6 @@ >>> type Real_ = RealOf Number_ >>> type Complex_ = Complex Real_ >>>->>> maxElem :: Integer->>> maxElem = 10->>>->>> maxDim :: Int->>> maxDim = 100->>> >>> maxDim1 :: Int >>> maxDim1 = 10 >>>@@ -142,24 +137,8 @@ >>> genShape :: QC.Gen Shape >>> genShape = genShapeDim =<< QC.choose (0,maxDim1) >>>->>> genVector ::->>>    (Shape.C sh, Class.Floating a) =>->>>    sh -> QC.Gen a -> QC.Gen (Vector.Vector sh a)->>> genVector shape genElem =->>>    fmap (Vector.fromList shape) $->>>    replicateM (Shape.size shape) genElem->>> >>> forAll_ :: (Show a) => QC.Gen a -> (a -> QC.Property) -> QC.Property >>> forAll_ = QC.forAll->>>->>> real_ :: QC.Gen Real_->>> real_ = genNumber maxElem->>>->>> complex_ :: QC.Gen Complex_->>> complex_ = genNumber maxElem->>>->>> number_ :: QC.Gen Number_->>> number_ = genNumber maxElem >>> >>> isNonEmpty :: Shape.C sh => VectorSlice.T shA sh a -> Bool >>> isNonEmpty xs = Shape.size (VectorSlice.shape xs) > 0
test/Test/ComplexDouble/Numeric/BLAS/Vector.hs view
@@ -1,14 +1,15 @@ -- Do not edit! Automatically created with doctest-extract from src/Numeric/BLAS/Vector.hs-{-# LINE 98 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 100 "src/Numeric/BLAS/Vector.hs" #-}  module Test.ComplexDouble.Numeric.BLAS.Vector where  import Test.DocTest.Base import qualified Test.DocTest.Driver as DocTest -{-# LINE 99 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 101 "src/Numeric/BLAS/Vector.hs" #-} import     Test.ComplexDouble.Type (Number_) import     Test.Generator (genNumber)+import     Test.Slice (shapeInt) import     Test.Utility (approx) import     qualified Numeric.BLAS.Vector as Vector import     qualified Numeric.Netlib.Class as Class@@ -19,6 +20,8 @@ import     Numeric.BLAS.Scalar (RealOf, absolute, minusOne) import     Data.Array.Comfort.Storable (Array, (!)) import     Data.Complex (Complex((:+)))+import     Data.Monoid ((<>))+import     Data.Tuple.HT (mapPair) import     Control.Applicative (liftA2) import     Control.Monad (replicateM) @@ -35,167 +38,244 @@ maxDim     :: Int maxDim     = 100 -genVector     :: (Class.Floating a) => Integer -> Int -> QC.Gen (Vector a)-genVector     maxE dim =-       fmap (Vector.fromList (Shape.ZeroBased dim)) $-       replicateM dim $ genNumber maxE+genVector     ::+       (Shape.C sh, Class.Floating a) =>+       sh -> QC.Gen a -> QC.Gen (Vector.Vector sh a)+genVector     shape genElem =+       fmap (Vector.fromList shape) $+       replicateM (Shape.size shape) genElem +real_     :: QC.Gen Real_+real_     = genNumber maxElem++complex_     :: QC.Gen Complex_+complex_     = genNumber maxElem++number_     :: QC.Gen Number_+number_     = genNumber maxElem+ isNonEmpty     :: Shape.C sh => Array sh a -> Bool isNonEmpty     xs = Shape.size (Array.shape xs) > 0 -newtype     ArbRealVector = ArbRealVector (Vector Real_)-       deriving (Show)+forVector     ::+       (QC.Testable prop, QC.Arbitrary a, Class.Floating a, Show a) =>+       QC.Gen a -> (Vector a -> prop) -> QC.Property+forVector     genElem =+       QC.forAllShrink+          (flip genVector genElem . shapeInt =<< QC.choose (0,maxDim))+          (map Vector.autoFromList . QC.shrink . Vector.toList) -instance     QC.Arbitrary ArbRealVector where-       arbitrary = do-          dim <- QC.choose (0,maxDim)-          fmap ArbRealVector $ genVector maxElem dim-       shrink (ArbRealVector xs) =-          map (ArbRealVector . Vector.autoFromList) .-          QC.shrink . Vector.toList $ xs+forVector2     ::+       (QC.Testable prop, QC.Arbitrary a, Class.Floating a, Show a) =>+       QC.Gen a -> (Vector a -> Vector a -> prop) -> QC.Property+forVector2     genElem prop =+       QC.forAllShrink+          (do shape <- fmap shapeInt $ QC.choose (0,maxDim)+              liftA2 (,) (genVector shape genElem) (genVector shape genElem))+          (map (mapPair (Vector.autoFromList, Vector.autoFromList) . unzip) .+           QC.shrink .+           uncurry zip . mapPair (Vector.toList, Vector.toList))+          (uncurry prop) -newtype     ArbVector = ArbVector (Vector Number_)-       deriving (Show)+type     CyclicVector = Vector.Vector (Shape.Cyclic Int) -instance     QC.Arbitrary ArbVector where-       arbitrary = do-          dim <- QC.choose (0,maxDim)-          fmap ArbVector $ genVector maxElem dim-       shrink (ArbVector xs) =-          map (ArbVector . Vector.autoFromList) .-          QC.shrink . Vector.toList $ xs+genCyclicVector     ::+       (Class.Floating a) =>+       Integer -> Int -> QC.Gen (CyclicVector a)+genCyclicVector     maxE dim =+       fmap (Vector.fromList (Shape.Cyclic dim)) $+       replicateM dim $ genNumber maxE -data     ArbVector2 =-          ArbVector2 (Vector Number_) (Vector Number_)-       deriving (Show)+cyclicVectorFromListGen     :: (Class.Floating a) => [a] -> CyclicVector a+cyclicVectorFromListGen     xs = Vector.fromList (Shape.Cyclic $ length xs) xs -instance     QC.Arbitrary ArbVector2 where-       arbitrary = do-          dim <- QC.choose (0,maxDim)-          liftA2 ArbVector2-             (genVector maxElem dim) (genVector maxElem dim)+cyclicVectorFromList     :: [Number_] -> CyclicVector Number_+cyclicVectorFromList     = cyclicVectorFromListGen +forCyclicVector     ::+       (QC.Testable prop, QC.Arbitrary a, Class.Floating a, Show a) =>+       QC.Gen a -> (CyclicVector a -> prop) -> QC.Property+forCyclicVector     genElem =+       QC.forAllShrink+          (flip genVector genElem . Shape.Cyclic =<< QC.choose (0,maxDim))+          (map cyclicVectorFromListGen . QC.shrink . Vector.toList)+ test :: DocTest.T () test = do- DocTest.printPrefix "Numeric.BLAS.Vector:212: "-{-# LINE 212 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector:239: "+{-# LINE 239 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 212 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs) (ArbVector ys) (ArbVector zs) -> Vector.toList ((xs +++ ys) +++ zs) == Vector.toList (xs +++ (ys +++ zs)))- DocTest.printPrefix "Numeric.BLAS.Vector:221: "-{-# LINE 221 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 239 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> forVector number_ $ \ys -> forVector number_ $ \zs -> Vector.toList ((xs +++ ys) +++ zs) == Vector.toList (xs +++ (ys +++ zs)))+ DocTest.printPrefix "Numeric.BLAS.Vector:248: "+{-# LINE 248 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 221 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 248 "src/Numeric/BLAS/Vector.hs" #-}+     (Vector.autoFromList [] == (Vector.reverse $ Vector.autoFromList [] :: Vector Number_))+ DocTest.printPrefix "Numeric.BLAS.Vector:249: "+{-# LINE 249 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 249 "src/Numeric/BLAS/Vector.hs" #-}+     (Vector.autoFromList [1] == (Vector.reverse $ Vector.autoFromList [1] :: Vector Number_))+ DocTest.printPrefix "Numeric.BLAS.Vector:250: "+{-# LINE 250 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 250 "src/Numeric/BLAS/Vector.hs" #-}+     (Vector.autoFromList [3,2,1] == (Vector.reverse $ Vector.autoFromList [1,2,3] :: Vector Number_))+ DocTest.printPrefix "Numeric.BLAS.Vector:252: "+{-# LINE 252 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 252 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> reverse (Vector.toList xs) == Vector.toList (Vector.reverse xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:253: "+{-# LINE 253 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 253 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> xs == Vector.reverse (Vector.reverse xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:254: "+{-# LINE 254 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 254 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> forVector number_ $ \ys -> Vector.reverse (xs <> ys) == Vector.reverse ys <> Vector.reverse xs)+ DocTest.printPrefix "Numeric.BLAS.Vector:269: "+{-# LINE 269 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 269 "src/Numeric/BLAS/Vector.hs" #-}+     (cyclicVectorFromList [] == Vector.cyclicReverse (cyclicVectorFromList []))+ DocTest.printPrefix "Numeric.BLAS.Vector:270: "+{-# LINE 270 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 270 "src/Numeric/BLAS/Vector.hs" #-}+     (cyclicVectorFromList [1] == Vector.cyclicReverse (cyclicVectorFromList [1]))+ DocTest.printPrefix "Numeric.BLAS.Vector:271: "+{-# LINE 271 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 271 "src/Numeric/BLAS/Vector.hs" #-}+     (cyclicVectorFromList [1,3,2] == Vector.cyclicReverse (cyclicVectorFromList [1,2,3]))+ DocTest.printPrefix "Numeric.BLAS.Vector:272: "+{-# LINE 272 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 272 "src/Numeric/BLAS/Vector.hs" #-}+     (cyclicVectorFromList [1,6,5,4,3,2] == Vector.cyclicReverse (cyclicVectorFromList [1,2,3,4,5,6]))+ DocTest.printPrefix "Numeric.BLAS.Vector:274: "+{-# LINE 274 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 274 "src/Numeric/BLAS/Vector.hs" #-}+     (forCyclicVector number_ $ \xs -> xs == Vector.cyclicReverse (Vector.cyclicReverse xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:291: "+{-# LINE 291 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 291 "src/Numeric/BLAS/Vector.hs" #-}      (QC.forAll (QC.choose (1,100)) $ \dim -> QC.forAll (QC.choose (0, dim-1)) $ \i -> QC.forAll (QC.choose (0, dim-1)) $ \j -> Vector.unit (Shape.ZeroBased dim) i == (Vector.swap i j (Vector.unit (Shape.ZeroBased dim) j) :: Vector Number_))- DocTest.printPrefix "Numeric.BLAS.Vector:256: "-{-# LINE 256 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector:326: "+{-# LINE 326 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 256 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector2 xs ys) -> Vector.inner xs ys == Vector.dot (Vector.conjugate xs) ys)- DocTest.printPrefix "Numeric.BLAS.Vector:309: "-{-# LINE 309 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 326 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector2 number_ $ \xs ys -> Vector.inner xs ys == Vector.dot (Vector.conjugate xs) ys)+ DocTest.printPrefix "Numeric.BLAS.Vector:379: "+{-# LINE 379 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 309 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs) -> Vector.sum xs == List.sum (Vector.toList xs))- DocTest.printPrefix "Numeric.BLAS.Vector:369: "-{-# LINE 369 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 379 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> Vector.sum xs == List.sum (Vector.toList xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:439: "+{-# LINE 439 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 369 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs) -> Vector.normInf xs == List.maximum (0 : List.map absolute (Vector.toList xs)))- DocTest.printPrefix "Numeric.BLAS.Vector:396: "-{-# LINE 396 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 439 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> Vector.normInf xs == List.maximum (0 : List.map absolute (Vector.toList xs)))+ DocTest.printPrefix "Numeric.BLAS.Vector:466: "+{-# LINE 466 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 396 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs) -> isNonEmpty xs ==> let (xi,xm) = Vector.argAbsMaximum xs in xs!xi == xm)- DocTest.printPrefix "Numeric.BLAS.Vector:397: "-{-# LINE 397 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 466 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> isNonEmpty xs ==> let (xi,xm) = Vector.argAbsMaximum xs in xs!xi == xm)+ DocTest.printPrefix "Numeric.BLAS.Vector:467: "+{-# LINE 467 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 397 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs) -> isNonEmpty xs ==> let (_xi,xm) = Vector.argAbsMaximum xs in List.all (\x -> absolute x <= absolute xm) $ Vector.toList xs)- DocTest.printPrefix "Numeric.BLAS.Vector:398: "-{-# LINE 398 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 467 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> isNonEmpty xs ==> let (_xi,xm) = Vector.argAbsMaximum xs in List.all (\x -> absolute x <= absolute xm) $ Vector.toList xs)+ DocTest.printPrefix "Numeric.BLAS.Vector:468: "+{-# LINE 468 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 398 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs, ArbVector ys) -> isNonEmpty xs && isNonEmpty ys ==> let (_xi,xm) = Vector.argAbsMaximum xs; (_yi,ym) = Vector.argAbsMaximum ys; (zi,zm) = Vector.argAbsMaximum (xs+++ys) in case zi of Left _ -> xm==zm && absolute xm >= absolute ym; Right _ -> ym==zm && absolute xm < absolute ym)- DocTest.printPrefix "Numeric.BLAS.Vector:393: "-{-# LINE 393 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 468 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> forVector number_ $ \ys -> isNonEmpty xs && isNonEmpty ys ==> let (_xi,xm) = Vector.argAbsMaximum xs; (_yi,ym) = Vector.argAbsMaximum ys; (zi,zm) = Vector.argAbsMaximum (xs+++ys) in case zi of Left _ -> xm==zm && absolute xm >= absolute ym; Right _ -> ym==zm && absolute xm < absolute ym)+ DocTest.printPrefix "Numeric.BLAS.Vector:463: "+{-# LINE 463 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.example-{-# LINE 393 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 463 "src/Numeric/BLAS/Vector.hs" #-}    (Vector.argAbsMaximum $ Vector.autoFromList [1:+2, 3:+4, 5, 6 :: Complex_])   [ExpectedLine [LineChunk "(3,6.0 :+ 0.0)"]]- DocTest.printPrefix "Numeric.BLAS.Vector:445: "-{-# LINE 445 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector:515: "+{-# LINE 515 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 445 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbRealVector xs) -> isNonEmpty xs ==> Vector.argAbsMaximum xs == Vector.argAbs1Maximum xs)- DocTest.printPrefix "Numeric.BLAS.Vector:442: "-{-# LINE 442 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 515 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector real_ $ \xs -> isNonEmpty xs ==> Vector.argAbsMaximum xs == Vector.argAbs1Maximum xs)+ DocTest.printPrefix "Numeric.BLAS.Vector:512: "+{-# LINE 512 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.example-{-# LINE 442 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 512 "src/Numeric/BLAS/Vector.hs" #-}    (Vector.argAbs1Maximum $ Vector.autoFromList [1:+2, 3:+4, 5, 6 :: Complex_])   [ExpectedLine [LineChunk "(1,3.0 :+ 4.0)"]]- DocTest.printPrefix "Numeric.BLAS.Vector:478: "-{-# LINE 478 "src/Numeric/BLAS/Vector.hs" #-}- DocTest.property-{-# LINE 478 "src/Numeric/BLAS/Vector.hs" #-}-     (QC.forAll (QC.choose (0,10)) $ \dim -> QC.forAll (genVector 3 dim) $ \xs -> approx 1e-2 (Vector.product xs) (List.product (Vector.toList (xs :: Vector Number_))))- DocTest.printPrefix "Numeric.BLAS.Vector:488: "-{-# LINE 488 "src/Numeric/BLAS/Vector.hs" #-}- DocTest.property-{-# LINE 488 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbRealVector xs) -> isNonEmpty xs ==> Vector.minimum xs == List.minimum (Vector.toList xs))- DocTest.printPrefix "Numeric.BLAS.Vector:489: "-{-# LINE 489 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector:548: "+{-# LINE 548 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 489 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbRealVector xs) -> isNonEmpty xs ==> Vector.maximum xs == List.maximum (Vector.toList xs))- DocTest.printPrefix "Numeric.BLAS.Vector:490: "-{-# LINE 490 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 548 "src/Numeric/BLAS/Vector.hs" #-}+     (QC.forAll (QC.choose (0,10)) $ \dim -> QC.forAll (genVector (shapeInt dim) (genNumber 3)) $ \xs -> approx 1e-2 (Vector.product xs) (List.product (Vector.toList (xs :: Vector Number_))))+ DocTest.printPrefix "Numeric.BLAS.Vector:558: "+{-# LINE 558 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 490 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbRealVector xs) -> isNonEmpty xs ==> - Vector.maximum xs == Vector.minimum (Vector.negate xs))- DocTest.printPrefix "Numeric.BLAS.Vector:506: "-{-# LINE 506 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 558 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector real_ $ \xs -> isNonEmpty xs ==> Vector.minimum xs == List.minimum (Vector.toList xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:559: "+{-# LINE 559 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 506 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbRealVector xs) -> isNonEmpty xs ==> Vector.limits xs == Array.limits xs)- DocTest.printPrefix "Numeric.BLAS.Vector:536: "-{-# LINE 536 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 559 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector real_ $ \xs -> isNonEmpty xs ==> Vector.maximum xs == List.maximum (Vector.toList xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:560: "+{-# LINE 560 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 536 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs) -> Vector.negate xs == Vector.scale minusOne xs)- DocTest.printPrefix "Numeric.BLAS.Vector:537: "-{-# LINE 537 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 560 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector real_ $ \xs -> isNonEmpty xs ==> - Vector.maximum xs == Vector.minimum (Vector.negate xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:576: "+{-# LINE 576 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 537 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs) -> Vector.scale 2 xs == xs |+| xs)+{-# LINE 576 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector real_ $ \xs -> isNonEmpty xs ==> Vector.limits xs == Array.limits xs)  DocTest.printPrefix "Numeric.BLAS.Vector:606: " {-# LINE 606 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property {-# LINE 606 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector2 xs ys) -> xs |+| ys == ys |+| xs)+     (forVector number_ $ \xs -> Vector.negate xs == Vector.scale minusOne xs)  DocTest.printPrefix "Numeric.BLAS.Vector:607: " {-# LINE 607 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property {-# LINE 607 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector2 xs ys) -> xs == xs |-| ys |+| ys)- DocTest.printPrefix "Numeric.BLAS.Vector:637: "-{-# LINE 637 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> Vector.scale 2 xs == xs |+| xs)+ DocTest.printPrefix "Numeric.BLAS.Vector:676: "+{-# LINE 676 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 637 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs) -> xs == Vector.negate (Vector.negate xs))- DocTest.printPrefix "Numeric.BLAS.Vector:650: "-{-# LINE 650 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 676 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector2 number_ $ \xs ys -> xs |+| ys == ys |+| xs)+ DocTest.printPrefix "Numeric.BLAS.Vector:677: "+{-# LINE 677 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 650 "src/Numeric/BLAS/Vector.hs" #-}-     (QC.forAll (genNumber maxElem) $ \d (ArbVector xs) -> xs == Vector.raise (-d) (Vector.raise d xs))- DocTest.printPrefix "Numeric.BLAS.Vector:667: "-{-# LINE 667 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 677 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector2 number_ $ \xs ys -> xs == xs |-| ys |+| ys)+ DocTest.printPrefix "Numeric.BLAS.Vector:707: "+{-# LINE 707 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 667 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector2 xs ys) -> Vector.mul xs ys == Vector.mul ys xs)- DocTest.printPrefix "Numeric.BLAS.Vector:675: "-{-# LINE 675 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 707 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> xs == Vector.negate (Vector.negate xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:720: "+{-# LINE 720 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 675 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector2 xs ys) -> Vector.mulConj xs ys == Vector.mul (Vector.conjugate xs) ys)+{-# LINE 720 "src/Numeric/BLAS/Vector.hs" #-}+     (QC.forAll (genNumber maxElem) $ \d -> forVector number_ $ \xs -> xs == Vector.raise (-d) (Vector.raise d xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:737: "+{-# LINE 737 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 737 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector2 number_ $ \xs ys -> Vector.mul xs ys == Vector.mul ys xs)+ DocTest.printPrefix "Numeric.BLAS.Vector:745: "+{-# LINE 745 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 745 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector2 number_ $ \xs ys -> Vector.mulConj xs ys == Vector.mul (Vector.conjugate xs) ys)
test/Test/ComplexDouble/Numeric/BLAS/Vector/Slice.hs view
@@ -9,6 +9,8 @@  {-# LINE 90 "src/Numeric/BLAS/Vector/Slice.hs" #-} import     qualified Test.Slice as TestSlice+import     Test.ComplexDouble.Numeric.BLAS.Vector+       (maxElem, maxDim, genVector, number_, real_, complex_) import     Test.ComplexDouble.Type (Number_) import     Test.Generator (genNumber) import     Test.Utility (approx, approxReal)@@ -27,7 +29,6 @@ import     Data.Array.Comfort.Shape ((::+)((::+))) import     Data.Tuple.HT (mapPair) import     Data.Complex (Complex)-import     Control.Monad (replicateM) import     Control.Applicative (liftA2)  import     qualified Test.QuickCheck as QC@@ -36,12 +37,6 @@ type     Real_ = RealOf Number_ type     Complex_ = Complex Real_ -maxElem     :: Integer-maxElem     = 10--maxDim     :: Int-maxDim     = 100- maxDim1     :: Int maxDim1     = 10 @@ -63,25 +58,9 @@ genShape     :: QC.Gen Shape genShape     = genShapeDim =<< QC.choose (0,maxDim1) -genVector     ::-       (Shape.C sh, Class.Floating a) =>-       sh -> QC.Gen a -> QC.Gen (Vector.Vector sh a)-genVector     shape genElem =-       fmap (Vector.fromList shape) $-       replicateM (Shape.size shape) genElem- forAll_     :: (Show a) => QC.Gen a -> (a -> QC.Property) -> QC.Property forAll_     = QC.forAll -real_     :: QC.Gen Real_-real_     = genNumber maxElem--complex_     :: QC.Gen Complex_-complex_     = genNumber maxElem--number_     :: QC.Gen Number_-number_     = genNumber maxElem- isNonEmpty     :: Shape.C sh => VectorSlice.T shA sh a -> Bool isNonEmpty     xs = Shape.size (VectorSlice.shape xs) > 0 @@ -150,123 +129,123 @@  test :: DocTest.T () test = do- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:301: "-{-# LINE 301 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:280: "+{-# LINE 280 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 301 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 280 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (QC.forAll genShape $ \shape@(_::+(_rows,columns)::+_) -> QC.forAll (QC.elements (Shape.indices columns)) $ \c -> QC.forAll (genVector shape number_) $ \xs -> VectorSlice.extract (Slice.column c . Slice.left . Slice.right) xs == Matrix.takeColumn c (Vector.takeLeft (Vector.takeRight (xs :: Vector Number_))))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:303: "-{-# LINE 303 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:282: "+{-# LINE 282 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 303 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 282 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forAll_ (TestSlice.genShapeSelect 4 100) $ \(TestSlice.ShapeSelect sh select) -> QC.forAll (genVector sh number_) $ \xs -> case TestSlice.instantiate sh select of TestSlice.Extraction slice cut -> VectorSlice.extract slice xs == cut xs)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:335: "-{-# LINE 335 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:314: "+{-# LINE 314 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 335 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 314 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced2 number_ $ \xs ys -> VectorSlice.inner xs ys == Vector.dot (VectorSlice.conjugate xs) (VectorSlice.toVector ys))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:336: "-{-# LINE 336 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:315: "+{-# LINE 315 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 336 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 315 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> VectorSlice.inner xs xs == Scalar.fromReal (VectorSlice.norm2Squared xs))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:419: "-{-# LINE 419 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:398: "+{-# LINE 398 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 419 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 398 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> VectorSlice.sum xs == List.sum (listFromSlice xs))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:492: "-{-# LINE 492 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:471: "+{-# LINE 471 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 492 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 471 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> VectorSlice.normInf xs == List.maximum (0 : List.map absolute (listFromSlice xs)))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:503: "-{-# LINE 503 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:482: "+{-# LINE 482 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 503 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 482 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> VectorSlice.normInf1 xs == List.maximum (0 : List.map Scalar.norm1 (listFromSlice xs)))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:518: "-{-# LINE 518 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:497: "+{-# LINE 497 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 518 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 497 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> isNonEmpty xs ==> let (xi,xm) = VectorSlice.argAbsMaximum xs in VectorSlice.access xs xi == xm)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:519: "-{-# LINE 519 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:498: "+{-# LINE 498 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 519 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 498 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> isNonEmpty xs ==> let (_xi,xm) = VectorSlice.argAbsMaximum xs in List.all (\x -> absolute x <= absolute xm) $ listFromSlice xs)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:520: "-{-# LINE 520 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:499: "+{-# LINE 499 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 520 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 499 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> forSliced number_ $ \ys -> isNonEmpty xs && isNonEmpty ys ==> let (_xi,xm) = VectorSlice.argAbsMaximum xs; (_yi,ym) = VectorSlice.argAbsMaximum ys; (zi,zm) = Vector.argAbsMaximum (VectorSlice.toVector xs +++ VectorSlice.toVector ys) in case zi of Left _ -> xm==zm && absolute xm >= absolute ym; Right _ -> ym==zm && absolute xm < absolute ym)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:567: "-{-# LINE 567 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:546: "+{-# LINE 546 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 567 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 546 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced real_ $ \xs -> isNonEmpty xs ==> VectorSlice.argAbsMaximum xs == VectorSlice.argAbs1Maximum xs)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:592: "-{-# LINE 592 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:571: "+{-# LINE 571 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 592 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 571 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (QC.forAll genShape $ \sh@(_::+(_rows,columns)::+_) -> QC.forAll (QC.elements (Shape.indices columns)) $ \c -> QC.forAll (genVector sh $ genNumber 3) $ \xt -> let xs = takeColumn c xt in approx 1e-2 (VectorSlice.product xs) (List.product (listFromSlice (xs :: Sliced Number_))))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:603: "-{-# LINE 603 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:582: "+{-# LINE 582 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 603 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 582 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced real_ $ \xs -> isNonEmpty xs ==> VectorSlice.minimum xs == List.minimum (listFromSlice xs))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:604: "-{-# LINE 604 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:583: "+{-# LINE 583 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 604 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 583 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced real_ $ \xs -> isNonEmpty xs ==> VectorSlice.maximum xs == List.maximum (listFromSlice xs))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:620: "-{-# LINE 620 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:599: "+{-# LINE 599 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 620 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 599 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced real_ $ \xs -> isNonEmpty xs ==> VectorSlice.limits xs == Array.limits (VectorSlice.toVector xs))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:650: "-{-# LINE 650 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:629: "+{-# LINE 629 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 650 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 629 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> VectorSlice.negate xs == VectorSlice.scale minusOne xs)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:651: "-{-# LINE 651 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:630: "+{-# LINE 630 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 651 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 630 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> VectorSlice.scale 2 xs == VectorSlice.add xs xs)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:710: "-{-# LINE 710 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:689: "+{-# LINE 689 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 710 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 689 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced2 number_ $ \xs ys -> VectorSlice.add xs ys == VectorSlice.add ys xs)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:711: "-{-# LINE 711 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:690: "+{-# LINE 690 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 711 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 690 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced2 number_ $ \xs ys -> VectorSlice.toVector xs == VectorSlice.sub xs ys |+| VectorSlice.toVector ys)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:736: "-{-# LINE 736 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:715: "+{-# LINE 715 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 736 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 715 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> VectorSlice.toVector xs == Vector.negate (VectorSlice.negate xs))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:749: "-{-# LINE 749 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:728: "+{-# LINE 728 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 749 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 728 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (QC.forAll (genNumber maxElem) $ \d -> forSliced number_ $ \xs -> VectorSlice.toVector xs == Vector.raise (-d) (VectorSlice.raise d xs))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:766: "-{-# LINE 766 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:745: "+{-# LINE 745 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 766 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 745 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced2 number_ $ \xs ys -> VectorSlice.mul xs ys == VectorSlice.mul ys xs)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:774: "-{-# LINE 774 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:753: "+{-# LINE 753 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 774 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 753 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced2 number_ $ \xs ys -> VectorSlice.mulConj xs ys == Vector.mul (VectorSlice.conjugate xs) (VectorSlice.toVector ys))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:898: "-{-# LINE 898 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:877: "+{-# LINE 877 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 898 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 877 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced complex_ $ \xs -> approxReal 1e-2 (VectorSlice.norm2 xs) $ let (xrs,xis) = VectorSlice.unzipComplex xs in sqrt $ VectorSlice.norm2Squared xrs + VectorSlice.norm2Squared xis)
test/Test/ComplexFloat/Numeric/BLAS/Vector.hs view
@@ -1,14 +1,15 @@ -- Do not edit! Automatically created with doctest-extract from src/Numeric/BLAS/Vector.hs-{-# LINE 98 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 100 "src/Numeric/BLAS/Vector.hs" #-}  module Test.ComplexFloat.Numeric.BLAS.Vector where  import Test.DocTest.Base import qualified Test.DocTest.Driver as DocTest -{-# LINE 99 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 101 "src/Numeric/BLAS/Vector.hs" #-} import     Test.ComplexFloat.Type (Number_) import     Test.Generator (genNumber)+import     Test.Slice (shapeInt) import     Test.Utility (approx) import     qualified Numeric.BLAS.Vector as Vector import     qualified Numeric.Netlib.Class as Class@@ -19,6 +20,8 @@ import     Numeric.BLAS.Scalar (RealOf, absolute, minusOne) import     Data.Array.Comfort.Storable (Array, (!)) import     Data.Complex (Complex((:+)))+import     Data.Monoid ((<>))+import     Data.Tuple.HT (mapPair) import     Control.Applicative (liftA2) import     Control.Monad (replicateM) @@ -35,167 +38,244 @@ maxDim     :: Int maxDim     = 100 -genVector     :: (Class.Floating a) => Integer -> Int -> QC.Gen (Vector a)-genVector     maxE dim =-       fmap (Vector.fromList (Shape.ZeroBased dim)) $-       replicateM dim $ genNumber maxE+genVector     ::+       (Shape.C sh, Class.Floating a) =>+       sh -> QC.Gen a -> QC.Gen (Vector.Vector sh a)+genVector     shape genElem =+       fmap (Vector.fromList shape) $+       replicateM (Shape.size shape) genElem +real_     :: QC.Gen Real_+real_     = genNumber maxElem++complex_     :: QC.Gen Complex_+complex_     = genNumber maxElem++number_     :: QC.Gen Number_+number_     = genNumber maxElem+ isNonEmpty     :: Shape.C sh => Array sh a -> Bool isNonEmpty     xs = Shape.size (Array.shape xs) > 0 -newtype     ArbRealVector = ArbRealVector (Vector Real_)-       deriving (Show)+forVector     ::+       (QC.Testable prop, QC.Arbitrary a, Class.Floating a, Show a) =>+       QC.Gen a -> (Vector a -> prop) -> QC.Property+forVector     genElem =+       QC.forAllShrink+          (flip genVector genElem . shapeInt =<< QC.choose (0,maxDim))+          (map Vector.autoFromList . QC.shrink . Vector.toList) -instance     QC.Arbitrary ArbRealVector where-       arbitrary = do-          dim <- QC.choose (0,maxDim)-          fmap ArbRealVector $ genVector maxElem dim-       shrink (ArbRealVector xs) =-          map (ArbRealVector . Vector.autoFromList) .-          QC.shrink . Vector.toList $ xs+forVector2     ::+       (QC.Testable prop, QC.Arbitrary a, Class.Floating a, Show a) =>+       QC.Gen a -> (Vector a -> Vector a -> prop) -> QC.Property+forVector2     genElem prop =+       QC.forAllShrink+          (do shape <- fmap shapeInt $ QC.choose (0,maxDim)+              liftA2 (,) (genVector shape genElem) (genVector shape genElem))+          (map (mapPair (Vector.autoFromList, Vector.autoFromList) . unzip) .+           QC.shrink .+           uncurry zip . mapPair (Vector.toList, Vector.toList))+          (uncurry prop) -newtype     ArbVector = ArbVector (Vector Number_)-       deriving (Show)+type     CyclicVector = Vector.Vector (Shape.Cyclic Int) -instance     QC.Arbitrary ArbVector where-       arbitrary = do-          dim <- QC.choose (0,maxDim)-          fmap ArbVector $ genVector maxElem dim-       shrink (ArbVector xs) =-          map (ArbVector . Vector.autoFromList) .-          QC.shrink . Vector.toList $ xs+genCyclicVector     ::+       (Class.Floating a) =>+       Integer -> Int -> QC.Gen (CyclicVector a)+genCyclicVector     maxE dim =+       fmap (Vector.fromList (Shape.Cyclic dim)) $+       replicateM dim $ genNumber maxE -data     ArbVector2 =-          ArbVector2 (Vector Number_) (Vector Number_)-       deriving (Show)+cyclicVectorFromListGen     :: (Class.Floating a) => [a] -> CyclicVector a+cyclicVectorFromListGen     xs = Vector.fromList (Shape.Cyclic $ length xs) xs -instance     QC.Arbitrary ArbVector2 where-       arbitrary = do-          dim <- QC.choose (0,maxDim)-          liftA2 ArbVector2-             (genVector maxElem dim) (genVector maxElem dim)+cyclicVectorFromList     :: [Number_] -> CyclicVector Number_+cyclicVectorFromList     = cyclicVectorFromListGen +forCyclicVector     ::+       (QC.Testable prop, QC.Arbitrary a, Class.Floating a, Show a) =>+       QC.Gen a -> (CyclicVector a -> prop) -> QC.Property+forCyclicVector     genElem =+       QC.forAllShrink+          (flip genVector genElem . Shape.Cyclic =<< QC.choose (0,maxDim))+          (map cyclicVectorFromListGen . QC.shrink . Vector.toList)+ test :: DocTest.T () test = do- DocTest.printPrefix "Numeric.BLAS.Vector:212: "-{-# LINE 212 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector:239: "+{-# LINE 239 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 212 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs) (ArbVector ys) (ArbVector zs) -> Vector.toList ((xs +++ ys) +++ zs) == Vector.toList (xs +++ (ys +++ zs)))- DocTest.printPrefix "Numeric.BLAS.Vector:221: "-{-# LINE 221 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 239 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> forVector number_ $ \ys -> forVector number_ $ \zs -> Vector.toList ((xs +++ ys) +++ zs) == Vector.toList (xs +++ (ys +++ zs)))+ DocTest.printPrefix "Numeric.BLAS.Vector:248: "+{-# LINE 248 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 221 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 248 "src/Numeric/BLAS/Vector.hs" #-}+     (Vector.autoFromList [] == (Vector.reverse $ Vector.autoFromList [] :: Vector Number_))+ DocTest.printPrefix "Numeric.BLAS.Vector:249: "+{-# LINE 249 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 249 "src/Numeric/BLAS/Vector.hs" #-}+     (Vector.autoFromList [1] == (Vector.reverse $ Vector.autoFromList [1] :: Vector Number_))+ DocTest.printPrefix "Numeric.BLAS.Vector:250: "+{-# LINE 250 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 250 "src/Numeric/BLAS/Vector.hs" #-}+     (Vector.autoFromList [3,2,1] == (Vector.reverse $ Vector.autoFromList [1,2,3] :: Vector Number_))+ DocTest.printPrefix "Numeric.BLAS.Vector:252: "+{-# LINE 252 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 252 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> reverse (Vector.toList xs) == Vector.toList (Vector.reverse xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:253: "+{-# LINE 253 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 253 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> xs == Vector.reverse (Vector.reverse xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:254: "+{-# LINE 254 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 254 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> forVector number_ $ \ys -> Vector.reverse (xs <> ys) == Vector.reverse ys <> Vector.reverse xs)+ DocTest.printPrefix "Numeric.BLAS.Vector:269: "+{-# LINE 269 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 269 "src/Numeric/BLAS/Vector.hs" #-}+     (cyclicVectorFromList [] == Vector.cyclicReverse (cyclicVectorFromList []))+ DocTest.printPrefix "Numeric.BLAS.Vector:270: "+{-# LINE 270 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 270 "src/Numeric/BLAS/Vector.hs" #-}+     (cyclicVectorFromList [1] == Vector.cyclicReverse (cyclicVectorFromList [1]))+ DocTest.printPrefix "Numeric.BLAS.Vector:271: "+{-# LINE 271 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 271 "src/Numeric/BLAS/Vector.hs" #-}+     (cyclicVectorFromList [1,3,2] == Vector.cyclicReverse (cyclicVectorFromList [1,2,3]))+ DocTest.printPrefix "Numeric.BLAS.Vector:272: "+{-# LINE 272 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 272 "src/Numeric/BLAS/Vector.hs" #-}+     (cyclicVectorFromList [1,6,5,4,3,2] == Vector.cyclicReverse (cyclicVectorFromList [1,2,3,4,5,6]))+ DocTest.printPrefix "Numeric.BLAS.Vector:274: "+{-# LINE 274 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 274 "src/Numeric/BLAS/Vector.hs" #-}+     (forCyclicVector number_ $ \xs -> xs == Vector.cyclicReverse (Vector.cyclicReverse xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:291: "+{-# LINE 291 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 291 "src/Numeric/BLAS/Vector.hs" #-}      (QC.forAll (QC.choose (1,100)) $ \dim -> QC.forAll (QC.choose (0, dim-1)) $ \i -> QC.forAll (QC.choose (0, dim-1)) $ \j -> Vector.unit (Shape.ZeroBased dim) i == (Vector.swap i j (Vector.unit (Shape.ZeroBased dim) j) :: Vector Number_))- DocTest.printPrefix "Numeric.BLAS.Vector:256: "-{-# LINE 256 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector:326: "+{-# LINE 326 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 256 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector2 xs ys) -> Vector.inner xs ys == Vector.dot (Vector.conjugate xs) ys)- DocTest.printPrefix "Numeric.BLAS.Vector:309: "-{-# LINE 309 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 326 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector2 number_ $ \xs ys -> Vector.inner xs ys == Vector.dot (Vector.conjugate xs) ys)+ DocTest.printPrefix "Numeric.BLAS.Vector:379: "+{-# LINE 379 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 309 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs) -> Vector.sum xs == List.sum (Vector.toList xs))- DocTest.printPrefix "Numeric.BLAS.Vector:369: "-{-# LINE 369 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 379 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> Vector.sum xs == List.sum (Vector.toList xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:439: "+{-# LINE 439 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 369 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs) -> Vector.normInf xs == List.maximum (0 : List.map absolute (Vector.toList xs)))- DocTest.printPrefix "Numeric.BLAS.Vector:396: "-{-# LINE 396 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 439 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> Vector.normInf xs == List.maximum (0 : List.map absolute (Vector.toList xs)))+ DocTest.printPrefix "Numeric.BLAS.Vector:466: "+{-# LINE 466 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 396 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs) -> isNonEmpty xs ==> let (xi,xm) = Vector.argAbsMaximum xs in xs!xi == xm)- DocTest.printPrefix "Numeric.BLAS.Vector:397: "-{-# LINE 397 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 466 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> isNonEmpty xs ==> let (xi,xm) = Vector.argAbsMaximum xs in xs!xi == xm)+ DocTest.printPrefix "Numeric.BLAS.Vector:467: "+{-# LINE 467 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 397 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs) -> isNonEmpty xs ==> let (_xi,xm) = Vector.argAbsMaximum xs in List.all (\x -> absolute x <= absolute xm) $ Vector.toList xs)- DocTest.printPrefix "Numeric.BLAS.Vector:398: "-{-# LINE 398 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 467 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> isNonEmpty xs ==> let (_xi,xm) = Vector.argAbsMaximum xs in List.all (\x -> absolute x <= absolute xm) $ Vector.toList xs)+ DocTest.printPrefix "Numeric.BLAS.Vector:468: "+{-# LINE 468 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 398 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs, ArbVector ys) -> isNonEmpty xs && isNonEmpty ys ==> let (_xi,xm) = Vector.argAbsMaximum xs; (_yi,ym) = Vector.argAbsMaximum ys; (zi,zm) = Vector.argAbsMaximum (xs+++ys) in case zi of Left _ -> xm==zm && absolute xm >= absolute ym; Right _ -> ym==zm && absolute xm < absolute ym)- DocTest.printPrefix "Numeric.BLAS.Vector:393: "-{-# LINE 393 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 468 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> forVector number_ $ \ys -> isNonEmpty xs && isNonEmpty ys ==> let (_xi,xm) = Vector.argAbsMaximum xs; (_yi,ym) = Vector.argAbsMaximum ys; (zi,zm) = Vector.argAbsMaximum (xs+++ys) in case zi of Left _ -> xm==zm && absolute xm >= absolute ym; Right _ -> ym==zm && absolute xm < absolute ym)+ DocTest.printPrefix "Numeric.BLAS.Vector:463: "+{-# LINE 463 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.example-{-# LINE 393 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 463 "src/Numeric/BLAS/Vector.hs" #-}    (Vector.argAbsMaximum $ Vector.autoFromList [1:+2, 3:+4, 5, 6 :: Complex_])   [ExpectedLine [LineChunk "(3,6.0 :+ 0.0)"]]- DocTest.printPrefix "Numeric.BLAS.Vector:445: "-{-# LINE 445 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector:515: "+{-# LINE 515 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 445 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbRealVector xs) -> isNonEmpty xs ==> Vector.argAbsMaximum xs == Vector.argAbs1Maximum xs)- DocTest.printPrefix "Numeric.BLAS.Vector:442: "-{-# LINE 442 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 515 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector real_ $ \xs -> isNonEmpty xs ==> Vector.argAbsMaximum xs == Vector.argAbs1Maximum xs)+ DocTest.printPrefix "Numeric.BLAS.Vector:512: "+{-# LINE 512 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.example-{-# LINE 442 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 512 "src/Numeric/BLAS/Vector.hs" #-}    (Vector.argAbs1Maximum $ Vector.autoFromList [1:+2, 3:+4, 5, 6 :: Complex_])   [ExpectedLine [LineChunk "(1,3.0 :+ 4.0)"]]- DocTest.printPrefix "Numeric.BLAS.Vector:478: "-{-# LINE 478 "src/Numeric/BLAS/Vector.hs" #-}- DocTest.property-{-# LINE 478 "src/Numeric/BLAS/Vector.hs" #-}-     (QC.forAll (QC.choose (0,10)) $ \dim -> QC.forAll (genVector 3 dim) $ \xs -> approx 1e-2 (Vector.product xs) (List.product (Vector.toList (xs :: Vector Number_))))- DocTest.printPrefix "Numeric.BLAS.Vector:488: "-{-# LINE 488 "src/Numeric/BLAS/Vector.hs" #-}- DocTest.property-{-# LINE 488 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbRealVector xs) -> isNonEmpty xs ==> Vector.minimum xs == List.minimum (Vector.toList xs))- DocTest.printPrefix "Numeric.BLAS.Vector:489: "-{-# LINE 489 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector:548: "+{-# LINE 548 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 489 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbRealVector xs) -> isNonEmpty xs ==> Vector.maximum xs == List.maximum (Vector.toList xs))- DocTest.printPrefix "Numeric.BLAS.Vector:490: "-{-# LINE 490 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 548 "src/Numeric/BLAS/Vector.hs" #-}+     (QC.forAll (QC.choose (0,10)) $ \dim -> QC.forAll (genVector (shapeInt dim) (genNumber 3)) $ \xs -> approx 1e-2 (Vector.product xs) (List.product (Vector.toList (xs :: Vector Number_))))+ DocTest.printPrefix "Numeric.BLAS.Vector:558: "+{-# LINE 558 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 490 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbRealVector xs) -> isNonEmpty xs ==> - Vector.maximum xs == Vector.minimum (Vector.negate xs))- DocTest.printPrefix "Numeric.BLAS.Vector:506: "-{-# LINE 506 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 558 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector real_ $ \xs -> isNonEmpty xs ==> Vector.minimum xs == List.minimum (Vector.toList xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:559: "+{-# LINE 559 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 506 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbRealVector xs) -> isNonEmpty xs ==> Vector.limits xs == Array.limits xs)- DocTest.printPrefix "Numeric.BLAS.Vector:536: "-{-# LINE 536 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 559 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector real_ $ \xs -> isNonEmpty xs ==> Vector.maximum xs == List.maximum (Vector.toList xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:560: "+{-# LINE 560 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 536 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs) -> Vector.negate xs == Vector.scale minusOne xs)- DocTest.printPrefix "Numeric.BLAS.Vector:537: "-{-# LINE 537 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 560 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector real_ $ \xs -> isNonEmpty xs ==> - Vector.maximum xs == Vector.minimum (Vector.negate xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:576: "+{-# LINE 576 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 537 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs) -> Vector.scale 2 xs == xs |+| xs)+{-# LINE 576 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector real_ $ \xs -> isNonEmpty xs ==> Vector.limits xs == Array.limits xs)  DocTest.printPrefix "Numeric.BLAS.Vector:606: " {-# LINE 606 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property {-# LINE 606 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector2 xs ys) -> xs |+| ys == ys |+| xs)+     (forVector number_ $ \xs -> Vector.negate xs == Vector.scale minusOne xs)  DocTest.printPrefix "Numeric.BLAS.Vector:607: " {-# LINE 607 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property {-# LINE 607 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector2 xs ys) -> xs == xs |-| ys |+| ys)- DocTest.printPrefix "Numeric.BLAS.Vector:637: "-{-# LINE 637 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> Vector.scale 2 xs == xs |+| xs)+ DocTest.printPrefix "Numeric.BLAS.Vector:676: "+{-# LINE 676 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 637 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs) -> xs == Vector.negate (Vector.negate xs))- DocTest.printPrefix "Numeric.BLAS.Vector:650: "-{-# LINE 650 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 676 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector2 number_ $ \xs ys -> xs |+| ys == ys |+| xs)+ DocTest.printPrefix "Numeric.BLAS.Vector:677: "+{-# LINE 677 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 650 "src/Numeric/BLAS/Vector.hs" #-}-     (QC.forAll (genNumber maxElem) $ \d (ArbVector xs) -> xs == Vector.raise (-d) (Vector.raise d xs))- DocTest.printPrefix "Numeric.BLAS.Vector:667: "-{-# LINE 667 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 677 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector2 number_ $ \xs ys -> xs == xs |-| ys |+| ys)+ DocTest.printPrefix "Numeric.BLAS.Vector:707: "+{-# LINE 707 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 667 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector2 xs ys) -> Vector.mul xs ys == Vector.mul ys xs)- DocTest.printPrefix "Numeric.BLAS.Vector:675: "-{-# LINE 675 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 707 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> xs == Vector.negate (Vector.negate xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:720: "+{-# LINE 720 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 675 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector2 xs ys) -> Vector.mulConj xs ys == Vector.mul (Vector.conjugate xs) ys)+{-# LINE 720 "src/Numeric/BLAS/Vector.hs" #-}+     (QC.forAll (genNumber maxElem) $ \d -> forVector number_ $ \xs -> xs == Vector.raise (-d) (Vector.raise d xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:737: "+{-# LINE 737 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 737 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector2 number_ $ \xs ys -> Vector.mul xs ys == Vector.mul ys xs)+ DocTest.printPrefix "Numeric.BLAS.Vector:745: "+{-# LINE 745 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 745 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector2 number_ $ \xs ys -> Vector.mulConj xs ys == Vector.mul (Vector.conjugate xs) ys)
test/Test/ComplexFloat/Numeric/BLAS/Vector/Slice.hs view
@@ -9,6 +9,8 @@  {-# LINE 90 "src/Numeric/BLAS/Vector/Slice.hs" #-} import     qualified Test.Slice as TestSlice+import     Test.ComplexFloat.Numeric.BLAS.Vector+       (maxElem, maxDim, genVector, number_, real_, complex_) import     Test.ComplexFloat.Type (Number_) import     Test.Generator (genNumber) import     Test.Utility (approx, approxReal)@@ -27,7 +29,6 @@ import     Data.Array.Comfort.Shape ((::+)((::+))) import     Data.Tuple.HT (mapPair) import     Data.Complex (Complex)-import     Control.Monad (replicateM) import     Control.Applicative (liftA2)  import     qualified Test.QuickCheck as QC@@ -36,12 +37,6 @@ type     Real_ = RealOf Number_ type     Complex_ = Complex Real_ -maxElem     :: Integer-maxElem     = 10--maxDim     :: Int-maxDim     = 100- maxDim1     :: Int maxDim1     = 10 @@ -63,25 +58,9 @@ genShape     :: QC.Gen Shape genShape     = genShapeDim =<< QC.choose (0,maxDim1) -genVector     ::-       (Shape.C sh, Class.Floating a) =>-       sh -> QC.Gen a -> QC.Gen (Vector.Vector sh a)-genVector     shape genElem =-       fmap (Vector.fromList shape) $-       replicateM (Shape.size shape) genElem- forAll_     :: (Show a) => QC.Gen a -> (a -> QC.Property) -> QC.Property forAll_     = QC.forAll -real_     :: QC.Gen Real_-real_     = genNumber maxElem--complex_     :: QC.Gen Complex_-complex_     = genNumber maxElem--number_     :: QC.Gen Number_-number_     = genNumber maxElem- isNonEmpty     :: Shape.C sh => VectorSlice.T shA sh a -> Bool isNonEmpty     xs = Shape.size (VectorSlice.shape xs) > 0 @@ -150,123 +129,123 @@  test :: DocTest.T () test = do- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:301: "-{-# LINE 301 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:280: "+{-# LINE 280 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 301 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 280 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (QC.forAll genShape $ \shape@(_::+(_rows,columns)::+_) -> QC.forAll (QC.elements (Shape.indices columns)) $ \c -> QC.forAll (genVector shape number_) $ \xs -> VectorSlice.extract (Slice.column c . Slice.left . Slice.right) xs == Matrix.takeColumn c (Vector.takeLeft (Vector.takeRight (xs :: Vector Number_))))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:303: "-{-# LINE 303 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:282: "+{-# LINE 282 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 303 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 282 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forAll_ (TestSlice.genShapeSelect 4 100) $ \(TestSlice.ShapeSelect sh select) -> QC.forAll (genVector sh number_) $ \xs -> case TestSlice.instantiate sh select of TestSlice.Extraction slice cut -> VectorSlice.extract slice xs == cut xs)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:335: "-{-# LINE 335 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:314: "+{-# LINE 314 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 335 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 314 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced2 number_ $ \xs ys -> VectorSlice.inner xs ys == Vector.dot (VectorSlice.conjugate xs) (VectorSlice.toVector ys))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:336: "-{-# LINE 336 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:315: "+{-# LINE 315 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 336 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 315 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> VectorSlice.inner xs xs == Scalar.fromReal (VectorSlice.norm2Squared xs))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:419: "-{-# LINE 419 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:398: "+{-# LINE 398 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 419 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 398 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> VectorSlice.sum xs == List.sum (listFromSlice xs))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:492: "-{-# LINE 492 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:471: "+{-# LINE 471 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 492 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 471 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> VectorSlice.normInf xs == List.maximum (0 : List.map absolute (listFromSlice xs)))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:503: "-{-# LINE 503 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:482: "+{-# LINE 482 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 503 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 482 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> VectorSlice.normInf1 xs == List.maximum (0 : List.map Scalar.norm1 (listFromSlice xs)))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:518: "-{-# LINE 518 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:497: "+{-# LINE 497 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 518 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 497 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> isNonEmpty xs ==> let (xi,xm) = VectorSlice.argAbsMaximum xs in VectorSlice.access xs xi == xm)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:519: "-{-# LINE 519 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:498: "+{-# LINE 498 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 519 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 498 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> isNonEmpty xs ==> let (_xi,xm) = VectorSlice.argAbsMaximum xs in List.all (\x -> absolute x <= absolute xm) $ listFromSlice xs)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:520: "-{-# LINE 520 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:499: "+{-# LINE 499 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 520 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 499 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> forSliced number_ $ \ys -> isNonEmpty xs && isNonEmpty ys ==> let (_xi,xm) = VectorSlice.argAbsMaximum xs; (_yi,ym) = VectorSlice.argAbsMaximum ys; (zi,zm) = Vector.argAbsMaximum (VectorSlice.toVector xs +++ VectorSlice.toVector ys) in case zi of Left _ -> xm==zm && absolute xm >= absolute ym; Right _ -> ym==zm && absolute xm < absolute ym)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:567: "-{-# LINE 567 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:546: "+{-# LINE 546 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 567 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 546 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced real_ $ \xs -> isNonEmpty xs ==> VectorSlice.argAbsMaximum xs == VectorSlice.argAbs1Maximum xs)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:592: "-{-# LINE 592 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:571: "+{-# LINE 571 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 592 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 571 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (QC.forAll genShape $ \sh@(_::+(_rows,columns)::+_) -> QC.forAll (QC.elements (Shape.indices columns)) $ \c -> QC.forAll (genVector sh $ genNumber 3) $ \xt -> let xs = takeColumn c xt in approx 1e-2 (VectorSlice.product xs) (List.product (listFromSlice (xs :: Sliced Number_))))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:603: "-{-# LINE 603 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:582: "+{-# LINE 582 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 603 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 582 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced real_ $ \xs -> isNonEmpty xs ==> VectorSlice.minimum xs == List.minimum (listFromSlice xs))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:604: "-{-# LINE 604 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:583: "+{-# LINE 583 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 604 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 583 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced real_ $ \xs -> isNonEmpty xs ==> VectorSlice.maximum xs == List.maximum (listFromSlice xs))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:620: "-{-# LINE 620 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:599: "+{-# LINE 599 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 620 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 599 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced real_ $ \xs -> isNonEmpty xs ==> VectorSlice.limits xs == Array.limits (VectorSlice.toVector xs))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:650: "-{-# LINE 650 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:629: "+{-# LINE 629 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 650 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 629 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> VectorSlice.negate xs == VectorSlice.scale minusOne xs)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:651: "-{-# LINE 651 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:630: "+{-# LINE 630 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 651 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 630 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> VectorSlice.scale 2 xs == VectorSlice.add xs xs)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:710: "-{-# LINE 710 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:689: "+{-# LINE 689 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 710 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 689 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced2 number_ $ \xs ys -> VectorSlice.add xs ys == VectorSlice.add ys xs)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:711: "-{-# LINE 711 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:690: "+{-# LINE 690 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 711 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 690 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced2 number_ $ \xs ys -> VectorSlice.toVector xs == VectorSlice.sub xs ys |+| VectorSlice.toVector ys)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:736: "-{-# LINE 736 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:715: "+{-# LINE 715 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 736 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 715 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> VectorSlice.toVector xs == Vector.negate (VectorSlice.negate xs))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:749: "-{-# LINE 749 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:728: "+{-# LINE 728 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 749 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 728 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (QC.forAll (genNumber maxElem) $ \d -> forSliced number_ $ \xs -> VectorSlice.toVector xs == Vector.raise (-d) (VectorSlice.raise d xs))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:766: "-{-# LINE 766 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:745: "+{-# LINE 745 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 766 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 745 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced2 number_ $ \xs ys -> VectorSlice.mul xs ys == VectorSlice.mul ys xs)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:774: "-{-# LINE 774 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:753: "+{-# LINE 753 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 774 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 753 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced2 number_ $ \xs ys -> VectorSlice.mulConj xs ys == Vector.mul (VectorSlice.conjugate xs) (VectorSlice.toVector ys))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:898: "-{-# LINE 898 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:877: "+{-# LINE 877 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 898 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 877 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced complex_ $ \xs -> approxReal 1e-2 (VectorSlice.norm2 xs) $ let (xrs,xis) = VectorSlice.unzipComplex xs in sqrt $ VectorSlice.norm2Squared xrs + VectorSlice.norm2Squared xis)
test/Test/Double/Numeric/BLAS/Vector.hs view
@@ -1,14 +1,15 @@ -- Do not edit! Automatically created with doctest-extract from src/Numeric/BLAS/Vector.hs-{-# LINE 98 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 100 "src/Numeric/BLAS/Vector.hs" #-}  module Test.Double.Numeric.BLAS.Vector where  import Test.DocTest.Base import qualified Test.DocTest.Driver as DocTest -{-# LINE 99 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 101 "src/Numeric/BLAS/Vector.hs" #-} import     Test.Double.Type (Number_) import     Test.Generator (genNumber)+import     Test.Slice (shapeInt) import     Test.Utility (approx) import     qualified Numeric.BLAS.Vector as Vector import     qualified Numeric.Netlib.Class as Class@@ -19,6 +20,8 @@ import     Numeric.BLAS.Scalar (RealOf, absolute, minusOne) import     Data.Array.Comfort.Storable (Array, (!)) import     Data.Complex (Complex((:+)))+import     Data.Monoid ((<>))+import     Data.Tuple.HT (mapPair) import     Control.Applicative (liftA2) import     Control.Monad (replicateM) @@ -35,167 +38,244 @@ maxDim     :: Int maxDim     = 100 -genVector     :: (Class.Floating a) => Integer -> Int -> QC.Gen (Vector a)-genVector     maxE dim =-       fmap (Vector.fromList (Shape.ZeroBased dim)) $-       replicateM dim $ genNumber maxE+genVector     ::+       (Shape.C sh, Class.Floating a) =>+       sh -> QC.Gen a -> QC.Gen (Vector.Vector sh a)+genVector     shape genElem =+       fmap (Vector.fromList shape) $+       replicateM (Shape.size shape) genElem +real_     :: QC.Gen Real_+real_     = genNumber maxElem++complex_     :: QC.Gen Complex_+complex_     = genNumber maxElem++number_     :: QC.Gen Number_+number_     = genNumber maxElem+ isNonEmpty     :: Shape.C sh => Array sh a -> Bool isNonEmpty     xs = Shape.size (Array.shape xs) > 0 -newtype     ArbRealVector = ArbRealVector (Vector Real_)-       deriving (Show)+forVector     ::+       (QC.Testable prop, QC.Arbitrary a, Class.Floating a, Show a) =>+       QC.Gen a -> (Vector a -> prop) -> QC.Property+forVector     genElem =+       QC.forAllShrink+          (flip genVector genElem . shapeInt =<< QC.choose (0,maxDim))+          (map Vector.autoFromList . QC.shrink . Vector.toList) -instance     QC.Arbitrary ArbRealVector where-       arbitrary = do-          dim <- QC.choose (0,maxDim)-          fmap ArbRealVector $ genVector maxElem dim-       shrink (ArbRealVector xs) =-          map (ArbRealVector . Vector.autoFromList) .-          QC.shrink . Vector.toList $ xs+forVector2     ::+       (QC.Testable prop, QC.Arbitrary a, Class.Floating a, Show a) =>+       QC.Gen a -> (Vector a -> Vector a -> prop) -> QC.Property+forVector2     genElem prop =+       QC.forAllShrink+          (do shape <- fmap shapeInt $ QC.choose (0,maxDim)+              liftA2 (,) (genVector shape genElem) (genVector shape genElem))+          (map (mapPair (Vector.autoFromList, Vector.autoFromList) . unzip) .+           QC.shrink .+           uncurry zip . mapPair (Vector.toList, Vector.toList))+          (uncurry prop) -newtype     ArbVector = ArbVector (Vector Number_)-       deriving (Show)+type     CyclicVector = Vector.Vector (Shape.Cyclic Int) -instance     QC.Arbitrary ArbVector where-       arbitrary = do-          dim <- QC.choose (0,maxDim)-          fmap ArbVector $ genVector maxElem dim-       shrink (ArbVector xs) =-          map (ArbVector . Vector.autoFromList) .-          QC.shrink . Vector.toList $ xs+genCyclicVector     ::+       (Class.Floating a) =>+       Integer -> Int -> QC.Gen (CyclicVector a)+genCyclicVector     maxE dim =+       fmap (Vector.fromList (Shape.Cyclic dim)) $+       replicateM dim $ genNumber maxE -data     ArbVector2 =-          ArbVector2 (Vector Number_) (Vector Number_)-       deriving (Show)+cyclicVectorFromListGen     :: (Class.Floating a) => [a] -> CyclicVector a+cyclicVectorFromListGen     xs = Vector.fromList (Shape.Cyclic $ length xs) xs -instance     QC.Arbitrary ArbVector2 where-       arbitrary = do-          dim <- QC.choose (0,maxDim)-          liftA2 ArbVector2-             (genVector maxElem dim) (genVector maxElem dim)+cyclicVectorFromList     :: [Number_] -> CyclicVector Number_+cyclicVectorFromList     = cyclicVectorFromListGen +forCyclicVector     ::+       (QC.Testable prop, QC.Arbitrary a, Class.Floating a, Show a) =>+       QC.Gen a -> (CyclicVector a -> prop) -> QC.Property+forCyclicVector     genElem =+       QC.forAllShrink+          (flip genVector genElem . Shape.Cyclic =<< QC.choose (0,maxDim))+          (map cyclicVectorFromListGen . QC.shrink . Vector.toList)+ test :: DocTest.T () test = do- DocTest.printPrefix "Numeric.BLAS.Vector:212: "-{-# LINE 212 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector:239: "+{-# LINE 239 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 212 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs) (ArbVector ys) (ArbVector zs) -> Vector.toList ((xs +++ ys) +++ zs) == Vector.toList (xs +++ (ys +++ zs)))- DocTest.printPrefix "Numeric.BLAS.Vector:221: "-{-# LINE 221 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 239 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> forVector number_ $ \ys -> forVector number_ $ \zs -> Vector.toList ((xs +++ ys) +++ zs) == Vector.toList (xs +++ (ys +++ zs)))+ DocTest.printPrefix "Numeric.BLAS.Vector:248: "+{-# LINE 248 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 221 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 248 "src/Numeric/BLAS/Vector.hs" #-}+     (Vector.autoFromList [] == (Vector.reverse $ Vector.autoFromList [] :: Vector Number_))+ DocTest.printPrefix "Numeric.BLAS.Vector:249: "+{-# LINE 249 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 249 "src/Numeric/BLAS/Vector.hs" #-}+     (Vector.autoFromList [1] == (Vector.reverse $ Vector.autoFromList [1] :: Vector Number_))+ DocTest.printPrefix "Numeric.BLAS.Vector:250: "+{-# LINE 250 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 250 "src/Numeric/BLAS/Vector.hs" #-}+     (Vector.autoFromList [3,2,1] == (Vector.reverse $ Vector.autoFromList [1,2,3] :: Vector Number_))+ DocTest.printPrefix "Numeric.BLAS.Vector:252: "+{-# LINE 252 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 252 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> reverse (Vector.toList xs) == Vector.toList (Vector.reverse xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:253: "+{-# LINE 253 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 253 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> xs == Vector.reverse (Vector.reverse xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:254: "+{-# LINE 254 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 254 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> forVector number_ $ \ys -> Vector.reverse (xs <> ys) == Vector.reverse ys <> Vector.reverse xs)+ DocTest.printPrefix "Numeric.BLAS.Vector:269: "+{-# LINE 269 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 269 "src/Numeric/BLAS/Vector.hs" #-}+     (cyclicVectorFromList [] == Vector.cyclicReverse (cyclicVectorFromList []))+ DocTest.printPrefix "Numeric.BLAS.Vector:270: "+{-# LINE 270 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 270 "src/Numeric/BLAS/Vector.hs" #-}+     (cyclicVectorFromList [1] == Vector.cyclicReverse (cyclicVectorFromList [1]))+ DocTest.printPrefix "Numeric.BLAS.Vector:271: "+{-# LINE 271 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 271 "src/Numeric/BLAS/Vector.hs" #-}+     (cyclicVectorFromList [1,3,2] == Vector.cyclicReverse (cyclicVectorFromList [1,2,3]))+ DocTest.printPrefix "Numeric.BLAS.Vector:272: "+{-# LINE 272 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 272 "src/Numeric/BLAS/Vector.hs" #-}+     (cyclicVectorFromList [1,6,5,4,3,2] == Vector.cyclicReverse (cyclicVectorFromList [1,2,3,4,5,6]))+ DocTest.printPrefix "Numeric.BLAS.Vector:274: "+{-# LINE 274 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 274 "src/Numeric/BLAS/Vector.hs" #-}+     (forCyclicVector number_ $ \xs -> xs == Vector.cyclicReverse (Vector.cyclicReverse xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:291: "+{-# LINE 291 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 291 "src/Numeric/BLAS/Vector.hs" #-}      (QC.forAll (QC.choose (1,100)) $ \dim -> QC.forAll (QC.choose (0, dim-1)) $ \i -> QC.forAll (QC.choose (0, dim-1)) $ \j -> Vector.unit (Shape.ZeroBased dim) i == (Vector.swap i j (Vector.unit (Shape.ZeroBased dim) j) :: Vector Number_))- DocTest.printPrefix "Numeric.BLAS.Vector:256: "-{-# LINE 256 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector:326: "+{-# LINE 326 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 256 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector2 xs ys) -> Vector.inner xs ys == Vector.dot (Vector.conjugate xs) ys)- DocTest.printPrefix "Numeric.BLAS.Vector:309: "-{-# LINE 309 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 326 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector2 number_ $ \xs ys -> Vector.inner xs ys == Vector.dot (Vector.conjugate xs) ys)+ DocTest.printPrefix "Numeric.BLAS.Vector:379: "+{-# LINE 379 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 309 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs) -> Vector.sum xs == List.sum (Vector.toList xs))- DocTest.printPrefix "Numeric.BLAS.Vector:369: "-{-# LINE 369 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 379 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> Vector.sum xs == List.sum (Vector.toList xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:439: "+{-# LINE 439 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 369 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs) -> Vector.normInf xs == List.maximum (0 : List.map absolute (Vector.toList xs)))- DocTest.printPrefix "Numeric.BLAS.Vector:396: "-{-# LINE 396 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 439 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> Vector.normInf xs == List.maximum (0 : List.map absolute (Vector.toList xs)))+ DocTest.printPrefix "Numeric.BLAS.Vector:466: "+{-# LINE 466 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 396 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs) -> isNonEmpty xs ==> let (xi,xm) = Vector.argAbsMaximum xs in xs!xi == xm)- DocTest.printPrefix "Numeric.BLAS.Vector:397: "-{-# LINE 397 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 466 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> isNonEmpty xs ==> let (xi,xm) = Vector.argAbsMaximum xs in xs!xi == xm)+ DocTest.printPrefix "Numeric.BLAS.Vector:467: "+{-# LINE 467 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 397 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs) -> isNonEmpty xs ==> let (_xi,xm) = Vector.argAbsMaximum xs in List.all (\x -> absolute x <= absolute xm) $ Vector.toList xs)- DocTest.printPrefix "Numeric.BLAS.Vector:398: "-{-# LINE 398 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 467 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> isNonEmpty xs ==> let (_xi,xm) = Vector.argAbsMaximum xs in List.all (\x -> absolute x <= absolute xm) $ Vector.toList xs)+ DocTest.printPrefix "Numeric.BLAS.Vector:468: "+{-# LINE 468 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 398 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs, ArbVector ys) -> isNonEmpty xs && isNonEmpty ys ==> let (_xi,xm) = Vector.argAbsMaximum xs; (_yi,ym) = Vector.argAbsMaximum ys; (zi,zm) = Vector.argAbsMaximum (xs+++ys) in case zi of Left _ -> xm==zm && absolute xm >= absolute ym; Right _ -> ym==zm && absolute xm < absolute ym)- DocTest.printPrefix "Numeric.BLAS.Vector:393: "-{-# LINE 393 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 468 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> forVector number_ $ \ys -> isNonEmpty xs && isNonEmpty ys ==> let (_xi,xm) = Vector.argAbsMaximum xs; (_yi,ym) = Vector.argAbsMaximum ys; (zi,zm) = Vector.argAbsMaximum (xs+++ys) in case zi of Left _ -> xm==zm && absolute xm >= absolute ym; Right _ -> ym==zm && absolute xm < absolute ym)+ DocTest.printPrefix "Numeric.BLAS.Vector:463: "+{-# LINE 463 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.example-{-# LINE 393 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 463 "src/Numeric/BLAS/Vector.hs" #-}    (Vector.argAbsMaximum $ Vector.autoFromList [1:+2, 3:+4, 5, 6 :: Complex_])   [ExpectedLine [LineChunk "(3,6.0 :+ 0.0)"]]- DocTest.printPrefix "Numeric.BLAS.Vector:445: "-{-# LINE 445 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector:515: "+{-# LINE 515 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 445 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbRealVector xs) -> isNonEmpty xs ==> Vector.argAbsMaximum xs == Vector.argAbs1Maximum xs)- DocTest.printPrefix "Numeric.BLAS.Vector:442: "-{-# LINE 442 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 515 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector real_ $ \xs -> isNonEmpty xs ==> Vector.argAbsMaximum xs == Vector.argAbs1Maximum xs)+ DocTest.printPrefix "Numeric.BLAS.Vector:512: "+{-# LINE 512 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.example-{-# LINE 442 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 512 "src/Numeric/BLAS/Vector.hs" #-}    (Vector.argAbs1Maximum $ Vector.autoFromList [1:+2, 3:+4, 5, 6 :: Complex_])   [ExpectedLine [LineChunk "(1,3.0 :+ 4.0)"]]- DocTest.printPrefix "Numeric.BLAS.Vector:478: "-{-# LINE 478 "src/Numeric/BLAS/Vector.hs" #-}- DocTest.property-{-# LINE 478 "src/Numeric/BLAS/Vector.hs" #-}-     (QC.forAll (QC.choose (0,10)) $ \dim -> QC.forAll (genVector 3 dim) $ \xs -> approx 1e-2 (Vector.product xs) (List.product (Vector.toList (xs :: Vector Number_))))- DocTest.printPrefix "Numeric.BLAS.Vector:488: "-{-# LINE 488 "src/Numeric/BLAS/Vector.hs" #-}- DocTest.property-{-# LINE 488 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbRealVector xs) -> isNonEmpty xs ==> Vector.minimum xs == List.minimum (Vector.toList xs))- DocTest.printPrefix "Numeric.BLAS.Vector:489: "-{-# LINE 489 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector:548: "+{-# LINE 548 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 489 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbRealVector xs) -> isNonEmpty xs ==> Vector.maximum xs == List.maximum (Vector.toList xs))- DocTest.printPrefix "Numeric.BLAS.Vector:490: "-{-# LINE 490 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 548 "src/Numeric/BLAS/Vector.hs" #-}+     (QC.forAll (QC.choose (0,10)) $ \dim -> QC.forAll (genVector (shapeInt dim) (genNumber 3)) $ \xs -> approx 1e-2 (Vector.product xs) (List.product (Vector.toList (xs :: Vector Number_))))+ DocTest.printPrefix "Numeric.BLAS.Vector:558: "+{-# LINE 558 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 490 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbRealVector xs) -> isNonEmpty xs ==> - Vector.maximum xs == Vector.minimum (Vector.negate xs))- DocTest.printPrefix "Numeric.BLAS.Vector:506: "-{-# LINE 506 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 558 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector real_ $ \xs -> isNonEmpty xs ==> Vector.minimum xs == List.minimum (Vector.toList xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:559: "+{-# LINE 559 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 506 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbRealVector xs) -> isNonEmpty xs ==> Vector.limits xs == Array.limits xs)- DocTest.printPrefix "Numeric.BLAS.Vector:536: "-{-# LINE 536 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 559 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector real_ $ \xs -> isNonEmpty xs ==> Vector.maximum xs == List.maximum (Vector.toList xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:560: "+{-# LINE 560 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 536 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs) -> Vector.negate xs == Vector.scale minusOne xs)- DocTest.printPrefix "Numeric.BLAS.Vector:537: "-{-# LINE 537 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 560 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector real_ $ \xs -> isNonEmpty xs ==> - Vector.maximum xs == Vector.minimum (Vector.negate xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:576: "+{-# LINE 576 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 537 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs) -> Vector.scale 2 xs == xs |+| xs)+{-# LINE 576 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector real_ $ \xs -> isNonEmpty xs ==> Vector.limits xs == Array.limits xs)  DocTest.printPrefix "Numeric.BLAS.Vector:606: " {-# LINE 606 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property {-# LINE 606 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector2 xs ys) -> xs |+| ys == ys |+| xs)+     (forVector number_ $ \xs -> Vector.negate xs == Vector.scale minusOne xs)  DocTest.printPrefix "Numeric.BLAS.Vector:607: " {-# LINE 607 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property {-# LINE 607 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector2 xs ys) -> xs == xs |-| ys |+| ys)- DocTest.printPrefix "Numeric.BLAS.Vector:637: "-{-# LINE 637 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> Vector.scale 2 xs == xs |+| xs)+ DocTest.printPrefix "Numeric.BLAS.Vector:676: "+{-# LINE 676 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 637 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs) -> xs == Vector.negate (Vector.negate xs))- DocTest.printPrefix "Numeric.BLAS.Vector:650: "-{-# LINE 650 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 676 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector2 number_ $ \xs ys -> xs |+| ys == ys |+| xs)+ DocTest.printPrefix "Numeric.BLAS.Vector:677: "+{-# LINE 677 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 650 "src/Numeric/BLAS/Vector.hs" #-}-     (QC.forAll (genNumber maxElem) $ \d (ArbVector xs) -> xs == Vector.raise (-d) (Vector.raise d xs))- DocTest.printPrefix "Numeric.BLAS.Vector:667: "-{-# LINE 667 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 677 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector2 number_ $ \xs ys -> xs == xs |-| ys |+| ys)+ DocTest.printPrefix "Numeric.BLAS.Vector:707: "+{-# LINE 707 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 667 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector2 xs ys) -> Vector.mul xs ys == Vector.mul ys xs)- DocTest.printPrefix "Numeric.BLAS.Vector:675: "-{-# LINE 675 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 707 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> xs == Vector.negate (Vector.negate xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:720: "+{-# LINE 720 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 675 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector2 xs ys) -> Vector.mulConj xs ys == Vector.mul (Vector.conjugate xs) ys)+{-# LINE 720 "src/Numeric/BLAS/Vector.hs" #-}+     (QC.forAll (genNumber maxElem) $ \d -> forVector number_ $ \xs -> xs == Vector.raise (-d) (Vector.raise d xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:737: "+{-# LINE 737 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 737 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector2 number_ $ \xs ys -> Vector.mul xs ys == Vector.mul ys xs)+ DocTest.printPrefix "Numeric.BLAS.Vector:745: "+{-# LINE 745 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 745 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector2 number_ $ \xs ys -> Vector.mulConj xs ys == Vector.mul (Vector.conjugate xs) ys)
test/Test/Double/Numeric/BLAS/Vector/Slice.hs view
@@ -9,6 +9,8 @@  {-# LINE 90 "src/Numeric/BLAS/Vector/Slice.hs" #-} import     qualified Test.Slice as TestSlice+import     Test.Double.Numeric.BLAS.Vector+       (maxElem, maxDim, genVector, number_, real_, complex_) import     Test.Double.Type (Number_) import     Test.Generator (genNumber) import     Test.Utility (approx, approxReal)@@ -27,7 +29,6 @@ import     Data.Array.Comfort.Shape ((::+)((::+))) import     Data.Tuple.HT (mapPair) import     Data.Complex (Complex)-import     Control.Monad (replicateM) import     Control.Applicative (liftA2)  import     qualified Test.QuickCheck as QC@@ -36,12 +37,6 @@ type     Real_ = RealOf Number_ type     Complex_ = Complex Real_ -maxElem     :: Integer-maxElem     = 10--maxDim     :: Int-maxDim     = 100- maxDim1     :: Int maxDim1     = 10 @@ -63,25 +58,9 @@ genShape     :: QC.Gen Shape genShape     = genShapeDim =<< QC.choose (0,maxDim1) -genVector     ::-       (Shape.C sh, Class.Floating a) =>-       sh -> QC.Gen a -> QC.Gen (Vector.Vector sh a)-genVector     shape genElem =-       fmap (Vector.fromList shape) $-       replicateM (Shape.size shape) genElem- forAll_     :: (Show a) => QC.Gen a -> (a -> QC.Property) -> QC.Property forAll_     = QC.forAll -real_     :: QC.Gen Real_-real_     = genNumber maxElem--complex_     :: QC.Gen Complex_-complex_     = genNumber maxElem--number_     :: QC.Gen Number_-number_     = genNumber maxElem- isNonEmpty     :: Shape.C sh => VectorSlice.T shA sh a -> Bool isNonEmpty     xs = Shape.size (VectorSlice.shape xs) > 0 @@ -150,123 +129,123 @@  test :: DocTest.T () test = do- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:301: "-{-# LINE 301 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:280: "+{-# LINE 280 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 301 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 280 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (QC.forAll genShape $ \shape@(_::+(_rows,columns)::+_) -> QC.forAll (QC.elements (Shape.indices columns)) $ \c -> QC.forAll (genVector shape number_) $ \xs -> VectorSlice.extract (Slice.column c . Slice.left . Slice.right) xs == Matrix.takeColumn c (Vector.takeLeft (Vector.takeRight (xs :: Vector Number_))))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:303: "-{-# LINE 303 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:282: "+{-# LINE 282 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 303 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 282 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forAll_ (TestSlice.genShapeSelect 4 100) $ \(TestSlice.ShapeSelect sh select) -> QC.forAll (genVector sh number_) $ \xs -> case TestSlice.instantiate sh select of TestSlice.Extraction slice cut -> VectorSlice.extract slice xs == cut xs)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:335: "-{-# LINE 335 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:314: "+{-# LINE 314 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 335 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 314 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced2 number_ $ \xs ys -> VectorSlice.inner xs ys == Vector.dot (VectorSlice.conjugate xs) (VectorSlice.toVector ys))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:336: "-{-# LINE 336 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:315: "+{-# LINE 315 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 336 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 315 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> VectorSlice.inner xs xs == Scalar.fromReal (VectorSlice.norm2Squared xs))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:419: "-{-# LINE 419 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:398: "+{-# LINE 398 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 419 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 398 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> VectorSlice.sum xs == List.sum (listFromSlice xs))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:492: "-{-# LINE 492 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:471: "+{-# LINE 471 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 492 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 471 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> VectorSlice.normInf xs == List.maximum (0 : List.map absolute (listFromSlice xs)))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:503: "-{-# LINE 503 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:482: "+{-# LINE 482 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 503 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 482 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> VectorSlice.normInf1 xs == List.maximum (0 : List.map Scalar.norm1 (listFromSlice xs)))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:518: "-{-# LINE 518 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:497: "+{-# LINE 497 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 518 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 497 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> isNonEmpty xs ==> let (xi,xm) = VectorSlice.argAbsMaximum xs in VectorSlice.access xs xi == xm)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:519: "-{-# LINE 519 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:498: "+{-# LINE 498 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 519 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 498 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> isNonEmpty xs ==> let (_xi,xm) = VectorSlice.argAbsMaximum xs in List.all (\x -> absolute x <= absolute xm) $ listFromSlice xs)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:520: "-{-# LINE 520 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:499: "+{-# LINE 499 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 520 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 499 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> forSliced number_ $ \ys -> isNonEmpty xs && isNonEmpty ys ==> let (_xi,xm) = VectorSlice.argAbsMaximum xs; (_yi,ym) = VectorSlice.argAbsMaximum ys; (zi,zm) = Vector.argAbsMaximum (VectorSlice.toVector xs +++ VectorSlice.toVector ys) in case zi of Left _ -> xm==zm && absolute xm >= absolute ym; Right _ -> ym==zm && absolute xm < absolute ym)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:567: "-{-# LINE 567 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:546: "+{-# LINE 546 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 567 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 546 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced real_ $ \xs -> isNonEmpty xs ==> VectorSlice.argAbsMaximum xs == VectorSlice.argAbs1Maximum xs)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:592: "-{-# LINE 592 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:571: "+{-# LINE 571 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 592 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 571 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (QC.forAll genShape $ \sh@(_::+(_rows,columns)::+_) -> QC.forAll (QC.elements (Shape.indices columns)) $ \c -> QC.forAll (genVector sh $ genNumber 3) $ \xt -> let xs = takeColumn c xt in approx 1e-2 (VectorSlice.product xs) (List.product (listFromSlice (xs :: Sliced Number_))))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:603: "-{-# LINE 603 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:582: "+{-# LINE 582 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 603 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 582 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced real_ $ \xs -> isNonEmpty xs ==> VectorSlice.minimum xs == List.minimum (listFromSlice xs))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:604: "-{-# LINE 604 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:583: "+{-# LINE 583 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 604 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 583 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced real_ $ \xs -> isNonEmpty xs ==> VectorSlice.maximum xs == List.maximum (listFromSlice xs))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:620: "-{-# LINE 620 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:599: "+{-# LINE 599 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 620 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 599 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced real_ $ \xs -> isNonEmpty xs ==> VectorSlice.limits xs == Array.limits (VectorSlice.toVector xs))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:650: "-{-# LINE 650 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:629: "+{-# LINE 629 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 650 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 629 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> VectorSlice.negate xs == VectorSlice.scale minusOne xs)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:651: "-{-# LINE 651 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:630: "+{-# LINE 630 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 651 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 630 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> VectorSlice.scale 2 xs == VectorSlice.add xs xs)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:710: "-{-# LINE 710 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:689: "+{-# LINE 689 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 710 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 689 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced2 number_ $ \xs ys -> VectorSlice.add xs ys == VectorSlice.add ys xs)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:711: "-{-# LINE 711 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:690: "+{-# LINE 690 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 711 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 690 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced2 number_ $ \xs ys -> VectorSlice.toVector xs == VectorSlice.sub xs ys |+| VectorSlice.toVector ys)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:736: "-{-# LINE 736 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:715: "+{-# LINE 715 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 736 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 715 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> VectorSlice.toVector xs == Vector.negate (VectorSlice.negate xs))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:749: "-{-# LINE 749 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:728: "+{-# LINE 728 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 749 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 728 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (QC.forAll (genNumber maxElem) $ \d -> forSliced number_ $ \xs -> VectorSlice.toVector xs == Vector.raise (-d) (VectorSlice.raise d xs))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:766: "-{-# LINE 766 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:745: "+{-# LINE 745 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 766 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 745 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced2 number_ $ \xs ys -> VectorSlice.mul xs ys == VectorSlice.mul ys xs)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:774: "-{-# LINE 774 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:753: "+{-# LINE 753 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 774 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 753 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced2 number_ $ \xs ys -> VectorSlice.mulConj xs ys == Vector.mul (VectorSlice.conjugate xs) (VectorSlice.toVector ys))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:898: "-{-# LINE 898 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:877: "+{-# LINE 877 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 898 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 877 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced complex_ $ \xs -> approxReal 1e-2 (VectorSlice.norm2 xs) $ let (xrs,xis) = VectorSlice.unzipComplex xs in sqrt $ VectorSlice.norm2Squared xrs + VectorSlice.norm2Squared xis)
test/Test/Float/Numeric/BLAS/Vector.hs view
@@ -1,14 +1,15 @@ -- Do not edit! Automatically created with doctest-extract from src/Numeric/BLAS/Vector.hs-{-# LINE 98 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 100 "src/Numeric/BLAS/Vector.hs" #-}  module Test.Float.Numeric.BLAS.Vector where  import Test.DocTest.Base import qualified Test.DocTest.Driver as DocTest -{-# LINE 99 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 101 "src/Numeric/BLAS/Vector.hs" #-} import     Test.Float.Type (Number_) import     Test.Generator (genNumber)+import     Test.Slice (shapeInt) import     Test.Utility (approx) import     qualified Numeric.BLAS.Vector as Vector import     qualified Numeric.Netlib.Class as Class@@ -19,6 +20,8 @@ import     Numeric.BLAS.Scalar (RealOf, absolute, minusOne) import     Data.Array.Comfort.Storable (Array, (!)) import     Data.Complex (Complex((:+)))+import     Data.Monoid ((<>))+import     Data.Tuple.HT (mapPair) import     Control.Applicative (liftA2) import     Control.Monad (replicateM) @@ -35,167 +38,244 @@ maxDim     :: Int maxDim     = 100 -genVector     :: (Class.Floating a) => Integer -> Int -> QC.Gen (Vector a)-genVector     maxE dim =-       fmap (Vector.fromList (Shape.ZeroBased dim)) $-       replicateM dim $ genNumber maxE+genVector     ::+       (Shape.C sh, Class.Floating a) =>+       sh -> QC.Gen a -> QC.Gen (Vector.Vector sh a)+genVector     shape genElem =+       fmap (Vector.fromList shape) $+       replicateM (Shape.size shape) genElem +real_     :: QC.Gen Real_+real_     = genNumber maxElem++complex_     :: QC.Gen Complex_+complex_     = genNumber maxElem++number_     :: QC.Gen Number_+number_     = genNumber maxElem+ isNonEmpty     :: Shape.C sh => Array sh a -> Bool isNonEmpty     xs = Shape.size (Array.shape xs) > 0 -newtype     ArbRealVector = ArbRealVector (Vector Real_)-       deriving (Show)+forVector     ::+       (QC.Testable prop, QC.Arbitrary a, Class.Floating a, Show a) =>+       QC.Gen a -> (Vector a -> prop) -> QC.Property+forVector     genElem =+       QC.forAllShrink+          (flip genVector genElem . shapeInt =<< QC.choose (0,maxDim))+          (map Vector.autoFromList . QC.shrink . Vector.toList) -instance     QC.Arbitrary ArbRealVector where-       arbitrary = do-          dim <- QC.choose (0,maxDim)-          fmap ArbRealVector $ genVector maxElem dim-       shrink (ArbRealVector xs) =-          map (ArbRealVector . Vector.autoFromList) .-          QC.shrink . Vector.toList $ xs+forVector2     ::+       (QC.Testable prop, QC.Arbitrary a, Class.Floating a, Show a) =>+       QC.Gen a -> (Vector a -> Vector a -> prop) -> QC.Property+forVector2     genElem prop =+       QC.forAllShrink+          (do shape <- fmap shapeInt $ QC.choose (0,maxDim)+              liftA2 (,) (genVector shape genElem) (genVector shape genElem))+          (map (mapPair (Vector.autoFromList, Vector.autoFromList) . unzip) .+           QC.shrink .+           uncurry zip . mapPair (Vector.toList, Vector.toList))+          (uncurry prop) -newtype     ArbVector = ArbVector (Vector Number_)-       deriving (Show)+type     CyclicVector = Vector.Vector (Shape.Cyclic Int) -instance     QC.Arbitrary ArbVector where-       arbitrary = do-          dim <- QC.choose (0,maxDim)-          fmap ArbVector $ genVector maxElem dim-       shrink (ArbVector xs) =-          map (ArbVector . Vector.autoFromList) .-          QC.shrink . Vector.toList $ xs+genCyclicVector     ::+       (Class.Floating a) =>+       Integer -> Int -> QC.Gen (CyclicVector a)+genCyclicVector     maxE dim =+       fmap (Vector.fromList (Shape.Cyclic dim)) $+       replicateM dim $ genNumber maxE -data     ArbVector2 =-          ArbVector2 (Vector Number_) (Vector Number_)-       deriving (Show)+cyclicVectorFromListGen     :: (Class.Floating a) => [a] -> CyclicVector a+cyclicVectorFromListGen     xs = Vector.fromList (Shape.Cyclic $ length xs) xs -instance     QC.Arbitrary ArbVector2 where-       arbitrary = do-          dim <- QC.choose (0,maxDim)-          liftA2 ArbVector2-             (genVector maxElem dim) (genVector maxElem dim)+cyclicVectorFromList     :: [Number_] -> CyclicVector Number_+cyclicVectorFromList     = cyclicVectorFromListGen +forCyclicVector     ::+       (QC.Testable prop, QC.Arbitrary a, Class.Floating a, Show a) =>+       QC.Gen a -> (CyclicVector a -> prop) -> QC.Property+forCyclicVector     genElem =+       QC.forAllShrink+          (flip genVector genElem . Shape.Cyclic =<< QC.choose (0,maxDim))+          (map cyclicVectorFromListGen . QC.shrink . Vector.toList)+ test :: DocTest.T () test = do- DocTest.printPrefix "Numeric.BLAS.Vector:212: "-{-# LINE 212 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector:239: "+{-# LINE 239 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 212 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs) (ArbVector ys) (ArbVector zs) -> Vector.toList ((xs +++ ys) +++ zs) == Vector.toList (xs +++ (ys +++ zs)))- DocTest.printPrefix "Numeric.BLAS.Vector:221: "-{-# LINE 221 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 239 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> forVector number_ $ \ys -> forVector number_ $ \zs -> Vector.toList ((xs +++ ys) +++ zs) == Vector.toList (xs +++ (ys +++ zs)))+ DocTest.printPrefix "Numeric.BLAS.Vector:248: "+{-# LINE 248 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 221 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 248 "src/Numeric/BLAS/Vector.hs" #-}+     (Vector.autoFromList [] == (Vector.reverse $ Vector.autoFromList [] :: Vector Number_))+ DocTest.printPrefix "Numeric.BLAS.Vector:249: "+{-# LINE 249 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 249 "src/Numeric/BLAS/Vector.hs" #-}+     (Vector.autoFromList [1] == (Vector.reverse $ Vector.autoFromList [1] :: Vector Number_))+ DocTest.printPrefix "Numeric.BLAS.Vector:250: "+{-# LINE 250 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 250 "src/Numeric/BLAS/Vector.hs" #-}+     (Vector.autoFromList [3,2,1] == (Vector.reverse $ Vector.autoFromList [1,2,3] :: Vector Number_))+ DocTest.printPrefix "Numeric.BLAS.Vector:252: "+{-# LINE 252 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 252 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> reverse (Vector.toList xs) == Vector.toList (Vector.reverse xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:253: "+{-# LINE 253 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 253 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> xs == Vector.reverse (Vector.reverse xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:254: "+{-# LINE 254 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 254 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> forVector number_ $ \ys -> Vector.reverse (xs <> ys) == Vector.reverse ys <> Vector.reverse xs)+ DocTest.printPrefix "Numeric.BLAS.Vector:269: "+{-# LINE 269 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 269 "src/Numeric/BLAS/Vector.hs" #-}+     (cyclicVectorFromList [] == Vector.cyclicReverse (cyclicVectorFromList []))+ DocTest.printPrefix "Numeric.BLAS.Vector:270: "+{-# LINE 270 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 270 "src/Numeric/BLAS/Vector.hs" #-}+     (cyclicVectorFromList [1] == Vector.cyclicReverse (cyclicVectorFromList [1]))+ DocTest.printPrefix "Numeric.BLAS.Vector:271: "+{-# LINE 271 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 271 "src/Numeric/BLAS/Vector.hs" #-}+     (cyclicVectorFromList [1,3,2] == Vector.cyclicReverse (cyclicVectorFromList [1,2,3]))+ DocTest.printPrefix "Numeric.BLAS.Vector:272: "+{-# LINE 272 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 272 "src/Numeric/BLAS/Vector.hs" #-}+     (cyclicVectorFromList [1,6,5,4,3,2] == Vector.cyclicReverse (cyclicVectorFromList [1,2,3,4,5,6]))+ DocTest.printPrefix "Numeric.BLAS.Vector:274: "+{-# LINE 274 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 274 "src/Numeric/BLAS/Vector.hs" #-}+     (forCyclicVector number_ $ \xs -> xs == Vector.cyclicReverse (Vector.cyclicReverse xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:291: "+{-# LINE 291 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 291 "src/Numeric/BLAS/Vector.hs" #-}      (QC.forAll (QC.choose (1,100)) $ \dim -> QC.forAll (QC.choose (0, dim-1)) $ \i -> QC.forAll (QC.choose (0, dim-1)) $ \j -> Vector.unit (Shape.ZeroBased dim) i == (Vector.swap i j (Vector.unit (Shape.ZeroBased dim) j) :: Vector Number_))- DocTest.printPrefix "Numeric.BLAS.Vector:256: "-{-# LINE 256 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector:326: "+{-# LINE 326 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 256 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector2 xs ys) -> Vector.inner xs ys == Vector.dot (Vector.conjugate xs) ys)- DocTest.printPrefix "Numeric.BLAS.Vector:309: "-{-# LINE 309 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 326 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector2 number_ $ \xs ys -> Vector.inner xs ys == Vector.dot (Vector.conjugate xs) ys)+ DocTest.printPrefix "Numeric.BLAS.Vector:379: "+{-# LINE 379 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 309 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs) -> Vector.sum xs == List.sum (Vector.toList xs))- DocTest.printPrefix "Numeric.BLAS.Vector:369: "-{-# LINE 369 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 379 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> Vector.sum xs == List.sum (Vector.toList xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:439: "+{-# LINE 439 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 369 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs) -> Vector.normInf xs == List.maximum (0 : List.map absolute (Vector.toList xs)))- DocTest.printPrefix "Numeric.BLAS.Vector:396: "-{-# LINE 396 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 439 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> Vector.normInf xs == List.maximum (0 : List.map absolute (Vector.toList xs)))+ DocTest.printPrefix "Numeric.BLAS.Vector:466: "+{-# LINE 466 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 396 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs) -> isNonEmpty xs ==> let (xi,xm) = Vector.argAbsMaximum xs in xs!xi == xm)- DocTest.printPrefix "Numeric.BLAS.Vector:397: "-{-# LINE 397 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 466 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> isNonEmpty xs ==> let (xi,xm) = Vector.argAbsMaximum xs in xs!xi == xm)+ DocTest.printPrefix "Numeric.BLAS.Vector:467: "+{-# LINE 467 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 397 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs) -> isNonEmpty xs ==> let (_xi,xm) = Vector.argAbsMaximum xs in List.all (\x -> absolute x <= absolute xm) $ Vector.toList xs)- DocTest.printPrefix "Numeric.BLAS.Vector:398: "-{-# LINE 398 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 467 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> isNonEmpty xs ==> let (_xi,xm) = Vector.argAbsMaximum xs in List.all (\x -> absolute x <= absolute xm) $ Vector.toList xs)+ DocTest.printPrefix "Numeric.BLAS.Vector:468: "+{-# LINE 468 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 398 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs, ArbVector ys) -> isNonEmpty xs && isNonEmpty ys ==> let (_xi,xm) = Vector.argAbsMaximum xs; (_yi,ym) = Vector.argAbsMaximum ys; (zi,zm) = Vector.argAbsMaximum (xs+++ys) in case zi of Left _ -> xm==zm && absolute xm >= absolute ym; Right _ -> ym==zm && absolute xm < absolute ym)- DocTest.printPrefix "Numeric.BLAS.Vector:393: "-{-# LINE 393 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 468 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> forVector number_ $ \ys -> isNonEmpty xs && isNonEmpty ys ==> let (_xi,xm) = Vector.argAbsMaximum xs; (_yi,ym) = Vector.argAbsMaximum ys; (zi,zm) = Vector.argAbsMaximum (xs+++ys) in case zi of Left _ -> xm==zm && absolute xm >= absolute ym; Right _ -> ym==zm && absolute xm < absolute ym)+ DocTest.printPrefix "Numeric.BLAS.Vector:463: "+{-# LINE 463 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.example-{-# LINE 393 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 463 "src/Numeric/BLAS/Vector.hs" #-}    (Vector.argAbsMaximum $ Vector.autoFromList [1:+2, 3:+4, 5, 6 :: Complex_])   [ExpectedLine [LineChunk "(3,6.0 :+ 0.0)"]]- DocTest.printPrefix "Numeric.BLAS.Vector:445: "-{-# LINE 445 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector:515: "+{-# LINE 515 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 445 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbRealVector xs) -> isNonEmpty xs ==> Vector.argAbsMaximum xs == Vector.argAbs1Maximum xs)- DocTest.printPrefix "Numeric.BLAS.Vector:442: "-{-# LINE 442 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 515 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector real_ $ \xs -> isNonEmpty xs ==> Vector.argAbsMaximum xs == Vector.argAbs1Maximum xs)+ DocTest.printPrefix "Numeric.BLAS.Vector:512: "+{-# LINE 512 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.example-{-# LINE 442 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 512 "src/Numeric/BLAS/Vector.hs" #-}    (Vector.argAbs1Maximum $ Vector.autoFromList [1:+2, 3:+4, 5, 6 :: Complex_])   [ExpectedLine [LineChunk "(1,3.0 :+ 4.0)"]]- DocTest.printPrefix "Numeric.BLAS.Vector:478: "-{-# LINE 478 "src/Numeric/BLAS/Vector.hs" #-}- DocTest.property-{-# LINE 478 "src/Numeric/BLAS/Vector.hs" #-}-     (QC.forAll (QC.choose (0,10)) $ \dim -> QC.forAll (genVector 3 dim) $ \xs -> approx 1e-2 (Vector.product xs) (List.product (Vector.toList (xs :: Vector Number_))))- DocTest.printPrefix "Numeric.BLAS.Vector:488: "-{-# LINE 488 "src/Numeric/BLAS/Vector.hs" #-}- DocTest.property-{-# LINE 488 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbRealVector xs) -> isNonEmpty xs ==> Vector.minimum xs == List.minimum (Vector.toList xs))- DocTest.printPrefix "Numeric.BLAS.Vector:489: "-{-# LINE 489 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector:548: "+{-# LINE 548 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 489 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbRealVector xs) -> isNonEmpty xs ==> Vector.maximum xs == List.maximum (Vector.toList xs))- DocTest.printPrefix "Numeric.BLAS.Vector:490: "-{-# LINE 490 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 548 "src/Numeric/BLAS/Vector.hs" #-}+     (QC.forAll (QC.choose (0,10)) $ \dim -> QC.forAll (genVector (shapeInt dim) (genNumber 3)) $ \xs -> approx 1e-2 (Vector.product xs) (List.product (Vector.toList (xs :: Vector Number_))))+ DocTest.printPrefix "Numeric.BLAS.Vector:558: "+{-# LINE 558 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 490 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbRealVector xs) -> isNonEmpty xs ==> - Vector.maximum xs == Vector.minimum (Vector.negate xs))- DocTest.printPrefix "Numeric.BLAS.Vector:506: "-{-# LINE 506 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 558 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector real_ $ \xs -> isNonEmpty xs ==> Vector.minimum xs == List.minimum (Vector.toList xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:559: "+{-# LINE 559 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 506 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbRealVector xs) -> isNonEmpty xs ==> Vector.limits xs == Array.limits xs)- DocTest.printPrefix "Numeric.BLAS.Vector:536: "-{-# LINE 536 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 559 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector real_ $ \xs -> isNonEmpty xs ==> Vector.maximum xs == List.maximum (Vector.toList xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:560: "+{-# LINE 560 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 536 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs) -> Vector.negate xs == Vector.scale minusOne xs)- DocTest.printPrefix "Numeric.BLAS.Vector:537: "-{-# LINE 537 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 560 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector real_ $ \xs -> isNonEmpty xs ==> - Vector.maximum xs == Vector.minimum (Vector.negate xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:576: "+{-# LINE 576 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 537 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs) -> Vector.scale 2 xs == xs |+| xs)+{-# LINE 576 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector real_ $ \xs -> isNonEmpty xs ==> Vector.limits xs == Array.limits xs)  DocTest.printPrefix "Numeric.BLAS.Vector:606: " {-# LINE 606 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property {-# LINE 606 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector2 xs ys) -> xs |+| ys == ys |+| xs)+     (forVector number_ $ \xs -> Vector.negate xs == Vector.scale minusOne xs)  DocTest.printPrefix "Numeric.BLAS.Vector:607: " {-# LINE 607 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property {-# LINE 607 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector2 xs ys) -> xs == xs |-| ys |+| ys)- DocTest.printPrefix "Numeric.BLAS.Vector:637: "-{-# LINE 637 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> Vector.scale 2 xs == xs |+| xs)+ DocTest.printPrefix "Numeric.BLAS.Vector:676: "+{-# LINE 676 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 637 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector xs) -> xs == Vector.negate (Vector.negate xs))- DocTest.printPrefix "Numeric.BLAS.Vector:650: "-{-# LINE 650 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 676 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector2 number_ $ \xs ys -> xs |+| ys == ys |+| xs)+ DocTest.printPrefix "Numeric.BLAS.Vector:677: "+{-# LINE 677 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 650 "src/Numeric/BLAS/Vector.hs" #-}-     (QC.forAll (genNumber maxElem) $ \d (ArbVector xs) -> xs == Vector.raise (-d) (Vector.raise d xs))- DocTest.printPrefix "Numeric.BLAS.Vector:667: "-{-# LINE 667 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 677 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector2 number_ $ \xs ys -> xs == xs |-| ys |+| ys)+ DocTest.printPrefix "Numeric.BLAS.Vector:707: "+{-# LINE 707 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 667 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector2 xs ys) -> Vector.mul xs ys == Vector.mul ys xs)- DocTest.printPrefix "Numeric.BLAS.Vector:675: "-{-# LINE 675 "src/Numeric/BLAS/Vector.hs" #-}+{-# LINE 707 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector number_ $ \xs -> xs == Vector.negate (Vector.negate xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:720: "+{-# LINE 720 "src/Numeric/BLAS/Vector.hs" #-}  DocTest.property-{-# LINE 675 "src/Numeric/BLAS/Vector.hs" #-}-     (\(ArbVector2 xs ys) -> Vector.mulConj xs ys == Vector.mul (Vector.conjugate xs) ys)+{-# LINE 720 "src/Numeric/BLAS/Vector.hs" #-}+     (QC.forAll (genNumber maxElem) $ \d -> forVector number_ $ \xs -> xs == Vector.raise (-d) (Vector.raise d xs))+ DocTest.printPrefix "Numeric.BLAS.Vector:737: "+{-# LINE 737 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 737 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector2 number_ $ \xs ys -> Vector.mul xs ys == Vector.mul ys xs)+ DocTest.printPrefix "Numeric.BLAS.Vector:745: "+{-# LINE 745 "src/Numeric/BLAS/Vector.hs" #-}+ DocTest.property+{-# LINE 745 "src/Numeric/BLAS/Vector.hs" #-}+     (forVector2 number_ $ \xs ys -> Vector.mulConj xs ys == Vector.mul (Vector.conjugate xs) ys)
test/Test/Float/Numeric/BLAS/Vector/Slice.hs view
@@ -9,6 +9,8 @@  {-# LINE 90 "src/Numeric/BLAS/Vector/Slice.hs" #-} import     qualified Test.Slice as TestSlice+import     Test.Float.Numeric.BLAS.Vector+       (maxElem, maxDim, genVector, number_, real_, complex_) import     Test.Float.Type (Number_) import     Test.Generator (genNumber) import     Test.Utility (approx, approxReal)@@ -27,7 +29,6 @@ import     Data.Array.Comfort.Shape ((::+)((::+))) import     Data.Tuple.HT (mapPair) import     Data.Complex (Complex)-import     Control.Monad (replicateM) import     Control.Applicative (liftA2)  import     qualified Test.QuickCheck as QC@@ -36,12 +37,6 @@ type     Real_ = RealOf Number_ type     Complex_ = Complex Real_ -maxElem     :: Integer-maxElem     = 10--maxDim     :: Int-maxDim     = 100- maxDim1     :: Int maxDim1     = 10 @@ -63,25 +58,9 @@ genShape     :: QC.Gen Shape genShape     = genShapeDim =<< QC.choose (0,maxDim1) -genVector     ::-       (Shape.C sh, Class.Floating a) =>-       sh -> QC.Gen a -> QC.Gen (Vector.Vector sh a)-genVector     shape genElem =-       fmap (Vector.fromList shape) $-       replicateM (Shape.size shape) genElem- forAll_     :: (Show a) => QC.Gen a -> (a -> QC.Property) -> QC.Property forAll_     = QC.forAll -real_     :: QC.Gen Real_-real_     = genNumber maxElem--complex_     :: QC.Gen Complex_-complex_     = genNumber maxElem--number_     :: QC.Gen Number_-number_     = genNumber maxElem- isNonEmpty     :: Shape.C sh => VectorSlice.T shA sh a -> Bool isNonEmpty     xs = Shape.size (VectorSlice.shape xs) > 0 @@ -150,123 +129,123 @@  test :: DocTest.T () test = do- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:301: "-{-# LINE 301 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:280: "+{-# LINE 280 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 301 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 280 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (QC.forAll genShape $ \shape@(_::+(_rows,columns)::+_) -> QC.forAll (QC.elements (Shape.indices columns)) $ \c -> QC.forAll (genVector shape number_) $ \xs -> VectorSlice.extract (Slice.column c . Slice.left . Slice.right) xs == Matrix.takeColumn c (Vector.takeLeft (Vector.takeRight (xs :: Vector Number_))))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:303: "-{-# LINE 303 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:282: "+{-# LINE 282 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 303 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 282 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forAll_ (TestSlice.genShapeSelect 4 100) $ \(TestSlice.ShapeSelect sh select) -> QC.forAll (genVector sh number_) $ \xs -> case TestSlice.instantiate sh select of TestSlice.Extraction slice cut -> VectorSlice.extract slice xs == cut xs)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:335: "-{-# LINE 335 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:314: "+{-# LINE 314 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 335 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 314 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced2 number_ $ \xs ys -> VectorSlice.inner xs ys == Vector.dot (VectorSlice.conjugate xs) (VectorSlice.toVector ys))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:336: "-{-# LINE 336 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:315: "+{-# LINE 315 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 336 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 315 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> VectorSlice.inner xs xs == Scalar.fromReal (VectorSlice.norm2Squared xs))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:419: "-{-# LINE 419 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:398: "+{-# LINE 398 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 419 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 398 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> VectorSlice.sum xs == List.sum (listFromSlice xs))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:492: "-{-# LINE 492 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:471: "+{-# LINE 471 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 492 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 471 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> VectorSlice.normInf xs == List.maximum (0 : List.map absolute (listFromSlice xs)))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:503: "-{-# LINE 503 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:482: "+{-# LINE 482 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 503 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 482 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> VectorSlice.normInf1 xs == List.maximum (0 : List.map Scalar.norm1 (listFromSlice xs)))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:518: "-{-# LINE 518 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:497: "+{-# LINE 497 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 518 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 497 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> isNonEmpty xs ==> let (xi,xm) = VectorSlice.argAbsMaximum xs in VectorSlice.access xs xi == xm)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:519: "-{-# LINE 519 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:498: "+{-# LINE 498 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 519 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 498 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> isNonEmpty xs ==> let (_xi,xm) = VectorSlice.argAbsMaximum xs in List.all (\x -> absolute x <= absolute xm) $ listFromSlice xs)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:520: "-{-# LINE 520 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:499: "+{-# LINE 499 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 520 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 499 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> forSliced number_ $ \ys -> isNonEmpty xs && isNonEmpty ys ==> let (_xi,xm) = VectorSlice.argAbsMaximum xs; (_yi,ym) = VectorSlice.argAbsMaximum ys; (zi,zm) = Vector.argAbsMaximum (VectorSlice.toVector xs +++ VectorSlice.toVector ys) in case zi of Left _ -> xm==zm && absolute xm >= absolute ym; Right _ -> ym==zm && absolute xm < absolute ym)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:567: "-{-# LINE 567 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:546: "+{-# LINE 546 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 567 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 546 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced real_ $ \xs -> isNonEmpty xs ==> VectorSlice.argAbsMaximum xs == VectorSlice.argAbs1Maximum xs)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:592: "-{-# LINE 592 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:571: "+{-# LINE 571 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 592 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 571 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (QC.forAll genShape $ \sh@(_::+(_rows,columns)::+_) -> QC.forAll (QC.elements (Shape.indices columns)) $ \c -> QC.forAll (genVector sh $ genNumber 3) $ \xt -> let xs = takeColumn c xt in approx 1e-2 (VectorSlice.product xs) (List.product (listFromSlice (xs :: Sliced Number_))))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:603: "-{-# LINE 603 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:582: "+{-# LINE 582 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 603 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 582 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced real_ $ \xs -> isNonEmpty xs ==> VectorSlice.minimum xs == List.minimum (listFromSlice xs))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:604: "-{-# LINE 604 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:583: "+{-# LINE 583 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 604 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 583 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced real_ $ \xs -> isNonEmpty xs ==> VectorSlice.maximum xs == List.maximum (listFromSlice xs))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:620: "-{-# LINE 620 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:599: "+{-# LINE 599 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 620 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 599 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced real_ $ \xs -> isNonEmpty xs ==> VectorSlice.limits xs == Array.limits (VectorSlice.toVector xs))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:650: "-{-# LINE 650 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:629: "+{-# LINE 629 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 650 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 629 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> VectorSlice.negate xs == VectorSlice.scale minusOne xs)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:651: "-{-# LINE 651 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:630: "+{-# LINE 630 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 651 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 630 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> VectorSlice.scale 2 xs == VectorSlice.add xs xs)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:710: "-{-# LINE 710 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:689: "+{-# LINE 689 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 710 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 689 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced2 number_ $ \xs ys -> VectorSlice.add xs ys == VectorSlice.add ys xs)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:711: "-{-# LINE 711 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:690: "+{-# LINE 690 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 711 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 690 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced2 number_ $ \xs ys -> VectorSlice.toVector xs == VectorSlice.sub xs ys |+| VectorSlice.toVector ys)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:736: "-{-# LINE 736 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:715: "+{-# LINE 715 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 736 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 715 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced number_ $ \xs -> VectorSlice.toVector xs == Vector.negate (VectorSlice.negate xs))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:749: "-{-# LINE 749 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:728: "+{-# LINE 728 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 749 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 728 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (QC.forAll (genNumber maxElem) $ \d -> forSliced number_ $ \xs -> VectorSlice.toVector xs == Vector.raise (-d) (VectorSlice.raise d xs))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:766: "-{-# LINE 766 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:745: "+{-# LINE 745 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 766 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 745 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced2 number_ $ \xs ys -> VectorSlice.mul xs ys == VectorSlice.mul ys xs)- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:774: "-{-# LINE 774 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:753: "+{-# LINE 753 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 774 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 753 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced2 number_ $ \xs ys -> VectorSlice.mulConj xs ys == Vector.mul (VectorSlice.conjugate xs) (VectorSlice.toVector ys))- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:898: "-{-# LINE 898 "src/Numeric/BLAS/Vector/Slice.hs" #-}+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:877: "+{-# LINE 877 "src/Numeric/BLAS/Vector/Slice.hs" #-}  DocTest.property-{-# LINE 898 "src/Numeric/BLAS/Vector/Slice.hs" #-}+{-# LINE 877 "src/Numeric/BLAS/Vector/Slice.hs" #-}      (forSliced complex_ $ \xs -> approxReal 1e-2 (VectorSlice.norm2 xs) $ let (xrs,xis) = VectorSlice.unzipComplex xs in sqrt $ VectorSlice.norm2Squared xrs + VectorSlice.norm2Squared xis)