module Numeric.LAPACK.Matrix.BandedHermitianPositiveDefinite (
Hermitian.Semidefinite,
Hermitian.assureFullRank,
Hermitian.assureAnyRank,
Hermitian.relaxSemidefinite,
Hermitian.relaxIndefinite,
Hermitian.assurePositiveDefiniteness,
Hermitian.relaxDefiniteness,
solve,
solveDecomposed,
decompose,
determinant,
) where
import qualified Numeric.LAPACK.Matrix.BandedHermitianPositiveDefinite.Linear
as Linear
import qualified Numeric.LAPACK.Matrix.Array.Hermitian as Hermitian
import qualified Numeric.LAPACK.Matrix.Array.Banded as Banded
import qualified Numeric.LAPACK.Matrix.Array.Private as ArrMatrix
import qualified Numeric.LAPACK.Matrix.Extent as Extent
import Numeric.LAPACK.Matrix.Array.Private (Full)
import Numeric.LAPACK.Scalar (RealOf)
import qualified Numeric.Netlib.Class as Class
import qualified Type.Data.Num.Unary as Unary
import qualified Data.Array.Comfort.Shape as Shape
solve ::
(Unary.Natural offDiag, Shape.C size, Eq size,
Extent.Measure meas, Extent.C vert, Extent.C horiz,
Shape.C nrhs, Class.Floating a) =>
Banded.HermitianPosDef offDiag size a ->
Full meas vert horiz size nrhs a -> Full meas vert horiz size nrhs a
solve = ArrMatrix.lift2 Linear.solve
solveDecomposed ::
(Unary.Natural offDiag, Shape.C size, Eq size,
Extent.Measure meas, Extent.C vert, Extent.C horiz,
Shape.C nrhs, Class.Floating a) =>
Banded.Upper offDiag size a ->
Full meas vert horiz size nrhs a -> Full meas vert horiz size nrhs a
solveDecomposed = ArrMatrix.lift2 Linear.solveDecomposed
decompose ::
(Unary.Natural offDiag, Shape.C size, Class.Floating a) =>
Banded.HermitianPosDef offDiag size a -> Banded.Upper offDiag size a
decompose = ArrMatrix.lift1 Linear.decompose
determinant ::
(Unary.Natural offDiag, Shape.C size, Class.Floating a) =>
Banded.HermitianPosDef offDiag size a -> RealOf a
determinant = Linear.determinant . ArrMatrix.toVector