Portability | portable |
---|---|
Stability | provisional |
Maintainer | ross@soi.city.ac.uk |
Safe Haskell | Safe-Infered |
An example instance of the new classes: polynomials. Some of these functions work with infinite polynomials, i.e. formal power series.
- data Polynomial a
- polynomial :: [a] -> Polynomial a
- coefficients :: (Eq a, AbelianGroup a) => Polynomial a -> [a]
- degree :: (Eq a, AbelianGroup a) => Polynomial a -> Int
- evaluate :: Ring a => Polynomial a -> a -> a
- pretty :: (Ord a, Show a, Ring a) => Polynomial a -> String -> String
- approximations :: Ring a => Polynomial a -> a -> [a]
- compose :: Ring a => Polynomial a -> Polynomial a -> Polynomial a
- differentiate :: Ring a => Polynomial a -> Polynomial a
- integrate :: Field a => Polynomial a -> Polynomial a
Polynomials
data Polynomial a Source
Functor Polynomial | |
(Eq a, AbelianGroup a) => Eq (Polynomial a) | |
(Eq a, Show a, AbelianGroup a) => Show (Polynomial a) | |
(Eq a, Field a) => EuclideanDomain (Polynomial a) | If |
Ring a => Ring (Polynomial a) | |
AbelianGroup a => AbelianGroup (Polynomial a) |
polynomial :: [a] -> Polynomial aSource
Construct a polynomial from a list of coefficients, least significant first.
Queries
Finite polynomials
coefficients :: (Eq a, AbelianGroup a) => Polynomial a -> [a]Source
The coefficients of a finite polynomial, least significant first and with no trailing zeroes.
degree :: (Eq a, AbelianGroup a) => Polynomial a -> IntSource
The degree of a finite polynomial.
degree
p = length (coefficients p)
evaluate :: Ring a => Polynomial a -> a -> aSource
Evaluate a polynomial for a given value of x
.
evaluate
a x =zipWith
(*) (coefficients
a) (iterate
(*x) 1)
(The implementation uses Horner's rule.)
pretty :: (Ord a, Show a, Ring a) => Polynomial a -> String -> StringSource
Pretty-print a polynomial, e.g.
pretty (polynomial [3, 4, 0, 1, 5]) "x" = "5x^4 + x^3 + 4x + 3"
Formal power series
approximations :: Ring a => Polynomial a -> a -> [a]Source
The infinite list of evaluations of truncations of the polynomial or power series.
Operations
compose :: Ring a => Polynomial a -> Polynomial a -> Polynomial aSource
differentiate :: Ring a => Polynomial a -> Polynomial aSource
Symbolic differentiation of polynomials.
integrate :: Field a => Polynomial a -> Polynomial aSource
Symbolic integration of polynomials.