diff --git a/comfort-blas.cabal b/comfort-blas.cabal
--- a/comfort-blas.cabal
+++ b/comfort-blas.cabal
@@ -1,6 +1,6 @@
 Cabal-Version:    2.2
 Name:             comfort-blas
-Version:          0.0
+Version:          0.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
+  Tag:         0.0.0.1
   Type:        darcs
   Location:    https://hub.darcs.net/thielema/comfort-blas/
 
diff --git a/src/Numeric/BLAS/Vector/Slice.hs b/src/Numeric/BLAS/Vector/Slice.hs
--- a/src/Numeric/BLAS/Vector/Slice.hs
+++ b/src/Numeric/BLAS/Vector/Slice.hs
@@ -86,6 +86,7 @@
 
 {- $setup
 >>> :set -XTypeOperators
+>>> :set -XGADTs
 >>> import qualified Test.Slice as TestSlice
 >>> import Test.NumberModule.Type (Number_)
 >>> import Test.Generator (genNumber)
diff --git a/test/Test/ComplexDouble/Numeric/BLAS/Vector/Slice.hs b/test/Test/ComplexDouble/Numeric/BLAS/Vector/Slice.hs
--- a/test/Test/ComplexDouble/Numeric/BLAS/Vector/Slice.hs
+++ b/test/Test/ComplexDouble/Numeric/BLAS/Vector/Slice.hs
@@ -2,11 +2,12 @@
 {-# LINE 87 "src/Numeric/BLAS/Vector/Slice.hs" #-}
 
 {-# OPTIONS_GHC -XTypeOperators #-}
+{-# OPTIONS_GHC -XGADTs #-}
 module Test.ComplexDouble.Numeric.BLAS.Vector.Slice where
 
 import qualified Test.DocTest.Driver as DocTest
 
-{-# LINE 89 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 90 "src/Numeric/BLAS/Vector/Slice.hs" #-}
 import     qualified Test.Slice as TestSlice
 import     Test.ComplexDouble.Type (Number_)
 import     Test.Generator (genNumber)
@@ -149,123 +150,123 @@
 
 test :: DocTest.T ()
 test = do
- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:300: "
-{-# LINE 300 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:301: "
+{-# LINE 301 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 300 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 301 "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:302: "
-{-# LINE 302 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:303: "
+{-# LINE 303 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 302 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 303 "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:334: "
-{-# LINE 334 "src/Numeric/BLAS/Vector/Slice.hs" #-}
- DocTest.property
-{-# LINE 334 "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:335: "
 {-# LINE 335 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
 {-# LINE 335 "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.property
+{-# LINE 336 "src/Numeric/BLAS/Vector/Slice.hs" #-}
      (forSliced number_ $ \xs -> VectorSlice.inner xs xs == Scalar.fromReal (VectorSlice.norm2Squared xs))
- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:418: "
-{-# LINE 418 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:419: "
+{-# LINE 419 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 418 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 419 "src/Numeric/BLAS/Vector/Slice.hs" #-}
      (forSliced number_ $ \xs -> VectorSlice.sum xs == List.sum (listFromSlice xs))
- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:491: "
-{-# LINE 491 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:492: "
+{-# LINE 492 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 491 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 492 "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:502: "
-{-# LINE 502 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:503: "
+{-# LINE 503 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 502 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 503 "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:517: "
-{-# LINE 517 "src/Numeric/BLAS/Vector/Slice.hs" #-}
- DocTest.property
-{-# LINE 517 "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:518: "
 {-# LINE 518 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
 {-# LINE 518 "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)
+     (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.property
 {-# LINE 519 "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.property
+{-# LINE 520 "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:566: "
-{-# LINE 566 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:567: "
+{-# LINE 567 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 566 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 567 "src/Numeric/BLAS/Vector/Slice.hs" #-}
      (forSliced real_ $ \xs -> isNonEmpty xs ==> VectorSlice.argAbsMaximum xs == VectorSlice.argAbs1Maximum xs)
- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:591: "
-{-# LINE 591 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:592: "
+{-# LINE 592 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 591 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 592 "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:602: "
-{-# LINE 602 "src/Numeric/BLAS/Vector/Slice.hs" #-}
- DocTest.property
-{-# LINE 602 "src/Numeric/BLAS/Vector/Slice.hs" #-}
-     (forSliced real_ $ \xs -> isNonEmpty xs ==> VectorSlice.minimum xs == List.minimum (listFromSlice xs))
  DocTest.printPrefix "Numeric.BLAS.Vector.Slice:603: "
 {-# LINE 603 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
 {-# LINE 603 "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.property
+{-# LINE 604 "src/Numeric/BLAS/Vector/Slice.hs" #-}
      (forSliced real_ $ \xs -> isNonEmpty xs ==> VectorSlice.maximum xs == List.maximum (listFromSlice xs))
- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:619: "
-{-# LINE 619 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:620: "
+{-# LINE 620 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 619 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 620 "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:649: "
-{-# LINE 649 "src/Numeric/BLAS/Vector/Slice.hs" #-}
- DocTest.property
-{-# LINE 649 "src/Numeric/BLAS/Vector/Slice.hs" #-}
-     (forSliced number_ $ \xs -> VectorSlice.negate xs == VectorSlice.scale minusOne xs)
  DocTest.printPrefix "Numeric.BLAS.Vector.Slice:650: "
 {-# LINE 650 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
 {-# LINE 650 "src/Numeric/BLAS/Vector/Slice.hs" #-}
-     (forSliced number_ $ \xs -> VectorSlice.scale 2 xs == VectorSlice.add xs xs)
- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:709: "
-{-# LINE 709 "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.property
-{-# LINE 709 "src/Numeric/BLAS/Vector/Slice.hs" #-}
-     (forSliced2 number_ $ \xs ys -> VectorSlice.add xs ys == VectorSlice.add ys xs)
+{-# LINE 651 "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.property
 {-# LINE 710 "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.property
+{-# LINE 711 "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:735: "
-{-# LINE 735 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:736: "
+{-# LINE 736 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 735 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 736 "src/Numeric/BLAS/Vector/Slice.hs" #-}
      (forSliced number_ $ \xs -> VectorSlice.toVector xs == Vector.negate (VectorSlice.negate xs))
- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:748: "
-{-# LINE 748 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:749: "
+{-# LINE 749 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 748 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 749 "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:765: "
-{-# LINE 765 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:766: "
+{-# LINE 766 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 765 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 766 "src/Numeric/BLAS/Vector/Slice.hs" #-}
      (forSliced2 number_ $ \xs ys -> VectorSlice.mul xs ys == VectorSlice.mul ys xs)
- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:773: "
-{-# LINE 773 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:774: "
+{-# LINE 774 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 773 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 774 "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:897: "
-{-# LINE 897 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:898: "
+{-# LINE 898 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 897 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 898 "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)
diff --git a/test/Test/ComplexFloat/Numeric/BLAS/Vector/Slice.hs b/test/Test/ComplexFloat/Numeric/BLAS/Vector/Slice.hs
--- a/test/Test/ComplexFloat/Numeric/BLAS/Vector/Slice.hs
+++ b/test/Test/ComplexFloat/Numeric/BLAS/Vector/Slice.hs
@@ -2,11 +2,12 @@
 {-# LINE 87 "src/Numeric/BLAS/Vector/Slice.hs" #-}
 
 {-# OPTIONS_GHC -XTypeOperators #-}
+{-# OPTIONS_GHC -XGADTs #-}
 module Test.ComplexFloat.Numeric.BLAS.Vector.Slice where
 
 import qualified Test.DocTest.Driver as DocTest
 
-{-# LINE 89 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 90 "src/Numeric/BLAS/Vector/Slice.hs" #-}
 import     qualified Test.Slice as TestSlice
 import     Test.ComplexFloat.Type (Number_)
 import     Test.Generator (genNumber)
@@ -149,123 +150,123 @@
 
 test :: DocTest.T ()
 test = do
- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:300: "
-{-# LINE 300 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:301: "
+{-# LINE 301 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 300 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 301 "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:302: "
-{-# LINE 302 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:303: "
+{-# LINE 303 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 302 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 303 "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:334: "
-{-# LINE 334 "src/Numeric/BLAS/Vector/Slice.hs" #-}
- DocTest.property
-{-# LINE 334 "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:335: "
 {-# LINE 335 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
 {-# LINE 335 "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.property
+{-# LINE 336 "src/Numeric/BLAS/Vector/Slice.hs" #-}
      (forSliced number_ $ \xs -> VectorSlice.inner xs xs == Scalar.fromReal (VectorSlice.norm2Squared xs))
- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:418: "
-{-# LINE 418 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:419: "
+{-# LINE 419 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 418 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 419 "src/Numeric/BLAS/Vector/Slice.hs" #-}
      (forSliced number_ $ \xs -> VectorSlice.sum xs == List.sum (listFromSlice xs))
- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:491: "
-{-# LINE 491 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:492: "
+{-# LINE 492 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 491 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 492 "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:502: "
-{-# LINE 502 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:503: "
+{-# LINE 503 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 502 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 503 "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:517: "
-{-# LINE 517 "src/Numeric/BLAS/Vector/Slice.hs" #-}
- DocTest.property
-{-# LINE 517 "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:518: "
 {-# LINE 518 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
 {-# LINE 518 "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)
+     (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.property
 {-# LINE 519 "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.property
+{-# LINE 520 "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:566: "
-{-# LINE 566 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:567: "
+{-# LINE 567 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 566 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 567 "src/Numeric/BLAS/Vector/Slice.hs" #-}
      (forSliced real_ $ \xs -> isNonEmpty xs ==> VectorSlice.argAbsMaximum xs == VectorSlice.argAbs1Maximum xs)
- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:591: "
-{-# LINE 591 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:592: "
+{-# LINE 592 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 591 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 592 "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:602: "
-{-# LINE 602 "src/Numeric/BLAS/Vector/Slice.hs" #-}
- DocTest.property
-{-# LINE 602 "src/Numeric/BLAS/Vector/Slice.hs" #-}
-     (forSliced real_ $ \xs -> isNonEmpty xs ==> VectorSlice.minimum xs == List.minimum (listFromSlice xs))
  DocTest.printPrefix "Numeric.BLAS.Vector.Slice:603: "
 {-# LINE 603 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
 {-# LINE 603 "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.property
+{-# LINE 604 "src/Numeric/BLAS/Vector/Slice.hs" #-}
      (forSliced real_ $ \xs -> isNonEmpty xs ==> VectorSlice.maximum xs == List.maximum (listFromSlice xs))
- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:619: "
-{-# LINE 619 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:620: "
+{-# LINE 620 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 619 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 620 "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:649: "
-{-# LINE 649 "src/Numeric/BLAS/Vector/Slice.hs" #-}
- DocTest.property
-{-# LINE 649 "src/Numeric/BLAS/Vector/Slice.hs" #-}
-     (forSliced number_ $ \xs -> VectorSlice.negate xs == VectorSlice.scale minusOne xs)
  DocTest.printPrefix "Numeric.BLAS.Vector.Slice:650: "
 {-# LINE 650 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
 {-# LINE 650 "src/Numeric/BLAS/Vector/Slice.hs" #-}
-     (forSliced number_ $ \xs -> VectorSlice.scale 2 xs == VectorSlice.add xs xs)
- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:709: "
-{-# LINE 709 "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.property
-{-# LINE 709 "src/Numeric/BLAS/Vector/Slice.hs" #-}
-     (forSliced2 number_ $ \xs ys -> VectorSlice.add xs ys == VectorSlice.add ys xs)
+{-# LINE 651 "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.property
 {-# LINE 710 "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.property
+{-# LINE 711 "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:735: "
-{-# LINE 735 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:736: "
+{-# LINE 736 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 735 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 736 "src/Numeric/BLAS/Vector/Slice.hs" #-}
      (forSliced number_ $ \xs -> VectorSlice.toVector xs == Vector.negate (VectorSlice.negate xs))
- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:748: "
-{-# LINE 748 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:749: "
+{-# LINE 749 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 748 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 749 "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:765: "
-{-# LINE 765 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:766: "
+{-# LINE 766 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 765 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 766 "src/Numeric/BLAS/Vector/Slice.hs" #-}
      (forSliced2 number_ $ \xs ys -> VectorSlice.mul xs ys == VectorSlice.mul ys xs)
- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:773: "
-{-# LINE 773 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:774: "
+{-# LINE 774 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 773 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 774 "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:897: "
-{-# LINE 897 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:898: "
+{-# LINE 898 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 897 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 898 "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)
diff --git a/test/Test/Double/Numeric/BLAS/Vector/Slice.hs b/test/Test/Double/Numeric/BLAS/Vector/Slice.hs
--- a/test/Test/Double/Numeric/BLAS/Vector/Slice.hs
+++ b/test/Test/Double/Numeric/BLAS/Vector/Slice.hs
@@ -2,11 +2,12 @@
 {-# LINE 87 "src/Numeric/BLAS/Vector/Slice.hs" #-}
 
 {-# OPTIONS_GHC -XTypeOperators #-}
+{-# OPTIONS_GHC -XGADTs #-}
 module Test.Double.Numeric.BLAS.Vector.Slice where
 
 import qualified Test.DocTest.Driver as DocTest
 
-{-# LINE 89 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 90 "src/Numeric/BLAS/Vector/Slice.hs" #-}
 import     qualified Test.Slice as TestSlice
 import     Test.Double.Type (Number_)
 import     Test.Generator (genNumber)
@@ -149,123 +150,123 @@
 
 test :: DocTest.T ()
 test = do
- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:300: "
-{-# LINE 300 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:301: "
+{-# LINE 301 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 300 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 301 "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:302: "
-{-# LINE 302 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:303: "
+{-# LINE 303 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 302 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 303 "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:334: "
-{-# LINE 334 "src/Numeric/BLAS/Vector/Slice.hs" #-}
- DocTest.property
-{-# LINE 334 "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:335: "
 {-# LINE 335 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
 {-# LINE 335 "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.property
+{-# LINE 336 "src/Numeric/BLAS/Vector/Slice.hs" #-}
      (forSliced number_ $ \xs -> VectorSlice.inner xs xs == Scalar.fromReal (VectorSlice.norm2Squared xs))
- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:418: "
-{-# LINE 418 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:419: "
+{-# LINE 419 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 418 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 419 "src/Numeric/BLAS/Vector/Slice.hs" #-}
      (forSliced number_ $ \xs -> VectorSlice.sum xs == List.sum (listFromSlice xs))
- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:491: "
-{-# LINE 491 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:492: "
+{-# LINE 492 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 491 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 492 "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:502: "
-{-# LINE 502 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:503: "
+{-# LINE 503 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 502 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 503 "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:517: "
-{-# LINE 517 "src/Numeric/BLAS/Vector/Slice.hs" #-}
- DocTest.property
-{-# LINE 517 "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:518: "
 {-# LINE 518 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
 {-# LINE 518 "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)
+     (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.property
 {-# LINE 519 "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.property
+{-# LINE 520 "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:566: "
-{-# LINE 566 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:567: "
+{-# LINE 567 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 566 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 567 "src/Numeric/BLAS/Vector/Slice.hs" #-}
      (forSliced real_ $ \xs -> isNonEmpty xs ==> VectorSlice.argAbsMaximum xs == VectorSlice.argAbs1Maximum xs)
- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:591: "
-{-# LINE 591 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:592: "
+{-# LINE 592 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 591 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 592 "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:602: "
-{-# LINE 602 "src/Numeric/BLAS/Vector/Slice.hs" #-}
- DocTest.property
-{-# LINE 602 "src/Numeric/BLAS/Vector/Slice.hs" #-}
-     (forSliced real_ $ \xs -> isNonEmpty xs ==> VectorSlice.minimum xs == List.minimum (listFromSlice xs))
  DocTest.printPrefix "Numeric.BLAS.Vector.Slice:603: "
 {-# LINE 603 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
 {-# LINE 603 "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.property
+{-# LINE 604 "src/Numeric/BLAS/Vector/Slice.hs" #-}
      (forSliced real_ $ \xs -> isNonEmpty xs ==> VectorSlice.maximum xs == List.maximum (listFromSlice xs))
- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:619: "
-{-# LINE 619 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:620: "
+{-# LINE 620 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 619 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 620 "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:649: "
-{-# LINE 649 "src/Numeric/BLAS/Vector/Slice.hs" #-}
- DocTest.property
-{-# LINE 649 "src/Numeric/BLAS/Vector/Slice.hs" #-}
-     (forSliced number_ $ \xs -> VectorSlice.negate xs == VectorSlice.scale minusOne xs)
  DocTest.printPrefix "Numeric.BLAS.Vector.Slice:650: "
 {-# LINE 650 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
 {-# LINE 650 "src/Numeric/BLAS/Vector/Slice.hs" #-}
-     (forSliced number_ $ \xs -> VectorSlice.scale 2 xs == VectorSlice.add xs xs)
- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:709: "
-{-# LINE 709 "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.property
-{-# LINE 709 "src/Numeric/BLAS/Vector/Slice.hs" #-}
-     (forSliced2 number_ $ \xs ys -> VectorSlice.add xs ys == VectorSlice.add ys xs)
+{-# LINE 651 "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.property
 {-# LINE 710 "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.property
+{-# LINE 711 "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:735: "
-{-# LINE 735 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:736: "
+{-# LINE 736 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 735 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 736 "src/Numeric/BLAS/Vector/Slice.hs" #-}
      (forSliced number_ $ \xs -> VectorSlice.toVector xs == Vector.negate (VectorSlice.negate xs))
- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:748: "
-{-# LINE 748 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:749: "
+{-# LINE 749 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 748 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 749 "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:765: "
-{-# LINE 765 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:766: "
+{-# LINE 766 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 765 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 766 "src/Numeric/BLAS/Vector/Slice.hs" #-}
      (forSliced2 number_ $ \xs ys -> VectorSlice.mul xs ys == VectorSlice.mul ys xs)
- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:773: "
-{-# LINE 773 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:774: "
+{-# LINE 774 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 773 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 774 "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:897: "
-{-# LINE 897 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:898: "
+{-# LINE 898 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 897 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 898 "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)
diff --git a/test/Test/Float/Numeric/BLAS/Vector/Slice.hs b/test/Test/Float/Numeric/BLAS/Vector/Slice.hs
--- a/test/Test/Float/Numeric/BLAS/Vector/Slice.hs
+++ b/test/Test/Float/Numeric/BLAS/Vector/Slice.hs
@@ -2,11 +2,12 @@
 {-# LINE 87 "src/Numeric/BLAS/Vector/Slice.hs" #-}
 
 {-# OPTIONS_GHC -XTypeOperators #-}
+{-# OPTIONS_GHC -XGADTs #-}
 module Test.Float.Numeric.BLAS.Vector.Slice where
 
 import qualified Test.DocTest.Driver as DocTest
 
-{-# LINE 89 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 90 "src/Numeric/BLAS/Vector/Slice.hs" #-}
 import     qualified Test.Slice as TestSlice
 import     Test.Float.Type (Number_)
 import     Test.Generator (genNumber)
@@ -149,123 +150,123 @@
 
 test :: DocTest.T ()
 test = do
- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:300: "
-{-# LINE 300 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:301: "
+{-# LINE 301 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 300 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 301 "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:302: "
-{-# LINE 302 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:303: "
+{-# LINE 303 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 302 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 303 "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:334: "
-{-# LINE 334 "src/Numeric/BLAS/Vector/Slice.hs" #-}
- DocTest.property
-{-# LINE 334 "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:335: "
 {-# LINE 335 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
 {-# LINE 335 "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.property
+{-# LINE 336 "src/Numeric/BLAS/Vector/Slice.hs" #-}
      (forSliced number_ $ \xs -> VectorSlice.inner xs xs == Scalar.fromReal (VectorSlice.norm2Squared xs))
- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:418: "
-{-# LINE 418 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:419: "
+{-# LINE 419 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 418 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 419 "src/Numeric/BLAS/Vector/Slice.hs" #-}
      (forSliced number_ $ \xs -> VectorSlice.sum xs == List.sum (listFromSlice xs))
- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:491: "
-{-# LINE 491 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:492: "
+{-# LINE 492 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 491 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 492 "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:502: "
-{-# LINE 502 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:503: "
+{-# LINE 503 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 502 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 503 "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:517: "
-{-# LINE 517 "src/Numeric/BLAS/Vector/Slice.hs" #-}
- DocTest.property
-{-# LINE 517 "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:518: "
 {-# LINE 518 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
 {-# LINE 518 "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)
+     (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.property
 {-# LINE 519 "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.property
+{-# LINE 520 "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:566: "
-{-# LINE 566 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:567: "
+{-# LINE 567 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 566 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 567 "src/Numeric/BLAS/Vector/Slice.hs" #-}
      (forSliced real_ $ \xs -> isNonEmpty xs ==> VectorSlice.argAbsMaximum xs == VectorSlice.argAbs1Maximum xs)
- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:591: "
-{-# LINE 591 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:592: "
+{-# LINE 592 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 591 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 592 "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:602: "
-{-# LINE 602 "src/Numeric/BLAS/Vector/Slice.hs" #-}
- DocTest.property
-{-# LINE 602 "src/Numeric/BLAS/Vector/Slice.hs" #-}
-     (forSliced real_ $ \xs -> isNonEmpty xs ==> VectorSlice.minimum xs == List.minimum (listFromSlice xs))
  DocTest.printPrefix "Numeric.BLAS.Vector.Slice:603: "
 {-# LINE 603 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
 {-# LINE 603 "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.property
+{-# LINE 604 "src/Numeric/BLAS/Vector/Slice.hs" #-}
      (forSliced real_ $ \xs -> isNonEmpty xs ==> VectorSlice.maximum xs == List.maximum (listFromSlice xs))
- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:619: "
-{-# LINE 619 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:620: "
+{-# LINE 620 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 619 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 620 "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:649: "
-{-# LINE 649 "src/Numeric/BLAS/Vector/Slice.hs" #-}
- DocTest.property
-{-# LINE 649 "src/Numeric/BLAS/Vector/Slice.hs" #-}
-     (forSliced number_ $ \xs -> VectorSlice.negate xs == VectorSlice.scale minusOne xs)
  DocTest.printPrefix "Numeric.BLAS.Vector.Slice:650: "
 {-# LINE 650 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
 {-# LINE 650 "src/Numeric/BLAS/Vector/Slice.hs" #-}
-     (forSliced number_ $ \xs -> VectorSlice.scale 2 xs == VectorSlice.add xs xs)
- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:709: "
-{-# LINE 709 "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.property
-{-# LINE 709 "src/Numeric/BLAS/Vector/Slice.hs" #-}
-     (forSliced2 number_ $ \xs ys -> VectorSlice.add xs ys == VectorSlice.add ys xs)
+{-# LINE 651 "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.property
 {-# LINE 710 "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.property
+{-# LINE 711 "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:735: "
-{-# LINE 735 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:736: "
+{-# LINE 736 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 735 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 736 "src/Numeric/BLAS/Vector/Slice.hs" #-}
      (forSliced number_ $ \xs -> VectorSlice.toVector xs == Vector.negate (VectorSlice.negate xs))
- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:748: "
-{-# LINE 748 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:749: "
+{-# LINE 749 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 748 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 749 "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:765: "
-{-# LINE 765 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:766: "
+{-# LINE 766 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 765 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 766 "src/Numeric/BLAS/Vector/Slice.hs" #-}
      (forSliced2 number_ $ \xs ys -> VectorSlice.mul xs ys == VectorSlice.mul ys xs)
- DocTest.printPrefix "Numeric.BLAS.Vector.Slice:773: "
-{-# LINE 773 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:774: "
+{-# LINE 774 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 773 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 774 "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:897: "
-{-# LINE 897 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+ DocTest.printPrefix "Numeric.BLAS.Vector.Slice:898: "
+{-# LINE 898 "src/Numeric/BLAS/Vector/Slice.hs" #-}
  DocTest.property
-{-# LINE 897 "src/Numeric/BLAS/Vector/Slice.hs" #-}
+{-# LINE 898 "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)
