cifl-math-library-1.1.1.0: Math libraries
Safe HaskellSafe
LanguageHaskell2010

Math.Matrix.Matrix

Synopsis

Documentation

type family Transpose a Source #

Instances

Instances details
type Transpose ((f :*: g) a) Source # 
Instance details

Defined in Math.Matrix.Matrix

type Transpose ((f :*: g) a) = (g :*: f) a

(!$!) :: (Linearizable LinearMap (:*:) f g b, Num b, Functor f, Functor g) => f (a -> b) -> g a -> f b :-> g b Source #

matrixBind :: Functor f => f a -> (a -> g b) -> (f :*: g) b Source #

matrix2d :: (Functor f, Functor g) => (a -> b -> c) -> f a -> g b -> (f :*: g) c Source #

this is same as Matrix.Interface.matrix

matrix3d :: (Functor f, Functor g, Functor h) => (a -> b -> c -> d) -> f a -> g b -> h c -> (f :*: (g :*: h)) d Source #

matrix4d :: (Functor f, Functor g, Functor h, Functor i) => (a -> b -> c -> d -> e) -> f a -> g b -> h c -> i d -> (f :*: (g :*: (h :*: i))) e Source #

constantMatrix :: (Applicative m, Applicative n) => a -> (m :*: n) a Source #

needs type annotation

applyCol :: Applicative f => (f :*: (->) a) b -> f a -> f b Source #

applyRow :: ((->) a :*: g) b -> a -> g b Source #

matrixA :: (ArrowApply arr, FunctorArrow f arr arr, FunctorArrow g arr arr) => arr (a, b) c -> arr (f a, g b) ((f :*: g) c) Source #

mod_linear_map :: (Linearizable LinearMap (:*:) f f a, Diagonalizable f a, Integral (f a)) => f a -> f a :-> f a Source #

https://en.wikipedia.org/wiki/Modular_exponentiation modular_exponentiation m b c == m^b (mod c)

isSymmetric :: (Eq (m (m a)), LinearTransform m m a, Linearizable LinearMap (:*:) m m a, Diagonalizable m a, Transposable m m a, Applicative m, Foldable m, Eq a) => (m a :-> m a) -> Bool Source #

apply_vector :: (LinearTransform m m b, Linearizable LinearMap (:*:) m m b, Transposable m m b, Diagonalizable m b) => m (a -> b) -> m a -> m b Source #

apply_columns :: (Functor n, Functor m, Applicative f) => (m :*: f) (a -> b) -> (n :*: f) a -> (m :*: n) (f b) Source #

matrixAssoc :: Functor f => ((f :*: g) :*: h) a -> (f :*: (g :*: h)) a Source #

matrixUnassoc :: Functor f => (f :*: (g :*: h)) a -> ((f :*: g) :*: h) a Source #

matrixLeftId :: (I :*: f) a -> f a Source #

matrixRightId :: Functor f => (f :*: I) a -> f a Source #

(!*!) :: (Functor f, Functor g, Num a) => g a -> f a -> (g :*: f) a Source #

(<!!>) :: (Ix i, Ix j) => (Array i :*: Array j) a -> (i, j) -> a Source #

