rings-0.1.3: Ring-like objects.

Safe HaskellSafe
LanguageHaskell2010

Data.Semimodule.Finite

Contents

Synopsis

Vector types

newtype V1 a Source #

Constructors

V1 a 
Instances
Functor V1 Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

fmap :: (a -> b) -> V1 a -> V1 b #

(<$) :: a -> V1 b -> V1 a #

Applicative V1 Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

pure :: a -> V1 a #

(<*>) :: V1 (a -> b) -> V1 a -> V1 b #

liftA2 :: (a -> b -> c) -> V1 a -> V1 b -> V1 c #

(*>) :: V1 a -> V1 b -> V1 b #

(<*) :: V1 a -> V1 b -> V1 a #

Foldable V1 Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

fold :: Monoid m => V1 m -> m #

foldMap :: Monoid m => (a -> m) -> V1 a -> m #

foldr :: (a -> b -> b) -> b -> V1 a -> b #

foldr' :: (a -> b -> b) -> b -> V1 a -> b #

foldl :: (b -> a -> b) -> b -> V1 a -> b #

foldl' :: (b -> a -> b) -> b -> V1 a -> b #

foldr1 :: (a -> a -> a) -> V1 a -> a #

foldl1 :: (a -> a -> a) -> V1 a -> a #

toList :: V1 a -> [a] #

null :: V1 a -> Bool #

length :: V1 a -> Int #

elem :: Eq a => a -> V1 a -> Bool #

maximum :: Ord a => V1 a -> a #

minimum :: Ord a => V1 a -> a #

sum :: Num a => V1 a -> a #

product :: Num a => V1 a -> a #

Distributive V1 Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

distribute :: Functor f => f (V1 a) -> V1 (f a) #

collect :: Functor f => (a -> V1 b) -> f a -> V1 (f b) #

distributeM :: Monad m => m (V1 a) -> V1 (m a) #

collectM :: Monad m => (a -> V1 b) -> m a -> V1 (m b) #

Representable V1 Source # 
Instance details

Defined in Data.Semimodule.Finite

Associated Types

type Rep V1 :: Type #

Methods

tabulate :: (Rep V1 -> a) -> V1 a #

index :: V1 a -> Rep V1 -> a #

Show1 V1 Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> V1 a -> ShowS #

liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [V1 a] -> ShowS #

Foldable1 V1 Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

fold1 :: Semigroup m => V1 m -> m #

foldMap1 :: Semigroup m => (a -> m) -> V1 a -> m #

toNonEmpty :: V1 a -> NonEmpty a #

