module Numeric.LAPACK.Matrix.Array.Banded where

import qualified Numeric.LAPACK.Matrix.Shape.Private as MatrixShape
import Numeric.LAPACK.Matrix.Array (ArrayMatrix)

import qualified Type.Data.Num.Unary.Literal as TypeNum


type Banded sub super vert horiz height width =
      ArrayMatrix (MatrixShape.Banded sub super vert horiz height width)

type General sub super height width =
      ArrayMatrix (MatrixShape.BandedGeneral sub super height width)

type Square sub super size =
      ArrayMatrix (MatrixShape.BandedSquare sub super size)

type Lower sub size = Square sub TypeNum.U0 size
type Upper super size = Square TypeNum.U0 super size

type Diagonal size = Square TypeNum.U0 TypeNum.U0 size

type Hermitian offDiag sh =
         ArrayMatrix (MatrixShape.BandedHermitian offDiag sh)