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

Math.Matrix.Linear

Synopsis

Documentation

data LinearMap v w where Source #

Constructors

MatIdentity :: LinearMap b b 
Mat11 :: (Num a, ConjugateSymmetric a) => (Vector1 :*: Vector1) a -> LinearMap (Vector1 a) (Vector1 a) 
Mat12 :: (Num a, ConjugateSymmetric a) => (Vector1 :*: Vector2) a -> LinearMap (Vector1 a) (Vector2 a) 
Mat13 :: (Num a, ConjugateSymmetric a) => (Vector1 :*: Vector3) a -> LinearMap (Vector1 a) (Vector3 a) 
Mat14 :: (Num a, ConjugateSymmetric a) => (Vector1 :*: Vector4) a -> LinearMap (Vector1 a) (Vector4 a) 
Mat21 :: (Num a, ConjugateSymmetric a) => (Vector2 :*: Vector1) a -> LinearMap (Vector2 a) (Vector1 a) 
Mat22 :: (Num a, ConjugateSymmetric a) => (Vector2 :*: Vector2) a -> LinearMap (Vector2 a) (Vector2 a) 
Mat23 :: (Num a, ConjugateSymmetric a) => (Vector2 :*: Vector3) a -> LinearMap (Vector2 a) (Vector3 a) 
Mat24 :: (Num a, ConjugateSymmetric a) => (Vector2 :*: Vector4) a -> LinearMap (Vector2 a) (Vector4 a) 
Mat31 :: (Num a, ConjugateSymmetric a) => (Vector3 :*: Vector1) a -> LinearMap (Vector3 a) (Vector1 a) 
Mat32 :: (Num a, ConjugateSymmetric a) => (Vector3 :*: Vector2) a -> LinearMap (Vector3 a) (Vector2 a) 
Mat33 :: (Num a, ConjugateSymmetric a) => (Vector3 :*: Vector3) a -> LinearMap (Vector3 a) (Vector3 a) 
Mat34 :: (Num a, ConjugateSymmetric a) => (Vector3 :*: Vector4) a -> LinearMap (Vector3 a) (Vector4 a) 
Mat41 :: (Num a, ConjugateSymmetric a) => (Vector4 :*: Vector1) a -> LinearMap (Vector4 a) (Vector1 a) 
Mat42 :: (Num a, ConjugateSymmetric a) => (Vector4 :*: Vector2) a -> LinearMap (Vector4 a) (Vector2 a) 
Mat43 :: (Num a, ConjugateSymmetric a) => (Vector4 :*: Vector3) a -> LinearMap (Vector4 a) (Vector3 a) 
Mat44 :: (Num a, ConjugateSymmetric a) => (Vector4 :*: Vector4) a -> LinearMap (Vector4 a) (Vector4 a) 
MatInd :: (Num a, ConjugateSymmetric a, Universe row, Universe col) => ((->) row :*: (->) col) a -> LinearMap (row -> a) (col -> a) 
MatInd1 :: (Num a, ConjugateSymmetric a, Universe row) => ((->) row :*: Vector1) a -> LinearMap (row -> a) (Vector1 a) 
MatInd2 :: (Num a, ConjugateSymmetric a, Universe row) => ((->) row :*: Vector2) a -> LinearMap (row -> a) (Vector2 a) 
MatInd3 :: (Num a, ConjugateSymmetric a, Universe row) => ((->) row :*: Vector3) a -> LinearMap (row -> a) (Vector3 a) 
MatInd4 :: (Num a, ConjugateSymmetric a, Universe row) => ((->) row :*: Vector4) a -> LinearMap (row -> a) (Vector4 a) 
Mat1Ind :: (Num a, ConjugateSymmetric a, Universe col) => (Vector1 :*: (->) col) a -> LinearMap (Vector1 a) (col -> a) 
Mat2Ind :: (Num a, ConjugateSymmetric a, Universe col) => (Vector2 :*: (->) col) a -> LinearMap (Vector2 a) (col -> a) 
Mat3Ind :: (Num a, ConjugateSymmetric a, Universe col) => (Vector3 :*: (->) col) a -> LinearMap (Vector3 a) (col -> a) 
Mat4Ind :: (Num a, ConjugateSymmetric a, Universe col) => (Vector4 :*: (->) col) a -> LinearMap (Vector4 a) (col -> a) 
Mat1D :: (Num a, ConjugateSymmetric a) => (Vector1 :*: Dual) (f a) -> LinearMap (Vector1 (f a)) (Dual (f a)) 
Mat2D :: (Num a, ConjugateSymmetric a) => (Vector2 :*: Dual) (f a) -> LinearMap (Vector2 (f a)) (Dual (f a)) 
Mat3D :: (Num a, ConjugateSymmetric a) => (Vector3 :*: Dual) (f a) -> LinearMap (Vector3 (f a)) (Dual (f a)) 
Mat4D :: (Num a, ConjugateSymmetric a) => (Vector4 :*: Dual) (f a) -> LinearMap (Vector4 (f a)) (Dual (f a)) 
MatD1 :: (Scalar a ~ a, Num a, ConjugateSymmetric a) => (Dual :*: Vector1) a -> LinearMap (Dual a) (Vector1 a) 
MatD2 :: (Scalar a ~ a, Num a, ConjugateSymmetric a) => (Dual :*: Vector2) a -> LinearMap (Dual a) (Vector2 a) 
MatD3 :: (Scalar a ~ a, Num a, ConjugateSymmetric a) => (Dual :*: Vector3) a -> LinearMap (Dual a) (Vector3 a) 
MatD4 :: (Scalar a ~ a, Num a, ConjugateSymmetric a) => (Dual :*: Vector4) a -> LinearMap (Dual a) (Vector4 a) 
MatDD :: (Scalar (f a) ~ f a, Num a, ConjugateSymmetric a) => (Dual :*: Dual) (f a) -> LinearMap (Dual (f a)) (Dual (f a)) 
MatSS :: (Num a, ConjugateSymmetric a, InnerProductSpace (Stream a)) => (Stream :*: Stream) a -> LinearMap (Stream a) (Stream a) 
MatS1 :: (Num a, ConjugateSymmetric a, InnerProductSpace (Stream a)) => (Stream :*: Vector1) a -> LinearMap (Stream a) (Vector1 a) 
MatS2 :: (Num a, ConjugateSymmetric a, InnerProductSpace (Stream a)) => (Stream :*: Vector2) a -> LinearMap (Stream a) (Vector2 a) 
MatS3 :: (Num a, ConjugateSymmetric a, InnerProductSpace (Stream a)) => (Stream :*: Vector3) a -> LinearMap (Stream a) (Vector3 a) 
MatS4 :: (Num a, ConjugateSymmetric a, InnerProductSpace (Stream a)) => (Stream :*: Vector4) a -> LinearMap (Stream a) (Vector4 a) 
Mat1S :: (Num a, ConjugateSymmetric a, InnerProductSpace (Stream a)) => (Vector1 :*: Stream) a -> LinearMap (Vector1 a) (Stream a) 
Mat2S :: (Num a, ConjugateSymmetric a, InnerProductSpace (Stream a)) => (Vector2 :*: Stream) a -> LinearMap (Vector2 a) (Stream a) 
Mat3S :: (Num a, ConjugateSymmetric a, InnerProductSpace (Stream a)) => (Vector3 :*: Stream) a -> LinearMap (Vector3 a) (Stream a) 
Mat4S :: (Num a, ConjugateSymmetric a, InnerProductSpace (Stream a)) => (Vector4 :*: Stream) a -> LinearMap (Vector4 a) (Stream a) 