Semiring a => Bisemimodule a a (V1 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

discale :: a -> a -> V1 a -> V1 a Source #

Semiring a => RightSemimodule a (V1 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

rscale :: a -> V1 a -> V1 a Source #

Semiring a => LeftSemimodule a (V1 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lscale :: a -> V1 a -> V1 a Source #

Eq a => Eq (V1 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

(==) :: V1 a -> V1 a -> Bool #

(/=) :: V1 a -> V1 a -> Bool #

Ord a => Ord (V1 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

compare :: V1 a -> V1 a -> Ordering #

(<) :: V1 a -> V1 a -> Bool #

(<=) :: V1 a -> V1 a -> Bool #

(>) :: V1 a -> V1 a -> Bool #

(>=) :: V1 a -> V1 a -> Bool #

max :: V1 a -> V1 a -> V1 a #

min :: V1 a -> V1 a -> V1 a #

Show a => Show (V1 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

showsPrec :: Int -> V1 a -> ShowS #

show :: V1 a -> String #

showList :: [V1 a] -> ShowS #

Semiring a => Semigroup (Multiplicative (M11 a)) Source # 
Instance details

Defined in Data.Semimodule.Finite

(Additive - Semigroup) a => Semigroup (Additive (V1 a)) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

(<>) :: Additive (V1 a) -> Additive (V1 a) -> Additive (V1 a) #

sconcat :: NonEmpty (Additive (V1 a)) -> Additive (V1 a) #

stimes :: Integral b => b -> Additive (V1 a) -> Additive (V1 a) #

Semiring a => Monoid (Multiplicative (M11 a)) Source # 
Instance details

Defined in Data.Semimodule.Finite

(Additive - Monoid) a => Monoid (Additive (V1 a)) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

mempty :: Additive (V1 a) #

mappend :: Additive (V1 a) -> Additive (V1 a) -> Additive (V1 a) #

mconcat :: [Additive (V1 a)] -> Additive (V1 a) #

(Additive - Group) a => Group (Additive (V1 a)) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

inv :: Additive (V1 a) -> Additive (V1 a) #

greplicate :: Integer -> Additive (V1 a) -> Additive (V1 a) #

(Additive - Group) a => Loop (Additive (V1 a)) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lempty :: Additive (V1 a) #

lreplicate :: Natural -> Additive (V1 a) -> Additive (V1 a) #

(Additive - Group) a => Quasigroup (Additive (V1 a)) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

(//) :: Additive (V1 a) -> Additive (V1 a) -> Additive (V1 a) #

(\\) :: Additive (V1 a) -> Additive (V1 a) -> Additive (V1 a) #

(Additive - Group) a => Magma (Additive (V1 a)) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

(<<) :: Additive (V1 a) -> Additive (V1 a) -> Additive (V1 a) #

Ring a => Ring (M11 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Semiring a => Semiring (M11 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Semiring a => Presemiring (M11 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Semiring a => RightSemimodule (M44 a) (M14 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

rscale :: M44 a -> M14 a -> M14 a Source #

Semiring a => RightSemimodule (M33 a) (M13 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

rscale :: M33 a -> M13 a -> M13 a Source #

Semiring a => RightSemimodule (M22 a) (M12 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

rscale :: M22 a -> M12 a -> M12 a Source #

Semiring a => RightSemimodule (M11 a) (M41 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

rscale :: M11 a -> M41 a -> M41 a Source #

Semiring a => RightSemimodule (M11 a) (M31 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

rscale :: M11 a -> M31 a -> M31 a Source #

Semiring a => RightSemimodule (M11 a) (M21 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

rscale :: M11 a -> M21 a -> M21 a Source #

Semiring a => RightSemimodule (M11 a) (M11 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

rscale :: M11 a -> M11 a -> M11 a Source #

Semiring a => LeftSemimodule (M44 a) (M41 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lscale :: M44 a -> M41 a -> M41 a Source #

Semiring a => LeftSemimodule (M33 a) (M31 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lscale :: M33 a -> M31 a -> M31 a Source #

Semiring a => LeftSemimodule (M22 a) (M21 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lscale :: M22 a -> M21 a -> M21 a Source #

Semiring a => LeftSemimodule (M11 a) (M14 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lscale :: M11 a -> M14 a -> M14 a Source #

Semiring a => LeftSemimodule (M11 a) (M13 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lscale :: M11 a -> M13 a -> M13 a Source #

Semiring a => LeftSemimodule (M11 a) (M12 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lscale :: M11 a -> M12 a -> M12 a Source #

Semiring a => LeftSemimodule (M11 a) (M11 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lscale :: M11 a -> M11 a -> M11 a Source #

Semiring a => Bisemimodule (M44 a) (M11 a) (M41 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

discale :: M44 a -> M11 a -> M41 a -> M41 a Source #

Semiring a => Bisemimodule (M33 a) (M11 a) (M31 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

discale :: M33 a -> M11 a -> M31 a -> M31 a Source #

Semiring a => Bisemimodule (M22 a) (M11 a) (M21 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

discale :: M22 a -> M11 a -> M21 a -> M21 a Source #

Semiring a => Bisemimodule (M11 a) (M44 a) (M14 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

discale :: M11 a -> M44 a -> M14 a -> M14 a Source #

Semiring a => Bisemimodule (M11 a) (M33 a) (M13 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

discale :: M11 a -> M33 a -> M13 a -> M13 a Source #

Semiring a => Bisemimodule (M11 a) (M22 a) (M12 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

discale :: M11 a -> M22 a -> M12 a -> M12 a Source #

type Rep V1 Source # 
Instance details

Defined in Data.Semimodule.Finite

type Rep V1 = E1

unV1 :: V1 a -> a Source #

data V2 a Source #

Constructors

V2 !a !a 
Instances
Functor V2 Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

fmap :: (a -> b) -> V2 a -> V2 b #

(<$) :: a -> V2 b -> V2 a #

Applicative V2 Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

pure :: a -> V2 a #

(<*>) :: V2 (a -> b) -> V2 a -> V2 b #

liftA2 :: (a -> b -> c) -> V2 a -> V2 b -> V2 c #

(*>) :: V2 a -> V2 b -> V2 b #

(<*) :: V2 a -> V2 b -> V2 a #

Foldable V2 Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

fold :: Monoid m => V2 m -> m #

foldMap :: Monoid m => (a -> m) -> V2 a -> m #

foldr :: (a -> b -> b) -> b -> V2 a -> b #

foldr' :: (a -> b -> b) -> b -> V2 a -> b #

foldl :: (b -> a -> b) -> b -> V2 a -> b #

foldl' :: (b -> a -> b) -> b -> V2 a -> b #

foldr1 :: (a -> a -> a) -> V2 a -> a #

foldl1 :: (a -> a -> a) -> V2 a -> a #

toList :: V2 a -> [a] #

null :: V2 a -> Bool #

length :: V2 a -> Int #

elem :: Eq a => a -> V2 a -> Bool #

maximum :: Ord a => V2 a -> a #

minimum :: Ord a => V2 a -> a #

sum :: Num a => V2 a -> a #

product :: Num a => V2 a -> a #

Distributive V2 Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

distribute :: Functor f => f (V2 a) -> V2 (f a) #

collect :: Functor f => (a -> V2 b) -> f a -> V2 (f b) #

distributeM :: Monad m => m (V2 a) -> V2 (m a) #

collectM :: Monad m => (a -> V2 b) -> m a -> V2 (m b) #

Representable V2 Source # 
Instance details

Defined in Data.Semimodule.Finite

Associated Types

type Rep V2 :: Type #

Methods

tabulate :: (Rep V2 -> a) -> V2 a #

index :: V2 a -> Rep V2 -> a #

Show1 V2 Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> V2 a -> ShowS #

liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [V2 a] -> ShowS #

Foldable1 V2 Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

fold1 :: Semigroup m => V2 m -> m #

foldMap1 :: Semigroup m => (a -> m) -> V2 a -> m #

toNonEmpty :: V2 a -> NonEmpty a #

Semiring a => Bisemimodule a a (V2 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

discale :: a -> a -> V2 a -> V2 a Source #

Semiring a => RightSemimodule a (V2 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

rscale :: a -> V2 a -> V2 a Source #

Semiring a => LeftSemimodule a (V2 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lscale :: a -> V2 a -> V2 a Source #

Eq a => Eq (V2 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

(==) :: V2 a -> V2 a -> Bool #

(/=) :: V2 a -> V2 a -> Bool #

Ord a => Ord (V2 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

compare :: V2 a -> V2 a -> Ordering #

(<) :: V2 a -> V2 a -> Bool #

(<=) :: V2 a -> V2 a -> Bool #

(>) :: V2 a -> V2 a -> Bool #

(>=) :: V2 a -> V2 a -> Bool #

max :: V2 a -> V2 a -> V2 a #

min :: V2 a -> V2 a -> V2 a #

Show a => Show (V2 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

showsPrec :: Int -> V2 a -> ShowS #

show :: V2 a -> String #

showList :: [V2 a] -> ShowS #

Semiring a => Semigroup (Multiplicative (M22 a)) Source # 
Instance details

Defined in Data.Semimodule.Finite

(Additive - Semigroup) a => Semigroup (Additive (V2 a)) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

(<>) :: Additive (V2 a) -> Additive (V2 a) -> Additive (V2 a) #

sconcat :: NonEmpty (Additive (V2 a)) -> Additive (V2 a) #

stimes :: Integral b => b -> Additive (V2 a) -> Additive (V2 a) #

Semiring a => Monoid (Multiplicative (M22 a)) Source # 
Instance details

Defined in Data.Semimodule.Finite

(Additive - Monoid) a => Monoid (Additive (V2 a)) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

mempty :: Additive (V2 a) #

mappend :: Additive (V2 a) -> Additive (V2 a) -> Additive (V2 a) #

mconcat :: [Additive (V2 a)] -> Additive (V2 a) #

(Additive - Group) a => Group (Additive (V2 a)) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

inv :: Additive (V2 a) -> Additive (V2 a) #

greplicate :: Integer -> Additive (V2 a) -> Additive (V2 a) #

(Additive - Group) a => Loop (Additive (V2 a)) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lempty :: Additive (V2 a) #

lreplicate :: Natural -> Additive (V2 a) -> Additive (V2 a) #

(Additive - Group) a => Quasigroup (Additive (V2 a)) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

(//) :: Additive (V2 a) -> Additive (V2 a) -> Additive (V2 a) #

(\\) :: Additive (V2 a) -> Additive (V2 a) -> Additive (V2 a) #

(Additive - Group) a => Magma (Additive (V2 a)) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

(<<) :: Additive (V2 a) -> Additive (V2 a) -> Additive (V2 a) #

Ring a => Ring (M22 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Semiring a => Semiring (M22 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Semiring a => Presemiring (M22 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Semiring a => RightSemimodule (M44 a) (M24 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

rscale :: M44 a -> M24 a -> M24 a Source #

Semiring a => RightSemimodule (M33 a) (M23 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

rscale :: M33 a -> M23 a -> M23 a Source #

Semiring a => RightSemimodule (M22 a) (M42 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

rscale :: M22 a -> M42 a -> M42 a Source #

Semiring a => RightSemimodule (M22 a) (M32 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

rscale :: M22 a -> M32 a -> M32 a Source #

Semiring a => RightSemimodule (M22 a) (M22 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

rscale :: M22 a -> M22 a -> M22 a Source #

Semiring a => RightSemimodule (M22 a) (M12 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

rscale :: M22 a -> M12 a -> M12 a Source #

Semiring a => RightSemimodule (M11 a) (M21 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

rscale :: M11 a -> M21 a -> M21 a Source #

Semiring a => LeftSemimodule (M44 a) (M42 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lscale :: M44 a -> M42 a -> M42 a Source #

Semiring a => LeftSemimodule (M33 a) (M32 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lscale :: M33 a -> M32 a -> M32 a Source #

Semiring a => LeftSemimodule (M22 a) (M24 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lscale :: M22 a -> M24 a -> M24 a Source #

Semiring a => LeftSemimodule (M22 a) (M23 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lscale :: M22 a -> M23 a -> M23 a Source #

Semiring a => LeftSemimodule (M22 a) (M22 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lscale :: M22 a -> M22 a -> M22 a Source #

Semiring a => LeftSemimodule (M22 a) (M21 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lscale :: M22 a -> M21 a -> M21 a Source #

Semiring a => LeftSemimodule (M11 a) (M12 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lscale :: M11 a -> M12 a -> M12 a Source #

Semiring a => Bisemimodule (M44 a) (M22 a) (M42 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

discale :: M44 a -> M22 a -> M42 a -> M42 a Source #

Semiring a => Bisemimodule (M33 a) (M22 a) (M32 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

discale :: M33 a -> M22 a -> M32 a -> M32 a Source #

Semiring a => Bisemimodule (M22 a) (M44 a) (M24 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

discale :: M22 a -> M44 a -> M24 a -> M24 a Source #

Semiring a => Bisemimodule (M22 a) (M33 a) (M23 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

discale :: M22 a -> M33 a -> M23 a -> M23 a Source #

Semiring a => Bisemimodule (M22 a) (M11 a) (M21 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

discale :: M22 a -> M11 a -> M21 a -> M21 a Source #

Semiring a => Bisemimodule (M11 a) (M22 a) (M12 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

discale :: M11 a -> M22 a -> M12 a -> M12 a Source #

type Rep V2 Source # 
Instance details

Defined in Data.Semimodule.Finite

type Rep V2 = E2

data V3 a Source #

Constructors

V3 !a !a !a 
Instances
Functor V3 Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

fmap :: (a -> b) -> V3 a -> V3 b #

(<$) :: a -> V3 b -> V3 a #

Applicative V3 Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

pure :: a -> V3 a #

(<*>) :: V3 (a -> b) -> V3 a -> V3 b #

liftA2 :: (a -> b -> c) -> V3 a -> V3 b -> V3 c #

(*>) :: V3 a -> V3 b -> V3 b #

(<*) :: V3 a -> V3 b -> V3 a #

Foldable V3 Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

fold :: Monoid m => V3 m -> m #

foldMap :: Monoid m => (a -> m) -> V3 a -> m #

foldr :: (a -> b -> b) -> b -> V3 a -> b #

foldr' :: (a -> b -> b) -> b -> V3 a -> b #

foldl :: (b -> a -> b) -> b -> V3 a -> b #

foldl' :: (b -> a -> b) -> b -> V3 a -> b #

foldr1 :: (a -> a -> a) -> V3 a -> a #

foldl1 :: (a -> a -> a) -> V3 a -> a #

toList :: V3 a -> [a] #

null :: V3 a -> Bool #

length :: V3 a -> Int #

elem :: Eq a => a -> V3 a -> Bool #

maximum :: Ord a => V3 a -> a #

minimum :: Ord a => V3 a -> a #

sum :: Num a => V3 a -> a #

product :: Num a => V3 a -> a #

Distributive V3 Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

distribute :: Functor f => f (V3 a) -> V3 (f a) #

collect :: Functor f => (a -> V3 b) -> f a -> V3 (f b) #

distributeM :: Monad m => m (V3 a) -> V3 (m a) #

collectM :: Monad m => (a -> V3 b) -> m a -> V3 (m b) #

Representable V3 Source # 
Instance details

Defined in Data.Semimodule.Finite

Associated Types

type Rep V3 :: Type #

Methods

tabulate :: (Rep V3 -> a) -> V3 a #

index :: V3 a -> Rep V3 -> a #

Eq1 V3 Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

liftEq :: (a -> b -> Bool) -> V3 a -> V3 b -> Bool #

Show1 V3 Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> V3 a -> ShowS #

liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [V3 a] -> ShowS #

Foldable1 V3 Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

fold1 :: Semigroup m => V3 m -> m #

foldMap1 :: Semigroup m => (a -> m) -> V3 a -> m #

toNonEmpty :: V3 a -> NonEmpty a #

Semiring a => Bisemimodule a a (V3 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

discale :: a -> a -> V3 a -> V3 a Source #

Semiring a => RightSemimodule a (V3 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

rscale :: a -> V3 a -> V3 a Source #

Semiring a => LeftSemimodule a (V3 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lscale :: a -> V3 a -> V3 a Source #

Eq a => Eq (V3 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

(==) :: V3 a -> V3 a -> Bool #

(/=) :: V3 a -> V3 a -> Bool #

Ord a => Ord (V3 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

compare :: V3 a -> V3 a -> Ordering #

(<) :: V3 a -> V3 a -> Bool #

(<=) :: V3 a -> V3 a -> Bool #

(>) :: V3 a -> V3 a -> Bool #

(>=) :: V3 a -> V3 a -> Bool #

max :: V3 a -> V3 a -> V3 a #

min :: V3 a -> V3 a -> V3 a #

Show a => Show (V3 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

showsPrec :: Int -> V3 a -> ShowS #

show :: V3 a -> String #

showList :: [V3 a] -> ShowS #

Semiring a => Semigroup (Multiplicative (M33 a)) Source # 
Instance details

Defined in Data.Semimodule.Finite

(Additive - Semigroup) a => Semigroup (Additive (V3 a)) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

(<>) :: Additive (V3 a) -> Additive (V3 a) -> Additive (V3 a) #

sconcat :: NonEmpty (Additive (V3 a)) -> Additive (V3 a) #

stimes :: Integral b => b -> Additive (V3 a) -> Additive (V3 a) #

Semiring a => Monoid (Multiplicative (M33 a)) Source # 
Instance details

Defined in Data.Semimodule.Finite

(Additive - Monoid) a => Monoid (Additive (V3 a)) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

mempty :: Additive (V3 a) #

mappend :: Additive (V3 a) -> Additive (V3 a) -> Additive (V3 a) #

mconcat :: [Additive (V3 a)] -> Additive (V3 a) #

(Additive - Group) a => Group (Additive (V3 a)) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

inv :: Additive (V3 a) -> Additive (V3 a) #

greplicate :: Integer -> Additive (V3 a) -> Additive (V3 a) #

(Additive - Group) a => Loop (Additive (V3 a)) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lempty :: Additive (V3 a) #

lreplicate :: Natural -> Additive (V3 a) -> Additive (V3 a) #

(Additive - Group) a => Quasigroup (Additive (V3 a)) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

(//) :: Additive (V3 a) -> Additive (V3 a) -> Additive (V3 a) #

(\\) :: Additive (V3 a) -> Additive (V3 a) -> Additive (V3 a) #

(Additive - Group) a => Magma (Additive (V3 a)) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

(<<) :: Additive (V3 a) -> Additive (V3 a) -> Additive (V3 a) #

Ring a => Ring (M33 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Semiring a => Semiring (M33 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Semiring a => Presemiring (M33 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Semiring a => RightSemimodule (M44 a) (M34 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

rscale :: M44 a -> M34 a -> M34 a Source #

Semiring a => RightSemimodule (M33 a) (M43 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

rscale :: M33 a -> M43 a -> M43 a Source #

Semiring a => RightSemimodule (M33 a) (M33 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

rscale :: M33 a -> M33 a -> M33 a Source #

Semiring a => RightSemimodule (M33 a) (M23 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

rscale :: M33 a -> M23 a -> M23 a Source #

Semiring a => RightSemimodule (M33 a) (M13 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

rscale :: M33 a -> M13 a -> M13 a Source #

Semiring a => RightSemimodule (M22 a) (M32 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

rscale :: M22 a -> M32 a -> M32 a Source #

Semiring a => RightSemimodule (M11 a) (M31 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

rscale :: M11 a -> M31 a -> M31 a Source #

Semiring a => LeftSemimodule (M44 a) (M43 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lscale :: M44 a -> M43 a -> M43 a Source #

Semiring a => LeftSemimodule (M33 a) (M34 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lscale :: M33 a -> M34 a -> M34 a Source #

Semiring a => LeftSemimodule (M33 a) (M33 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lscale :: M33 a -> M33 a -> M33 a Source #

Semiring a => LeftSemimodule (M33 a) (M32 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lscale :: M33 a -> M32 a -> M32 a Source #

Semiring a => LeftSemimodule (M33 a) (M31 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lscale :: M33 a -> M31 a -> M31 a Source #

Semiring a => LeftSemimodule (M22 a) (M23 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lscale :: M22 a -> M23 a -> M23 a Source #

Semiring a => LeftSemimodule (M11 a) (M13 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lscale :: M11 a -> M13 a -> M13 a Source #

Semiring a => Bisemimodule (M44 a) (M33 a) (M43 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

discale :: M44 a -> M33 a -> M43 a -> M43 a Source #

Semiring a => Bisemimodule (M33 a) (M44 a) (M34 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

discale :: M33 a -> M44 a -> M34 a -> M34 a Source #

Semiring a => Bisemimodule (M33 a) (M22 a) (M32 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

discale :: M33 a -> M22 a -> M32 a -> M32 a Source #

Semiring a => Bisemimodule (M33 a) (M11 a) (M31 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

discale :: M33 a -> M11 a -> M31 a -> M31 a Source #

Semiring a => Bisemimodule (M22 a) (M33 a) (M23 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

discale :: M22 a -> M33 a -> M23 a -> M23 a Source #

Semiring a => Bisemimodule (M11 a) (M33 a) (M13 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

discale :: M11 a -> M33 a -> M13 a -> M13 a Source #

type Rep V3 Source # 
Instance details

Defined in Data.Semimodule.Finite

type Rep V3 = E3

cross :: Ring a => V3 a -> V3 a -> V3 a Source #

Cross product.

a `cross' a = zero
a `cross' b = negate ( b `cross' a ) , 
a `cross' ( b + c ) = ( a `cross' b ) + ( a `cross' c ) , 
( r a ) `cross' b = a `cross' ( r b ) = r ( a `cross' b ) . 
a `cross' ( b `cross' c ) + b `cross' ( c `cross' a ) + c `cross' ( a `cross' b ) = zero . 

See Jacobi identity.

triple :: Ring a => V3 a -> V3 a -> V3 a -> a Source #

Scalar triple product.

triple x y z = triple z x y = triple y z x
triple x y z = negate $ triple x z y = negate $ triple y x z
triple x x y = triple x y y = triple x y x = zero
(triple x y z) *. x = (x `cross' y) `cross' (x `cross' z)
>>> triple (V3 0 0 1) (V3 1 0 0) (V3 0 1 0) :: Double
1.0

data V4 a Source #

Constructors

V4 !a !a !a !a 
Instances
Functor V4 Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

fmap :: (a -> b) -> V4 a -> V4 b #

(<$) :: a -> V4 b -> V4 a #

Applicative V4 Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

pure :: a -> V4 a #

(<*>) :: V4 (a -> b) -> V4 a -> V4 b #

liftA2 :: (a -> b -> c) -> V4 a -> V4 b -> V4 c #

(*>) :: V4 a -> V4 b -> V4 b #

(<*) :: V4 a -> V4 b -> V4 a #

Foldable V4 Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

fold :: Monoid m => V4 m -> m #

foldMap :: Monoid m => (a -> m) -> V4 a -> m #

foldr :: (a -> b -> b) -> b -> V4 a -> b #

foldr' :: (a -> b -> b) -> b -> V4 a -> b #

foldl :: (b -> a -> b) -> b -> V4 a -> b #

foldl' :: (b -> a -> b) -> b -> V4 a -> b #

foldr1 :: (a -> a -> a) -> V4 a -> a #

foldl1 :: (a -> a -> a) -> V4 a -> a #

toList :: V4 a -> [a] #

null :: V4 a -> Bool #

length :: V4 a -> Int #

elem :: Eq a => a -> V4 a -> Bool #

maximum :: Ord a => V4 a -> a #

minimum :: Ord a => V4 a -> a #

sum :: Num a => V4 a -> a #

product :: Num a => V4 a -> a #

Distributive V4 Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

distribute :: Functor f => f (V4 a) -> V4 (f a) #

collect :: Functor f => (a -> V4 b) -> f a -> V4 (f b) #

distributeM :: Monad m => m (V4 a) -> V4 (m a) #

collectM :: Monad m => (a -> V4 b) -> m a -> V4 (m b) #

Representable V4 Source # 
Instance details

Defined in Data.Semimodule.Finite

Associated Types

type Rep V4 :: Type #

Methods

tabulate :: (Rep V4 -> a) -> V4 a #

index :: V4 a -> Rep V4 -> a #

Show1 V4 Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> V4 a -> ShowS #

liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [V4 a] -> ShowS #

Foldable1 V4 Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

fold1 :: Semigroup m => V4 m -> m #

foldMap1 :: Semigroup m => (a -> m) -> V4 a -> m #

toNonEmpty :: V4 a -> NonEmpty a #

Semiring a => Bisemimodule a a (V4 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

discale :: a -> a -> V4 a -> V4 a Source #

Semiring a => RightSemimodule a (V4 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

rscale :: a -> V4 a -> V4 a Source #

Semiring a => LeftSemimodule a (V4 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lscale :: a -> V4 a -> V4 a Source #

Eq a => Eq (V4 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

(==) :: V4 a -> V4 a -> Bool #

(/=) :: V4 a -> V4 a -> Bool #

Ord a => Ord (V4 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

compare :: V4 a -> V4 a -> Ordering #

(<) :: V4 a -> V4 a -> Bool #

(<=) :: V4 a -> V4 a -> Bool #

(>) :: V4 a -> V4 a -> Bool #

(>=) :: V4 a -> V4 a -> Bool #

max :: V4 a -> V4 a -> V4 a #

min :: V4 a -> V4 a -> V4 a #

Show a => Show (V4 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

showsPrec :: Int -> V4 a -> ShowS #

show :: V4 a -> String #

showList :: [V4 a] -> ShowS #

Semiring a => Semigroup (Multiplicative (M44 a)) Source # 
Instance details

Defined in Data.Semimodule.Finite

(Additive - Semigroup) a => Semigroup (Additive (V4 a)) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

(<>) :: Additive (V4 a) -> Additive (V4 a) -> Additive (V4 a) #

sconcat :: NonEmpty (Additive (V4 a)) -> Additive (V4 a) #

stimes :: Integral b => b -> Additive (V4 a) -> Additive (V4 a) #

Semiring a => Monoid (Multiplicative (M44 a)) Source # 
Instance details

Defined in Data.Semimodule.Finite

(Additive - Monoid) a => Monoid (Additive (V4 a)) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

mempty :: Additive (V4 a) #

mappend :: Additive (V4 a) -> Additive (V4 a) -> Additive (V4 a) #

mconcat :: [Additive (V4 a)] -> Additive (V4 a) #

(Additive - Group) a => Group (Additive (V4 a)) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

inv :: Additive (V4 a) -> Additive (V4 a) #

greplicate :: Integer -> Additive (V4 a) -> Additive (V4 a) #

(Additive - Group) a => Loop (Additive (V4 a)) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lempty :: Additive (V4 a) #

lreplicate :: Natural -> Additive (V4 a) -> Additive (V4 a) #

(Additive - Group) a => Quasigroup (Additive (V4 a)) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

(//) :: Additive (V4 a) -> Additive (V4 a) -> Additive (V4 a) #

(\\) :: Additive (V4 a) -> Additive (V4 a) -> Additive (V4 a) #

(Additive - Group) a => Magma (Additive (V4 a)) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

(<<) :: Additive (V4 a) -> Additive (V4 a) -> Additive (V4 a) #

Ring a => Ring (M44 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Semiring a => Semiring (M44 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Semiring a => Presemiring (M44 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Semiring a => RightSemimodule (M44 a) (M44 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

rscale :: M44 a -> M44 a -> M44 a Source #

Semiring a => RightSemimodule (M44 a) (M34 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

rscale :: M44 a -> M34 a -> M34 a Source #

Semiring a => RightSemimodule (M44 a) (M24 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

rscale :: M44 a -> M24 a -> M24 a Source #

Semiring a => RightSemimodule (M44 a) (M14 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

rscale :: M44 a -> M14 a -> M14 a Source #

Semiring a => RightSemimodule (M33 a) (M43 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

rscale :: M33 a -> M43 a -> M43 a Source #

Semiring a => RightSemimodule (M22 a) (M42 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

rscale :: M22 a -> M42 a -> M42 a Source #

Semiring a => RightSemimodule (M11 a) (M41 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

rscale :: M11 a -> M41 a -> M41 a Source #

Semiring a => LeftSemimodule (M44 a) (M44 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lscale :: M44 a -> M44 a -> M44 a Source #

Semiring a => LeftSemimodule (M44 a) (M43 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lscale :: M44 a -> M43 a -> M43 a Source #

Semiring a => LeftSemimodule (M44 a) (M42 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lscale :: M44 a -> M42 a -> M42 a Source #

Semiring a => LeftSemimodule (M44 a) (M41 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lscale :: M44 a -> M41 a -> M41 a Source #

Semiring a => LeftSemimodule (M33 a) (M34 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lscale :: M33 a -> M34 a -> M34 a Source #

Semiring a => LeftSemimodule (M22 a) (M24 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lscale :: M22 a -> M24 a -> M24 a Source #

Semiring a => LeftSemimodule (M11 a) (M14 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

lscale :: M11 a -> M14 a -> M14 a Source #

Semiring a => Bisemimodule (M44 a) (M33 a) (M43 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

discale :: M44 a -> M33 a -> M43 a -> M43 a Source #

Semiring a => Bisemimodule (M44 a) (M22 a) (M42 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

discale :: M44 a -> M22 a -> M42 a -> M42 a Source #

Semiring a => Bisemimodule (M44 a) (M11 a) (M41 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

discale :: M44 a -> M11 a -> M41 a -> M41 a Source #

Semiring a => Bisemimodule (M33 a) (M44 a) (M34 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

discale :: M33 a -> M44 a -> M34 a -> M34 a Source #

Semiring a => Bisemimodule (M22 a) (M44 a) (M24 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

discale :: M22 a -> M44 a -> M24 a -> M24 a Source #

Semiring a => Bisemimodule (M11 a) (M44 a) (M14 a) Source # 
Instance details

Defined in Data.Semimodule.Finite

Methods

discale :: M11 a -> M44 a -> M14 a -> M14 a Source #

type Rep V4 Source # 
Instance details

Defined in Data.Semimodule.Finite

type Rep V4 = E4

Matrix types

type M11 = Compose V1 V1 Source #

A 1x1 matrix.

type M12 = Compose V1 V2 Source #

A 1x2 matrix.

type M13 = Compose V1 V3 Source #

A 1x3 matrix.

type M14 = Compose V1 V4 Source #

A 1x4 matrix.

type M21 = Compose V2 V1 Source #

A 2x1 matrix.

type M31 = Compose V3 V1 Source #

A 3x1 matrix.

type M41 = Compose V4 V1 Source #

A 4x1 matrix.

type M22 = Compose V2 V2 Source #

A 2x2 matrix.

type M23 = Compose V2 V3 Source #

A 2x3 matrix.

type M24 = Compose V2 V4 Source #

A 2x4 matrix.

type M32 = Compose V3 V2 Source #

A 3x2 matrix.

type M33 = Compose V3 V3 Source #

A 3x3 matrix.

type M34 = Compose V3 V4 Source #

A 3x4 matrix.

type M42 = Compose V4 V2 Source #

A 4x2 matrix.

type M43 = Compose V4 V3 Source #

A 4x3 matrix.

type M44 = Compose V4 V4 Source #

A 4x4 matrix.

m11 :: a -> M11 a Source #

Construct a 1x1 matrix.

>>> m11 1 :: M11 Int
Compose (V1 (V1 1))

m12 :: a -> a -> M12 a Source #

Construct a 1x2 matrix.

>>> m12 1 2 :: M12 Int
Compose (V1 (V2 1 2))

m13 :: a -> a -> a -> M13 a Source #

Construct a 1x3 matrix.

>>> m13 1 2 3 :: M13 Int
Compose (V1 (V3 1 2 3))

m14 :: a -> a -> a -> a -> M14 a Source #

Construct a 1x4 matrix.

>>> m14 1 2 3 4 :: M14 Int
Compose (V1 (V4 1 2 3 4))

m21 :: a -> a -> M21 a Source #

Construct a 2x1 matrix.

>>> m21 1 2 :: M21 Int
Compose (V2 (V1 1) (V1 2))

m31 :: a -> a -> a -> M31 a Source #

Construct a 3x1 matrix.

>>> m31 1 2 3 :: M31 Int
Compose (V3 (V1 1) (V1 2) (V1 3))

m41 :: a -> a -> a -> a -> M41 a Source #

Construct a 4x1 matrix.

>>> m41 1 2 3 4 :: M41 Int
Compose (V4 (V1 1) (V1 2) (V1 3) (V1 4))

m22 :: a -> a -> a -> a -> M22 a Source #

Construct a 2x2 matrix.

Arguments are in row-major order.

>>> m22 1 2 3 4 :: M22 Int
Compose (V2 (V2 1 2) (V2 3 4))

m23 :: a -> a -> a -> a -> a -> a -> M23 a Source #

Construct a 2x3 matrix.

Arguments are in row-major order.

m24 :: a -> a -> a -> a -> a -> a -> a -> a -> M24 a Source #

Construct a 2x4 matrix.

Arguments are in row-major order.

m32 :: a -> a -> a -> a -> a -> a -> M32 a Source #

Construct a 3x2 matrix.

Arguments are in row-major order.

m33 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> M33 a Source #

Construct a 3x3 matrix.

Arguments are in row-major order.

m34 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> M34 a Source #

Construct a 3x4 matrix.

Arguments are in row-major order.

m42 :: a -> a -> a -> a -> a -> a -> a -> a -> M42 a Source #

Construct a 4x2 matrix.

Arguments are in row-major order.

m43 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> M43 a Source #

Construct a 4x3 matrix.

Arguments are in row-major order.

m44 :: a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> a -> M44 a Source #

Construct a 4x4 matrix.

Arguments are in row-major order.

Matrix determinants & inverses

inv1 :: Field a => M11 a -> M11 a Source #

1x1 matrix inverse over a field.

>>> inv1 $ m11 4.0 :: M11 Double
Compose (V1 (V1 0.25))

inv2 :: Field a => M22 a -> M22 a Source #

2x2 matrix inverse over a field.

>>> inv2 $ m22 1 2 3 4 :: M22 Double
Compose (V2 (V2 (-2.0) 1.0) (V2 1.5 (-0.5)))

bdet2 :: Semiring a => Basis2 E2 E2 f g => (f ** g) a -> (a, a) Source #

2x2 matrix bdeterminant over a commutative semiring.

>>> bdet2 $ m22 1 2 3 4
(4,6)

det2 :: Ring a => Basis2 E2 E2 f g => (f ** g) a -> a Source #

2x2 matrix determinant over a commutative ring.

det2 = uncurry (-) . bdet2
>>> det2 $ m22 1 2 3 4 :: Double
-2.0

bdet3 :: Semiring a => Basis2 E3 E3 f g => (f ** g) a -> (a, a) Source #

3x3 matrix bdeterminant over a commutative semiring.

>>> bdet3 (V3 (V3 1 2 3) (V3 4 5 6) (V3 7 8 9))
(225, 225)

det3 :: Ring a => Basis2 E3 E3 f g => (f ** g) a -> a Source #

3x3 double-precision matrix determinant.

det3 = uncurry (-) . bdet3

Implementation uses a cofactor expansion to avoid loss of precision.

>>> det3 $ m33 1 2 3 4 5 6 7 8 9
0

inv3 :: Field a => M33 a -> M33 a Source #

3x3 matrix inverse.

>>> inv3 $ m33 1 2 4 4 2 2 1 1 1 :: M33 Double
Compose (V3 (V3 0.0 0.5 (-1.0)) (V3 (-0.5) (-0.75) 3.5) (V3 0.5 0.25 (-1.5)))

bdet4 :: Semiring a => Basis2 E4 E4 f g => (f ** g) a -> (a, a) Source #

4x4 matrix bdeterminant over a commutative semiring.

>>> bdet4 $ m44 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
(27728,27728)

det4 :: Ring a => Basis2 E4 E4 f g => (f ** g) a -> a Source #

4x4 matrix determinant over a commutative ring.

det4 = uncurry (-) . bdet4

This implementation uses a cofactor expansion to avoid loss of precision.

>>> det4 $ m44 1 0 3 2 2 0 2 1 0 0 0 1 0 3 4 0 :: Rational
(-12) % 1

inv4 :: Field a => M44 a -> M44 a Source #

4x4 matrix inverse.

>>> row E41 . inv4 $ m44 1 0 3 2 2 0 2 1 0 0 0 1 0 3 4 0 :: V4 Rational
V4 (6 % (-12)) ((-9) % (-12)) ((-3) % (-12)) (0 % (-12))