polynomial-algebra-0.1: Multivariate polynomial rings
Safe HaskellNone
LanguageHaskell2010

Math.Algebra.Polynomial.Monomial.Compact

Description

Multivariate compact monomials where the variable set looks like {x_1, x_2, ... , x_N}.

This is very similar to the "Indexed" version, but should have much more compact in-memory representation (which is useful in case of large or many polynomials, and should be in theory also faster, because of cache friendlyness)

Synopsis

Monomials

newtype Compact (var :: Symbol) (n :: Nat) Source #

Monomials of the variables x1,x2,...,xn. The internal representation is a compact vector of the exponents.

The type is indexed by the name of the variables, and then the number of variables.

Note that we assume here that the internal vector has length n.

Constructors

Compact WordVec 

Instances

Instances details
Eq (Compact var n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Monomial.Compact

Methods

(==) :: Compact var n -> Compact var n -> Bool #

(/=) :: Compact var n -> Compact var n -> Bool #

Ord (Compact var n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Monomial.Compact

Methods

compare :: Compact var n -> Compact var n -> Ordering #

(<) :: Compact var n -> Compact var n -> Bool #

(<=) :: Compact var n -> Compact var n -> Bool #

(>) :: Compact var n -> Compact var n -> Bool #

(>=) :: Compact var n -> Compact var n -> Bool #

max :: Compact var n -> Compact var n -> Compact var n #

min :: Compact var n -> Compact var n -> Compact var n #

Show (Compact var n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Monomial.Compact

Methods

showsPrec :: Int -> Compact var n -> ShowS #

show :: Compact var n -> String #

showList :: [Compact var n] -> ShowS #

KnownNat n => Semigroup (Compact var n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Monomial.Compact

Methods

(<>) :: Compact var n -> Compact var n -> Compact var n #

sconcat :: NonEmpty (Compact var n) -> Compact var n #

stimes :: Integral b => b -> Compact var n -> Compact var n #

KnownNat n => Monoid (Compact var n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Monomial.Compact

Methods

mempty :: Compact var n #

mappend :: Compact var n -> Compact var n -> Compact var n #

mconcat :: [Compact var n] -> Compact var n #

KnownSymbol var => Pretty (Compact var n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Monomial.Compact

(KnownNat n, KnownSymbol v) => Monomial (Compact v n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Monomial.Compact

Associated Types

type VarM (Compact v n) Source #

Methods

normalizeM :: Compact v n -> Compact v n Source #

isNormalM :: Compact v n -> Bool Source #

fromListM :: [(VarM (Compact v n), Int)] -> Compact v n Source #

toListM :: Compact v n -> [(VarM (Compact v n), Int)] Source #

emptyM :: Compact v n Source #

isEmptyM :: Compact v n -> Bool Source #

variableM :: VarM (Compact v n) -> Compact v n Source #

singletonM :: VarM (Compact v n) -> Int -> Compact v n Source #

mulM :: Compact v n -> Compact v n -> Compact v n Source #

productM :: [Compact v n] -> Compact v n Source #

powM :: Compact v n -> Int -> Compact v n Source #

divM :: Compact v n -> Compact v n -> Maybe (Compact v n) Source #

diffM :: Num c => VarM (Compact v n) -> Int -> Compact v n -> Maybe (Compact v n, c) Source #

maxDegM :: Compact v n -> Int Source #

totalDegM :: Compact v n -> Int Source #

evalM :: Num c => (VarM (Compact v n) -> c) -> Compact v n -> c Source #

varSubsM :: (VarM (Compact v n) -> VarM (Compact v n)) -> Compact v n -> Compact v n Source #

termSubsM :: Num c => (VarM (Compact v n) -> Maybe c) -> (Compact v n, c) -> (Compact v n, c) Source #

type VarM (Compact v n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Monomial.Compact

type VarM (Compact v n) = Index

compactVar :: KnownSymbol var => Compact var n -> String Source #

Name of the variables

nOfCompact :: KnownNat n => Compact var n -> Int Source #

Number of variables

Conversion

compactFromList :: KnownNat n => [(Index, Int)] -> Compact v n Source #

from (variable,exponent) pairs

compactToList :: Compact v n -> [(Index, Int)] Source #

to (variable,exponent) pairs

compactFromWordExpoList :: KnownNat n => [Word] -> Compact var n Source #

from Word exponent list

compactToWordExpoList :: Compact var n -> [Word] Source #

to Word exponent list

compactFromExponents :: KnownNat n => [Int] -> Compact v n Source #

from Int exponent list

compactToExponents :: KnownNat n => Compact v n -> [Int] Source #

to Int exponent list

compactFromXS :: KnownNat n => XS v n -> Compact v n Source #

from XS exponent list

compactToXS :: KnownNat n => Compact v n -> XS v n Source #

to XS exponent list

empty (all zero exponents)

normalization

creation

products

mulCompact :: KnownNat n => Compact v n -> Compact v n -> Compact v n Source #

productCompact :: (KnownNat n, Foldable f) => f (Compact v n) -> Compact v n Source #

powCompact :: KnownNat n => Compact v n -> Int -> Compact v n Source #

divCompact :: KnownNat n => Compact v n -> Compact v n -> Maybe (Compact v n) Source #

degree

differentiation

diffCompact :: Num c => Index -> Int -> Compact v n -> Maybe (Compact v n, c) Source #