module Numeric.LAPACK.Vector.Private where import qualified Numeric.LAPACK.Shape.Private as ShapePriv import qualified Numeric.LAPACK.FFI.Complex as LapackComplex import qualified Numeric.BLAS.FFI.Generic as BlasGen import qualified Numeric.Netlib.Class as Class import Foreign.Ptr (Ptr) import Foreign.C.Types (CInt) import qualified Data.Array.Comfort.Storable.Unchecked as Array import Data.Array.Comfort.Storable.Unchecked (Array) newtype ArgMaximum a = ArgMaximum {runArgMaximum :: Ptr CInt -> Ptr a -> Ptr CInt -> IO CInt} absMax :: Class.Floating a => Ptr CInt -> Ptr a -> Ptr CInt -> IO CInt absMax = runArgMaximum $ Class.switchFloating (ArgMaximum BlasGen.iamax) (ArgMaximum BlasGen.iamax) (ArgMaximum LapackComplex.imax1) (ArgMaximum LapackComplex.imax1) uncheck :: Array sh a -> Array (ShapePriv.Unchecked sh) a uncheck = Array.mapShape ShapePriv.Unchecked recheck :: Array (ShapePriv.Unchecked sh) a -> Array sh a recheck = Array.mapShape ShapePriv.deconsUnchecked