Instances

Instances details
Category LinearMap Source # 
Instance details

Defined in Math.Matrix.Linear

Methods

id :: forall (a :: k). LinearMap a a #

(.) :: forall (b :: k) (c :: k) (a :: k). LinearMap b c -> LinearMap a b -> LinearMap a c #

HasIdentityLinear Vector1 LinearMap Source # 
Instance details

Defined in Math.Matrix.Linear

HasIdentityLinear Vector2 LinearMap Source # 
Instance details

Defined in Math.Matrix.Linear

HasIdentityLinear Vector3 LinearMap Source # 
Instance details

Defined in Math.Matrix.Linear

HasIdentityLinear Vector4 LinearMap Source # 
Instance details

Defined in Math.Matrix.Linear

(ConjugateSymmetric a, Fractional a) => LinearInvertible LinearMap Vector2 a Source # 
Instance details

Defined in Math.Matrix.Linear

(ConjugateSymmetric a, Num a) => LinearTraceable LinearMap Vector2 a Source # 
Instance details

Defined in Math.Matrix.Linear

(Num a, ConjugateSymmetric a) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Vector1 Vector1 (a :: Type) Source #

NOTICE: Linearizable instances for matrices that have similar dimensions are special.

Instance details

Defined in Math.Matrix.Linear

