{-# LANGUAGE TypeFamilies #-}
module Numeric.LAPACK.Matrix.Hermitian.Private where

import Numeric.LAPACK.Scalar (RealOf)


newtype Diagonal f g a = Diagonal {forall (f :: * -> *) (g :: * -> *) a.
Diagonal f g a -> g (RealOf a) -> f a
runDiagonal :: g (RealOf a) -> f a}

newtype TakeDiagonal f g a =
   TakeDiagonal {forall (f :: * -> *) (g :: * -> *) a.
TakeDiagonal f g a -> f a -> g (RealOf a)
runTakeDiagonal :: f a -> g (RealOf a)}

newtype Determinant f a = Determinant {forall (f :: * -> *) a. Determinant f a -> f a -> RealOf a
getDeterminant :: f a -> RealOf a}