| Safe Haskell | None |
|---|---|
| Language | Haskell98 |
Math.Polynomial.Type
Description
Low-level interface for the Poly type.
- data Endianness
- data Poly a
- zero :: Poly a
- poly :: (Num a, Eq a) => Endianness -> [a] -> Poly a
- polyN :: (Num a, Eq a) => Int -> Endianness -> [a] -> Poly a
- unboxedPoly :: (Unbox a, Num a, Eq a) => Endianness -> [a] -> Poly a
- unboxedPolyN :: (Unbox a, Num a, Eq a) => Int -> Endianness -> [a] -> Poly a
- mapPoly :: (Num a, Eq a) => (a -> a) -> Poly a -> Poly a
- rawMapPoly :: (a -> a) -> Poly a -> Poly a
- wrapPoly :: Poly a -> Poly (WrappedNum a)
- unwrapPoly :: Poly (WrappedNum a) -> Poly a
- unboxPoly :: Unbox a => Poly a -> Poly a
- rawListPoly :: Endianness -> [a] -> Poly a
- rawListPolyN :: Int -> Endianness -> [a] -> Poly a
- rawVectorPoly :: Endianness -> Vector a -> Poly a
- rawUVectorPoly :: Unbox a => Endianness -> Vector a -> Poly a
- trim :: (a -> Bool) -> Poly a -> Poly a
- vTrim :: (Eq a, AdditiveGroup a) => Poly a -> Poly a
- polyIsZero :: (Num a, Eq a) => Poly a -> Bool
- polyIsOne :: (Num a, Eq a) => Poly a -> Bool
- polyCoeffs :: (Num a, Eq a) => Endianness -> Poly a -> [a]
- vPolyCoeffs :: (Eq a, AdditiveGroup a) => Endianness -> Poly a -> [a]
- rawCoeffsOrder :: Poly a -> Endianness
- rawPolyCoeffs :: Poly a -> [a]
- untrimmedPolyCoeffs :: Endianness -> Poly a -> [a]
- polyDegree :: (Num a, Eq a) => Poly a -> Int
- rawPolyDegree :: Poly a -> Int
- rawPolyLength :: Poly a -> Int
Documentation
data Endianness Source #
Instances
Instances
| Functor Poly Source # | |
| (AdditiveGroup a, Eq a) => Eq (Poly a) Source # | |
| Show a => Show (Poly a) Source # | |
| NFData a => NFData (Poly a) Source # | |
| (Eq a, VectorSpace a, AdditiveGroup (Scalar a), Eq (Scalar a)) => VectorSpace (Poly a) Source # | |
| AdditiveGroup a => AdditiveGroup (Poly a) Source # | |
| type Scalar (Poly a) Source # | |
poly :: (Num a, Eq a) => Endianness -> [a] -> Poly a Source #
Make a Poly from a list of coefficients using the specified coefficient order.
polyN :: (Num a, Eq a) => Int -> Endianness -> [a] -> Poly a Source #
Make a Poly from a list of coefficients, at most n of which are significant.
unboxedPoly :: (Unbox a, Num a, Eq a) => Endianness -> [a] -> Poly a Source #
unboxedPolyN :: (Unbox a, Num a, Eq a) => Int -> Endianness -> [a] -> Poly a Source #
mapPoly :: (Num a, Eq a) => (a -> a) -> Poly a -> Poly a Source #
Like fmap, but able to preserve unboxedness
rawMapPoly :: (a -> a) -> Poly a -> Poly a Source #
wrapPoly :: Poly a -> Poly (WrappedNum a) Source #
like fmap WrapNum but using unsafeCoerce to avoid a pointless traversal
unwrapPoly :: Poly (WrappedNum a) -> Poly a Source #
like fmap unwrapNum but using unsafeCoerce to avoid a pointless traversal
rawListPoly :: Endianness -> [a] -> Poly a Source #
rawListPolyN :: Int -> Endianness -> [a] -> Poly a Source #
rawVectorPoly :: Endianness -> Vector a -> Poly a Source #
rawUVectorPoly :: Unbox a => Endianness -> Vector a -> Poly a Source #
trim :: (a -> Bool) -> Poly a -> Poly a Source #
Trim zeroes from a polynomial (given a predicate for identifying zero).
In particular, drops zeroes from the highest-order coefficients, so that
0x^n + 0x^(n-1) + 0x^(n-2) + ... + ax^k + ..., a /= 0
is normalized to ax^k + ....
The Eq instance for Poly and all the standard constructors / destructors
are defined using trim (0==).
polyCoeffs :: (Num a, Eq a) => Endianness -> Poly a -> [a] Source #
Get the coefficients of a a Poly in the specified order.
vPolyCoeffs :: (Eq a, AdditiveGroup a) => Endianness -> Poly a -> [a] Source #
Get the coefficients of a a Poly in the specified order.
rawCoeffsOrder :: Poly a -> Endianness Source #
rawPolyCoeffs :: Poly a -> [a] Source #
untrimmedPolyCoeffs :: Endianness -> Poly a -> [a] Source #
polyDegree :: (Num a, Eq a) => Poly a -> Int Source #
Get the degree of a a Poly (the highest exponent with nonzero coefficient)
rawPolyDegree :: Poly a -> Int Source #
rawPolyLength :: Poly a -> Int Source #