numeric-prelude-0.4.1: An experimental alternative hierarchy of numeric type classes

Safe Haskell None

MathObj.Polynomial.Core

Description

This module implements polynomial functions on plain lists. We use such functions in order to implement methods of other datatypes.

The module organization differs from that of `ResidueClass`: Here the `Polynomial` module exports the type that fits to the NumericPrelude type classes, whereas in `ResidueClass` the sub-modules export various flavors of them.

Synopsis

# Documentation

horner :: C a => a -> [a] -> aSource

Horner's scheme for evaluating a polynomial in a ring.

hornerCoeffVector :: C a v => a -> [v] -> vSource

Horner's scheme for evaluating a polynomial in a module.

hornerArgVector :: (C a v, C v) => v -> [a] -> vSource

normalize :: C a => [a] -> [a]Source

It's also helpful to put a polynomial in canonical form. `normalize` strips leading coefficients that are zero.

shift :: C a => [a] -> [a]Source

Multiply by the variable, used internally.

unShift :: [a] -> [a]Source

equal :: (Eq a, C a) => [a] -> [a] -> BoolSource

add :: C a => [a] -> [a] -> [a]Source

sub :: C a => [a] -> [a] -> [a]Source

negate :: C a => [a] -> [a]Source

scale :: C a => a -> [a] -> [a]Source

collinear :: (Eq a, C a) => [a] -> [a] -> BoolSource

tensorProduct :: C a => [a] -> [a] -> [[a]]Source

tensorProductAlt :: C a => [a] -> [a] -> [[a]]Source

mul :: C a => [a] -> [a] -> [a]Source

`mul` is fast if the second argument is a short polynomial, `**` relies on that fact.

mulShear :: C a => [a] -> [a] -> [a]Source

mulShearTranspose :: C a => [a] -> [a] -> [a]Source

divMod :: (C a, C a) => [a] -> [a] -> ([a], [a])Source

divModRev :: (C a, C a) => [a] -> [a] -> ([a], [a])Source

The modulus will always have one element less than the divisor. This means that the modulus will be denormalized in some cases, e.g. `mod [2,1,1] [1,1,1] == [1,0]` instead of `[1]`.

stdUnit :: (C a, C a) => [a] -> aSource

progression :: C a => [a]Source

differentiate :: C a => [a] -> [a]Source

integrate :: C a => a -> [a] -> [a]Source

integrateInt :: (C a, C a) => a -> [a] -> [a]Source

Integrates if it is possible to represent the integrated polynomial in the given ring. Otherwise undefined coefficients occur.

mulLinearFactor :: C a => a -> [a] -> [a]Source

alternate :: C a => [a] -> [a]Source