| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
NumHask.Algebra.Module
Description
Algebra for Modules
Synopsis
- class Additive a => AdditiveModule r a where
- class (AdditiveGroup a, AdditiveModule r a) => AdditiveGroupModule r a where
- class Multiplicative a => MultiplicativeModule r a where
- class (MultiplicativeGroup a, MultiplicativeModule r a) => MultiplicativeGroupModule r a where
- class (ExpField a, Normed (r a) a, MultiplicativeGroupModule r a) => Banach r a where
- class Semiring a => Hilbert r a where
- type family (a :: k1) >< (b :: k2) :: *
- class TensorProduct a where
Documentation
class Additive a => AdditiveModule r a where #
Additive Module Laws
(a + b) .+ c == a + (b .+ c) (a + b) .+ c == (a .+ c) + b a .+ zero == a a .+ b == b +. a
class (AdditiveGroup a, AdditiveModule r a) => AdditiveGroupModule r a where #
Subtraction Module Laws
(a + b) .- c == a + (b .- c) (a + b) .- c == (a .- c) + b a .- zero == a a .- b == negate b +. a
class Multiplicative a => MultiplicativeModule r a where #
Multiplicative Module Laws
a .* one == a (a + b) .* c == (a .* c) + (b .* c) c *. (a + b) == (c *. a) + (c *. b) a .* zero == zero a .* b == b *. a
class (MultiplicativeGroup a, MultiplicativeModule r a) => MultiplicativeGroupModule r a where #
Division Module Laws
nearZero a || a ./ one == a b == zero || a ./ b == recip b *. a
class (ExpField a, Normed (r a) a, MultiplicativeGroupModule r a) => Banach r a where #
Banach (with Norm) laws form rules around size and direction of a number, with a potential crossing into another codomain.
a == singleton zero || normalizeL2 a *. normL2 a == a
class Semiring a => Hilbert r a where #
the inner product of a representable over a semiring
a <.> b == b <.> a a <.> (b +c) == a <.> b + a <.> c a <.> (s *. b + c) == s * (a <.> b) + a <.> c
Minimal complete definition
type family (a :: k1) >< (b :: k2) :: * infix 8 #
tensorial type
Instances
| type (r a :: *) >< (b :: *) # | |
Defined in NumHask.Algebra.Module | |
| type Double >< Double # | |
Defined in NumHask.Algebra.Module | |
| type Float >< Float # | |
Defined in NumHask.Algebra.Module | |
| type Int >< Int # | |
Defined in NumHask.Algebra.Module | |
| type Int8 >< Int8 # | |
Defined in NumHask.Algebra.Module | |
| type Int16 >< Int16 # | |
Defined in NumHask.Algebra.Module | |
| type Int32 >< Int32 # | |
Defined in NumHask.Algebra.Module | |
| type Int64 >< Int64 # | |
Defined in NumHask.Algebra.Module | |
| type Integer >< Integer # | |
Defined in NumHask.Algebra.Module | |
| type Natural >< Natural # | |
Defined in NumHask.Algebra.Module | |
| type Word >< Word # | |
Defined in NumHask.Algebra.Module | |
| type Word8 >< Word8 # | |
Defined in NumHask.Algebra.Module | |
| type Word16 >< Word16 # | |
Defined in NumHask.Algebra.Module | |
| type Word32 >< Word32 # | |
Defined in NumHask.Algebra.Module | |
| type Word64 >< Word64 # | |
Defined in NumHask.Algebra.Module | |
class TensorProduct a where #
generalised outer product
a><b + c><b == (a+c) >< b a><b + a><c == a >< (b+c)
todo: work out why these laws down't apply > a *. (b>== (a<b) .* c > (a>.* c == a *. (b<c)
Minimal complete definition