Safe Haskell | None |
---|---|
Language | Haskell2010 |
Tensor product (that is, pairs) of monomials
Synopsis
- data Tensor (symbol :: Symbol) (a :: *) (b :: *) = Tensor !a !b
- tensorSymbol :: KnownSymbol sym => Tensor sym a b -> String
- flip :: Tensor sym a b -> Tensor sym b a
- injLeft :: Monoid b => a -> Tensor sym a b
- injRight :: Monoid a => b -> Tensor sym a b
- projLeft :: Tensor sym a b -> a
- projRight :: Tensor sym a b -> b
- diffTensor :: (Monomial a, Monomial b, Num c) => Either (VarM a) (VarM b) -> Int -> Tensor sym a b -> Maybe (Tensor sym a b, c)
- distEither :: (Either a b, c) -> Either (a, c) (b, c)
- unsafeFromLeft :: Either a b -> a
- unsafeFromRight :: Either a b -> b
Documentation
data Tensor (symbol :: Symbol) (a :: *) (b :: *) Source #
Elementary tensors (basically pairs). The phantom type parameter
symbol
is used to render an infix symbol when pretty-printing
Tensor !a !b |
Instances
(Eq a, Eq b) => Eq (Tensor symbol a b) Source # | |
(Ord a, Ord b) => Ord (Tensor symbol a b) Source # | |
Defined in Math.Algebra.Polynomial.Monomial.Tensor compare :: Tensor symbol a b -> Tensor symbol a b -> Ordering # (<) :: Tensor symbol a b -> Tensor symbol a b -> Bool # (<=) :: Tensor symbol a b -> Tensor symbol a b -> Bool # (>) :: Tensor symbol a b -> Tensor symbol a b -> Bool # (>=) :: Tensor symbol a b -> Tensor symbol a b -> Bool # max :: Tensor symbol a b -> Tensor symbol a b -> Tensor symbol a b # min :: Tensor symbol a b -> Tensor symbol a b -> Tensor symbol a b # | |
(Show a, Show b) => Show (Tensor symbol a b) Source # | |
(Semigroup a, Semigroup b) => Semigroup (Tensor sym a b) Source # | |
(Monoid a, Monoid b) => Monoid (Tensor sym a b) Source # | |
(KnownSymbol sym, Pretty a, Pretty b) => Pretty (Tensor sym a b) Source # | |
(KnownSymbol sym, Monomial a, Monomial b) => Monomial (Tensor sym a b) Source # | |
Defined in Math.Algebra.Polynomial.Monomial.Tensor normalizeM :: Tensor sym a b -> Tensor sym a b Source # isNormalM :: Tensor sym a b -> Bool Source # fromListM :: [(VarM (Tensor sym a b), Int)] -> Tensor sym a b Source # toListM :: Tensor sym a b -> [(VarM (Tensor sym a b), Int)] Source # emptyM :: Tensor sym a b Source # isEmptyM :: Tensor sym a b -> Bool Source # variableM :: VarM (Tensor sym a b) -> Tensor sym a b Source # singletonM :: VarM (Tensor sym a b) -> Int -> Tensor sym a b Source # mulM :: Tensor sym a b -> Tensor sym a b -> Tensor sym a b Source # productM :: [Tensor sym a b] -> Tensor sym a b Source # powM :: Tensor sym a b -> Int -> Tensor sym a b Source # divM :: Tensor sym a b -> Tensor sym a b -> Maybe (Tensor sym a b) Source # diffM :: Num c => VarM (Tensor sym a b) -> Int -> Tensor sym a b -> Maybe (Tensor sym a b, c) Source # maxDegM :: Tensor sym a b -> Int Source # totalDegM :: Tensor sym a b -> Int Source # evalM :: Num c => (VarM (Tensor sym a b) -> c) -> Tensor sym a b -> c Source # varSubsM :: (VarM (Tensor sym a b) -> VarM (Tensor sym a b)) -> Tensor sym a b -> Tensor sym a b Source # termSubsM :: Num c => (VarM (Tensor sym a b) -> Maybe c) -> (Tensor sym a b, c) -> (Tensor sym a b, c) Source # | |
type VarM (Tensor sym a b) Source # | |
tensorSymbol :: KnownSymbol sym => Tensor sym a b -> String Source #
Injections
Projections
differentiation
diffTensor :: (Monomial a, Monomial b, Num c) => Either (VarM a) (VarM b) -> Int -> Tensor sym a b -> Maybe (Tensor sym a b, c) Source #
Helpers
distEither :: (Either a b, c) -> Either (a, c) (b, c) Source #
unsafeFromLeft :: Either a b -> a Source #
unsafeFromRight :: Either a b -> b Source #