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

Math.Algebra.Polynomial.Class

Synopsis

Indices

newtype Index Source #

The index of a variable. This will be used as the variable type when the set of variables is a continguous set like {x_1, x_2, ... , x_N}

Constructors

Index Int 

Instances

Instances details
Enum Index Source # 
Instance details

Defined in Math.Algebra.Polynomial.Class

Eq Index Source # 
Instance details

Defined in Math.Algebra.Polynomial.Class

Methods

(==) :: Index -> Index -> Bool #

(/=) :: Index -> Index -> Bool #

Ord Index Source # 
Instance details

Defined in Math.Algebra.Polynomial.Class

Methods

compare :: Index -> Index -> Ordering #

(<) :: Index -> Index -> Bool #

(<=) :: Index -> Index -> Bool #

(>) :: Index -> Index -> Bool #

(>=) :: Index -> Index -> Bool #

max :: Index -> Index -> Index #

min :: Index -> Index -> Index #

Show Index Source # 
Instance details

Defined in Math.Algebra.Polynomial.Class

Methods

showsPrec :: Int -> Index -> ShowS #

show :: Index -> String #

showList :: [Index] -> ShowS #

Pretty Index Source # 
Instance details

Defined in Math.Algebra.Polynomial.Class

Rings

class (Eq c, Ord c, Num c, IsSigned c, Show c, Pretty c, Typeable c) => Ring c where Source #

The class of coefficient rings.

