hspray-0.2.1.0: Multivariate polynomials.
Copyright(c) Stéphane Laurent 2023
LicenseGPL-3
Maintainerlaurent_step@outlook.fr
Safe HaskellSafe-Inferred
LanguageHaskell2010

Math.Algebra.Hspray

Description

Deals with multivariate polynomials on a ring. See README for examples.

Synopsis

Documentation

data Powers Source #

Constructors

Powers 

Fields

Instances

Instances details
Show Powers Source # 
Instance details

Defined in Math.Algebra.Hspray

Eq Powers Source # 
Instance details

Defined in Math.Algebra.Hspray

Methods

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

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

Hashable Powers Source # 
Instance details

Defined in Math.Algebra.Hspray

Methods

hashWithSalt :: Int -> Powers -> Int #

hash :: Powers -> Int #

(C a, Eq a) => C a (Spray a) Source # 
Instance details

Defined in Math.Algebra.Hspray

Methods

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

(C a, Eq a) => C (Spray a) Source # 
Instance details

Defined in Math.Algebra.Hspray

Methods

zero :: Spray a #

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

(-) :: Spray a -> Spray a -> Spray a #

negate :: Spray a -> Spray a #

(C a, Eq a) => C (Spray a) Source # 
Instance details

Defined in Math.Algebra.Hspray

Methods

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

one :: Spray a #

fromInteger :: Integer -> Spray a #

(^) :: Spray a -> Integer -> Spray a #

type Monomial a = (Powers, a) Source #

lone :: C a => Int -> Spray a Source #

Spray corresponding to the basic monomial x_n

unitSpray :: C a => Spray a Source #

Unit spray

zeroSpray :: (Eq a, C a) => Spray a Source #

The null spray

constantSpray :: (C a, Eq a) => a -> Spray a Source #

Constant spray

getCoefficient :: C a => [Int] -> Spray a -> a Source #

Get coefficient of a term of a spray

fromList :: (C a, Eq a) => [([Int], a)] -> Spray a Source #

Create a spray from list of terms

toList :: Spray a -> [([Int], a)] Source #

Spray as list

sprayTerms :: Spray a -> HashMap (Seq Int) a Source #

Terms of a spray

(*^) :: (C a, Eq a) => a -> Spray a -> Spray a infixr 7 Source #

Scale spray by a scalar

(.^) :: (C a, Eq a) => Int -> Spray a -> Spray a infixr 7 Source #

Scale spray by an integer

(^+^) :: (C a, Eq a) => Spray a -> Spray a -> Spray a infixl 6 Source #

Addition of two sprays

(^-^) :: (C a, Eq a) => Spray a -> Spray a -> Spray a infixl 6 Source #

Substraction of two sprays

(^*^) :: (C a, Eq a) => Spray a -> Spray a -> Spray a infixl 7 Source #

Multiply two sprays

(^**^) :: (C a, Eq a) => Spray a -> Int -> Spray a infixr 8 Source #

Power of a spray

evalSpray :: C a => Spray a -> [a] -> a Source #

Evaluate a spray

substituteSpray :: (Eq a, C a) => [Maybe a] -> Spray a -> Spray a Source #

Substitute some variables in a spray

fromRationalSpray :: Spray Rational -> Spray Double Source #

Convert a spray with rational coefficients to a spray with double coefficients

permuteVariables :: Spray a -> [Int] -> Spray a Source #

Permute the variables of a spray

swapVariables :: Spray a -> (Int, Int) -> Spray a Source #

Swap two variables of a spray

prettySpray Source #

Arguments

:: (a -> String)

function mapping a coefficient to a string, typically show

-> String

a string denoting the variable, e.g. "x"

-> Spray a

the spray

-> String 

Pretty form of a spray

prettySpray' :: Show a => Spray a -> String Source #

Pretty form of a spray, with monomials showed as "x1x3^2"

prettySprayXYZ :: Show a => Spray a -> String Source #

Pretty form of a spray having at more three variables

composeSpray :: (C a, Eq a) => Spray a -> [Spray a] -> Spray a Source #

Compose a spray with a change of variables

bombieriSpray :: C a => Spray a -> Spray a Source #

Bombieri spray (for internal usage in the scubature library)

derivSpray Source #

Arguments

:: (C a, Eq a) 
=> Int

index of the variable of differentiation

-> Spray a

the spray

-> Spray a 

Derivative of a spray

leadingTerm :: Spray a -> Monomial a Source #

Leading term of a spray

sprayDivision :: forall a. (Eq a, C a) => Spray a -> [Spray a] -> Spray a Source #

Remainder of the division of a spray by a list of divisors, using the lexicographic ordering of the monomials

groebner Source #

Arguments

:: forall a. (Eq a, C a) 
=> [Spray a]

list of sprays

-> Bool

whether to return the reduced basis

-> [Spray a] 

Groebner basis (always minimal and possibly reduced)

esPolynomial Source #

Arguments

:: (C a, Eq a) 
=> Int

number of variables

-> Int

index

-> Spray a 

Elementary symmetric polynomial

isSymmetricSpray :: forall a. (C a, Eq a) => Spray a -> Bool Source #

Whether a spray is a symmetric polynomial

isPolynomialOf :: forall a. (C a, Eq a) => Spray a -> [Spray a] -> (Bool, Maybe (Spray a)) Source #

Whether a spray can be written as a polynomial of a given list of sprays; the sprays in the list must belong to the same polynomial ring as the spray

resultant Source #

Arguments

:: (Eq a, C a) 
=> Int

indicator of the variable with respect to which the resultant is desired (e.g. 1 for x)

-> Spray a 
-> Spray a 
-> Spray a 

Resultant of two sprays

resultant1 :: (Eq a, C a) => Spray a -> Spray a -> a Source #

Resultant of two univariate sprays

subresultants Source #

Arguments

:: (Eq a, C a) 
=> Int

indicator of the variable with respect to which the resultant is desired (e.g. 1 for x)

-> Spray a 
-> Spray a 
-> [Spray a] 

Subresultants of two sprays

subresultants1 :: (Eq a, C a) => Spray a -> Spray a -> [a] Source #

Subresultants of two univariate sprays