project_down :: (Functor (m \\\ m'), ProjectionSpace m m', ProjectionSpace n Vector1) => (m :*: n) a -> (m \\\ m') a Source #

project_right :: (ProjectionSpace m Vector1, ProjectionSpace n n') => (m :*: n) a -> (n \\\ n') a Source #

project_diagonal :: (ProjectionSpace m m', ProjectionSpace n n') => (m :*: n) a -> ((m \\\ m') :*: (n \\\ n')) a Source #

matrix_commutator :: forall {g :: Type -> Type} {a}. (Scalar (g a) ~ a, VectorSpace ((g :*: g) a), InnerProductSpace (g a), ConjugateSymmetric a, Transposable g g a, Num a) => (g :*: g) a -> (g :*: g) a -> (g :*: g) (Scalar (g a)) Source #

matrix_anticommutator :: forall {g :: Type -> Type} {a}. (Scalar (g a) ~ a, VectorSpace ((g :*: g) a), InnerProductSpace (g a), ConjugateSymmetric a, Transposable g g a, Num a) => (g :*: g) a -> (g :*: g) a -> (g :*: g) (Scalar (g a)) Source #

normalized_anticommutator :: forall {g :: Type -> Type} {a}. (Scalar (g a) ~ a, Fractional (Scalar ((g :*: g) a)), InnerProductSpace (g a), ConjugateSymmetric a, Transposable g g a, Num a, VectorSpace ((g :*: g) a)) => (g :*: g) a -> (g :*: g) a -> (g :*: g) a Source #

commute :: forall {g :: Type -> Type} {a}. (Scalar (g a) ~ a, Fractional (Scalar ((g :*: g) a)), InnerProductSpace (g a), ConjugateSymmetric a, Transposable g g a, VectorSpace ((g :*: g) a), Num a) => Complex ((g :*: g) a) -> Complex ((g :*: g) a) -> ((g :*: g) :*: (g :*: g)) (Complex a) Source #

bind_diagonal :: Monad m => (m :*: m) a -> (a -> m b) -> m b Source #

pairMatrix :: (Functor f, Functor g) => f a -> g b -> (f :*: g) (a, b) Source #

(!+!) :: (Functor f, Functor g, Num a) => g a -> f a -> (g :*: f) a Source #

cofunctor_inverse_image :: (Functor f, CoFunctor g) => (a -> b) -> (g :*: f) b -> (g :*: f) a Source #

cofunctor_map :: (CoFunctor f, CoFunctor g) => (a -> b) -> (g :*: f) a -> (g :*: f) b Source #

in_transpose :: (Monad g, Indexable f b, Integral b) => (f :*: g) a -> (a -> (g :*: f) b) -> (f :*: g) b Source #

fmap_split :: (SplittableVector m n, AppendableVector m' n') => (m a -> m' a') -> (n a -> n' a') -> (m :+: n) a -> (m' :+: n') a' Source #

split_matrix :: (SplittableVector m n, SplittableVector f f', Functor (f :+: f'), Functor (m :+: n)) => ((f :+: f') :*: (m :+: n)) a -> (((f :*: m) a, (f :*: n) a), ((f' :*: m) a, (f' :*: n) a)) Source #

append_matrix :: (AppendableVector m' n', AppendableVector m n) => (m :*: m') a -> (m :*: n') a -> (n :*: m') a -> (n :*: n') a -> ((m :+: n) :*: (m' :+: n')) a Source #

matrix_iso :: f (g a) :==: (f :*: g) a Source #

matrix_size :: (CoordinateSpace (g (f a)), CoordinateSpace (f (g a)), Transposable f g a) => (f :*: g) a -> (Int, Int) Source #

Orphan instances

Ix i => PpShowF (Array i) Source # 
Instance details

Methods

ppf :: PpShow a => Array i a -> Doc Source #

Ix i => PpShowVerticalF (Array i) Source # 
Instance details

Methods

ppf_vertical :: PpShow a => Array i a -> Doc Source #

(MonadZip g, MonadZip f, forall b. Transposable f g b) => MonadZip (g :*: f) Source # 
Instance details

Methods

mzip :: (g :*: f) a -> (g :*: f) b -> (g :*: f) (a, b) #

mzipWith :: (a -> b -> c) -> (g :*: f) a -> (g :*: f) b -> (g :*: f) c #

munzip :: (g :*: f) (a, b) -> ((g :*: f) a, (g :*: f) b) #

(Contravariant f, Functor g) => Contravariant (g :*: f) Source # 
Instance details

Methods

contramap :: (a' -> a) -> (g :*: f) a -> (g :*: f) a' #

(>$) :: b -> (g :*: f) b -> (g :*: f) a #

(MonadPlus g, MonadPlus f, forall b. Transposable f g b) => MonadPlus (g :*: f) Source # 
Instance details

Methods

mzero :: (g :*: f) a #

mplus :: (g :*: f) a -> (g :*: f) a -> (g :*: f) a #

(Comonad f, Comonad g, forall a. Transposable g f a, forall b. Transposable f g b, forall a. Diagonalizable f (f (g a)), forall a. LinearTransform g f (f (g a)), forall a. Diagonalizable g (g a), forall a. LinearTransform f g (g a)) => Comonad (f :*: g) Source #

See video by Bartosz Milewski ("Category theory II 7.2: Comonads categorically and examples")

Instance details

Methods

extract :: (f :*: g) a -> a Source #

duplicate :: (f :*: g) a -> (f :*: g) ((f :*: g) a) Source #

extend :: ((f :*: g) a -> b) -> (f :*: g) a -> (f :*: g) b Source #

(=>>) :: (f :*: g) a -> ((f :*: g) a -> b) -> (f :*: g) b Source #

(.>>) :: (f :*: g) a -> b -> (f :*: g) b Source #

(Num a, ConjugateSymmetric a) => LieAlgebra ((Vector3 :*: Vector3) a) Source # 
Instance details

(Num a, ConjugateSymmetric a) => LieAlgebra ((Vector4 :*: Vector4) a) Source # 
Instance details

(Functor f, Functor g) => Builder ((g :*: f) a) Source # 
Instance details

Associated Types

data Unfold ((g :*: f) a) :: Type -> Type Source #

Methods

build :: Unfold ((g :*: f) a) a0 -> a0 -> (g :*: f) a Source #

(Eq a, Applicative f, Applicative g, Foldable f, Foldable g, Ord (f (g a))) => Ord ((f :*: g) a) Source # 
Instance details

Methods

compare :: (f :*: g) a -> (f :*: g) a -> Ordering #

(<) :: (f :*: g) a -> (f :*: g) a -> Bool #

(<=) :: (f :*: g) a -> (f :*: g) a -> Bool #

(>) :: (f :*: g) a -> (f :*: g) a -> Bool #

(>=) :: (f :*: g) a -> (f :*: g) a -> Bool #

max :: (f :*: g) a -> (f :*: g) a -> (f :*: g) a #

min :: (f :*: g) a -> (f :*: g) a -> (f :*: g) a #