Safe Haskell | None |
---|
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
Functor Poly | |
(AdditiveGroup a, Eq a) => Eq (Poly a) | |
(Num a, Eq a) => Num (Poly a) | |
Show a => Show (Poly a) | |
NFData a => NFData (Poly a) | |
(Pretty a, Num a, Ord a) => Pretty (Poly a) | |
(RealFloat a, Pretty (Complex a)) => Pretty (Poly (Complex a)) | |
(Eq a, VectorSpace a, AdditiveGroup (Scalar a), Eq (Scalar a)) => VectorSpace (Poly a) | |
AdditiveGroup a => AdditiveGroup (Poly a) |
poly :: (Num a, Eq a) => Endianness -> [a] -> Poly aSource
Make a Poly
from a list of coefficients using the specified coefficient order.
polyN :: (Num a, Eq a) => Int -> Endianness -> [a] -> Poly aSource
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 aSource
unboxedPolyN :: (Unbox a, Num a, Eq a) => Int -> Endianness -> [a] -> Poly aSource
mapPoly :: (Num a, Eq a) => (a -> a) -> Poly a -> Poly aSource
Like fmap, but able to preserve unboxedness
rawMapPoly :: (a -> a) -> Poly a -> Poly aSource
wrapPoly :: Poly a -> Poly (WrappedNum a)Source
like fmap WrapNum
but using unsafeCoerce
to avoid a pointless traversal
unwrapPoly :: Poly (WrappedNum a) -> Poly aSource
like fmap unwrapNum
but using unsafeCoerce
to avoid a pointless traversal
rawListPoly :: Endianness -> [a] -> Poly aSource
rawListPolyN :: Int -> Endianness -> [a] -> Poly aSource
rawVectorPoly :: Endianness -> Vector a -> Poly aSource
rawUVectorPoly :: Unbox a => Endianness -> Vector a -> Poly aSource
trim :: (a -> Bool) -> Poly a -> Poly aSource
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 -> EndiannessSource
rawPolyCoeffs :: Poly a -> [a]Source
untrimmedPolyCoeffs :: Endianness -> Poly a -> [a]Source
polyDegree :: (Num a, Eq a) => Poly a -> IntSource
Get the degree of a a Poly
(the highest exponent with nonzero coefficient)
rawPolyDegree :: Poly a -> IntSource
rawPolyLength :: Poly a -> IntSource