yap-examples-0.1: examples of the algebraic classes in the yap package
Copyright(c) Ross Paterson 2023
LicenseBSD-style (see the file LICENSE)
Maintainer[email protected]
Stabilityprovisional
Portabilitytype-level literals
Safe HaskellNone
LanguageHaskell2010

Data.YAP.Matrix.Square

Description

An example instance of the algebraic classes: square matrices.

Synopsis

Documentation

newtype Matrix (n :: Nat) a Source #

Square nxn matrices

Constructors

Square (Matrix n n a) 

Instances

Instances details
KnownNat n => Applicative (Matrix n) Source # 
Instance details

Defined in Data.YAP.Matrix.Square

Methods

pure :: a -> Matrix n a #

(<*>) :: Matrix n (a -> b) -> Matrix n a -> Matrix n b #

liftA2 :: (a -> b -> c) -> Matrix n a -> Matrix n b -> Matrix n c #

(*>) :: Matrix n a -> Matrix n b -> Matrix n b #

(<*) :: Matrix n a -> Matrix n b -> Matrix n a #

Functor (Matrix n) Source # 
Instance details

Defined in Data.YAP.Matrix.Square

Methods

fmap :: (a -> b) -> Matrix n a -> Matrix n b #

(<$) :: a -> Matrix n b -> Matrix n a #

Show a => Show (Matrix n a) Source # 
Instance details

Defined in Data.YAP.Matrix.Square

Methods

showsPrec :: Int -> Matrix n a -> ShowS #

show :: Matrix n a -> String #

showList :: [Matrix n a] -> ShowS #

Eq a => Eq (Matrix n a) Source # 
Instance details

Defined in Data.YAP.Matrix.Square

Methods

(==) :: Matrix n a -> Matrix n a -> Bool #

(/=) :: Matrix n a -> Matrix n a -> Bool #

Ord a => Ord (Matrix n a) Source # 
Instance details

Defined in Data.YAP.Matrix.Square

Methods

compare :: Matrix n a -> Matrix n a -> Ordering #

(<) :: Matrix n a -> Matrix n a -> Bool #

(<=) :: Matrix n a -> Matrix n a -> Bool #

(>) :: Matrix n a -> Matrix n a -> Bool #

(>=) :: Matrix n a -> Matrix n a -> Bool #

max :: Matrix n a -> Matrix n a -> Matrix n a #

min :: Matrix n a -> Matrix n a -> Matrix n a #

(KnownNat n, AbelianGroup a) => AbelianGroup (Matrix n a) Source # 
Instance details

Defined in Data.YAP.Matrix.Square

Methods

(-) :: Matrix n a -> Matrix n a -> Matrix n a #

negate :: Matrix n a -> Matrix n a #

gtimes :: (AbelianGroup b, ToInteger b) => b -> Matrix n a -> Matrix n a #

(KnownNat n, AdditiveMonoid a) => AdditiveMonoid (Matrix n a) Source # 
Instance details

Defined in Data.YAP.Matrix.Square

Methods

(+) :: Matrix n a -> Matrix n a -> Matrix n a #

zero :: Matrix n a #

atimes :: ToInteger b => b -> Matrix n a -> Matrix n a #

(KnownNat n, FromRational a) => FromRational (Matrix n a) Source # 
Instance details

Defined in Data.YAP.Matrix.Square

Methods

fromRational :: Rational -> Matrix n a #

(KnownNat n, Ring a) => Ring (Matrix n a) Source # 
Instance details

Defined in Data.YAP.Matrix.Square

Methods

fromInteger :: Integer -> Matrix n a #

(KnownNat n, Semiring a) => Semiring (Matrix n a) Source # 
Instance details

Defined in Data.YAP.Matrix.Square

Methods

(*) :: Matrix n a -> Matrix n a -> Matrix n a #

one :: Matrix n a #

fromNatural :: Natural -> Matrix n a #

rescale :: Matrix n a -> Matrix n a -> (Matrix n a, Matrix n a, Matrix n a -> Matrix n a) #

matrix :: forall (n :: Nat) a. (KnownNat n, AdditiveMonoid a) => [[a]] -> Matrix n a Source #

Construct a square matrix from a list of row values.

diagonal :: forall (n :: Nat) a. (KnownNat n, AdditiveMonoid a) => a -> Matrix n a Source #

Square matrix with x's along the diagonal

transpose :: forall (n :: Nat) a. KnownNat n => Matrix n a -> Matrix n a Source #

Transpose of a square matrix

determinant :: forall (n :: Nat) a. (KnownNat n, Ring a) => Matrix n a -> a Source #

Determinant of a square matrix

adjugate :: forall (n :: Nat) a. (KnownNat n, Ring a) => Matrix n a -> Matrix n a Source #

Adjugate of a square matrix, satisfying

m * adjugate m = diagonal (determinant m)

Caution: The implementation used here is very inefficient, and also not a numerically stable method for matrix inversion.

apply :: forall a (n :: Nat). Semiring a => Matrix n a -> Vector n a -> Vector n a Source #

Multiply a vector by a square matrix.