(Num a, ConjugateSymmetric a) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Vector1 Vector2 (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

(Num a, ConjugateSymmetric a) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Vector1 Vector3 (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

(Num a, ConjugateSymmetric a) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Vector1 Vector4 (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

(Num a, ConjugateSymmetric a, InnerProductSpace (Stream a)) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Vector1 Stream (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

(Num a, ConjugateSymmetric a) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Vector2 Vector1 (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

(Num a, ConjugateSymmetric a) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Vector2 Vector2 (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

(Num a, ConjugateSymmetric a) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Vector2 Vector3 (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

(Num a, ConjugateSymmetric a) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Vector2 Vector4 (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

(Num a, ConjugateSymmetric a, InnerProductSpace (Stream a)) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Vector2 Stream (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

(Num a, ConjugateSymmetric a) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Vector3 Vector1 (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

(Num a, ConjugateSymmetric a) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Vector3 Vector2 (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

(Num a, ConjugateSymmetric a) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Vector3 Vector3 (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

(Num a, ConjugateSymmetric a) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Vector3 Vector4 (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

(Num a, ConjugateSymmetric a, InnerProductSpace (Stream a)) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Vector3 Stream (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

(Num a, ConjugateSymmetric a) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Vector4 Vector1 (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

(Num a, ConjugateSymmetric a) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Vector4 Vector2 (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

(Num a, ConjugateSymmetric a) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Vector4 Vector3 (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

(Num a, ConjugateSymmetric a) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Vector4 Vector4 (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

(Num a, ConjugateSymmetric a, InnerProductSpace (Stream a)) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Vector4 Stream (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

(Scalar a ~ a, Num a, ConjugateSymmetric a) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Dual Vector1 (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

(Scalar a ~ a, Num a, ConjugateSymmetric a) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Dual Vector2 (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

(Scalar a ~ a, Num a, ConjugateSymmetric a) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Dual Vector3 (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

(Scalar a ~ a, Num a, ConjugateSymmetric a) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Dual Vector4 (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

(Num a, ConjugateSymmetric a, InnerProductSpace (Stream a)) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Stream Vector1 (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

(Num a, ConjugateSymmetric a, InnerProductSpace (Stream a)) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Stream Vector2 (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

(Num a, ConjugateSymmetric a, InnerProductSpace (Stream a)) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Stream Vector3 (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

(Num a, ConjugateSymmetric a, InnerProductSpace (Stream a)) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Stream Vector4 (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

(Num a, ConjugateSymmetric a, Diagonalizable Stream a, InnerProductSpace (Stream a)) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Stream Stream (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

(Num a, ConjugateSymmetric a) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Vector1 Dual (f a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

Methods

fromLinear :: LinearMap (Vector1 (f a)) (Dual (f a)) -> (Vector1 :*: Dual) (f a) Source #

linear :: (Vector1 :*: Dual) (f a) -> LinearMap (Vector1 (f a)) (Dual (f a)) Source #

(Num a, ConjugateSymmetric a) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Vector2 Dual (f a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

Methods

fromLinear :: LinearMap (Vector2 (f a)) (Dual (f a)) -> (Vector2 :*: Dual) (f a) Source #

linear :: (Vector2 :*: Dual) (f a) -> LinearMap (Vector2 (f a)) (Dual (f a)) Source #

(Num a, ConjugateSymmetric a) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Vector3 Dual (f a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

Methods

fromLinear :: LinearMap (Vector3 (f a)) (Dual (f a)) -> (Vector3 :*: Dual) (f a) Source #

linear :: (Vector3 :*: Dual) (f a) -> LinearMap (Vector3 (f a)) (Dual (f a)) Source #

(Num a, ConjugateSymmetric a) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Vector4 Dual (f a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

Methods

fromLinear :: LinearMap (Vector4 (f a)) (Dual (f a)) -> (Vector4 :*: Dual) (f a) Source #

linear :: (Vector4 :*: Dual) (f a) -> LinearMap (Vector4 (f a)) (Dual (f a)) Source #

(Scalar (f a) ~ f a, Num a, ConjugateSymmetric a, Diagonalizable Dual (f a)) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Dual Dual (f a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

Methods

fromLinear :: LinearMap (Dual (f a)) (Dual (f a)) -> (Dual :*: Dual) (f a) Source #

linear :: (Dual :*: Dual) (f a) -> LinearMap (Dual (f a)) (Dual (f a)) Source #

(Num a, ConjugateSymmetric a, Universe col) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Vector1 ((->) col :: Type -> Type) (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

Methods

fromLinear :: LinearMap (Vector1 a) (col -> a) -> (Vector1 :*: (->) col) a Source #

linear :: (Vector1 :*: (->) col) a -> LinearMap (Vector1 a) (col -> a) Source #

(Num a, ConjugateSymmetric a, Universe col) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Vector2 ((->) col :: Type -> Type) (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

Methods

fromLinear :: LinearMap (Vector2 a) (col -> a) -> (Vector2 :*: (->) col) a Source #

linear :: (Vector2 :*: (->) col) a -> LinearMap (Vector2 a) (col -> a) Source #

(Num a, ConjugateSymmetric a, Universe col) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Vector3 ((->) col :: Type -> Type) (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

Methods

fromLinear :: LinearMap (Vector3 a) (col -> a) -> (Vector3 :*: (->) col) a Source #

linear :: (Vector3 :*: (->) col) a -> LinearMap (Vector3 a) (col -> a) Source #

(Num a, ConjugateSymmetric a, Universe col) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Vector4 ((->) col :: Type -> Type) (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

Methods

fromLinear :: LinearMap (Vector4 a) (col -> a) -> (Vector4 :*: (->) col) a Source #

linear :: (Vector4 :*: (->) col) a -> LinearMap (Vector4 a) (col -> a) Source #

(Num a, ConjugateSymmetric a, Universe row) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) ((->) row :: Type -> Type) Vector1 (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

Methods

fromLinear :: LinearMap (row -> a) (Vector1 a) -> ((->) row :*: Vector1) a Source #

linear :: ((->) row :*: Vector1) a -> LinearMap (row -> a) (Vector1 a) Source #

(Num a, ConjugateSymmetric a, Universe row) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) ((->) row :: Type -> Type) Vector2 (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

Methods

fromLinear :: LinearMap (row -> a) (Vector2 a) -> ((->) row :*: Vector2) a Source #

linear :: ((->) row :*: Vector2) a -> LinearMap (row -> a) (Vector2 a) Source #

(Num a, ConjugateSymmetric a, Universe row) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) ((->) row :: Type -> Type) Vector3 (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

Methods

fromLinear :: LinearMap (row -> a) (Vector3 a) -> ((->) row :*: Vector3) a Source #

linear :: ((->) row :*: Vector3) a -> LinearMap (row -> a) (Vector3 a) Source #

(Num a, ConjugateSymmetric a, Universe row) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) ((->) row :: Type -> Type) Vector4 (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

Methods

fromLinear :: LinearMap (row -> a) (Vector4 a) -> ((->) row :*: Vector4) a Source #

linear :: ((->) row :*: Vector4) a -> LinearMap (row -> a) (Vector4 a) Source #

(Diagonalizable ((->) row) a, Num a, ConjugateSymmetric a, Universe row, Universe col) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) ((->) row :: Type -> Type) ((->) col :: Type -> Type) (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

Methods

fromLinear :: LinearMap (row -> a) (col -> a) -> ((->) row :*: (->) col) a Source #

linear :: ((->) row :*: (->) col) a -> LinearMap (row -> a) (col -> a) Source #

(ConjugateSymmetric a, Infinitesimal Stream a, VectorSpace a, Closed a) => VectorCrossProduct (Vector2 a :: Type) LinearMap Source # 
Instance details

Defined in Math.Matrix.Linear

(Closed a, Num a, ConjugateSymmetric a) => VectorCrossProduct (Vector3 a :: Type) LinearMap Source # 
Instance details

Defined in Math.Matrix.Linear

(Infinitesimal Stream a, Closed a) => VectorLaplacian (Vector2 a :: Type) LinearMap Source # 
Instance details

Defined in Math.Matrix.Linear

(Closed a, Num a, ConjugateSymmetric a) => VectorLaplacian (Vector3 a :: Type) LinearMap Source # 
Instance details

Defined in Math.Matrix.Linear

(Closed a, ConjugateSymmetric a, LinearTransform Vector4 Vector1 a) => VectorLaplacian (Vector4 a :: Type) LinearMap Source # 
Instance details

Defined in Math.Matrix.LinearOperations

(Foldable f, Diagonalizable f a) => Foldable (LinearMap (f a)) Source #

Foldable instance requires input 'f a' of 'LinearMap (f a)' to be finite.

Instance details

Defined in Math.Matrix.Linear

Methods

fold :: Monoid m => LinearMap (f a) m -> m #

foldMap :: Monoid m => (a0 -> m) -> LinearMap (f a) a0 -> m #

foldMap' :: Monoid m => (a0 -> m) -> LinearMap (f a) a0 -> m #

foldr :: (a0 -> b -> b) -> b -> LinearMap (f a) a0 -> b #

foldr' :: (a0 -> b -> b) -> b -> LinearMap (f a) a0 -> b #

foldl :: (b -> a0 -> b) -> b -> LinearMap (f a) a0 -> b #

foldl' :: (b -> a0 -> b) -> b -> LinearMap (f a) a0 -> b #

foldr1 :: (a0 -> a0 -> a0) -> LinearMap (f a) a0 -> a0 #

foldl1 :: (a0 -> a0 -> a0) -> LinearMap (f a) a0 -> a0 #

toList :: LinearMap (f a) a0 -> [a0] #

null :: LinearMap (f a) a0 -> Bool #

length :: LinearMap (f a) a0 -> Int #

elem :: Eq a0 => a0 -> LinearMap (f a) a0 -> Bool #

maximum :: Ord a0 => LinearMap (f a) a0 -> a0 #

minimum :: Ord a0 => LinearMap (f a) a0 -> a0 #

sum :: Num a0 => LinearMap (f a) a0 -> a0 #

product :: Num a0 => LinearMap (f a) a0 -> a0 #

(ConjugateSymmetric a, Num a, Closed a) => VectorDerivative (Vector1 a) Dual LinearMap Source # 
Instance details

Defined in Math.Matrix.Linear

(ConjugateSymmetric a, Infinitesimal Stream a, Closed a) => VectorDerivative (Vector2 a) Dual LinearMap Source # 
Instance details

Defined in Math.Matrix.Linear

(Closed a, Num a, ConjugateSymmetric a) => VectorDerivative (Vector3 a) Dual LinearMap Source # 
Instance details

Defined in Math.Matrix.Linear

(Num a, Closed a, ConjugateSymmetric a, LinearTransform Vector4 Vector1 a) => VectorDerivative (Vector4 a) Dual LinearMap Source # 
Instance details

Defined in Math.Matrix.LinearOperations

(Num a, ConjugateSymmetric a) => Monoid (Vector1 a :-> Vector1 a) Source #

see "Lawvere,Rosebrugh: Sets for mathematics", pg. 167.

Instance details

Defined in Math.Matrix.Linear

(Semigroup v, VectorSpace v) => Monoid (LinearMap v v) Source # 
Instance details

Defined in Math.Matrix.Covector

Methods

mempty :: LinearMap v v #

mappend :: LinearMap v v -> LinearMap v v -> LinearMap v v #

mconcat :: [LinearMap v v] -> LinearMap v v #

(Num a, ConjugateSymmetric a) => Semigroup (Vector1 a :-> Vector1 a) Source # 
Instance details

Defined in Math.Matrix.Linear

Semigroup v => Semigroup (LinearMap v v) Source # 
Instance details

Defined in Math.Matrix.Covector

Methods

(<>) :: LinearMap v v -> LinearMap v v -> LinearMap v v #

sconcat :: NonEmpty (LinearMap v v) -> LinearMap v v #

stimes :: Integral b => b -> LinearMap v v -> LinearMap v v #

(Closed a, Fractional a, ConjugateSymmetric a) => Num (Stream a :-> Stream a) Source # 
Instance details

Defined in Math.Number.Stream

Methods

(+) :: (Stream a :-> Stream a) -> (Stream a :-> Stream a) -> Stream a :-> Stream a #

(-) :: (Stream a :-> Stream a) -> (Stream a :-> Stream a) -> Stream a :-> Stream a #

(*) :: (Stream a :-> Stream a) -> (Stream a :-> Stream a) -> Stream a :-> Stream a #

negate :: (Stream a :-> Stream a) -> Stream a :-> Stream a #

abs :: (Stream a :-> Stream a) -> Stream a :-> Stream a #

signum :: (Stream a :-> Stream a) -> Stream a :-> Stream a #

fromInteger :: Integer -> Stream a :-> Stream a #

(Diagonalizable f a, Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) f g a, LinearTransform f g a, Show ((f :*: g) a)) => Show (LinearMap (f a) (g a)) Source # 
Instance details

Defined in Math.Matrix.Linear

Methods

showsPrec :: Int -> LinearMap (f a) (g a) -> ShowS #

show :: LinearMap (f a) (g a) -> String #

showList :: [LinearMap (f a) (g a)] -> ShowS #

(Closed a, Num a, ConjugateSymmetric a) => ConjugateSymmetric (Stream a :-> Stream a) Source # 
Instance details

Defined in Math.Number.Stream

Methods

conj :: (Stream a :-> Stream a) -> Stream a :-> Stream a Source #

(Applicative f, Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) g g a, Diagonalizable g a, Applicative g, VectorSpace (f a), VectorSpace (g a), Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) f g a, Num a) => VectorSpace (LinearMap (f a) (g a)) Source # 
Instance details

Defined in Math.Matrix.Linear

Associated Types

type Scalar (LinearMap (f a) (g a)) Source #

Methods

vzero :: LinearMap (f a) (g a) Source #

vnegate :: LinearMap (f a) (g a) -> LinearMap (f a) (g a) Source #

(%+) :: LinearMap (f a) (g a) -> LinearMap (f a) (g a) -> LinearMap (f a) (g a) Source #

(%*) :: Scalar (LinearMap (f a) (g a)) -> LinearMap (f a) (g a) -> LinearMap (f a) (g a) Source #

(PpShowVerticalF f, LinearTransform f g a, Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) f g a, PpShowF g, PpShow a, Diagonalizable f a) => PpShow (LinearMap (f a) (g a)) Source # 
Instance details

Defined in Math.Matrix.Linear

Methods

pp :: LinearMap (f a) (g a) -> Doc Source #

(Eq (f (g a)), Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) f g a) => Eq (f a :-> g a) Source # 
Instance details

Defined in Math.Matrix.Linear

Methods

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

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

(b ~ Scalar a, Scalar (a -> b) ~ b, Integral a, VectorSpace b, ConjugateSymmetric b, Closed b, Infinitesimal Stream b, Eq a, Universe a) => VectorDerivative (a -> b) Dual LinearMap Source # 
Instance details

Defined in Math.Matrix.Simple

Methods

divergence :: LinearMap (a -> b) (a -> b) -> Dual (a -> b) Source #

grad :: Dual (a -> b) -> LinearMap (a -> b) (a -> b) Source #

directional_derivative :: (a -> b) -> Dual (a -> b) -> Dual (a -> b) Source #

laplace :: Dual (a -> b) -> Dual (a -> b) Source #

(Integral col, Floating elem, Scalar (col -> elem) ~ elem, VectorSpace elem, Fractional (Scalar elem), Integral row, Universe row, Universe col, ConjugateSymmetric elem) => Num ((row :&: col) elem) Source # 
Instance details

Defined in Math.Matrix.Simple

Methods

(+) :: (row :&: col) elem -> (row :&: col) elem -> (row :&: col) elem #

(-) :: (row :&: col) elem -> (row :&: col) elem -> (row :&: col) elem #

(*) :: (row :&: col) elem -> (row :&: col) elem -> (row :&: col) elem #

negate :: (row :&: col) elem -> (row :&: col) elem #

abs :: (row :&: col) elem -> (row :&: col) elem #

signum :: (row :&: col) elem -> (row :&: col) elem #

fromInteger :: Integer -> (row :&: col) elem #

(Integral row, Universe row, SupportsMatrixMultiplication ((->) row) ((->) row) ((->) row) a) => LieAlgebra ((row :&: row) a) Source # 
Instance details

Defined in Math.Matrix.Simple

Methods

(%<>%) :: (row :&: row) a -> (row :&: row) a -> (row :&: row) a Source #

(VectorSpace a, Integral col, Integral row, Universe row, ConjugateSymmetric a, Universe col, Floating a, Integral row, Scalar (col -> a) ~ a) => NormedSpace ((row :&: col) a) Source # 
Instance details

Defined in Math.Matrix.Simple

Methods

norm :: (row :&: col) a -> Scalar ((row :&: col) a) Source #

norm_squared :: (row :&: col) a -> Scalar ((row :&: col) a) Source #

type Scalar (LinearMap (f a) (g a)) Source # 
Instance details

Defined in Math.Matrix.Linear

type Scalar (LinearMap (f a) (g a)) = a

linear_map :: Linearizable LinearMap (:*:) f g a => (f :*: g) a -> f a :-> g a Source #

Specialization of linear from Linearizable class to LinearMap. converts from matrix representation to linear map representation.

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

lin_tensor :: (Linearizable arr (:*:) f g (h b), LinearTransform ((,) a) h c, Functor f, Functor g) => ((a, c) :-> h b) -> (f a, g c) -> arr (f (h b)) (g (h b)) Source #

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

linear_map_plus :: (Num a, Applicative f, Applicative g, Linearizable LinearMap (:*:) f g a) => (f a :-> g a) -> (f a :-> g a) -> f a :-> g a Source #

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

data Dual v where Source #

Data type for dual vectors. https://en.wikipedia.org/wiki/Dual_space

Constructors

Covector :: (f a :-> Vector1 (Scalar (f a))) -> Dual (f a) 

Instances

Instances details
(ConjugateSymmetric a, Num a) => ProjectionDual Vector1 Dual a Source # 
Instance details

Defined in Math.Matrix.Linear

(ConjugateSymmetric a, Num a) => ProjectionDual Vector2 Dual a Source # 
Instance details

Defined in Math.Matrix.Linear

(Num a, ConjugateSymmetric a) => ProjectionDual Vector3 Dual a Source # 
Instance details

Defined in Math.Matrix.Linear

(Num a, ConjugateSymmetric a) => ProjectionDual Vector4 Dual a Source # 
Instance details

Defined in Math.Matrix.LinearOperations

(Scalar a ~ a, Num a, ConjugateSymmetric a) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Dual Vector1 (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

(Scalar a ~ a, Num a, ConjugateSymmetric a) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Dual Vector2 (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

(Scalar a ~ a, Num a, ConjugateSymmetric a) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Dual Vector3 (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

(Scalar a ~ a, Num a, ConjugateSymmetric a) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Dual Vector4 (a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

(Num a, ConjugateSymmetric a) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Vector1 Dual (f a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

Methods

fromLinear :: LinearMap (Vector1 (f a)) (Dual (f a)) -> (Vector1 :*: Dual) (f a) Source #

linear :: (Vector1 :*: Dual) (f a) -> LinearMap (Vector1 (f a)) (Dual (f a)) Source #

(Num a, ConjugateSymmetric a) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Vector2 Dual (f a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

Methods

fromLinear :: LinearMap (Vector2 (f a)) (Dual (f a)) -> (Vector2 :*: Dual) (f a) Source #

linear :: (Vector2 :*: Dual) (f a) -> LinearMap (Vector2 (f a)) (Dual (f a)) Source #

(Num a, ConjugateSymmetric a) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Vector3 Dual (f a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

Methods

fromLinear :: LinearMap (Vector3 (f a)) (Dual (f a)) -> (Vector3 :*: Dual) (f a) Source #

linear :: (Vector3 :*: Dual) (f a) -> LinearMap (Vector3 (f a)) (Dual (f a)) Source #

(Num a, ConjugateSymmetric a) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Vector4 Dual (f a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

Methods

fromLinear :: LinearMap (Vector4 (f a)) (Dual (f a)) -> (Vector4 :*: Dual) (f a) Source #

linear :: (Vector4 :*: Dual) (f a) -> LinearMap (Vector4 (f a)) (Dual (f a)) Source #

(Scalar (f a) ~ f a, Num a, ConjugateSymmetric a, Diagonalizable Dual (f a)) => Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Dual Dual (f a :: Type) Source # 
Instance details

Defined in Math.Matrix.Linear

Methods

fromLinear :: LinearMap (Dual (f a)) (Dual (f a)) -> (Dual :*: Dual) (f a) Source #

linear :: (Dual :*: Dual) (f a) -> LinearMap (Dual (f a)) (Dual (f a)) Source #

(Dualizable (f v) Dual, LinearTransform f Vector1 v, ConjugateSymmetric v, Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) f Vector1 v, FractionalSpace (f v), v ~ Scalar (f v), Floating v, Diagonalizable f v) => Floating (Dual (f v)) Source # 
Instance details

Defined in Math.Matrix.Covector

Methods

pi :: Dual (f v) #

exp :: Dual (f v) -> Dual (f v) #

log :: Dual (f v) -> Dual (f v) #

sqrt :: Dual (f v) -> Dual (f v) #

(**) :: Dual (f v) -> Dual (f v) -> Dual (f v) #

logBase :: Dual (f v) -> Dual (f v) -> Dual (f v) #

sin :: Dual (f v) -> Dual (f v) #

cos :: Dual (f v) -> Dual (f v) #

tan :: Dual (f v) -> Dual (f v) #

asin :: Dual (f v) -> Dual (f v) #

acos :: Dual (f v) -> Dual (f v) #

atan :: Dual (f v) -> Dual (f v) #

sinh :: Dual (f v) -> Dual (f v) #

cosh :: Dual (f v) -> Dual (f v) #

tanh :: Dual (f v) -> Dual (f v) #

asinh :: Dual (f v) -> Dual (f v) #

acosh :: Dual (f v) -> Dual (f v) #

atanh :: Dual (f v) -> Dual (f v) #

log1p :: Dual (f v) -> Dual (f v) #

expm1 :: Dual (f v) -> Dual (f v) #

log1pexp :: Dual (f v) -> Dual (f v) #

log1mexp :: Dual (f v) -> Dual (f v) #

DualNum f v => Num (Dual (f v)) Source # 
Instance details

Defined in Math.Matrix.Covector

Methods

(+) :: Dual (f v) -> Dual (f v) -> Dual (f v) #

(-) :: Dual (f v) -> Dual (f v) -> Dual (f v) #

(*) :: Dual (f v) -> Dual (f v) -> Dual (f v) #

negate :: Dual (f v) -> Dual (f v) #

abs :: Dual (f v) -> Dual (f v) #

signum :: Dual (f v) -> Dual (f v) #

fromInteger :: Integer -> Dual (f v) #

(DualNum f v, FractionalSpace (f v)) => Fractional (Dual (f v)) Source # 
Instance details

Defined in Math.Matrix.Covector

Methods

(/) :: Dual (f v) -> Dual (f v) -> Dual (f v) #

recip :: Dual (f v) -> Dual (f v) #

fromRational :: Rational -> Dual (f v) #

(DualNum f v, StandardBasis (f v), Show v) => Show (Dual (f v)) Source # 
Instance details

Defined in Math.Matrix.Covector

Methods

showsPrec :: Int -> Dual (f v) -> ShowS #

show :: Dual (f v) -> String #

showList :: [Dual (f v)] -> ShowS #

(StandardBasis (f v), Num v, VectorSpace (f v), DualNum f v) => InnerProductSpace (Dual (f v)) Source # 
Instance details

Defined in Math.Matrix.Covector

Methods

(%.) :: Dual (f v) -> Dual (f v) -> Scalar (Dual (f v)) Source #

(v ~ Scalar (f v), VectorSpace (f v), DualNum f v) => LieAlgebra (Dual (f v)) Source # 
Instance details

Defined in Math.Matrix.Covector

Methods

(%<>%) :: Dual (f v) -> Dual (f v) -> Dual (f v) Source #

(Num a, ConjugateSymmetric a, Linearizable LinearMap ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) f Vector1 a, Diagonalizable f a, LinearTransform f Vector1 a) => VectorSpace (Dual (f a)) Source # 
Instance details

Defined in Math.Matrix.Linear

Associated Types

type Scalar (Dual (f a)) Source #

Methods

vzero :: Dual (f a) Source #

vnegate :: Dual (f a) -> Dual (f a) Source #

(%+) :: Dual (f a) -> Dual (f a) -> Dual (f a) Source #

(%*) :: Scalar (Dual (f a)) -> Dual (f a) -> Dual (f a) Source #

(ConjugateSymmetric a, Num a) => Dualizable (Vector1 a) Dual Source # 
Instance details

Defined in Math.Matrix.Linear

Methods

covector :: (Vector1 a -> Scalar (Vector1 a)) -> Dual (Vector1 a) Source #

bracket :: Dual (Vector1 a) -> Vector1 a -> Scalar (Vector1 a) Source #

(Num a, ConjugateSymmetric a) => Dualizable (Vector2 a) Dual Source # 
Instance details

Defined in Math.Matrix.Linear

Methods

covector :: (Vector2 a -> Scalar (Vector2 a)) -> Dual (Vector2 a) Source #

bracket :: Dual (Vector2 a) -> Vector2 a -> Scalar (Vector2 a) Source #

(ConjugateSymmetric a, Num a) => Dualizable (Vector3 a) Dual Source # 
Instance details

Defined in Math.Matrix.Linear

Methods

covector :: (Vector3 a -> Scalar (Vector3 a)) -> Dual (Vector3 a) Source #

bracket :: Dual (Vector3 a) -> Vector3 a -> Scalar (Vector3 a) Source #

(ConjugateSymmetric a, Num a) => Dualizable (Vector4 a) Dual Source # 
Instance details

Defined in Math.Matrix.Linear

Methods

covector :: (Vector4 a -> Scalar (Vector4 a)) -> Dual (Vector4 a) Source #

bracket :: Dual (Vector4 a) -> Vector4 a -> Scalar (Vector4 a) Source #

(ConjugateSymmetric a, Num a, Closed a) => VectorDerivative (Vector1 a) Dual LinearMap Source # 
Instance details

Defined in Math.Matrix.Linear

(ConjugateSymmetric a, Infinitesimal Stream a, Closed a) => VectorDerivative (Vector2 a) Dual LinearMap Source # 
Instance details

Defined in Math.Matrix.Linear

(Closed a, Num a, ConjugateSymmetric a) => VectorDerivative (Vector3 a) Dual LinearMap Source # 
Instance details

Defined in Math.Matrix.Linear

(Num a, Closed a, ConjugateSymmetric a, LinearTransform Vector4 Vector1 a) => VectorDerivative (Vector4 a) Dual LinearMap Source # 
Instance details

Defined in Math.Matrix.LinearOperations

(Integral a, Universe a, Num b, ConjugateSymmetric b) => Dualizable (a -> b) Dual Source # 
Instance details

Defined in Math.Matrix.Simple

Methods

covector :: ((a -> b) -> Scalar (a -> b)) -> Dual (a -> b) Source #

bracket :: Dual (a -> b) -> (a -> b) -> Scalar (a -> b) Source #

(b ~ Scalar a, Scalar (a -> b) ~ b, Integral a, VectorSpace b, ConjugateSymmetric b, Closed b, Infinitesimal Stream b, Eq a, Universe a) => VectorDerivative (a -> b) Dual LinearMap Source # 
Instance details

Defined in Math.Matrix.Simple

Methods

divergence :: LinearMap (a -> b) (a -> b) -> Dual (a -> b) Source #

grad :: Dual (a -> b) -> LinearMap (a -> b) (a -> b) Source #

directional_derivative :: (a -> b) -> Dual (a -> b) -> Dual (a -> b) Source #

laplace :: Dual (a -> b) -> Dual (a -> b) Source #

(ConjugateSymmetric a, Num a) => StandardBasis ((Dual :*: Vector2) a) Source #

https://en.wikipedia.org/wiki/Dual_space

Instance details

Defined in Math.Matrix.Covector

(Num a, ConjugateSymmetric a) => StandardBasis ((Dual :*: Vector3) a) Source #

https://en.wikipedia.org/wiki/Dual_space

Instance details

Defined in Math.Matrix.Linear

type Scalar (Dual (f a)) Source # 
Instance details

Defined in Math.Matrix.Linear

type Scalar (Dual (f a)) = Scalar (f a)

type (:->) a b = LinearMap a b infixr 0 Source #

data v :<->: w where Source #

Constructors

(:<->:) :: (v :-> w) -> (w :-> v) -> v :<->: w 

Instances

Instances details
Category (:<->:) Source # 
Instance details

Defined in Math.Matrix.Linear

Methods

id :: forall (a :: k). a :<->: a #

(.) :: forall (b :: k) (c :: k) (a :: k). (b :<->: c) -> (a :<->: b) -> a :<->: c #

type End a = LinearMap a a Source #

type Aut a = a :<->: a Source #

type GL a = a :<->: a Source #

compose_linear :: (v :-> w) -> (u :-> v) -> u :-> w Source #

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

invert_matrix :: (Eq a, Num a, Invertible m a, LinearInvertible LinearMap m a) => (m a :-> m a) -> Maybe (m a :-> m a) Source #

lin_outer :: (Linearizable LinearMap (:*:) f g a, Diagonalizable f a, InnerProductSpace (f a), VectorSpace (g a), Scalar (f a) ~ Scalar (g a)) => f a -> g a -> f a :-> g a Source #

matrixLin :: (LinearTransform f g c, Linearizable LinearMap (:*:) f g c) => (a -> b -> c) -> f a -> g b -> f c :-> g c Source #

linmatrix :: (Functor g, Functor f, LinearTransform ((,) (t a)) v (u a), Linearizable LinearMap (:*:) f g (v (u a))) => ((t a, u a) :-> v (u a)) -> (f (t a), g (u a)) -> f (v (u a)) :-> g (v (u a)) Source #

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

bilinear :: (VectorSpace ((f :*: g) a), VectorSpace (g a), a ~ Scalar (g a), Indexable f a, Indexable g a, Integral a, Linearizable LinearMap (:*:) f g a) => (f a -> f a -> g a) -> f a -> f a -> f a :-> g a Source #

dual_map :: (Transposable g f a, Linearizable arr1 (:*:) f g a, Linearizable arr2 (:*:) g f a) => arr2 (g a) (f a) -> arr1 (f a) (g a) Source #

linear_applicative :: (LinearTransform f g c, Linearizable LinearMap (:*:) f g c) => f (b -> c) -> g b -> f c :-> g c Source #

linear_apply_map :: (LinearTransform f g (u c), LinearTransform t u c, Linearizable LinearMap (:*:) f g (u c)) => f (t c :-> u c) -> g (t c) -> f (u c) :-> g (u c) Source #

(-!<) :: LinearTransform f g a => (f a :-> g a) -> f a -> g a infixr 8 Source #

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

linear_apply :: (LinearTransform m n a, Linearizable arr (:*:) m n a) => arr (m a) (n a) -> m a -> n a Source #

linear_apply_inverse :: (LinearTransform m n a, Linearizable arr (:*:) m n a) => arr (m a) (n a) -> n a -> m a Source #

(-!!<) :: LinearTransform f Vector1 r => (f r :-> Vector1 r) -> f r -> r infixr 8 Source #

for linear maps that produce scalars

linear_outer_product :: (LinearTransform f g a, InnerProductSpace (v a), Linearizable LinearMap (:*:) f g a, Scalar (v a) ~ a) => f (v a) -> g (v a) -> f a :-> g a Source #

mapInnerProduct :: (InnerProductSpace (n a), LinearTransform m n a) => (m a :-> n a) -> m a -> m a -> Scalar (n a) Source #

linear_invert :: (Transposable g f a, Linearizable LinearMap (:*:) f g a, Linearizable LinearMap (:*:) g f a) => (g a :-> f a) -> f a :-> g a Source #

(<<*>>) :: (LinearTransform f g a, InnerProductSpace (v a), Scalar (v a) ~ a, Linearizable LinearMap (:*:) f g a) => f (v a) -> g (v a) -> f a :-> g a Source #

matrix_equalizer :: (Eq (Scalar (h a)), Eq (g (f a)), Linearizable LinearMap (:*:) h f a, Linearizable LinearMap (:*:) g h a, SupportsMatrixMultiplication g h f a, Applicative g, Applicative f, Foldable g, Foldable f) => (g a :-> h a) -> (g a :-> h a) -> Prop (h a :-> f a) Source #

directional_derivative_prim :: (Infinitesimal str (Scalar (v a)), Fractional (Scalar (v a)), VectorSpace (v a)) => v a -> (v a -> Scalar (v a)) -> v a -> Closure str (Scalar (v a)) Source #

https://en.wikipedia.org/wiki/Directional_derivative Note: the direction v is not guaranteed to be normalized.

data Tangent str p where Source #

Constructors

Tangent 

Fields

vector_directional_derivative_prim :: (Infinitesimal str (Scalar v), VectorSpace a, VectorSpace v, Limiting str a, Scalar a ~ Scalar v) => v -> (v -> a) -> v -> Tangent str (v, a) Source #

directional_derivative_impl :: (LinearTransform v Vector1 a, Closed a, VectorSpace (v a), Linearizable LinearMap (:*:) v Vector1 a, Diagonalizable v a, Scalar (v a) ~ a) => v a -> Dual (v a) -> Dual (v a) Source #

https://en.wikipedia.org/wiki/Directional_derivative Note: the direction v is not guaranteed to be normalized.

default_vector_laplace :: (VectorDerivative v Dual arr, VectorCrossProduct v arr, VectorSpace (arr v v)) => arr v v -> arr v v Source #

del3 :: (ConjugateSymmetric v, Num v, Closed v) => Vector3 (Dual (Vector3 v) -> Dual (Vector3 v)) Source #

\[\nabla_3\], three-dimensional partial derivate. Use Applicative.<*> for applying it.

del_vector3 :: Infinitesimal s a => (Vector3 a -> a) -> Vector3 a -> Vector3 (Closure s a) Source #

this computes partial derivates of the scalar-valued 3D vector field along each variable simultaneously. \[\nabla f({\mathbb{v}}) = \frac{\partial \mathbb{f}}{\partial x}{\mathbb{i}} + \frac{\partial \mathbb{f}}{\partial y}{\mathbb{j}} + \frac{\partial \mathbb{f}}{\partial z}{\mathbb{k}}\]

pderive3 :: (Closed a, Num a) => Vector3 (a -> a) -> Vector3 a -> Vector3 a Source #

partial derivate a function defined for each coordinate along each dimension of three-dimensional vector.

vector_field_derivate :: (Closed a, Num a) => (Vector3 a -> a) -> Vector3 a -> Vector3 a Source #

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

cells_linear :: Linearizable LinearMap (:*:) f g a => (f a :-> g a) -> f (g a) Source #

lin_bind :: (Linearizable LinearMap (:*:) f g a, Linearizable LinearMap (:*:) f h b, Monad f) => (f a :-> g a) -> (g a -> f b :-> h b) -> f b :-> h b Source #

covector_impl :: (Linearizable LinearMap (:*:) f Vector1 b, Scalar (f b) ~ b, Diagonalizable f b) => (f b -> b) -> Dual (f b) Source #

linear_outer_product_ :: (Scalar (f a) ~ Scalar (g a), Linearizable arr ((:*:) :: (Type -> Type) -> (Type -> Type) -> Type -> Type) f g a, Diagonalizable f a, InnerProductSpace (f a), VectorSpace (g a)) => f a -> g a -> arr (f a) (g a) Source #

arr_linear :: (Linearizable arr (:*:) f g a, Diagonalizable f a) => (f a -> g a) -> arr (f a) (g a) Source #

arr_natural :: (Linearizable arr (:*:) f g a, Diagonalizable f a) => (f :~> g) -> arr (f a) (g a) Source #

bracketMap :: Dual (f a) -> f a :-> Vector1 (Scalar (f a)) Source #

bracket_impl :: LinearTransform f Vector1 a => Dual (f a) -> f a -> a Source #

Orphan instances

DifferentialOperator Vector3 Source # 
Instance details

Methods

partial :: DifferentiallyClosed a => (Vector3 a -> a) -> Vector3 a -> Vector3 a Source #

Universe a => Foldable ((->) a) Source # 
Instance details

Methods

fold :: Monoid m => (a -> m) -> m #

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

foldMap' :: Monoid m => (a0 -> m) -> (a -> a0) -> m #

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

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

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

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

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

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

toList :: (a -> a0) -> [a0] #

null :: (a -> a0) -> Bool #

length :: (a -> a0) -> Int #

elem :: Eq a0 => a0 -> (a -> a0) -> Bool #

maximum :: Ord a0 => (a -> a0) -> a0 #

minimum :: Ord a0 => (a -> a0) -> a0 #

sum :: Num a0 => (a -> a0) -> a0 #

product :: Num a0 => (a -> a0) -> a0 #

(Fractional a, ConjugateSymmetric a) => Fractional ((Vector2 :*: Vector2) a) Source # 
Instance details