Since base rings like integers or rational behave differently than say another polynomial ring as a coefficient ring, we have to be explicit about some things (mainly for pretty-printing purposes

TODO: clean this up!

Minimal complete definition

Nothing

Instances

Instances details
Ring Int Source # 
Instance details

Defined in Math.Algebra.Polynomial.Class

Ring Integer Source # 
Instance details

Defined in Math.Algebra.Polynomial.Class

Ring Rational Source # 
Instance details

Defined in Math.Algebra.Polynomial.Class

(Ring c, KnownSymbol v) => Ring (Poly c v) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Multivariate.Infinite

Methods

isZeroR :: Poly c v -> Bool Source #

signumR :: Poly c v -> Maybe Sign Source #

absR :: Poly c v -> Poly c v Source #

isSignedR :: Proxy (Poly c v) -> Bool Source #

isAtomicR :: Proxy (Poly c v) -> Bool Source #

(Ring c, Variable v) => Ring (Poly c v) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Multivariate.Generic

Methods

isZeroR :: Poly c v -> Bool Source #

signumR :: Poly c v -> Maybe Sign Source #

absR :: Poly c v -> Poly c v Source #

isSignedR :: Proxy (Poly c v) -> Bool Source #

isAtomicR :: Proxy (Poly c v) -> Bool Source #

(Ring c, KnownSymbol v) => Ring (Univariate c v) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Univariate

(Ring c, KnownSymbol v, KnownNat n) => Ring (Poly c v n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Multivariate.Indexed

Methods

isZeroR :: Poly c v n -> Bool Source #

signumR :: Poly c v n -> Maybe Sign Source #

absR :: Poly c v n -> Poly c v n Source #

isSignedR :: Proxy (Poly c v n) -> Bool Source #

isAtomicR :: Proxy (Poly c v n) -> Bool Source #

(Ring c, KnownSymbol v, KnownNat n) => Ring (Poly c v n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Multivariate.Compact

Methods

isZeroR :: Poly c v n -> Bool Source #

signumR :: Poly c v n -> Maybe Sign Source #

absR :: Poly c v n -> Poly c v n Source #

isSignedR :: Proxy (Poly c v n) -> Bool Source #

isAtomicR :: Proxy (Poly c v n) -> Bool Source #

(Ring c, KnownSymbol v, KnownNat n) => Ring (ExtAlg c v n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Exterior.Indexed

Methods

isZeroR :: ExtAlg c v n -> Bool Source #

signumR :: ExtAlg c v n -> Maybe Sign Source #

absR :: ExtAlg c v n -> ExtAlg c v n Source #

isSignedR :: Proxy (ExtAlg c v n) -> Bool Source #

isAtomicR :: Proxy (ExtAlg c v n) -> Bool Source #

type Field c = (Ring c, Fractional c) Source #

The class of coefficient fields (this is just a constraint synonym for now)

type Variable v = (Ord v, Show v, Pretty v, Typeable v) Source #

The class of types whose inhabitants can serve as variables (this is just a constraint synonym for now)

Monomials

class Pretty m => Monomial m where Source #

The class of (multivariate) monomials

The Maybe-s are there to allow truncated and exterior polynomial rings

Associated Types

type VarM m :: * Source #

the type of variables

Methods

normalizeM Source #

Arguments

:: m 
-> m

enforce the invariant

isNormalM Source #

Arguments

:: m 
-> Bool

check the invariant construction and deconstruction

fromListM Source #

Arguments

:: [(VarM m, Int)] 
-> m

construction from (variable,exponent) pairs

toListM Source #

Arguments

:: m 
-> [(VarM m, Int)]

extracting (variable,exponent) pairs simple monomials

emptyM Source #

Arguments

:: m

the empty monomial (corresponding to the polynomial 1)

isEmptyM Source #

Arguments

:: m 
-> Bool

checks whether it is empty

variableM Source #

Arguments

:: VarM m 
-> m

a single variable

singletonM Source #

Arguments

:: VarM m 
-> Int 
-> m

a single variable raised to a power algebra

mulM Source #

Arguments

:: m 
-> m 
-> m

multiplication of monomials

productM Source #

Arguments

:: [m] 
-> m

product of several monomials

powM Source #

Arguments

:: m 
-> Int 
-> m

raising to a power

divM Source #

Arguments

:: m 
-> m 
-> Maybe m

division of monomials calculus

diffM Source #

Arguments

:: Num c 
=> VarM m 
-> Int 
-> m 
-> Maybe (m, c)

differentiation degrees

maxDegM Source #

Arguments

:: m 
-> Int

maximum degree

totalDegM Source #

Arguments

:: m 
-> Int

total degree substitution and evaluation

evalM Source #

Arguments

:: Num c 
=> (VarM m -> c) 
-> m 
-> c

ring substitution (evaluation)

varSubsM Source #

Arguments

:: (VarM m -> VarM m) 
-> m 
-> m

simple variable substitution

termSubsM Source #

Arguments

:: Num c 
=> (VarM m -> Maybe c) 
-> (m, c) 
-> (m, c)

term substitution

Instances

Instances details
KnownSymbol var => Monomial (U var) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Monomial.Univariate

Associated Types

type VarM (U var) Source #

Methods

normalizeM :: U var -> U var Source #

isNormalM :: U var -> Bool Source #

fromListM :: [(VarM (U var), Int)] -> U var Source #

toListM :: U var -> [(VarM (U var), Int)] Source #

emptyM :: U var Source #

isEmptyM :: U var -> Bool Source #

variableM :: VarM (U var) -> U var Source #

singletonM :: VarM (U var) -> Int -> U var Source #

mulM :: U var -> U var -> U var Source #

productM :: [U var] -> U var Source #

powM :: U var -> Int -> U var Source #

divM :: U var -> U var -> Maybe (U var) Source #

diffM :: Num c => VarM (U var) -> Int -> U var -> Maybe (U var, c) Source #

maxDegM :: U var -> Int Source #

totalDegM :: U var -> Int Source #

evalM :: Num c => (VarM (U var) -> c) -> U var -> c Source #

varSubsM :: (VarM (U var) -> VarM (U var)) -> U var -> U var Source #

termSubsM :: Num c => (VarM (U var) -> Maybe c) -> (U var, c) -> (U var, c) Source #

KnownSymbol v => Monomial (XInf v) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Monomial.Infinite

Associated Types

type VarM (XInf v) Source #

Methods

normalizeM :: XInf v -> XInf v Source #

isNormalM :: XInf v -> Bool Source #

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

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

emptyM :: XInf v Source #

isEmptyM :: XInf v -> Bool Source #

variableM :: VarM (XInf v) -> XInf v Source #

singletonM :: VarM (XInf v) -> Int -> XInf v Source #

mulM :: XInf v -> XInf v -> XInf v Source #

productM :: [XInf v] -> XInf v Source #

powM :: XInf v -> Int -> XInf v Source #

divM :: XInf v -> XInf v -> Maybe (XInf v) Source #

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

maxDegM :: XInf v -> Int Source #

totalDegM :: XInf v -> Int Source #

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

varSubsM :: (VarM (XInf v) -> VarM (XInf v)) -> XInf v -> XInf v Source #

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

(Ord v, Pretty v) => Monomial (Monom v) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Monomial.Generic

Associated Types

type VarM (Monom v) Source #

Methods

normalizeM :: Monom v -> Monom v Source #

isNormalM :: Monom v -> Bool Source #

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

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

emptyM :: Monom v Source #

isEmptyM :: Monom v -> Bool Source #

variableM :: VarM (Monom v) -> Monom v Source #

singletonM :: VarM (Monom v) -> Int -> Monom v Source #

mulM :: Monom v -> Monom v -> Monom v Source #

productM :: [Monom v] -> Monom v Source #

powM :: Monom v -> Int -> Monom v Source #

divM :: Monom v -> Monom v -> Maybe (Monom v) Source #

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

maxDegM :: Monom v -> Int Source #

totalDegM :: Monom v -> Int Source #

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

varSubsM :: (VarM (Monom v) -> VarM (Monom v)) -> Monom v -> Monom v Source #

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

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

Defined in Math.Algebra.Polynomial.Monomial.Indexed

Associated Types

type VarM (XS v n) Source #

Methods

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

isNormalM :: XS v n -> Bool Source #

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

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

emptyM :: XS v n Source #

isEmptyM :: XS v n -> Bool Source #

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

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

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

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

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

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

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

maxDegM :: XS v n -> Int Source #

totalDegM :: XS v n -> Int Source #

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

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

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

(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 #

(KnownSymbol sym, Monomial a, Monomial b) => Monomial (Tensor sym a b) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Monomial.Tensor

Associated Types

type VarM (Tensor sym a b) Source #

Methods

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 #

proxyVarM :: Monomial m => m -> Proxy (VarM m) Source #

Polynomial rings

class (Pretty p, Ring (CoeffP p), FreeModule p, CoeffP p ~ CoeffF p, MonomP p ~ BaseF p) => AlmostPolynomial p where Source #

The class of almost polynomial rings

Associated Types

type CoeffP p :: * Source #

Type of coefficients

type MonomP p :: * Source #

Type of monomials

type VarP p :: * Source #

Type of variables

Methods

fromListP Source #

Arguments

:: [(MonomP p, CoeffP p)] 
-> p

construction from (variable,exponent) pairs

toListP Source #

Arguments

:: p 
-> [(MonomP p, CoeffP p)]

extracting (variable,exponent) pairs

zeroP :: p Source #

isZeroP :: p -> Bool Source #

oneP :: p Source #

variableP Source #

Arguments

:: VarP p 
-> p

a single variable

singletonP Source #

Arguments

:: VarP p 
-> Int 
-> p

a single variable raised to a power

monomP :: MonomP p -> p Source #

monomP' :: MonomP p -> CoeffP p -> p Source #

scalarP :: CoeffP p -> p Source #

addP :: p -> p -> p Source #

subP :: p -> p -> p Source #

negP :: p -> p Source #

sumP :: [p] -> p Source #

mulP :: p -> p -> p Source #

productP :: [p] -> p Source #

coeffOfP :: MonomP p -> p -> CoeffP p Source #

mulByMonomP :: MonomP p -> p -> p Source #

scaleP :: CoeffP p -> p -> p Source #

Instances

Instances details
(Ring c, KnownSymbol v) => AlmostPolynomial (Poly c v) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Multivariate.Infinite

Associated Types

type CoeffP (Poly c v) Source #

type MonomP (Poly c v) Source #

type VarP (Poly c v) Source #

Methods

fromListP :: [(MonomP (Poly c v), CoeffP (Poly c v))] -> Poly c v Source #

toListP :: Poly c v -> [(MonomP (Poly c v), CoeffP (Poly c v))] Source #

zeroP :: Poly c v Source #

isZeroP :: Poly c v -> Bool Source #

oneP :: Poly c v Source #

variableP :: VarP (Poly c v) -> Poly c v Source #

singletonP :: VarP (Poly c v) -> Int -> Poly c v Source #

monomP :: MonomP (Poly c v) -> Poly c v Source #

monomP' :: MonomP (Poly c v) -> CoeffP (Poly c v) -> Poly c v Source #

scalarP :: CoeffP (Poly c v) -> Poly c v Source #

addP :: Poly c v -> Poly c v -> Poly c v Source #

subP :: Poly c v -> Poly c v -> Poly c v Source #

negP :: Poly c v -> Poly c v Source #

sumP :: [Poly c v] -> Poly c v Source #

mulP :: Poly c v -> Poly c v -> Poly c v Source #

productP :: [Poly c v] -> Poly c v Source #

coeffOfP :: MonomP (Poly c v) -> Poly c v -> CoeffP (Poly c v) Source #

mulByMonomP :: MonomP (Poly c v) -> Poly c v -> Poly c v Source #

scaleP :: CoeffP (Poly c v) -> Poly c v -> Poly c v Source #

(Ring c, Ord v, Pretty v) => AlmostPolynomial (Poly c v) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Multivariate.Generic

Associated Types

type CoeffP (Poly c v) Source #

type MonomP (Poly c v) Source #

type VarP (Poly c v) Source #

Methods

fromListP :: [(MonomP (Poly c v), CoeffP (Poly c v))] -> Poly c v Source #

toListP :: Poly c v -> [(MonomP (Poly c v), CoeffP (Poly c v))] Source #

zeroP :: Poly c v Source #

isZeroP :: Poly c v -> Bool Source #

oneP :: Poly c v Source #

variableP :: VarP (Poly c v) -> Poly c v Source #

singletonP :: VarP (Poly c v) -> Int -> Poly c v Source #

monomP :: MonomP (Poly c v) -> Poly c v Source #

monomP' :: MonomP (Poly c v) -> CoeffP (Poly c v) -> Poly c v Source #

scalarP :: CoeffP (Poly c v) -> Poly c v Source #

addP :: Poly c v -> Poly c v -> Poly c v Source #

subP :: Poly c v -> Poly c v -> Poly c v Source #

negP :: Poly c v -> Poly c v Source #

sumP :: [Poly c v] -> Poly c v Source #

mulP :: Poly c v -> Poly c v -> Poly c v Source #

productP :: [Poly c v] -> Poly c v Source #

coeffOfP :: MonomP (Poly c v) -> Poly c v -> CoeffP (Poly c v) Source #

mulByMonomP :: MonomP (Poly c v) -> Poly c v -> Poly c v Source #

scaleP :: CoeffP (Poly c v) -> Poly c v -> Poly c v Source #

(Ring coeff, KnownSymbol var) => AlmostPolynomial (Univariate coeff var) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Univariate

Associated Types

type CoeffP (Univariate coeff var) Source #

type MonomP (Univariate coeff var) Source #

type VarP (Univariate coeff var) Source #

Methods

fromListP :: [(MonomP (Univariate coeff var), CoeffP (Univariate coeff var))] -> Univariate coeff var Source #

toListP :: Univariate coeff var -> [(MonomP (Univariate coeff var), CoeffP (Univariate coeff var))] Source #

zeroP :: Univariate coeff var Source #

isZeroP :: Univariate coeff var -> Bool Source #

oneP :: Univariate coeff var Source #

variableP :: VarP (Univariate coeff var) -> Univariate coeff var Source #

singletonP :: VarP (Univariate coeff var) -> Int -> Univariate coeff var Source #

monomP :: MonomP (Univariate coeff var) -> Univariate coeff var Source #

monomP' :: MonomP (Univariate coeff var) -> CoeffP (Univariate coeff var) -> Univariate coeff var Source #

scalarP :: CoeffP (Univariate coeff var) -> Univariate coeff var Source #

addP :: Univariate coeff var -> Univariate coeff var -> Univariate coeff var Source #

subP :: Univariate coeff var -> Univariate coeff var -> Univariate coeff var Source #

negP :: Univariate coeff var -> Univariate coeff var Source #

sumP :: [Univariate coeff var] -> Univariate coeff var Source #

mulP :: Univariate coeff var -> Univariate coeff var -> Univariate coeff var Source #

productP :: [Univariate coeff var] -> Univariate coeff var Source #

coeffOfP :: MonomP (Univariate coeff var) -> Univariate coeff var -> CoeffP (Univariate coeff var) Source #

mulByMonomP :: MonomP (Univariate coeff var) -> Univariate coeff var -> Univariate coeff var Source #

scaleP :: CoeffP (Univariate coeff var) -> Univariate coeff var -> Univariate coeff var Source #

(Ring c, KnownSymbol v, KnownNat n) => AlmostPolynomial (Poly c v n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Multivariate.Indexed

Associated Types

type CoeffP (Poly c v n) Source #

type MonomP (Poly c v n) Source #

type VarP (Poly c v n) Source #

Methods

fromListP :: [(MonomP (Poly c v n), CoeffP (Poly c v n))] -> Poly c v n Source #

toListP :: Poly c v n -> [(MonomP (Poly c v n), CoeffP (Poly c v n))] Source #

zeroP :: Poly c v n Source #

isZeroP :: Poly c v n -> Bool Source #

oneP :: Poly c v n Source #

variableP :: VarP (Poly c v n) -> Poly c v n Source #

singletonP :: VarP (Poly c v n) -> Int -> Poly c v n Source #

monomP :: MonomP (Poly c v n) -> Poly c v n Source #

monomP' :: MonomP (Poly c v n) -> CoeffP (Poly c v n) -> Poly c v n Source #

scalarP :: CoeffP (Poly c v n) -> Poly c v n Source #

addP :: Poly c v n -> Poly c v n -> Poly c v n Source #

subP :: Poly c v n -> Poly c v n -> Poly c v n Source #

negP :: Poly c v n -> Poly c v n Source #

sumP :: [Poly c v n] -> Poly c v n Source #

mulP :: Poly c v n -> Poly c v n -> Poly c v n Source #

productP :: [Poly c v n] -> Poly c v n Source #

coeffOfP :: MonomP (Poly c v n) -> Poly c v n -> CoeffP (Poly c v n) Source #

mulByMonomP :: MonomP (Poly c v n) -> Poly c v n -> Poly c v n Source #

scaleP :: CoeffP (Poly c v n) -> Poly c v n -> Poly c v n Source #

(Ring c, KnownSymbol v, KnownNat n) => AlmostPolynomial (Poly c v n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Multivariate.Compact

Associated Types

type CoeffP (Poly c v n) Source #

type MonomP (Poly c v n) Source #

type VarP (Poly c v n) Source #

Methods

fromListP :: [(MonomP (Poly c v n), CoeffP (Poly c v n))] -> Poly c v n Source #

toListP :: Poly c v n -> [(MonomP (Poly c v n), CoeffP (Poly c v n))] Source #

zeroP :: Poly c v n Source #

isZeroP :: Poly c v n -> Bool Source #

oneP :: Poly c v n Source #

variableP :: VarP (Poly c v n) -> Poly c v n Source #

singletonP :: VarP (Poly c v n) -> Int -> Poly c v n Source #

monomP :: MonomP (Poly c v n) -> Poly c v n Source #

monomP' :: MonomP (Poly c v n) -> CoeffP (Poly c v n) -> Poly c v n Source #

scalarP :: CoeffP (Poly c v n) -> Poly c v n Source #

addP :: Poly c v n -> Poly c v n -> Poly c v n Source #

subP :: Poly c v n -> Poly c v n -> Poly c v n Source #

negP :: Poly c v n -> Poly c v n Source #

sumP :: [Poly c v n] -> Poly c v n Source #

mulP :: Poly c v n -> Poly c v n -> Poly c v n Source #

productP :: [Poly c v n] -> Poly c v n Source #

coeffOfP :: MonomP (Poly c v n) -> Poly c v n -> CoeffP (Poly c v n) Source #

mulByMonomP :: MonomP (Poly c v n) -> Poly c v n -> Poly c v n Source #

scaleP :: CoeffP (Poly c v n) -> Poly c v n -> Poly c v n Source #

(Ring c, KnownSymbol v, KnownNat n) => AlmostPolynomial (ExtAlg c v n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Exterior.Indexed

Associated Types

type CoeffP (ExtAlg c v n) Source #

type MonomP (ExtAlg c v n) Source #

type VarP (ExtAlg c v n) Source #

Methods

fromListP :: [(MonomP (ExtAlg c v n), CoeffP (ExtAlg c v n))] -> ExtAlg c v n Source #

toListP :: ExtAlg c v n -> [(MonomP (ExtAlg c v n), CoeffP (ExtAlg c v n))] Source #

zeroP :: ExtAlg c v n Source #

isZeroP :: ExtAlg c v n -> Bool Source #

oneP :: ExtAlg c v n Source #

variableP :: VarP (ExtAlg c v n) -> ExtAlg c v n Source #

singletonP :: VarP (ExtAlg c v n) -> Int -> ExtAlg c v n Source #

monomP :: MonomP (ExtAlg c v n) -> ExtAlg c v n Source #

monomP' :: MonomP (ExtAlg c v n) -> CoeffP (ExtAlg c v n) -> ExtAlg c v n Source #

scalarP :: CoeffP (ExtAlg c v n) -> ExtAlg c v n Source #

addP :: ExtAlg c v n -> ExtAlg c v n -> ExtAlg c v n Source #

subP :: ExtAlg c v n -> ExtAlg c v n -> ExtAlg c v n Source #

negP :: ExtAlg c v n -> ExtAlg c v n Source #

sumP :: [ExtAlg c v n] -> ExtAlg c v n Source #

mulP :: ExtAlg c v n -> ExtAlg c v n -> ExtAlg c v n Source #

productP :: [ExtAlg c v n] -> ExtAlg c v n Source #

coeffOfP :: MonomP (ExtAlg c v n) -> ExtAlg c v n -> CoeffP (ExtAlg c v n) Source #

mulByMonomP :: MonomP (ExtAlg c v n) -> ExtAlg c v n -> ExtAlg c v n Source #

scaleP :: CoeffP (ExtAlg c v n) -> ExtAlg c v n -> ExtAlg c v n Source #

class (AlmostPolynomial p, Num p, Monomial (MonomP p), VarM (MonomP p) ~ VarP p) => Polynomial p where Source #

The class of polynomial rings

Methods

evalP :: Num d => (CoeffP p -> d) -> (VarP p -> d) -> p -> d Source #

varSubsP :: (VarP p -> VarP p) -> p -> p Source #

coeffSubsP :: (VarP p -> Maybe (CoeffP p)) -> p -> p Source #

subsP :: (VarP p -> p) -> p -> p Source #

Instances

Instances details
(Ring c, KnownSymbol v) => Polynomial (Poly c v) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Multivariate.Infinite

Methods

evalP :: Num d => (CoeffP (Poly c v) -> d) -> (VarP (Poly c v) -> d) -> Poly c v -> d Source #

varSubsP :: (VarP (Poly c v) -> VarP (Poly c v)) -> Poly c v -> Poly c v Source #

coeffSubsP :: (VarP (Poly c v) -> Maybe (CoeffP (Poly c v))) -> Poly c v -> Poly c v Source #

subsP :: (VarP (Poly c v) -> Poly c v) -> Poly c v -> Poly c v Source #

(Ring c, Ord v, Pretty v) => Polynomial (Poly c v) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Multivariate.Generic

Methods

evalP :: Num d => (CoeffP (Poly c v) -> d) -> (VarP (Poly c v) -> d) -> Poly c v -> d Source #

varSubsP :: (VarP (Poly c v) -> VarP (Poly c v)) -> Poly c v -> Poly c v Source #

coeffSubsP :: (VarP (Poly c v) -> Maybe (CoeffP (Poly c v))) -> Poly c v -> Poly c v Source #

subsP :: (VarP (Poly c v) -> Poly c v) -> Poly c v -> Poly c v Source #

(Ring coeff, KnownSymbol var) => Polynomial (Univariate coeff var) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Univariate

Methods

evalP :: Num d => (CoeffP (Univariate coeff var) -> d) -> (VarP (Univariate coeff var) -> d) -> Univariate coeff var -> d Source #

varSubsP :: (VarP (Univariate coeff var) -> VarP (Univariate coeff var)) -> Univariate coeff var -> Univariate coeff var Source #

coeffSubsP :: (VarP (Univariate coeff var) -> Maybe (CoeffP (Univariate coeff var))) -> Univariate coeff var -> Univariate coeff var Source #

subsP :: (VarP (Univariate coeff var) -> Univariate coeff var) -> Univariate coeff var -> Univariate coeff var Source #

(Ring c, KnownSymbol v, KnownNat n) => Polynomial (Poly c v n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Multivariate.Indexed

Methods

evalP :: Num d => (CoeffP (Poly c v n) -> d) -> (VarP (Poly c v n) -> d) -> Poly c v n -> d Source #

varSubsP :: (VarP (Poly c v n) -> VarP (Poly c v n)) -> Poly c v n -> Poly c v n Source #

coeffSubsP :: (VarP (Poly c v n) -> Maybe (CoeffP (Poly c v n))) -> Poly c v n -> Poly c v n Source #

subsP :: (VarP (Poly c v n) -> Poly c v n) -> Poly c v n -> Poly c v n Source #

(Ring c, KnownSymbol v, KnownNat n) => Polynomial (Poly c v n) Source # 
Instance details

Defined in Math.Algebra.Polynomial.Multivariate.Compact

Methods

evalP :: Num d => (CoeffP (Poly c v n) -> d) -> (VarP (Poly c v n) -> d) -> Poly c v n -> d Source #

varSubsP :: (VarP (Poly c v n) -> VarP (Poly c v n)) -> Poly c v n -> Poly c v n Source #

coeffSubsP :: (VarP (Poly c v n) -> Maybe (CoeffP (Poly c v n))) -> Poly c v n -> Poly c v n Source #

subsP :: (VarP (Poly c v n) -> Poly c v n) -> Poly c v n -> Poly c v n Source #